From a714a91311bdee6f2046a4846b0d5db37a23a439 Mon Sep 17 00:00:00 2001 From: juha Date: Sat, 17 Dec 2016 22:58:08 +0000 Subject: [PATCH] LCL: Move TLCLPlatform and related non-GUI code to a new unit to be used without GUI. Organize uses-sections by package so that dependencies can be easier seen. git-svn-id: trunk@53711 - --- .gitattributes | 1 + components/ideintf/objectinspector.pp | 7 +- components/ideintf/oifavoriteproperties.pas | 6 +- components/printers/unix/udlgselectprinter.pp | 9 +- ide/aboutfrm.pas | 13 ++- ide/buildlazdialog.pas | 12 ++- ide/buildmanager.pas | 12 +-- ide/buildprofilemanager.pas | 17 +++- ide/compatibilityrestrictions.pas | 11 ++- ide/compileroptions.pp | 2 +- ide/lazbuild.lpi | 2 +- ide/lazbuild.lpr | 7 +- ide/lazconf.pp | 55 ++--------- ide/main.pp | 9 +- ide/restrictionbrowser.pas | 14 ++- lcl/alllclunits.pp | 39 ++++---- lcl/asyncprocess.pp | 6 +- lcl/controls.pp | 10 +- lcl/dialogs.pp | 9 +- lcl/dynhasharray.pp | 5 +- lcl/dynqueue.pas | 4 +- lcl/graphics.pp | 13 +-- lcl/graphmath.pp | 3 +- lcl/graphtype.pp | 9 +- lcl/graphutil.pp | 3 +- lcl/imglist.pp | 9 +- lcl/inipropstorage.pas | 6 +- lcl/interfacebase.pp | 60 ++++++----- lcl/interfaces/carbon/carbonint.pas | 3 +- lcl/interfaces/cocoa/cocoaint.pas | 2 +- lcl/interfaces/customdrawn/customdrawnint.pas | 2 +- lcl/interfaces/fpgui/fpguiint.pp | 5 +- lcl/interfaces/gtk/gtkint.pp | 10 +- lcl/interfaces/gtk2/gtk2int.pas | 20 ++-- lcl/interfaces/gtk3/gtk3int.pas | 11 ++- lcl/interfaces/nogui/noguiint.pp | 2 +- lcl/interfaces/qt/qtint.pp | 10 +- lcl/interfaces/win32/win32int.pp | 11 +-- lcl/interfaces/wince/winceint.pp | 16 +-- lcl/intfgraphics.pas | 11 ++- lcl/lazcanvas.pas | 5 +- lcl/lazfreetypeintfdrawer.pas | 8 +- lcl/lazhelphtml.pas | 9 +- lcl/lazhelpintf.pas | 7 +- lcl/lazregions.pas | 3 +- lcl/lclbase.lpk | 6 +- lcl/lclintf.pas | 9 +- lcl/lclplatformdef.pas | 99 +++++++++++++++++++ lcl/lclproc.pas | 18 +--- lcl/lclrescache.pas | 26 +++-- lcl/lcltranslator.pas | 10 +- lcl/lmessages.pp | 5 +- lcl/lresources.pp | 2 + lcl/maps.pp | 4 +- lcl/postscriptcanvas.pas | 10 +- lcl/postscriptprinter.pas | 2 +- lcl/postscriptunicode.pas | 3 +- lcl/stringhashlist.pas | 3 +- lcl/textstrings.pas | 6 +- lcl/translations.pas | 9 +- packager/interpkgconflictfiles.pas | 3 +- 61 files changed, 437 insertions(+), 266 deletions(-) create mode 100644 lcl/lclplatformdef.pas diff --git a/.gitattributes b/.gitattributes index 59c855a6c9..34465c9017 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7918,6 +7918,7 @@ lcl/lclclasses.pp svneol=native#text/pascal lcl/lclintf.pas svneol=native#text/pascal lcl/lclmemmanager.pas svneol=native#text/pascal lcl/lclmessageglue.pas svneol=native#text/pascal +lcl/lclplatformdef.pas svneol=native#text/pascal lcl/lclproc.pas svneol=native#text/pascal lcl/lclrescache.pas svneol=native#text/pascal lcl/lclstrconsts.pas svneol=native#text/pascal diff --git a/components/ideintf/objectinspector.pp b/components/ideintf/objectinspector.pp index f5e6473b13..fccc4828c4 100644 --- a/components/ideintf/objectinspector.pp +++ b/components/ideintf/objectinspector.pp @@ -32,8 +32,9 @@ uses // RTL / FCL SysUtils, Types, Classes, TypInfo, math, FPCanvas, // LCL - InterfaceBase, LCLType, LCLIntf, Forms, Buttons, Graphics, GraphType, StdCtrls, - Controls, ComCtrls, ExtCtrls, Menus, Dialogs, Themes, LMessages, LCLProc, + LCLPlatformDef, InterfaceBase, LCLType, LCLIntf, Forms, Buttons, Graphics, + GraphType, StdCtrls, Controls, ComCtrls, ExtCtrls, Menus, Dialogs, Themes, + LMessages, LCLProc, // LazControls {$IFnDEF UseOINormalCheckBox} CheckBoxThemed, {$ENDIF} TreeFilterEdit, ListFilterEdit, @@ -42,7 +43,7 @@ uses // IdeIntf IDEImagesIntf, IDEHelpIntf, ObjInspStrConsts, PropEdits, PropEditUtils, ComponentTreeView, OIFavoriteProperties, - ListViewPropEdit, ImageListEditor, ComponentEditors, ChangeParentDlg; + ComponentEditors, ChangeParentDlg; const OIOptionsFileVersion = 3; diff --git a/components/ideintf/oifavoriteproperties.pas b/components/ideintf/oifavoriteproperties.pas index f84342e3c5..daa3cde5b8 100644 --- a/components/ideintf/oifavoriteproperties.pas +++ b/components/ideintf/oifavoriteproperties.pas @@ -14,7 +14,11 @@ uses // FCL SysUtils, Classes, // LCL - LCLProc, InterfaceBase, LazConfigStorage, PropEdits; + LCLProc, LCLPlatformDef, + // LazUtils + LazConfigStorage, + // IdeIntf + PropEdits; type TWidgetSetRestrictionsArray = array [TLCLPlatform] of Integer; diff --git a/components/printers/unix/udlgselectprinter.pp b/components/printers/unix/udlgselectprinter.pp index c3a8f8e012..a66879fb3f 100644 --- a/components/printers/unix/udlgselectprinter.pp +++ b/components/printers/unix/udlgselectprinter.pp @@ -35,9 +35,12 @@ unit uDlgSelectPrinter; interface uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, - Buttons, ExtCtrls, Spin, ComCtrls, LCLType, InterfaceBase, - Printers, OsPrinters, CUPSDyn, Math; + Classes, SysUtils, Math, + // LCL + LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons, ExtCtrls, + Spin, ComCtrls, LCLType, LCLPlatformDef, InterfaceBase, Printers, + // Printers + OsPrinters, CUPSDyn; type diff --git a/ide/aboutfrm.pas b/ide/aboutfrm.pas index 3278b3468a..6f8be60e7c 100644 --- a/ide/aboutfrm.pas +++ b/ide/aboutfrm.pas @@ -25,9 +25,16 @@ unit AboutFrm; interface uses - Classes, SysUtils, FPCAdds, Forms, Controls, Graphics, StdCtrls, Buttons, - ExtCtrls, ComCtrls, Menus, LCLIntf, LazConf, LazarusIDEStrConsts, - EnvironmentOpts, Clipbrd, LazFileUtils, lazutf8classes, DefineTemplates; + Classes, SysUtils, + // LCL + Forms, Controls, Graphics, StdCtrls, Buttons, ExtCtrls, ComCtrls, Menus, + LCLIntf, LazConf, InterfaceBase, LCLPlatformDef, Clipbrd, + // LazUtils + FPCAdds, LazFileUtils, lazutf8classes, + // Codetools + DefineTemplates, + // IDE + LazarusIDEStrConsts, EnvironmentOpts; type diff --git a/ide/buildlazdialog.pas b/ide/buildlazdialog.pas index 30fbd21971..848ee3bfe5 100644 --- a/ide/buildlazdialog.pas +++ b/ide/buildlazdialog.pas @@ -49,14 +49,18 @@ uses Windows, {$ENDIF} LCLProc, Forms, Controls, LCLType, StdCtrls, ExtCtrls, Buttons, Dialogs, + LCLPlatformDef, CheckLst, Menus, ComCtrls, + // LazUtils FileUtil, LazFileUtils, LazUTF8, LazLogger, lazutf8classes, LazFileCache, - InterfaceBase, CheckLst, Menus, ComCtrls, DividerBevel, DefineTemplates, - CodeToolManager, + // LazControls + DividerBevel, + // Codetools + CodeToolManager, DefineTemplates, // IDEIntf LazIDEIntf, IDEMsgIntf, IDEHelpIntf, IDEImagesIntf, IDEWindowIntf, IDEDialogs, - PackageIntf, IDEExternToolIntf, IDEOptionsIntf, + PackageIntf, IDEExternToolIntf, // IDE - LazarusIDEStrConsts, TransferMacros, LazConf, IDEProcs, DialogProcs, + LazarusIDEStrConsts, TransferMacros, LazConf, DialogProcs, MainBar, EnvironmentOpts, ApplicationBundle, ModeMatrixOpts, CompilerOptions, BuildProfileManager, GenericListEditor, GenericCheckList, PackageSystem, PackageDefs; diff --git a/ide/buildmanager.pas b/ide/buildmanager.pas index bc6c7cebe8..9b6ae8d47a 100644 --- a/ide/buildmanager.pas +++ b/ide/buildmanager.pas @@ -34,15 +34,15 @@ unit BuildManager; interface uses - // RTL + FCL + LCL + // RTL + FCL Classes, SysUtils, AVL_Tree, - InterfaceBase, LCLProc, Dialogs, Forms, Controls, + // LCL + InterfaceBase, LCLPlatformDef, LCLProc, Dialogs, Forms, Controls, // CodeTools ExprEval, BasicCodeTools, CodeToolManager, DefineTemplates, CodeCache, FileProcs, CodeToolsCfgScript, // LazUtils - LConvEncoding, FileUtil, LazFileUtils, LazFileCache, LazUTF8, - Laz2_XMLCfg, + LConvEncoding, FileUtil, LazFileUtils, LazFileCache, LazUTF8, Laz2_XMLCfg, // IDEIntf IDEOptionsIntf, ProjectIntf, MacroIntf, IDEDialogs, IDEExternToolIntf, CompOptsIntf, LazIDEIntf, MacroDefIntf, IDEMsgIntf, @@ -329,7 +329,7 @@ begin inherited Create(AOwner); fTargetOS:=GetCompiledTargetOS; fTargetCPU:=GetCompiledTargetCPU; - fLCLWidgetType:=LCLPlatformDirNames[GetDefaultLCLWidgetType]; + fLCLWidgetType:=GetLCLWidgetTypeName; FUnitSetChangeStamp:=TFPCUnitSetCache.GetInvalidChangeStamp; OnBackupFileInteractive:=@BackupFileForWrite; @@ -2624,7 +2624,7 @@ procedure TBuildManager.SetBuildTarget(const TargetOS, TargetCPU, else Result:=''; if (Result='') or (SysUtils.CompareText(Result,'default')=0) then - Result:=LCLPlatformDirNames[GetDefaultLCLWidgetType]; + Result:=GetLCLWidgetTypeName; Result:=lowercase(Result); end; diff --git a/ide/buildprofilemanager.pas b/ide/buildprofilemanager.pas index 6d1388b22f..879d1cc911 100644 --- a/ide/buildprofilemanager.pas +++ b/ide/buildprofilemanager.pas @@ -31,11 +31,18 @@ unit BuildProfileManager; interface uses - Classes, SysUtils, FileUtil, Laz2_XMLCfg, LazLogger, LazFileUtils, LazUTF8, - LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls, Buttons, StdCtrls, - ComCtrls, Contnrs, ButtonPanel, DefineTemplates, IDEImagesIntf, - IDEHelpIntf, IDEDialogs, LazarusIDEStrConsts, LazConf, InterfaceBase, - IDEProcs, TransferMacros, CompilerOptions, EnvironmentOpts; + Classes, SysUtils, + // LazUtils + Laz2_XMLCfg, LazLogger, LazFileUtils, LazUTF8, + // LCL + Forms, Controls, Dialogs, ExtCtrls, StdCtrls, ComCtrls, Contnrs, ButtonPanel, + InterfaceBase, LCLPlatformDef, + // Codetools + DefineTemplates, + // IdeIntf + IDEImagesIntf, IDEHelpIntf, IDEDialogs, + // IDE + LazarusIDEStrConsts, IDEProcs, TransferMacros, EnvironmentOpts; type diff --git a/ide/compatibilityrestrictions.pas b/ide/compatibilityrestrictions.pas index dd8599d830..06c72b831b 100644 --- a/ide/compatibilityrestrictions.pas +++ b/ide/compatibilityrestrictions.pas @@ -34,10 +34,15 @@ unit CompatibilityRestrictions; interface uses - Classes, SysUtils, Forms, LCLProc, InterfaceBase, StringHashList, + Classes, SysUtils, + // LCL + Forms, LCLProc, InterfaceBase, LCLPlatformDef, StringHashList, + // LazUtils Laz2_DOM, Laz2_XMLRead, Laz2_XMLWrite, - ObjectInspector, OIFavoriteProperties, PackageIntf, - PackageSystem, PackageDefs, ComponentReg, LazConf; + // IdeIntf + OIFavoriteProperties, PackageIntf, ComponentReg, + // IDE + PackageSystem, PackageDefs; type TReadRestrictedEvent = procedure (const RestrictedName, WidgetSetName: String) of object; diff --git a/ide/compileroptions.pp b/ide/compileroptions.pp index 417d643b1f..d1b9b77dde 100644 --- a/ide/compileroptions.pp +++ b/ide/compileroptions.pp @@ -1063,7 +1063,7 @@ begin else if CompareIdentifiers(PChar(VarName),'SrcOS2')=0 then SetCTCSVariableAsString(Value,GetDefaultSrcOS2ForTargetOS(GetCompiledTargetOS)) else if CompareIdentifiers(PChar(VarName),'LCLWidgetType')=0 then - SetCTCSVariableAsString(Value,LCLPlatformDirNames[GetDefaultLCLWidgetType]) + SetCTCSVariableAsString(Value,GetLCLWidgetTypeName) else ClearCTCSVariable(Value); end else if (CompareIdentifiers(FunctionName,'GetEnv')=0) then diff --git a/ide/lazbuild.lpi b/ide/lazbuild.lpi index af8e3da0f2..d68c3fc7ec 100644 --- a/ide/lazbuild.lpi +++ b/ide/lazbuild.lpi @@ -1,7 +1,7 @@ - + diff --git a/ide/lazbuild.lpr b/ide/lazbuild.lpr index f462fe659e..6a7fbb1365 100644 --- a/ide/lazbuild.lpr +++ b/ide/lazbuild.lpr @@ -30,7 +30,8 @@ uses {$ENDIF} Classes, SysUtils, math, CustApp, Interfaces, // this includes the NoGUI widgetset - LCLProc, Dialogs, Forms, Controls, InterfaceBase, + // LCL + LCLPlatformDef, {InterfaceBase,} LCLProc, Dialogs, Forms, Controls, // codetools CodeCache, CodeToolManager, DefineTemplates, FileProcs, // IDEIntf @@ -555,7 +556,7 @@ begin if WidgetSetOverride<>'' then CurProf.TargetPlatform:=DirNameToLCLPlatform(WidgetSetOverride) else - CurProf.TargetPlatform:=GetDefaultLCLWidgetType; + CurProf.TargetPlatform:=GetBuildLCLWidgetType; if BuildIDEOptions<>'' then begin s:=CurProf.ExtraOptions; @@ -1818,7 +1819,7 @@ begin writeln('or --ws='); writeln(LongToConsole(Format( lisOverrideTheProjectWidgetsetEGGtkGtk2QtWin32CarbonD, [space, - LCLPlatformDirNames[LazConf.GetDefaultLCLWidgetType]]))); + LCLPlatformDirNames[GetBuildLCLWidgetType]]))); writeln(''); writeln('--cpu='); writeln(LongToConsole(Format( diff --git a/ide/lazconf.pp b/ide/lazconf.pp index f2af8a5961..7c151ee2a1 100644 --- a/ide/lazconf.pp +++ b/ide/lazconf.pp @@ -46,26 +46,17 @@ interface {$endif} uses - SysUtils, Classes, InterfaceBase, FileUtil, LazFileUtils, - LazUTF8, lazutf8classes, LCLProc, DefineTemplates; + SysUtils, Classes, + // LCL + LCLProc, + // LazUtils + FileUtil, LazFileUtils, LazUTF8, LazUTF8Classes, + // Codetools + DefineTemplates; const LazarusVersionStr = {$I version.inc}; - LCLPlatformDisplayNames: array[TLCLPlatform] of string = ( - 'gtk (deprecated)', - 'gtk 2', - 'gtk3 (alpha)', - 'win32/win64', - 'wince', - 'carbon', - 'qt', - 'fpGUI (alpha)', - 'NoGUI', - 'cocoa (alpha)', - 'customdraw (alpha)' - ); - function CompareLazarusVersion(V1, V2: string): integer; { Config Path Functions } @@ -116,10 +107,6 @@ function OSLocksExecutables: boolean; // returns the default browser procedure GetDefaultBrowser(var Browser, Params: string); -// LCL -function GetDefaultLCLWidgetType: TLCLPlatform; -function DirNameToLCLPlatform(const ADirName: string): TLCLPlatform; - // Replace OnGetApplicationName, so that Application.Title // doesn't interfere with GetAppConfigDir and related. function GetLazarusApplicationName: string; @@ -139,19 +126,6 @@ const const ExitCodeRestartLazarus = 99; -var - // set by lazbuild.lpr and used by GetDefaultLCLWidgetType - BuildLCLWidgetType: TLCLPlatform = - {$IFDEF MSWindows}{$DEFINE WidgetSetDefined} - lpWin32; - {$ENDIF} - {$IFDEF darwin}{$DEFINE WidgetSetDefined} - lpCarbon; - {$ENDIF} - {$IFNDEF WidgetSetDefined} - lpGtk2; - {$ENDIF} - implementation {$I lazconf.inc} @@ -217,21 +191,6 @@ begin Result:=TrimFilename(Result); end; -function GetDefaultLCLWidgetType: TLCLPlatform; -begin - if (WidgetSet<>nil) and (WidgetSet.LCLPlatform<>lpNoGUI) then - Result:=WidgetSet.LCLPlatform - else - Result:=BuildLCLWidgetType; -end; - -function DirNameToLCLPlatform(const ADirName: string): TLCLPlatform; -begin - for Result:=Low(TLCLPlatform) to High(TLCLPlatform) do - if CompareText(ADirName,LCLPlatformDirNames[Result])=0 then exit; - Result:=lpGtk2; -end; - function CompareLazarusVersion(V1, V2: string): integer; // compare decimal numbers in strings // For example diff --git a/ide/main.pp b/ide/main.pp index 7333c5ac4a..a796348a74 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -61,8 +61,9 @@ uses // fpc packages Math, Classes, SysUtils, TypInfo, types, strutils, AVL_Tree, // LCL - LCLProc, LCLType, LCLIntf, LResources, ComCtrls, HelpIntfs, InterfaceBase, - Forms, Buttons, Menus, Controls, GraphType, Graphics, ExtCtrls, Dialogs, LclStrConsts, + LCLProc, LCLType, LCLIntf, LResources, HelpIntfs, InterfaceBase, LCLPlatformDef, + ComCtrls, Forms, Buttons, Menus, Controls, GraphType, Graphics, ExtCtrls, + Dialogs, LclStrConsts, // CodeTools FileProcs, FindDeclarationTool, LinkScanner, BasicCodeTools, CodeToolsStructs, CodeToolManager, CodeCache, DefineTemplates, KeywordFuncLists, CodeTree, @@ -1444,7 +1445,7 @@ begin CodeToolBoss.SetGlobalValue( ExternalMacroStart+'ProjPath',VirtualDirectory); CodeToolBoss.SetGlobalValue( - ExternalMacroStart+'LCLWidgetType',LCLPlatformDirNames[GetDefaultLCLWidgetType]); + ExternalMacroStart+'LCLWidgetType',GetLCLWidgetTypeName); CodeToolBoss.SetGlobalValue( ExternalMacroStart+'FPCSrcDir',EnvironmentOptions.GetParsedFPCSourceDirectory); end; @@ -9093,7 +9094,7 @@ begin with CodeToolBoss.GlobalValues do begin Variables[ExternalMacroStart+'LazarusDir']:=EnvironmentOptions.GetParsedLazarusDirectory; Variables[ExternalMacroStart+'ProjPath']:=VirtualDirectory; - Variables[ExternalMacroStart+'LCLWidgetType']:=LCLPlatformDirNames[GetDefaultLCLWidgetType]; + Variables[ExternalMacroStart+'LCLWidgetType']:=GetLCLWidgetTypeName; Variables[ExternalMacroStart+'FPCSrcDir']:=EnvironmentOptions.GetParsedFPCSourceDirectory; end; diff --git a/ide/restrictionbrowser.pas b/ide/restrictionbrowser.pas index 16719e8e6c..4ebf54847f 100644 --- a/ide/restrictionbrowser.pas +++ b/ide/restrictionbrowser.pas @@ -30,11 +30,15 @@ unit RestrictionBrowser; interface uses - Classes, SysUtils, InterfaceBase, LCLProc, Contnrs, Forms, Controls, Graphics, - Dialogs, StdCtrls, ComCtrls, TreeFilterEdit, ExtCtrls, Buttons, - IDEImagesIntf, ObjectInspector, - CompatibilityRestrictions, IDEOptionDefs, LazarusIDEStrConsts, - EnvironmentOpts, LazConf; + Classes, Contnrs, + // LCL + InterfaceBase, LCLPlatformDef, LCLProc, Forms, StdCtrls, ComCtrls, ExtCtrls, Buttons, + // LazControls + TreeFilterEdit, + // IdeIntf + IDEImagesIntf, + // IDE + CompatibilityRestrictions, IDEOptionDefs, LazarusIDEStrConsts; type { TRestrictionBrowserView } diff --git a/lcl/alllclunits.pp b/lcl/alllclunits.pp index a326f27f26..08a519a370 100644 --- a/lcl/alllclunits.pp +++ b/lcl/alllclunits.pp @@ -8,23 +8,28 @@ unit alllclunits; interface uses - CheckLst, Clipbrd, ColorBox, ComCtrls, Controls, CustomTimer, DBActns, DbCtrls, DBGrids, - DefaultTranslator, Dialogs, DynamicArray, DynHashArray, 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, PairSplitter, PopupNotifier, PostScriptCanvas, PostScriptPrinter, - PostScriptUnicode, Printers, PropertyStorage, RubberBand, ShellCtrls, Spin, StdActns, StdCtrls, - StringHashList, TextStrings, Themes, TmSchema, Toolwin, 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, GroupedEdit, LCLTaskDialog, - WSLazDeviceAPIS, LazarusPackageIntf; + CheckLst, Clipbrd, ColorBox, ComCtrls, Controls, CustomTimer, DBActns, + DbCtrls, DBGrids, DefaultTranslator, Dialogs, DynamicArray, DynHashArray, + 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, + PairSplitter, PopupNotifier, PostScriptCanvas, PostScriptPrinter, + PostScriptUnicode, Printers, PropertyStorage, RubberBand, ShellCtrls, Spin, + StdActns, StdCtrls, StringHashList, TextStrings, Themes, TmSchema, Toolwin, + 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, + GroupedEdit, LCLTaskDialog, WSLazDeviceAPIS, LCLPlatformDef, + LazarusPackageIntf; implementation diff --git a/lcl/asyncprocess.pp b/lcl/asyncprocess.pp index 25d2e9388b..b67a2844f0 100644 --- a/lcl/asyncprocess.pp +++ b/lcl/asyncprocess.pp @@ -22,7 +22,11 @@ unit AsyncProcess; interface uses - Classes, SysUtils, Process, LCLProc, FileUtil, InterfaceBase, LCLIntf, UTF8Process; + Classes, Process, + // LazUtils + FileUtil, UTF8Process, + // LCL + InterfaceBase, LCLIntf; type diff --git a/lcl/controls.pp b/lcl/controls.pp index 4ac34f438c..aeb104bb6a 100644 --- a/lcl/controls.pp +++ b/lcl/controls.pp @@ -35,9 +35,13 @@ interface {$ENDIF} uses - Classes, SysUtils, TypInfo, Types, LCLStrConsts, LCLType, AvgLvlTree, - LCLProc, GraphType, Graphics, LMessages, LCLIntf, InterfaceBase, ImgList, - PropertyStorage, Menus, ActnList, LCLClasses, LResources; + Classes, SysUtils, TypInfo, Types, + // LazUtils + AvgLvlTree, + // LCL + LCLStrConsts, LCLType, LCLProc, GraphType, Graphics, LMessages, LCLIntf, + InterfaceBase, ImgList, PropertyStorage, Menus, ActnList, LCLClasses, + LResources, LCLPlatformDef; {$I controlconsts.inc} diff --git a/lcl/dialogs.pp b/lcl/dialogs.pp index 832c875121..e722727c2a 100644 --- a/lcl/dialogs.pp +++ b/lcl/dialogs.pp @@ -21,10 +21,11 @@ unit Dialogs; interface uses - // RTL + FCL + LCL - Types, typinfo, Classes, SysUtils, LMessages, - LResources, LCLIntf, InterfaceBase, LCLStrConsts, LCLType, LCLProc, Forms, - Controls, Themes, GraphType, Graphics, Buttons, ButtonPanel, StdCtrls, + // RTL + FCL + Types, typinfo, Classes, SysUtils, + // LCL + LMessages, LResources, LCLIntf, InterfaceBase, LCLStrConsts, LCLType, LCLProc, + Forms, Controls, Themes, GraphType, Graphics, Buttons, ButtonPanel, StdCtrls, ExtCtrls, LCLClasses, ClipBrd, Menus, LCLTaskDialog, // LazUtils FileUtil, LazFileUtils; diff --git a/lcl/dynhasharray.pp b/lcl/dynhasharray.pp index 4aec11994e..2aa0b5076c 100644 --- a/lcl/dynhasharray.pp +++ b/lcl/dynhasharray.pp @@ -42,7 +42,10 @@ unit DynHashArray; interface -uses Classes, SysUtils, LCLProc; +uses + Classes, SysUtils, + // LCL + LCLProc; type TDynHashArray = class; diff --git a/lcl/dynqueue.pas b/lcl/dynqueue.pas index 2ce8b50b5a..81e35ed29b 100644 --- a/lcl/dynqueue.pas +++ b/lcl/dynqueue.pas @@ -16,7 +16,9 @@ unit DynQueue; interface uses - Classes, SysUtils, LazLoggerBase; + Classes, SysUtils, + // LazUtils + LazLoggerBase; type TDynamicQueueItem = record diff --git a/lcl/graphics.pp b/lcl/graphics.pp index 3f2019e0aa..8cf3da00d0 100644 --- a/lcl/graphics.pp +++ b/lcl/graphics.pp @@ -39,8 +39,8 @@ interface uses - SysUtils, Math, Types, Classes, Contnrs, FPCAdds, LCLVersion, LazUTF8Classes, - FileUtil, + // RTL + FCL + SysUtils, Math, Types, Classes, Contnrs, FPImage, FPCanvas, FPWriteBMP, // bmp support FPWritePNG, PNGComn, // png support @@ -48,10 +48,11 @@ uses FPReadJpeg, FPWriteJpeg, // jpg support FPReadTiff, FPTiffCmn, // tiff support FPReadGif, - AvgLvlTree, - IntfGraphics, - LCLStrConsts, LCLType, LCLProc, LMessages, LResources, LCLResCache, - GraphType, IcnsTypes, GraphMath, WSReferences; + // LazUtils + FPCAdds, LazUTF8Classes, FileUtil, AvgLvlTree, + // LCL + LCLVersion, LCLStrConsts, LCLType, LCLProc, LMessages, LResources, LCLResCache, + IntfGraphics, GraphType, IcnsTypes, GraphMath, WSReferences; type PColor = ^TColor; diff --git a/lcl/graphmath.pp b/lcl/graphmath.pp index 07a1c13c3f..57b9c339de 100644 --- a/lcl/graphmath.pp +++ b/lcl/graphmath.pp @@ -29,7 +29,8 @@ unit GraphMath; interface Uses - Types, Classes, SysUtils, Math, LCLProc; + Types, Classes, SysUtils, Math, + LCLProc; Type TFloatPoint = Record diff --git a/lcl/graphtype.pp b/lcl/graphtype.pp index 42db413dde..13d61909db 100644 --- a/lcl/graphtype.pp +++ b/lcl/graphtype.pp @@ -23,7 +23,11 @@ unit GraphType; interface uses - FPCAdds, Classes, SysUtils, LCLType, LCLProc, types; + Classes, SysUtils, Types, Math, + // LazUtils + FPCAdds, + // LCL + LCLType, LCLProc; {$ifdef Trace} {$ASSERTIONS ON} @@ -260,9 +264,6 @@ var implementation -uses - Math; - {------------------------------------------------------------------------------ Function: CopyImageData ------------------------------------------------------------------------------} diff --git a/lcl/graphutil.pp b/lcl/graphutil.pp index a43d90d234..5201f3b113 100644 --- a/lcl/graphutil.pp +++ b/lcl/graphutil.pp @@ -21,7 +21,8 @@ unit GraphUtil; interface uses - Types, Graphics, GraphType, Math, LCLType, LCLIntf; + Types, Math, + Graphics, GraphType, LCLType, LCLIntf; function ColorToGray(const AColor: TColor): Byte; procedure ColorToHLS(const AColor: TColor; out H, L, S: Byte); diff --git a/lcl/imglist.pp b/lcl/imglist.pp index cfb6994bc1..127abd13bf 100644 --- a/lcl/imglist.pp +++ b/lcl/imglist.pp @@ -44,8 +44,13 @@ interface {$endif} uses - Types, SysUtils, Classes, FPCAdds, LCLStrConsts, LCLIntf, LResources, LCLType, - LCLProc, Graphics, GraphType, LCLClasses, IntfGraphics, FPReadBMP, + // RTL + FCL + Types, SysUtils, Classes, FPReadBMP, + // LazUtils + FPCAdds, + // LCL + LCLStrConsts, LCLIntf, LResources, LCLType, LCLProc, Graphics, GraphType, + LCLClasses, IntfGraphics, WSReferences; type diff --git a/lcl/inipropstorage.pas b/lcl/inipropstorage.pas index 343fd2f99b..8294581d42 100644 --- a/lcl/inipropstorage.pas +++ b/lcl/inipropstorage.pas @@ -14,7 +14,11 @@ unit IniPropStorage; interface uses - Classes, SysUtils, Forms, IniFiles, LazUtf8; + Classes, SysUtils, IniFiles, + // LazUtils + LazUtf8, + // LCL + Forms; type { TCustomIniPropStorage } diff --git a/lcl/interfacebase.pp b/lcl/interfacebase.pp index 4a50508317..9f7a7a5006 100644 --- a/lcl/interfacebase.pp +++ b/lcl/interfacebase.pp @@ -27,8 +27,12 @@ interface {$endif} uses - Types, Classes, SysUtils, Math, LCLStrConsts, LCLType, LCLProc, LMessages, - FPImage, GraphType, GraphMath, IntfGraphics, Themes, LazUTF8; + Types, Classes, SysUtils, Math, FPImage, + // LazUtils + LazUTF8, + // LCL + LCLType, LCLProc, LMessages, LCLPlatformDef, + GraphType, GraphMath, IntfGraphics, Themes; type PEventHandler = type Pointer; @@ -48,22 +52,6 @@ type TLCLWndMethod = procedure(var TheMessage: TLMessage) of Object; - TLCLPlatform = ( - lpGtk, - lpGtk2, - lpGtk3, - lpWin32, - lpWinCE, - lpCarbon, - lpQT, - lpfpGUI, - lpNoGUI, - lpCocoa, - lpCustomDrawn - ); - - TLCLPlatforms = set of TLCLPlatform; - TLCLCapability = ( lcAsyncProcess, // Support for async process lcCanDrawOutsideOnPaint, // Support for drawing outside OnPaint event of an control @@ -183,21 +171,10 @@ type end; TWidgetSetClass = class of TWidgetSet; + function GetDefaultLCLWidgetType: TLCLPlatform; + function GetLCLWidgetTypeName: string; + const - LCLPlatformDirNames: array[TLCLPlatform] of string = ( - 'gtk', - 'gtk2', - 'gtk3', - 'win32', - 'wince', - 'carbon', - 'qt', - 'fpgui', - 'nogui', - 'cocoa', - 'customdrawn' - ); - { Constants for the routine TWidgetSet.GetLCLCapability } LCL_CAPABILITY_NO = 0; LCL_CAPABILITY_YES = 1; @@ -235,6 +212,25 @@ var implementation +{function GetDefaultLCLWidgetType: TLCLPlatform; +begin + Assert(Assigned(WidgetSet), 'GetDefaultLCLWidgetType: WidgetSet is not assigned.'); + if WidgetSet.LCLPlatform<>lpNoGUI then + Result:=WidgetSet.LCLPlatform +end; } +function GetDefaultLCLWidgetType: TLCLPlatform; +begin + if (WidgetSet<>nil) and (WidgetSet.LCLPlatform<>lpNoGUI) then + Result:=WidgetSet.LCLPlatform + else + Result:=BuildLCLWidgetType; +end; + +function GetLCLWidgetTypeName: string; +begin + Result:=LCLPlatformDirNames[GetDefaultLCLWidgetType]; +end; + { TDialogButtons } procedure TDialogButtons.SetCancelButton(const AValue: TDialogButton); diff --git a/lcl/interfaces/carbon/carbonint.pas b/lcl/interfaces/carbon/carbonint.pas index da5c4177de..5794559c84 100644 --- a/lcl/interfaces/carbon/carbonint.pas +++ b/lcl/interfaces/carbon/carbonint.pas @@ -45,7 +45,8 @@ uses {$ifdef DebugBitmaps} CarbonDebug, {$endif} - glgrab, LMessages, LCLMessageGlue, LCLProc, LCLIntf, LCLType, IntfGraphics, + glgrab, + LCLPlatformDef, LMessages, LCLMessageGlue, LCLProc, LCLIntf, LCLType, IntfGraphics, GraphType, GraphMath, Graphics, Controls, Forms, Dialogs, Menus, Maps, Themes; type diff --git a/lcl/interfaces/cocoa/cocoaint.pas b/lcl/interfaces/cocoa/cocoaint.pas index 1a26cd77d4..282a09a3f3 100644 --- a/lcl/interfaces/cocoa/cocoaint.pas +++ b/lcl/interfaces/cocoa/cocoaint.pas @@ -33,7 +33,7 @@ uses // carbon bindings MacOSAll, // interfacebase - InterfaceBase, GraphType, + LCLPlatformDef, InterfaceBase, GraphType, // private CocoaAll, CocoaPrivate, CocoaUtils, CocoaGDIObjects, CocoaProc, cocoa_extra, CocoaWSMenus, CocoaWSForms, diff --git a/lcl/interfaces/customdrawn/customdrawnint.pas b/lcl/interfaces/customdrawn/customdrawnint.pas index 0e75d3a6b1..ff89799ab9 100644 --- a/lcl/interfaces/customdrawn/customdrawnint.pas +++ b/lcl/interfaces/customdrawn/customdrawnint.pas @@ -48,7 +48,7 @@ uses // LCL customdrawn_common, customdrawncontrols, customdrawndrawers, lazcanvas, lazregions, lazdeviceapis, - InterfaceBase, Themes, Dialogs, Buttons, + LCLPlatformDef, InterfaceBase, Themes, Dialogs, Buttons, Controls, Forms, lclproc, IntfGraphics, GraphType, LCLType, LMessages, Graphics, LCLStrConsts, Menus, LazLoggerBase; diff --git a/lcl/interfaces/fpgui/fpguiint.pp b/lcl/interfaces/fpgui/fpguiint.pp index 7988fb8499..b6ffc588eb 100644 --- a/lcl/interfaces/fpgui/fpguiint.pp +++ b/lcl/interfaces/fpgui/fpguiint.pp @@ -26,9 +26,8 @@ uses // FCL Classes, Types, SysUtils, Math, // LCL - InterfaceBase, LCLProc, LCLType, LMessages, - Controls, ExtCtrls, Forms, Dialogs, StdCtrls, Comctrls, LCLIntf, - GraphType, + LCLPlatformDef, InterfaceBase, LCLProc, LCLType, LMessages, + Controls, ExtCtrls, Forms, Dialogs, StdCtrls, Comctrls, LCLIntf, GraphType, // Bindings fpg_main, fpg_form, fpguiproc, fpg_base, fpg_dialogs, // Widgetset diff --git a/lcl/interfaces/gtk/gtkint.pp b/lcl/interfaces/gtk/gtkint.pp index c17a6bb978..f7cbf1bac1 100644 --- a/lcl/interfaces/gtk/gtkint.pp +++ b/lcl/interfaces/gtk/gtkint.pp @@ -45,9 +45,9 @@ uses LineInfo, {$ENDIF} // rtl+fcl - Types, Classes, SysUtils, FPCAdds, - // interfacebase - InterfaceBase, + Types, Classes, SysUtils, + // LazUtils + FPCAdds, // gtk {$IFDEF gtk2} glib2, gdk2pixbuf, gdk2, gtk2, Pango, gtk2proc, @@ -63,12 +63,12 @@ uses {$endif} Math, // after gtk to get the correct Float type // LCL + LCLPlatformDef, InterfaceBase, FileUtil, Translations, ExtDlgs, Dialogs, Controls, Forms, LCLStrConsts, LMessages, LCLProc, LCLIntf, LCLType, DynHashArray, GraphType, GraphMath, Graphics, Menus, Maps, Themes, // widgetset - GtkDebug, - GtkFontCache, gtkDef, GtkProc, gtkMsgQueue, GtkExtra, WSLCLClasses; + GtkDebug, GtkFontCache, gtkDef, GtkProc, gtkMsgQueue, GtkExtra, WSLCLClasses; type diff --git a/lcl/interfaces/gtk2/gtk2int.pas b/lcl/interfaces/gtk2/gtk2int.pas index 44db6c5b1a..664638b8df 100644 --- a/lcl/interfaces/gtk2/gtk2int.pas +++ b/lcl/interfaces/gtk2/gtk2int.pas @@ -34,23 +34,19 @@ uses Types, Classes, SysUtils, Math, {$IfNDef GTK2_2} {$IfDef HasX} - XLib, xatom, X, gdk2x, //XUtil, + XLib, xatom, X, gdk2x, {$EndIf} {$EndIf} gdk2pixbuf, gtk2, gdk2, glib2, Pango, + // LazUtils + LazFileUtils, // LCL - Maps, LazFileUtils, Dialogs, Controls, Forms, LCLStrConsts, + Maps, Dialogs, Controls, Forms, LCLStrConsts, LMessages, LCLProc, LazUTF8, LCLIntf, LCLType, DynHashArray, GraphType, GraphMath, - Graphics, Menus, Themes, WSLCLClasses, - - Buttons, StdCtrls, CheckLst, - ComCtrls, Spin, - ExtCtrls, LResources, - - InterfaceBase, - Gtk2WinApiWindow, - Gtk2Globals, Gtk2Proc, - Gtk2Def, Gtk2FontCache, Gtk2Extra, + Graphics, Menus, Themes, Buttons, StdCtrls, CheckLst, ComCtrls, Spin, ExtCtrls, + LCLPlatformDef, InterfaceBase, + WSLCLClasses, + Gtk2WinApiWindow, Gtk2Globals, Gtk2Proc, Gtk2Def, Gtk2FontCache, Gtk2Extra, Gtk2MsgQueue; type diff --git a/lcl/interfaces/gtk3/gtk3int.pas b/lcl/interfaces/gtk3/gtk3int.pas index 9fbf7ad590..f0d6612eba 100644 --- a/lcl/interfaces/gtk3/gtk3int.pas +++ b/lcl/interfaces/gtk3/gtk3int.pas @@ -25,11 +25,14 @@ uses BaseUnix, Unix, {$ENDIF} SysUtils, Classes, types, - InterfaceBase, Translations, - Controls, Forms, FPImage, Graphics, GraphUtil, GraphType, LCLProc, LazUTF8, - LCLStrConsts, LCLType, LMessages, + // LazUtils + LazUTF8, + // LCL + LCLPlatformDef, InterfaceBase, Translations, + Controls, Forms, FPImage, Graphics, GraphUtil, GraphType, IntfGraphics, + LCLProc, LCLStrConsts, LCLType, LMessages, LazGtk3, LazGdk3, LazGlib2, LazGObject2, LazCairo1, LazPango1, LazPangoCairo1, LazGio2, - LazGdkPixbuf2, gtk3widgets, gtk3objects, gtk3procs, IntfGraphics; + LazGdkPixbuf2, gtk3widgets, gtk3objects, gtk3procs; type diff --git a/lcl/interfaces/nogui/noguiint.pp b/lcl/interfaces/nogui/noguiint.pp index 905de15ae0..7818c6c661 100644 --- a/lcl/interfaces/nogui/noguiint.pp +++ b/lcl/interfaces/nogui/noguiint.pp @@ -27,7 +27,7 @@ uses InterfaceBase, // LCL Dialogs, Controls, Forms, - LCLProc, LCLIntf, LCLType, GraphType, Graphics, Menus, Themes, + LCLProc, LCLIntf, LCLType, LCLPlatformDef, GraphType, Graphics, Menus, Themes, // widgetset WSLCLClasses; diff --git a/lcl/interfaces/qt/qtint.pp b/lcl/interfaces/qt/qtint.pp index ac3d31d521..c2631436cc 100644 --- a/lcl/interfaces/qt/qtint.pp +++ b/lcl/interfaces/qt/qtint.pp @@ -37,10 +37,12 @@ uses qt4, // FPC Classes, SysUtils, Math, Types, maps, + // LazUtils + LazUTF8, // LCL - InterfaceBase, LCLProc, LazUTF8, LCLType, LMessages, LCLMessageGlue, LCLStrConsts, - Controls, ExtCtrls, Forms, - Dialogs, StdCtrls, LCLIntf, GraphType, GraphUtil, Themes, + LCLPlatformDef, InterfaceBase, LCLProc, LCLType, LCLIntf, + LMessages, LCLMessageGlue, LCLStrConsts, + Controls, ExtCtrls, Forms, StdCtrls, GraphType, GraphUtil, Themes, // WS qtproc; @@ -347,7 +349,7 @@ uses QtCaret, QtThemes, //////////////////////////////////////////////////// - Graphics, buttons, Menus, + Graphics, buttons, // Bindings QtWSFactory, qtwidgets, qtobjects, qtsystemtrayicon; diff --git a/lcl/interfaces/win32/win32int.pp b/lcl/interfaces/win32/win32int.pp index e56ce37f9e..3f628409be 100644 --- a/lcl/interfaces/win32/win32int.pp +++ b/lcl/interfaces/win32/win32int.pp @@ -29,12 +29,11 @@ interface } uses Windows, // keep as first - ActiveX, Classes, - Translations, Controls, Buttons, - LCLIntf, LclProc, LazUTF8, LCLType, LMessages, - Forms, Dialogs, GraphMath, GraphType, InterfaceBase, - StdCtrls, SysUtils, RtlConsts, Win32Def, Graphics, Menus, CommCtrl, ComCtrls, - MultiMon, Themes{, Win32Debug}; + Classes, RtlConsts, ActiveX, MultiMon, + // LCL + LCLPlatformDef, InterfaceBase, LCLIntf, LclProc, LazUTF8, LCLType, LMessages, + Translations, Controls, Buttons, Forms, Dialogs, GraphMath, GraphType, StdCtrls, + SysUtils, Win32Def, Graphics, Menus, CommCtrl, ComCtrls, Themes{, Win32Debug}; const // standard windows cursors diff --git a/lcl/interfaces/wince/winceint.pp b/lcl/interfaces/wince/winceint.pp index fc7a429a6c..d64f295160 100644 --- a/lcl/interfaces/wince/winceint.pp +++ b/lcl/interfaces/wince/winceint.pp @@ -40,14 +40,16 @@ uses {$else} aygshell, {$endif} - // Libs - Windows, - // RTL, LCL - Classes, ComCtrls, Controls, Buttons, Dialogs, DynHashArray, - ExtCtrls, Forms, GraphMath, GraphType, InterfaceBase, LCLIntf, LCLType, LazUTF8, - LMessages, StdCtrls, SysUtils, Graphics, Menus, + // Libs, RTL + Windows, Classes, + // LCL + LCLIntf, LCLType, ComCtrls, Controls, Buttons, Dialogs, DynHashArray, + ExtCtrls, Forms, GraphMath, GraphType, LCLPlatformDef, InterfaceBase, + LMessages, StdCtrls, SysUtils, Graphics, Menus, Themes, + // LazUtils + LazUTF8, // Widgetset - WinCEProc, WinCEExtra, WinExt, WinCEDef, Themes; + WinCEProc, WinCEExtra, WinExt, WinCEDef; const {$ifdef Win32} diff --git a/lcl/intfgraphics.pas b/lcl/intfgraphics.pas index a6ded05337..687882202e 100644 --- a/lcl/intfgraphics.pas +++ b/lcl/intfgraphics.pas @@ -25,10 +25,13 @@ unit IntfGraphics; interface uses - Classes, SysUtils, fpImage, FPReadBMP, FPWriteBMP, BMPComn, FPCAdds, - AvgLvlTree, LCLType, LCLversion, Math, - LCLProc, GraphType, FPReadPNG, FPWritePNG, FPReadTiff, FPWriteTiff, FPTiffCmn, - IcnsTypes; + // RTL + FCL + Classes, SysUtils, Math, fpImage, FPReadBMP, FPWriteBMP, BMPComn, + FPReadPNG, FPWritePNG, FPReadTiff, FPWriteTiff, FPTiffCmn, + // LazUtils + FPCAdds, AvgLvlTree, + // LCL + LCLType, LCLversion, LCLProc, GraphType, IcnsTypes; type { TLazIntfImage } diff --git a/lcl/lazcanvas.pas b/lcl/lazcanvas.pas index 2f15bb6c60..2cedbfa6f0 100644 --- a/lcl/lazcanvas.pas +++ b/lcl/lazcanvas.pas @@ -40,9 +40,8 @@ uses Classes, SysUtils, contnrs, Math, // FCL-Image fpimgcanv, fpcanvas, fpimage, clipping, pixtools, fppixlcanv, - intfgraphics, - // regions - lazregions + // LCL + IntfGraphics, LazRegions {$if defined(lazcanvas_debug) or defined(lazcanvas_profiling)} , lazutf8sysutils, LCLProc {$endif} diff --git a/lcl/lazfreetypeintfdrawer.pas b/lcl/lazfreetypeintfdrawer.pas index 9a9cc6eb20..6439d6f6c0 100644 --- a/lcl/lazfreetypeintfdrawer.pas +++ b/lcl/lazfreetypeintfdrawer.pas @@ -5,7 +5,11 @@ unit LazFreeTypeIntfDrawer; interface uses - Classes, SysUtils, Graphics, EasyLazFreeType, IntfGraphics, FPimage; + Classes, SysUtils, FPimage, + // LazUtils + EasyLazFreeType, + // LCL + GraphType, Graphics, IntfGraphics; type TLazIntfImageGetPixelAtProc = procedure(p: pointer; out Color: TFPColor); @@ -55,8 +59,6 @@ type implementation -uses LCLType, GraphType; - type PFPColorBytes = ^TFPColorBytes; TFPColorBytes = record diff --git a/lcl/lazhelphtml.pas b/lcl/lazhelphtml.pas index e446caeafd..13411aeae3 100644 --- a/lcl/lazhelphtml.pas +++ b/lcl/lazhelphtml.pas @@ -18,9 +18,12 @@ unit LazHelpHTML; interface uses - Classes, SysUtils, LCLProc, LCLIntf, Forms, Process, LazFileUtils, UTF8Process, - LazConfigStorage, LazUTF8, LCLStrConsts, HelpIntfs, LazHelpIntf; - + Classes, SysUtils, + // LazUtils + LazFileUtils, UTF8Process, LazUTF8, LazConfigStorage, + // LCL + LCLProc, LCLIntf, LCLStrConsts, HelpIntfs, LazHelpIntf; + type { THTMLHelpDatabase diff --git a/lcl/lazhelpintf.pas b/lcl/lazhelpintf.pas index f06a53e0a7..e47633c148 100644 --- a/lcl/lazhelpintf.pas +++ b/lcl/lazhelpintf.pas @@ -25,8 +25,11 @@ unit LazHelpIntf; interface uses - Classes, SysUtils, LCLProc, FileUtil, LCLStrConsts, Dialogs, - LazConfigStorage, HelpIntfs, Masks, LazFileUtils, LazUTF8; + Classes, SysUtils, + // LazUtils + FileUtil, LazFileUtils, LazUTF8, LazConfigStorage, Masks, + // LCL + LCLProc, LCLStrConsts, Dialogs, HelpIntfs; type { THelpQueryItem } diff --git a/lcl/lazregions.pas b/lcl/lazregions.pas index e506ebd3a3..8903c6077a 100644 --- a/lcl/lazregions.pas +++ b/lcl/lazregions.pas @@ -10,7 +10,8 @@ unit LazRegions; interface uses - Classes, SysUtils, LCLType, fpcanvas; + Classes, SysUtils, fpcanvas, + LCLType; type TLazRegionFillMode = (rfmOddEven, rfmWinding); diff --git a/lcl/lclbase.lpk b/lcl/lclbase.lpk index 0b9a9c68bb..8f4d07f3b4 100644 --- a/lcl/lclbase.lpk +++ b/lcl/lclbase.lpk @@ -27,7 +27,7 @@ - + @@ -1192,6 +1192,10 @@ + + + + diff --git a/lcl/lclintf.pas b/lcl/lclintf.pas index eab04150f9..79f3e3a51a 100644 --- a/lcl/lclintf.pas +++ b/lcl/lclintf.pas @@ -50,9 +50,11 @@ uses {$IFDEF Windows}Windows, ShellApi, LazUtf16,{$ENDIF} {$IFDEF UNIX}Unix, {$ENDIF} {$IFDEF Darwin}MacOSAll, CocoaAll,{$ENDIF} - Math, Classes, SysUtils, Types, LCLType, LCLProc, GraphType, InterfaceBase, - FileUtil, LazFileUtils, UTF8Process, Maps, LMessages, LazUTF8, lazutf8sysutils, - LCLStrConsts; + Math, Classes, SysUtils, Types, + // LCL + LCLType, LCLProc, LMessages, LCLStrConsts, GraphType, Maps, InterfaceBase, + // LazUtils + FileUtil, LazFileUtils, UTF8Process, LazUTF8, LazUTF8SysUtils; {$ifdef Trace} {$ASSERTIONS ON} @@ -66,7 +68,6 @@ uses function PredefinedClipboardFormat(AFormat: TPredefinedClipboardFormat): TClipboardFormat; - function MsgKeyDataToShiftState(KeyData: PtrInt): TShiftState; function GetTickCount: DWord; inline; diff --git a/lcl/lclplatformdef.pas b/lcl/lclplatformdef.pas new file mode 100644 index 0000000000..29448bea8f --- /dev/null +++ b/lcl/lclplatformdef.pas @@ -0,0 +1,99 @@ +{ + ***************************************************************************** + 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. + ***************************************************************************** + + Contains the non-GUI dependent parts of LCL Platform definition. +} + +unit LCLPlatformDef; + +{$mode objfpc}{$H+} + +interface + +uses + SysUtils; + +type + TLCLPlatform = ( + lpGtk, + lpGtk2, + lpGtk3, + lpWin32, + lpWinCE, + lpCarbon, + lpQT, + lpfpGUI, + lpNoGUI, + lpCocoa, + lpCustomDrawn + ); + + TLCLPlatforms = set of TLCLPlatform; + + function DirNameToLCLPlatform(const ADirName: string): TLCLPlatform; + function GetBuildLCLWidgetType: TLCLPlatform; + +const + LCLPlatformDirNames: array[TLCLPlatform] of string = ( + 'gtk', + 'gtk2', + 'gtk3', + 'win32', + 'wince', + 'carbon', + 'qt', + 'fpgui', + 'nogui', + 'cocoa', + 'customdrawn' + ); + + LCLPlatformDisplayNames: array[TLCLPlatform] of string = ( + 'gtk (deprecated)', + 'gtk 2', + 'gtk3 (alpha)', + 'win32/win64', + 'wince', + 'carbon', + 'qt', + 'fpGUI (alpha)', + 'NoGUI', + 'cocoa (alpha)', + 'customdraw (alpha)' + ); + +var + // set by lazbuild.lpr and used by GetDefaultLCLWidgetType + BuildLCLWidgetType: TLCLPlatform = + {$IFDEF MSWindows}{$DEFINE WidgetSetDefined} + lpWin32; + {$ENDIF} + {$IFDEF darwin}{$DEFINE WidgetSetDefined} + lpCarbon; + {$ENDIF} + {$IFNDEF WidgetSetDefined} + lpGtk2; + {$ENDIF} + + +implementation + +function DirNameToLCLPlatform(const ADirName: string): TLCLPlatform; +begin + for Result:=Low(TLCLPlatform) to High(TLCLPlatform) do + if CompareText(ADirName,LCLPlatformDirNames[Result])=0 then exit; + Result:=lpGtk2; +end; + +function GetBuildLCLWidgetType: TLCLPlatform; +begin + Result:=BuildLCLWidgetType; +end; + +end. + diff --git a/lcl/lclproc.pas b/lcl/lclproc.pas index a2e823f438..704c7a5103 100644 --- a/lcl/lclproc.pas +++ b/lcl/lclproc.pas @@ -27,8 +27,11 @@ interface uses {$IFDEF Darwin}MacOSAll, {$ENDIF} {$IFnDEF WithOldDebugln} LazLogger, {$ENDIF} - Classes, SysUtils, Math, TypInfo, Types, FPCAdds, AvgLvlTree, LazFileUtils, - LCLStrConsts, LCLType, WSReferences, LazMethodList, LazUTF8, LazUTF8Classes; + Classes, SysUtils, Math, TypInfo, Types, + // LazUtils + FPCAdds, AvgLvlTree, LazFileUtils, LazMethodList, LazUTF8, LazUTF8Classes, + // LCL + LCLStrConsts, LCLType; type TMethodList = LazMethodList.TMethodList; @@ -140,7 +143,6 @@ function BreakString(const s: string; MaxLineLength, Indent: integer): string; function ComparePointers(p1, p2: Pointer): integer; function CompareHandles(h1, h2: THandle): integer; -function CompareLCLHandles(h1, h2: TLCLHandle): integer; function CompareRect(R1, R2: PRect): Boolean; function ComparePoints(const p1, p2: TPoint): integer; function CompareMethods(const m1, m2: TMethod): boolean; @@ -1202,16 +1204,6 @@ begin Result:=0; end; -function CompareLCLHandles(h1, h2: TLCLHandle): integer; -begin - if h1>h2 then - Result:=1 - else if h1

h2 then + Result:=1 + else if h1

=30001}jsonscanner,{$ENDIF} jsonparser, fpjson; + Classes, SysUtils, + {$IF FPC_FULLVERSION>=30001}jsonscanner,{$ENDIF} jsonparser, fpjson, + // LCL + LCLProc, StringHashList, + // LazUtils + FileUtil, LazFileUtils, AvgLvlTree, LConvEncoding, LazUTF8, LazUTF8Classes; type TStringsType = ( diff --git a/packager/interpkgconflictfiles.pas b/packager/interpkgconflictfiles.pas index a942057960..29c5f0c1c8 100644 --- a/packager/interpkgconflictfiles.pas +++ b/packager/interpkgconflictfiles.pas @@ -1046,7 +1046,8 @@ begin if TargetCPU='' then TargetCPU:=GetCompiledTargetCPU; LCLWidgetType:='$(LCLWidgetType)'; GlobalMacroList.SubstituteStr(LCLWidgetType); - if LCLWidgetType='' then LCLWidgetType:=LCLPlatformDirNames[GetDefaultLCLWidgetType]; + if LCLWidgetType='' then + LCLWidgetType:=GetLCLWidgetTypeName; {$IFDEF VerboseCheckInterPkgFiles} debugln(['CheckInterPkgFiles TargetOS=',TargetOS,' TargetCPU=',TargetCPU,' LCLWidgetType=',LCLWidgetType]);