GLScene преди 5 години
родител
ревизия
4cd68829b1

+ 3 - 2
Source/FSceneEditor.pas

@@ -34,11 +34,12 @@ uses
 
   GLScene,
   GLWin32Viewer,
-  GLSceneRegister,
   GLStrings,
   FInfo,
   XCollection,
-  GLCrossPlatform;
+  GLCrossPlatform,
+
+  GLS.SceneRegister;
 
 const
   SCENE_SELECTED = 0;

+ 26 - 21
Source/GLPhysX.pas

@@ -10,34 +10,39 @@ uses
   Winapi.Windows;
 
 const
-  DLL = 'PhysXwrap.dll';
+{$IFDEF WIN32}
+  PhysXDLL = 'PhysXwrap.dll';
+{$ELSE}
+  PhysXDLL = 'PhysXwrap.dll';
+{$ENDIF}
 
-procedure SDK_Version(major, minor, bugfix: pdword); stdcall; external DLL;
 
-procedure InitNx; stdcall; external DLL;
-procedure ReleaseNx; stdcall; external DLL;
 
-procedure SimulateNx(dt: single); stdcall; external DLL;
-procedure GetResultsNx; stdcall; external DLL;
+procedure SDK_Version(major, minor, bugfix: pdword); stdcall; external PhysXDLL;
 
-procedure ActorCount(count: pdword); stdcall; external DLL;
-procedure GetActor(index: dword; obj: pdword); stdcall; external DLL;
-procedure GetActorGlobalPosition(actor: dword; x,y,z: psingle); stdcall; external DLL;
-procedure SetActorGlobalPosition(actor: dword; x,y,z: single); stdcall; external DLL;
-procedure GetActorGlobalOrientation(actor: dword; x,y,z,w: psingle); stdcall; external DLL;
-procedure SetActorGlobalOrientation(actor: dword; x,y,z,w: single); stdcall; external DLL;
-procedure GetActorCMassGlobalPosition(actor: dword; x,y,z: psingle); stdcall; external DLL;
-procedure SetActorCMassGlobalPosition(actor: dword; x,y,z: single); stdcall; external DLL;
-procedure GetActorMass(actor: dword; m: psingle); stdcall; external DLL;
-procedure SetActorMass(actor: dword; m: single); stdcall; external DLL;
+procedure InitNx; stdcall; external PhysXDLL;
+procedure ReleaseNx; stdcall; external PhysXDLL;
 
-procedure ActorAddForce(actor: dword; x,y,z: single); stdcall; external DLL;
+procedure SimulateNx(dt: single); stdcall; external PhysXDLL;
+procedure GetResultsNx; stdcall; external PhysXDLL;
 
+procedure ActorCount(count: pdword); stdcall; external PhysXDLL;
+procedure GetActor(index: dword; obj: pdword); stdcall; external PhysXDLL;
+procedure GetActorGlobalPosition(actor: dword; x,y,z: psingle); stdcall; external PhysXDLL;
+procedure SetActorGlobalPosition(actor: dword; x,y,z: single); stdcall; external PhysXDLL;
+procedure GetActorGlobalOrientation(actor: dword; x,y,z,w: psingle); stdcall; external PhysXDLL;
+procedure SetActorGlobalOrientation(actor: dword; x,y,z,w: single); stdcall; external PhysXDLL;
+procedure GetActorCMassGlobalPosition(actor: dword; x,y,z: psingle); stdcall; external PhysXDLL;
+procedure SetActorCMassGlobalPosition(actor: dword; x,y,z: single); stdcall; external PhysXDLL;
+procedure GetActorMass(actor: dword; m: psingle); stdcall; external PhysXDLL;
+procedure SetActorMass(actor: dword; m: single); stdcall; external PhysXDLL;
 
-procedure CreateGroundPlane(actor: pdword); stdcall; external DLL;
-procedure CreateBox(actor: pdword; sx,sy,sz,dens: single); stdcall; external DLL;
-procedure CreateSphere(actor: pdword; rad: single; dens: single); stdcall; external DLL;
-procedure CreateCylinder(actor: pdword; rad: single; height: single; dens: single); stdcall; external DLL;
+procedure ActorAddForce(actor: dword; x,y,z: single); stdcall; external PhysXDLL;
+
+procedure CreateGroundPlane(actor: pdword); stdcall; external PhysXDLL;
+procedure CreateBox(actor: pdword; sx,sy,sz,dens: single); stdcall; external PhysXDLL;
+procedure CreateSphere(actor: pdword; rad: single; dens: single); stdcall; external PhysXDLL;
+procedure CreateCylinder(actor: pdword; rad: single; height: single; dens: single); stdcall; external PhysXDLL;
 
 //--------------------------------------------
 implementation

+ 4 - 4
Source/GLS.ParallelRegister.pas

@@ -1,11 +1,11 @@
 //
 // This unit is part of the GLScene Engine, http://glscene.org
 //
-{
-   Registration unit for GLScene GPU Computing package. 
-}
+
 unit GLS.ParallelRegister;
 
+(*  Registration unit for GLScene GPU Computing package *)
+
 interface
 
 uses
@@ -16,7 +16,7 @@ uses
   StrEdit,
   ToolsAPI,
    
-  GLSceneRegister;
+  GLS.SceneRegister;
 
 procedure Register;
 

+ 1887 - 1887
Source/GLSceneRegister.pas → Source/GLS.SceneRegister.pas

@@ -1,1887 +1,1887 @@
-//
-// This unit is part of the GLScene Engine, http://glscene.org
-//
-
-unit GLSceneRegister;
-
-(*
-  Registration unit for GLScene library components, property editors and
-  IDE experts.
-*)
-
-interface
-
-{$I GLScene.inc}
-
-uses
-  WinApi.Windows,
-  System.Classes,
-  System.SysUtils,
-  System.TypInfo,
-  VCL.Forms,
-  VCL.Dialogs,
-  VCL.Controls,
-  VCL.StdCtrls,
-  VCL.Graphics,
-
-  ToolsAPI,
-  DesignIntf,
-  DesignEditors,
-  VCLEditors,
-
-  GLScene,
-  GLStrings,
-  GLContext,
-  GLColor,
-  GLCrossPlatform,
-  GLObjectManager;
-
-type
-  TGLLibMaterialNameProperty = class(TStringProperty)
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    procedure Edit; override;
-  end;
-
-  TGLSceneViewerEditor = class(TComponentEditor)
-  public
-    procedure ExecuteVerb(Index: Integer); override;
-    function GetVerb(Index: Integer): string; override;
-    function GetVerbCount: Integer; override;
-  end;
-
-  TGLSceneEditor = class(TComponentEditor)
-  public
-    procedure Edit; override;
-    procedure ExecuteVerb(Index: Integer); override;
-    function GetVerb(Index: Integer): string; override;
-    function GetVerbCount: Integer; override;
-  end;
-
-  TGLResolutionProperty = class(TPropertyEditor)
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    function GetValue: string; override;
-    procedure GetValues(Proc: TGetStrProc); override;
-    procedure SetValue(const Value: string); override;
-  end;
-
-  TGLTextureProperty = class(TClassProperty)
-  public
-    function GetAttributes: TPropertyAttributes; override;
-  end;
-
-  TGLTextureImageProperty = class(TClassProperty)
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    procedure Edit; override;
-  end;
-
-  TGLImageClassProperty = class(TClassProperty)
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    procedure GetValues(Proc: TGetStrProc); override;
-    function GetValue: string; override;
-    procedure SetValue(const Value: string); override;
-  end;
-
-  TGLColorProperty = class(TClassProperty, ICustomPropertyDrawing,
-    ICustomPropertyListDrawing)
-  protected
-    function ColorToBorderColor(aColor: TColorVector; selected: Boolean): TColor;
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    procedure GetValues(Proc: TGetStrProc); override;
-    procedure Edit; override;
-    // ICustomPropertyListDrawing  stuff
-    procedure ListMeasureHeight(const Value: string; ACanvas: TCanvas; var AHeight: Integer);
-    procedure ListMeasureWidth(const Value: string; ACanvas: TCanvas; var AWidth: Integer);
-    procedure ListDrawValue(const Value: string; ACanvas: TCanvas; const ARect: TRect; ASelected: Boolean);
-    // CustomPropertyDrawing
-    procedure PropDrawName(ACanvas: TCanvas; const ARect: TRect; ASelected: Boolean);
-    procedure PropDrawValue(ACanvas: TCanvas; const ARect: TRect; ASelected: Boolean);
-    function GetValue: string; override;
-    procedure SetValue(const Value: string); override;
-  end;
-
-  TSoundFileProperty = class(TClassProperty)
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    function GetValue: string; override;
-    procedure Edit; override;
-  end;
-
-  TSoundNameProperty = class(TStringProperty)
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    procedure GetValues(Proc: TGetStrProc); override;
-  end;
-
-  TGLCoordinatesProperty = class(TClassProperty)
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    procedure Edit; override;
-  end;
-
-  TGLMaterialProperty = class(TClassProperty)
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    procedure Edit; override;
-  end;
-
-  TGLGUILayoutEditor = class(TComponentEditor)
-  public
-    procedure Edit; override;
-    procedure ExecuteVerb(Index: Integer); override;
-    function GetVerb(Index: Integer): string; override;
-    function GetVerbCount: Integer; override;
-  end;
-
-  (* Editor copied from DsgnIntf.
-    Could have been avoided, if only that guy at Borland didn't chose to
-    publish only half of the stuff (and that's not the only class with
-    that problem, most of the subitems handling code in TGLSceneBaseObject is
-    here for the same reason...), the "protected" wasn't meant just to lure
-    programmers into code they can't reuse... Arrr! and he did that again
-    in D6! Grrr... *)
-  TReuseableDefaultEditor = class(TComponentEditor, IDefaultEditor)
-  protected
-    FFirst: IProperty;
-    FBest: IProperty;
-    FContinue: Boolean;
-    procedure CheckEdit(const Prop: IProperty);
-    procedure EditProperty(const Prop: IProperty; var Continue: Boolean); virtual;
-  public
-    procedure Edit; override;
-  end;
-
-  //  Editor for material library.
-  TGLMaterialLibraryEditor = class(TReuseableDefaultEditor, IDefaultEditor)
-  protected
-    procedure EditProperty(const Prop: IProperty; var Continue: Boolean); override;
-  public
-    procedure ExecuteVerb(Index: Integer); override;
-    function GetVerb(Index: Integer): string; override;
-    function GetVerbCount: Integer; override;
-  end;
-
-  TGLAnimationNameProperty = class(TStringProperty)
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    procedure GetValues(Proc: TGetStrProc); override;
-  end;
-
-  (*  Selection editor for TGLSoundLibrary 
-    Allows units to be added to the uses clause automatically when
-    sound files are loaded into a TGLSoundLibrary at design-time. *)
-  TGLSoundLibrarySelectionEditor = class(TSelectionEditor)
-  public
-    procedure RequiresUnits(Proc: TGetStrProc); override;
-  end;
-
-  (*  Selection editor for TGLBaseSceneObject.
-    Allows units to be added to the uses clause automatically when
-    behaviours/effects are added to a TGLBaseSceneObject at design-time. *)
-  TGLBaseSceneObjectSelectionEditor = class(TSelectionEditor)
-  public
-    procedure RequiresUnits(Proc: TGetStrProc); override;
-  end;
-
-  // Editor for GLScene Archive Manager.  
-  TGLSArchiveManagerEditor = class(TReuseableDefaultEditor, IDefaultEditor)
-  protected
-    procedure EditProperty(const Prop: IProperty; var Continue: Boolean); override;
-  public
-    procedure ExecuteVerb(Index: Integer); override;
-    function GetVerb(Index: Integer): string; override;
-    function GetVerbCount: Integer; override;
-  end;
-
-  TGLMaterialComponentNameProperty = class(TStringProperty)
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    procedure Edit; override;
-  end;
-
-  TGLLibTextureNameProperty = class(TGLMaterialComponentNameProperty)
-  public
-    procedure GetValues(Proc: TGetStrProc); override;
-  end;
-
-  TGLLibSamplerNameProperty = class(TGLMaterialComponentNameProperty)
-  public
-    procedure GetValues(Proc: TGetStrProc); override;
-  end;
-
-  TGLLibCombinerNameProperty = class(TGLMaterialComponentNameProperty)
-  public
-    procedure GetValues(Proc: TGetStrProc); override;
-  end;
-
-  TGLLibShaderNameProperty = class(TGLMaterialComponentNameProperty)
-  public
-    procedure GetValues(Proc: TGetStrProc); override;
-  end;
-
-  TGLLibAttachmentNameProperty = class(TGLMaterialComponentNameProperty)
-  public
-    procedure GetValues(Proc: TGetStrProc); override;
-  end;
-
-  TGLLibAsmProgNameProperty = class(TGLMaterialComponentNameProperty)
-  public
-    procedure GetValues(Proc: TGetStrProc); override;
-  end;
-
-  TPictureFileProperty = class(TStringProperty)
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    procedure Edit; override;
-  end;
-
-  TShaderFileProperty = class(TStringProperty)
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    procedure Edit; override;
-  end;
-
-  TAsmProgFileProperty = class(TStringProperty)
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    procedure Edit; override;
-  end;
-
-  TUniformAutoSetProperty = class(TPropertyEditor)
-  private
-    procedure PassUniform(const S: string);
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    procedure Edit; override;
-  end;
-
-  TGLShaderEditorProperty = class(TClassProperty)
-  protected
-    function GetStrings: TStrings;
-    procedure SetStrings(const Value: TStrings);
-    procedure OnShaderCheck(Sender: TObject);
-  public
-    function GetAttributes: TPropertyAttributes; override;
-    procedure Edit; override;
-  end;
-
-// Register Components
-procedure Register;
-
-// Auto-create for object manager
-function ObjectManager: TGLObjectManager;
-
-// ------------------------------------------------------------------
-implementation
-// ------------------------------------------------------------------
-
-uses
-  FLibMaterialPicker,
-  FGUILayoutEditor,
-  FMaterialEditorForm,
-  FShaderMemo,
-  FShaderUniformEditor,
-  FVectorEditor,
-  FSceneEditor,
-  GLAnimatedSprite,
-  GLApplicationFileIO,
-  GLAsmShader,
-  GLAsyncHDS,
-  GLAsyncTimer,
-  GLAtmosphere,
-  GLAVIRecorder,
-  GLBaseClasses,
-  GLBitmapFont,
-  GLBlur,
-  GLBumpmapHDS,
-  GLBumpShader,
-  GLCadencer,
-  GLCameraController,
-  GLCelShader,
-  GLCollision,
-  GLCompositeImage,
-  GLConsole,
-  GLCoordinates,
-  GLDCE,
-  GLDynamicTexture,
-  GLEParticleMasksManager,
-  GLExplosionFx,
-  GLExtrusion,
-  GLFBORenderer,
-  GLFeedback,
-  GLFireFX,
-  GLFPSMovement,
-  GLGameMenu,
-  GLGeomObjects,
-  GLGizmo,
-  GLGraph,
-  GLGraphics,
-  GLGui,
-  GLHeightData,
-  GLHeightTileFileHDS,
-  GLHiddenLineShader,
-  GLHUDObjects,
-  GLImposter,
-  GLLensFlare,
-  GLLinePFX,
-  GLMaterial,
-  GLMaterialEx,
-  GLMaterialMultiProxy,
-  GLMaterialScript,
-  GLMesh,
-  GLMirror,
-  GLMultiMaterialShader,
-  GLMultiPolygon,
-  GLMultiProxy,
-  GLNavigator,
-  GLNodes,
-  GLObjects,
-  GLOutlineShader,
-  GLParticleFX,
-  GLParticles,
-  GLPerlin,
-  GLPerlinPFX,
-  GLPhongShader,
-  GLPolyhedron,
-  GLPortal,
-  GLPostEffects,
-  GLProjectedTextures,
-  GLProxyObjects,
-  GLRenderContextInfo,
-  GLSArchiveManager,
-  GLScreen,
-  GLScriptBase,
-  GLShaderCombiner,
-  GLShadowHDS,
-  GLShadowPlane,
-  GLShadowVolume,
-  GLSimpleNavigation,
-  GLSkyBox,
-  GLSkydome,
-  GLSLanguage,
-  GLSLBumpShader,
-  GLSLDiffuseSpecularShader,
-  GLSLPostShaders,
-  GLSLProjectedTextures,
-  GLSLShader,
-  GLSmoothNavigator,
-  GLState,
-  GLTeapot,
-  GLTerrainRenderer,
-  GLTexCombineShader,
-  GLTexLensFlare,
-  GLTexture,
-  GLTexturedHDS,
-  GLTextureImageEditors,
-  GLTextureSharingShader,
-  GLThorFX,
-  GLTilePlane,
-  GLTimeEventsMgr,
-  GLTrail,
-  GLTree,
-  GLTypes,
-  GLFileTIN,
-  GLUserShader,
-  GLUtils,
-  GLVectorFileObjects,
-  GLVfsPAK,
-  GLWin32Viewer,
-  GLWaterPlane,
-  GLWindows,
-  GLWindowsFont,
-  GLzBuffer,
-  GLSMemo,
-  GLVectorTypes,
-  GLVectorGeometry,
-  // Image file formats
-  FileDDSImage,
-  FileTGA,
-  // Vector file formats
-  GLFile3DS,
-  GLFileASE,
-  GLFileB3D,
-  GLFileGL2,
-  GLFileGTS,
-  GLFileLMTS,
-  GLFileLWO,
-  GLFileMD2,
-  GLFileMD3,
-  GLFileMD5,
-  GLFileMDC,
-  GLFileMS3D,
-  GLFileNMF,
-  GLFileNurbs,
-  GLFileObj,
-  GLFileOCT,
-  GLFilePLY,
-  GLFileQ3BSP,
-  GLFileSMD,
-  GLFileSTL,
-  GLFileVRML,
-
-  // Sound file formats
-  GLFileWAV,
-  GLFileMP3,
-
-  // Raster file format
-  GLFileDDS,
-  GLFileO3TC,
-  GLFileHDR,
-  GLFileJPEG,
-  GLFilePNG,
-  GLFileBMP,
-  GLFileTGA,
-
-  GLSound,
-  GLSoundFileObjects,
-  GLSpaceText,
-  GLJoystick,
-  GLScreenSaver,
-  GLFullScreenViewer,
-  GLSLog;
-
-var
-  vObjectManager: TGLObjectManager;
-
-function ObjectManager: TGLObjectManager;
-begin
-  if not Assigned(vObjectManager) then
-    vObjectManager := TGLObjectManager.Create(nil);
-  Result := vObjectManager;
-end;
-
-//----------------- TGLSceneViewerEditor ---------------------------------------
-procedure TGLSceneViewerEditor.ExecuteVerb(Index: Integer);
-var
-  source: TGLSceneViewer;
-begin
-  source := Component as TGLSceneViewer;
-  case Index of
-    0: source.Buffer.ShowInfo;
-  end;
-end;
-
-function TGLSceneViewerEditor.GetVerb(Index: Integer): string;
-begin
-  case Index of
-    0: Result := 'Show context info';
-  end;
-end;
-
-function TGLSceneViewerEditor.GetVerbCount: Integer;
-begin
-  Result := 1;
-end;
-
-//----------------- TGLSceneEditor ---------------------------------------------
-
-procedure TGLSceneEditor.Edit;
-begin
-  with GLSceneEditorForm do
-  begin
-    SetScene(Self.Component as TGLScene, Self.Designer);
-    Show;
-  end;
-end;
-
-procedure TGLSceneEditor.ExecuteVerb(Index: Integer);
-begin
-  case Index of
-    0: Edit;
-  end;
-end;
-
-function TGLSceneEditor.GetVerb(Index: Integer): string;
-begin
-  case Index of
-    0: Result := 'Show Scene Editor';
-  end;
-end;
-
-function TGLSceneEditor.GetVerbCount: Integer;
-begin
-  Result := 1;
-end;
-
-//----------------- TGLResolutionProperty ----------------------------------------
-function TGLResolutionProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paValueList];
-end;
-
-function TGLResolutionProperty.GetValue: string;
-begin
-  Result := vVideoModes[GetOrdValue].Description;
-end;
-
-procedure TGLResolutionProperty.GetValues(Proc: TGetStrProc);
-var
-  i: Integer;
-begin
-  for i := 0 to vNumberVideoModes - 1 do
-    Proc(vVideoModes[i].Description);
-end;
-
-procedure TGLResolutionProperty.SetValue(const Value: string);
-
-const
-  Nums = ['0' .. '9'];
-
-var
-  XRes, YRes, BPP: Integer;
-  Pos, SLength: Integer;
-  TempStr: string;
-
-begin
-  if CompareText(Value, 'default') <> 0 then
-  begin
-    // initialize scanning
-    TempStr := Trim(Value) + '|'; // ensure at least one delimiter
-    SLength := Length(TempStr);
-    XRes := 0;
-    YRes := 0;
-    BPP := 0;
-    // contains the string something?
-    if SLength > 1 then
-    begin
-      // determine first number
-      for Pos := 1 to SLength do
-        if not(AnsiChar(TempStr[Pos]) in Nums) then
-          Break;
-      if Pos <= SLength then
-      begin
-        // found a number?
-        XRes := StrToInt(Copy(TempStr, 1, Pos - 1));
-        // search for following non-numerics
-        for Pos := Pos to SLength do
-          if AnsiChar(TempStr[Pos]) in Nums then
-            Break;
-        Delete(TempStr, 1, Pos - 1); // take it out of the String
-        SLength := Length(TempStr); // rest length of String
-        if SLength > 1 then // something to scan?
-        begin
-          // determine second number
-          for Pos := 1 to SLength do
-            if not(AnsiChar(TempStr[Pos]) in Nums) then
-              Break;
-          if Pos <= SLength then
-          begin
-            YRes := StrToInt(Copy(TempStr, 1, Pos - 1));
-            // search for following non-numerics
-            for Pos := Pos to SLength do
-              if AnsiChar(TempStr[Pos]) in Nums then
-                Break;
-            Delete(TempStr, 1, Pos - 1); // take it out of the String
-            SLength := Length(TempStr); // rest length of String
-            if SLength > 1 then
-            begin
-              for Pos := 1 to SLength do
-                if not(AnsiChar(TempStr[Pos]) in Nums) then
-                  Break;
-              if Pos <= SLength then
-                BPP := StrToInt(Copy(TempStr, 1, Pos - 1));
-            end;
-          end;
-        end;
-      end;
-    end;
-    SetOrdValue(GetIndexFromResolution(XRes, YRes, BPP));
-  end
-  else
-    SetOrdValue(0);
-end;
-
-//----------------- TGLTextureProperty -----------------------------------------
-
-function TGLTextureProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paSubProperties];
-end;
-
-//----------------- TGLTextureImageProperty ------------------------------------
-
-function TGLTextureImageProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paDialog];
-end;
-
-procedure TGLTextureImageProperty.Edit;
-begin
-  if EditGLTextureImage(TGLTextureImage(GetOrdValue)) then
-    Designer.Modified;
-end;
-
-//----------------- TGLImageClassProperty --------------------------------------
-
-function TGLImageClassProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paValueList];
-end;
-
-procedure TGLImageClassProperty.GetValues(Proc: TGetStrProc);
-var
-  i: Integer;
-  sl: TStrings;
-begin
-  sl := GetGLTextureImageClassesAsStrings;
-  try
-    for i := 0 to sl.Count - 1 do
-      Proc(sl[i]);
-  finally
-    sl.Free;
-  end;
-end;
-
-function TGLImageClassProperty.GetValue: string;
-begin
-  Result := FindGLTextureImageClass(GetStrValue).FriendlyName;
-end;
-
-procedure TGLImageClassProperty.SetValue(const Value: string);
-var
-  tic: TGLTextureImageClass;
-begin
-  tic := FindGLTextureImageClassByFriendlyName(Value);
-  if Assigned(tic) then
-    SetStrValue(tic.ClassName)
-  else
-    SetStrValue('');
-  Modified;
-end;
-
-//----------------- TGLColorproperty -----------------------------------------------------------------------------------
-
-procedure TGLColorProperty.Edit;
-var
-  colorDialog: TColorDialog;
-  GLColor: TGLColor;
-begin
-  colorDialog := TColorDialog.Create(nil);
-  try
-    GLColor := TGLColor(GetOrdValue);
-    colorDialog.Options := [cdFullOpen];
-    colorDialog.Color := ConvertColorVector(GLColor.Color);
-    if colorDialog.Execute then
-    begin
-      GLColor.Color := ConvertWinColor(colorDialog.Color);
-      Modified;
-    end;
-  finally
-    colorDialog.Free;
-  end;
-end;
-
-function TGLColorProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paSubProperties, paValueList, paDialog];
-end;
-
-procedure TGLColorProperty.GetValues(Proc: TGetStrProc);
-begin
-  ColorManager.EnumColors(Proc);
-end;
-
-function TGLColorProperty.GetValue: string;
-begin
-  Result := ColorManager.GetColorName(TGLColor(GetOrdValue).Color);
-end;
-
-procedure TGLColorProperty.SetValue(const Value: string);
-begin
-  TGLColor(GetOrdValue).Color := ColorManager.GetColor(Value);
-  Modified;
-end;
-
-function TGLColorProperty.ColorToBorderColor(aColor: TColorVector; selected: Boolean): TColor;
-begin
-  if (aColor.X > 0.75) or (aColor.Y > 0.75) or (aColor.Z > 0.75) then
-    Result := clBlack
-  else if selected then
-    Result := clWhite
-  else
-    Result := ConvertColorVector(aColor);
-end;
-
-procedure TGLColorProperty.PropDrawValue(ACanvas: TCanvas; const ARect: TRect;
-  ASelected: Boolean);
-begin
-  if GetVisualValue <> '' then
-    ListDrawValue(GetVisualValue, ACanvas, ARect, True)
-  else
-    DefaultPropertyDrawValue(Self, ACanvas, ARect);
-end;
-
-procedure TGLColorProperty.ListDrawValue(const Value: string; ACanvas: TCanvas;
-  const ARect: TRect; ASelected: Boolean);
-var
-  vRight: Integer;
-  vOldPenColor, vOldBrushColor: TColor;
-  Color: TColorVector;
-begin
-  vRight := (ARect.Bottom - ARect.Top) + ARect.Left;
-  with ACanvas do
-    try
-      vOldPenColor := Pen.Color;
-      vOldBrushColor := Brush.Color;
-
-      Pen.Color := Brush.Color;
-      Rectangle(ARect.Left, ARect.Top, vRight, ARect.Bottom);
-
-      Color := ColorManager.GetColor(Value);
-      Brush.Color := ConvertColorVector(Color);
-      Pen.Color := ColorToBorderColor(Color, ASelected);
-
-      Rectangle(ARect.Left + 1, ARect.Top + 1, vRight - 1, ARect.Bottom - 1);
-
-      Brush.Color := vOldBrushColor;
-      Pen.Color := vOldPenColor;
-    finally
-      DefaultPropertyListDrawValue(Value, ACanvas,
-        Rect(vRight, ARect.Top, ARect.Right, ARect.Bottom), ASelected);
-    end;
-end;
-
-procedure TGLColorProperty.ListMeasureWidth(const Value: string;
-  ACanvas: TCanvas; var AWidth: Integer);
-begin
-  AWidth := AWidth + ACanvas.TextHeight('M');
-end;
-
-procedure TGLColorProperty.ListMeasureHeight(const Value: string;
-  ACanvas: TCanvas; var AHeight: Integer);
-begin
-  // Nothing
-end;
-
-procedure TGLColorProperty.PropDrawName(ACanvas: TCanvas; const ARect: TRect;
-  ASelected: Boolean);
-begin
-  DefaultPropertyDrawName(Self, ACanvas, ARect);
-end;
-
-//----------------- TSoundFileProperty -----------------------------------------
-function TSoundFileProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paDialog];
-end;
-
-function TSoundFileProperty.GetValue: string;
-var
-  sample: TGLSoundSample;
-begin
-  sample := GetComponent(0) as TGLSoundSample;
-  if sample.Data <> nil then
-    Result := '(' + sample.Data.ClassName + ')'
-  else
-    Result := '(empty)';
-end;
-
-procedure TSoundFileProperty.Edit;
-var
-  ODialog: TOpenDialog;
-  sample: TGLSoundSample;
-  Desc, F: string;
-begin
-  sample := GetComponent(0) as TGLSoundSample;
-  ODialog := TOpenDialog.Create(nil);
-  try
-    GetGLSoundFileFormats.BuildFilterStrings(TGLSoundFile, Desc, F);
-    ODialog.Filter := Desc;
-    if ODialog.Execute then
-    begin
-      sample.LoadFromFile(ODialog.FileName);
-      Modified;
-    end;
-  finally
-    ODialog.Free;
-  end;
-end;
-
-//----------------- TSoundNameProperty -----------------------------------------
-
-function TSoundNameProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paValueList];
-end;
-
-procedure TSoundNameProperty.GetValues(Proc: TGetStrProc);
-var
-  i: Integer;
-  source: TGLBaseSoundSource;
-begin
-  source := (GetComponent(0) as TGLBaseSoundSource);
-  if Assigned(source.SoundLibrary) then
-    with source.SoundLibrary do
-      for i := 0 to Samples.Count - 1 do
-        Proc(Samples[i].Name);
-end;
-
-//----------------- TGLCoordinatesProperty -------------------------------------
-
-function TGLCoordinatesProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paDialog, paSubProperties];
-end;
-
-procedure TGLCoordinatesProperty.Edit;
-var
-  glc: TGLCoordinates;
-  x, y, z: Single;
-begin
-  glc := TGLCoordinates(GetOrdValue);
-  x := glc.x;
-  y := glc.y;
-  z := glc.z;
-  if GLVectorEditorForm.Execute(x, y, z) then
-  begin
-    glc.AsVector := VectorMake(x, y, z);
-    Modified;
-  end;
-end;
-
-//----------------- TGLMaterialProperty --------------------------------------------------------------------------------
-
-function TGLMaterialProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paDialog, paSubProperties];
-end;
-
-procedure TGLMaterialProperty.Edit;
-begin
-  if FMaterialEditorForm.GLMaterialEditorForm.Execute(TGLMaterial(GetOrdValue))
-  then
-    Modified;
-end;
-
-procedure TGLGUILayoutEditor.Edit;
-begin
-  GUILayoutEditorForm.Execute(TGLGuiLayout(Self.Component));
-end;
-
-procedure TGLGUILayoutEditor.ExecuteVerb(Index: Integer);
-begin
-  case Index of
-    0: Edit;
-  end;
-end;
-
-function TGLGUILayoutEditor.GetVerb(Index: Integer): string;
-begin
-  case Index of
-    0:
-      Result := 'Show Layout Editor';
-  end;
-end;
-
-function TGLGUILayoutEditor.GetVerbCount: Integer;
-begin
-  Result := 1;
-end;
-
-procedure TReuseableDefaultEditor.CheckEdit(const Prop: IProperty);
-begin
-  if FContinue then
-    EditProperty(Prop, FContinue);
-end;
-
-procedure TReuseableDefaultEditor.EditProperty(const Prop: IProperty;
-  var Continue: Boolean);
-var
-  PropName: string;
-  BestName: string;
-  MethodProperty: IMethodProperty;
-
-  procedure ReplaceBest;
-  begin
-    FBest := Prop;
-    if FFirst = FBest then
-      FFirst := nil;
-  end;
-
-begin
-  if not Assigned(FFirst) and Supports(Prop, IMethodProperty, MethodProperty)
-  then
-    FFirst := Prop;
-  PropName := Prop.GetName;
-  BestName := '';
-  if Assigned(FBest) then
-    BestName := FBest.GetName;
-  if CompareText(PropName, 'ONCREATE') = 0 then
-    ReplaceBest
-  else if CompareText(BestName, 'ONCREATE') <> 0 then
-    if CompareText(PropName, 'ONCHANGE') = 0 then
-      ReplaceBest
-    else if CompareText(BestName, 'ONCHANGE') <> 0 then
-      if CompareText(PropName, 'ONCLICK') = 0 then
-        ReplaceBest;
-end;
-
-procedure TReuseableDefaultEditor.Edit;
-var
-  Components: IDesignerSelections;
-begin
-  Components := TDesignerSelections.Create;
-  FContinue := True;
-  Components.Add(Component);
-  FFirst := nil;
-  FBest := nil;
-  try
-    GetComponentProperties(Components, tkAny, Designer, CheckEdit);
-    if FContinue then
-      if Assigned(FBest) then
-        FBest.Edit
-      else if Assigned(FFirst) then
-        FFirst.Edit;
-  finally
-    FFirst := nil;
-    FBest := nil;
-  end;
-end;
-
-//----------------- TGLMaterialLibraryEditor --------------------------------------------------------------------------------
-procedure TGLMaterialLibraryEditor.EditProperty(const Prop: IProperty; var Continue: Boolean);
-begin
-  if CompareText(Prop.GetName, 'MATERIALS') = 0 then
-  begin
-    FBest := Prop;
-  end;
-end;
-
-procedure TGLMaterialLibraryEditor.ExecuteVerb(Index: Integer);
-begin
-  case Index of
-    0: Edit;
-  end;
-end;
-
-function TGLMaterialLibraryEditor.GetVerb(Index: Integer): string;
-begin
-  case Index of
-    0: Result := 'Show Material Library Editor';
-  end;
-end;
-
-function TGLMaterialLibraryEditor.GetVerbCount: Integer;
-begin
-  Result := 1
-end;
-
-//----------------- TGLLibMaterialNameProperty ---------------------------------
-
-function TGLLibMaterialNameProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paDialog];
-end;
-
-procedure TGLLibMaterialNameProperty.Edit;
-var
-  buf: string;
-  ml: TGLAbstractMaterialLibrary;
-  obj: TPersistent;
-  Int: IGLMaterialLibrarySupported;
-begin
-  buf := GetStrValue;
-  obj := GetComponent(0);
-  if Supports(obj, IGLMaterialLibrarySupported, Int) then
-    ml := Int.GetMaterialLibrary
-  else
-  begin
-    ml := nil;
-    Assert(False, 'oops, unsupported...');
-  end;
-  if not Assigned(ml) then
-    ShowMessage('Select the material library first.')
-  else if GLLibMaterialPicker.Execute(buf, ml) then
-    SetStrValue(buf);
-end;
-
-//----------------- TGLAnimationNameProperty -----------------------------------
-
-function TGLAnimationNameProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paValueList];
-end;
-
-procedure TGLAnimationNameProperty.GetValues(Proc: TGetStrProc);
-var
-  i: Integer;
-  animControler: TGLAnimationControler;
-  actor: TGLActor;
-begin
-  animControler := (GetComponent(0) as TGLAnimationControler);
-  if Assigned(animControler) then
-  begin
-    actor := animControler.actor;
-    if Assigned(actor) then
-      with actor.Animations do
-      begin
-        for i := 0 to Count - 1 do
-          Proc(Items[i].Name);
-      end;
-  end;
-end;
-//---------------- TGLBaseSceneObjectSelectionEditor -----------------------
-
-procedure TGLBaseSceneObjectSelectionEditor.RequiresUnits(Proc: TGetStrProc);
-var
-  i, j: Integer;
-  comp: TGLBaseSceneObject;
-begin
-  if (Designer = nil) or (Designer.Root = nil) then
-    Exit;
-
-  for i := 0 to Designer.Root.ComponentCount - 1 do
-  begin
-    if (Designer.Root.Components[i] is TGLBaseSceneObject) then
-    begin
-      comp := TGLBaseSceneObject(Designer.Root.Components[i]);
-      for j := 0 to comp.Behaviours.Count - 1 do
-        Proc(FindUnitName(comp.Behaviours[j]));
-      for j := 0 to comp.Effects.Count - 1 do
-        Proc(FindUnitName(comp.Effects[j]));
-    end;
-  end;
-end;
-
-//---------------------------- TGLSoundLibrarySelectionEditor -----------------------
-
-procedure TGLSoundLibrarySelectionEditor.RequiresUnits(Proc: TGetStrProc);
-var
-  i, j: Integer;
-  comp: TGLSoundLibrary;
-begin
-  if (Designer = nil) or (Designer.Root = nil) then
-    Exit;
-
-  for i := 0 to Designer.Root.ComponentCount - 1 do
-  begin
-    if (Designer.Root.Components[i] is TGLSoundLibrary) then
-    begin
-      comp := TGLSoundLibrary(Designer.Root.Components[i]);
-      for j := 0 to comp.Samples.Count - 1 do
-        if Assigned(comp.Samples[j].Data) then
-          Proc(FindUnitName(comp.Samples[j].Data));
-    end;
-  end;
-end;
-
-//-------------------- TGLSArchiveManagerEditor -----------------------
-
-procedure TGLSArchiveManagerEditor.EditProperty(const Prop: IProperty;
-  var Continue: Boolean);
-begin
-  if CompareText(Prop.GetName, 'ARCHIVES') = 0 then
-  begin
-    FBest := Prop;
-  end;
-end;
-
-procedure TGLSArchiveManagerEditor.ExecuteVerb(Index: Integer);
-begin
-  case Index of
-    0: Edit;
-  end;
-end;
-
-function TGLSArchiveManagerEditor.GetVerb(Index: Integer): string;
-begin
-  case Index of
-    0:
-      Result := 'Show Archive Manager Editor';
-  end;
-end;
-
-function TGLSArchiveManagerEditor.GetVerbCount: Integer;
-begin
-  Result := 1
-end;
-
-procedure TGLMaterialComponentNameProperty.Edit;
-var
-  LOwner: IGLMaterialLibrarySupported;
-  LItem: TGLBaseMaterialCollectionItem;
-begin
-  if Supports(GetComponent(0), IGLMaterialLibrarySupported, LOwner) then
-  begin
-    LItem := TGLMaterialLibraryEx(LOwner.GetMaterialLibrary)
-      .Components.GetItemByName(GetStrValue);
-    if Assigned(LItem) then
-      Designer.SelectComponent(LItem);
-    Modified;
-  end;
-end;
-
-function TGLMaterialComponentNameProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paValueList];
-end;
-
-procedure TGLLibTextureNameProperty.GetValues(Proc: TGetStrProc);
-var
-  LOwner: IGLMaterialLibrarySupported;
-begin
-  if Supports(GetComponent(0), IGLMaterialLibrarySupported, LOwner) then
-  begin
-    TGLMaterialLibraryEx(LOwner.GetMaterialLibrary)
-      .GetNames(Proc, TGLTextureImageEx);
-    TGLMaterialLibraryEx(LOwner.GetMaterialLibrary)
-      .GetNames(Proc, TGLFrameBufferAttachment);
-  end;
-end;
-
-procedure TGLLibSamplerNameProperty.GetValues(Proc: TGetStrProc);
-var
-  LOwner: IGLMaterialLibrarySupported;
-begin
-  if Supports(GetComponent(0), IGLMaterialLibrarySupported, LOwner) then
-    TGLMaterialLibraryEx(LOwner.GetMaterialLibrary)
-      .GetNames(Proc, TGLTextureSampler);
-end;
-
-procedure TGLLibCombinerNameProperty.GetValues(Proc: TGetStrProc);
-var
-  LOwner: IGLMaterialLibrarySupported;
-begin
-  if Supports(GetComponent(0), IGLMaterialLibrarySupported, LOwner) then
-    TGLMaterialLibraryEx(LOwner.GetMaterialLibrary)
-      .GetNames(Proc, TGLTextureCombiner);
-end;
-
-procedure TGLLibShaderNameProperty.GetValues(Proc: TGetStrProc);
-var
-  LOwner: IGLMaterialLibrarySupported;
-begin
-  if Supports(GetComponent(0), IGLMaterialLibrarySupported, LOwner) then
-    TGLMaterialLibraryEx(LOwner.GetMaterialLibrary).GetNames(Proc, TGLShaderEx);
-end;
-
-procedure TGLLibAttachmentNameProperty.GetValues(Proc: TGetStrProc);
-var
-  LOwner: IGLMaterialLibrarySupported;
-begin
-  if Supports(GetComponent(0), IGLMaterialLibrarySupported, LOwner) then
-    TGLMaterialLibraryEx(LOwner.GetMaterialLibrary)
-      .GetNames(Proc, TGLFrameBufferAttachment);
-end;
-
-procedure TGLLibAsmProgNameProperty.GetValues(Proc: TGetStrProc);
-var
-  LOwner: IGLMaterialLibrarySupported;
-begin
-  if Supports(GetComponent(0), IGLMaterialLibrarySupported, LOwner) then
-    TGLMaterialLibraryEx(LOwner.GetMaterialLibrary)
-      .GetNames(Proc, TGLASMVertexProgram);
-end;
-
-function TPictureFileProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paDialog];
-end;
-
-procedure TPictureFileProperty.Edit;
-var
-  LFileName: string;
-begin
-  if OpenPictureDialog(LFileName) then
-  begin
-    SetStrValue(RelativePath(LFileName));
-  end;
-  Modified;
-end;
-
-procedure TShaderFileProperty.Edit;
-var
-  ODialog: TOpenDialog;
-begin
-  ODialog := TOpenDialog.Create(nil);
-  try
-    ODialog.Filter := '*.glsl';
-    if ODialog.Execute then
-    begin
-      SetStrValue(RelativePath(ODialog.FileName));
-      Modified;
-    end;
-  finally
-    ODialog.Free;
-  end;
-end;
-
-function TShaderFileProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paDialog];
-end;
-
-procedure TAsmProgFileProperty.Edit;
-var
-  ODialog: TOpenDialog;
-begin
-  ODialog := TOpenDialog.Create(nil);
-  try
-    ODialog.Filter := '*.asm';
-    if ODialog.Execute then
-    begin
-      SetStrValue(RelativePath(ODialog.FileName));
-      Modified;
-    end;
-  finally
-    ODialog.Free;
-  end;
-end;
-
-function TAsmProgFileProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paDialog];
-end;
-
-function TUniformAutoSetProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := [paDialog, paFullWidthName];
-end;
-
-procedure TUniformAutoSetProperty.PassUniform(const S: string);
-begin
-  GLShaderUniformEditor.AddUniform(TGLBaseShaderModel(GetComponent(0))
-    .Uniforms[S]);
-end;
-
-procedure TUniformAutoSetProperty.Edit;
-var
-  LOwner: TGLBaseShaderModel;
-begin
-  LOwner := TGLBaseShaderModel(GetComponent(0));
-  if LOwner.Enabled and LOwner.IsValid then
-  begin
-    with GLShaderUniformEditor do
-    begin
-      Clear;
-      LOwner.MaterialLibrary.GetNames(AddTextureName, TGLTextureImageEx);
-      LOwner.MaterialLibrary.GetNames(AddTextureName, TGLFrameBufferAttachment);
-      LOwner.MaterialLibrary.GetNames(AddSamplerName, TGLTextureSampler);
-      LOwner.GetUniformNames(PassUniform);
-      Execute;
-    end;
-  end;
-end;
-
-function TGLShaderEditorProperty.GetAttributes: TPropertyAttributes;
-begin
-  Result := inherited GetAttributes + [paDialog] - [paSubProperties];
-end;
-
-function TGLShaderEditorProperty.GetStrings: TStrings;
-begin
-  Result := TStrings(GetOrdValue);
-end;
-
-procedure TGLShaderEditorProperty.OnShaderCheck(Sender: TObject);
-var
-  LShader: TGLShaderEx;
-  LContext: TGLContext;
-begin
-  SetStrings(GLShaderEditorForm.GLSLMemo.Lines);
-  LShader := TGLShaderEx(GetComponent(0));
-  LContext := LShader.Handle.RenderingContext;
-  if Assigned(LContext) then
-  begin
-    LContext.Activate;
-    try
-      LShader.DoOnPrepare(LContext);
-      GLShaderEditorForm.CompilatorLog.Lines.Add(LShader.InfoLog);
-    finally
-      LContext.Deactivate;
-    end;
-  end
-  else
-    GLShaderEditorForm.CompilatorLog.Lines.Add
-      ('There is no any rendering context for work with OpenGL');
-end;
-
-procedure TGLShaderEditorProperty.SetStrings(const Value: TStrings);
-begin
-  SetOrdValue(Longint(Value));
-end;
-
-procedure TGLShaderEditorProperty.Edit;
-begin
-  with GLShaderEditorForm do
-  begin
-    OnCheck := OnShaderCheck;
-    GLSLMemo.Lines.Assign(GetStrings);
-    GLSLMemo.CurX := 0;
-    GLSLMemo.CurY := 0;
-    if ShowModal = mrOk then
-    begin
-      SetStrings(GLSLMemo.Lines);
-      Modified;
-    end;
-  end;
-end;
-
-// ******************************************************
-// Register Properties
-//*******************************************************
-procedure GLRegisterPropertiesInCategories;
-begin
-  // property types
-  // TGLScreenDepth in GLWin32FullScreenViewer
-  RegisterPropertiesInCategory(strOpenGLCategoryName,
-     [TypeInfo(TGLCamera), TypeInfo(TGLSceneBuffer),
-     TypeInfo(TGLVSyncMode), TypeInfo(TGLScreenDepth)]);
-  // TGLSceneViewer
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLSceneViewer, ['*Render']);
-
-  // GLScene
-  RegisterPropertiesInCategory(strOpenGLCategoryName,
-    [TypeInfo(TGLObjectsSorting), TypeInfo(TGLProgressEvent),
-    TypeInfo(TGLBehaviours), TypeInfo(TGLEffects),
-    TypeInfo(TGLDirectRenderEvent), TypeInfo(TGLCameraStyle),
-    TypeInfo(TOnCustomPerspective), TypeInfo(TGLScene)]);
-  RegisterPropertiesInCategory(strLayoutCategoryName,
-    [TypeInfo(TGLObjectsSorting), TypeInfo(TGLNormalDirection)]);
-  RegisterPropertiesInCategory(strVisualCategoryName,
-    [TypeInfo(TGLVisibilityCulling), TypeInfo(TGLLightStyle), TypeInfo(TGLColor),
-    TypeInfo(TGLNormalDirection), TypeInfo(TGLCameraStyle)]);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLBaseSceneObject,
-    ['Rotation', 'Direction', 'Position', 'Up', 'Scale', '*Angle', 'ShowAxes', 'FocalLength']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLSceneObject, ['Parts']);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLDirectOpenGL, ['UseBuildList']);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLProxyObjectOptions)]);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLLightSource, ['*Attenuation', 'Shining', 'Spot*']);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLCamera, ['TargetObject']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLCamera, ['DepthOfView', 'SceneScale']);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLNonVisualViewer, ['*Render']);
-
-  // GLObjects
-  RegisterPropertiesInCategory(strOpenGLCategoryName,
-    [TypeInfo(TGLLinesNodes), TypeInfo(TGLLineNodesAspect),
-    TypeInfo(TGLLineSplineMode), TypeInfo(TGLLinesOptions)]);
-  // GLSpaceText
-  RegisterPropertiesInCategory(strLayoutCategoryName, [TypeInfo(TGLTextAdjust)]);
-  RegisterPropertiesInCategory(strLocalizableCategoryName, [TypeInfo(TGLSpaceTextCharRange)]);
-  RegisterPropertiesInCategory(strVisualCategoryName, [TypeInfo(TGLLineSplineMode),
-    TypeInfo(TGLCapType), TypeInfo(TGLNormalSmoothing),
-    TypeInfo(TGLArrowHeadStyle), TypeInfo(TGLTextAdjust)]);
-  // DummyCube
-  RegisterPropertiesInCategory(strLayoutCategoryName, TGLDummyCube, ['VisibleAtRunTime']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLDummyCube, ['CubeSize', 'VisibleAtRunTime']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLPlane, ['*Offset', '*Tiles']);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLSprite, ['NoZWrite']);
-  RegisterPropertiesInCategory(strLayoutCategoryName, TGLSprite, ['NoZWrite']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLSprite, ['AlphaChannel', 'Rotation']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLNode, ['X', 'Y', 'Z']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLLines,
-    ['Antialiased', 'Division', 'Line*', 'NodeSize']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLCube, ['Cube*']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLFrustrum, ['ApexHeight', 'Base*']);
-  // GLSpaceText
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLSpaceText,
-    ['AllowedDeviation', 'AspectRatio', 'Extrusion', 'Oblique', 'TextHeight']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLSphere,
-    ['Bottom', 'Radius', 'Slices', 'Stacks', 'Start', 'Stop']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLDisk,
-    ['*Radius', 'Loops', 'Slices']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLCone,
-    ['BottomRadius', 'Loops', 'Slices', 'Stacks']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLCylinder,
-    ['*Radius', 'Loops', 'Slices', 'Stacks']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLCapsule,
-    ['*Radius', 'Loops', 'Slices', 'Stacks']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLAnnulus,
-    ['Bottom*', 'Loops', 'Slices', 'Stacks', 'Top*']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLTorus,
-    ['*Radius', 'Rings', 'Sides']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLArrowLine,
-    ['Bottom*', 'Loops', 'Slices', 'Stacks', 'Top*']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLPolygon, ['Division']);
-
-  // GLMultiPolygon
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLContour, ['Division']);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLContourNodes),
-    TypeInfo(TGLContours)]);
-
-  // GLExtrusion
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLExtrusionSolid, ['Stacks']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLPipeNode, ['RadiusFactor']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLPipe,
-    ['Division', 'Radius', 'Slices']);
-  RegisterPropertiesInCategory(strVisualCategoryName,
-    [TypeInfo(TGLNodes), TypeInfo(TPipeNodesColorMode)]);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLRevolutionSolid,
-    ['Division', 'Slices', 'YOffsetPerTurn']);
-
-  // GLVectorFileObjects
-  RegisterPropertiesInCategory(strOpenGLCategoryName,
-    [TypeInfo(TGLActorAnimationMode), TypeInfo(TGLActorAnimations),
-    TypeInfo(TGLMeshAutoCenterings), TypeInfo(TGLActorFrameInterpolation),
-    TypeInfo(TGLActorAnimationReference), TypeInfo(TGLActor)]);
-  RegisterPropertiesInCategory(strLayoutCategoryName,
-    [TypeInfo(TGLMeshNormalsOrientation)]);
-  RegisterPropertiesInCategory(strVisualCategoryName,
-    [TypeInfo(TGLMeshAutoCenterings), TypeInfo(TGLActorAnimationReference),
-    TypeInfo(TGLMeshNormalsOrientation)]);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLFreeForm, ['UseMeshmaterials']);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLAnimationControler, ['AnimationName']);
-  RegisterPropertiesInCategory(sLinkageCategoryName, TGLAnimationControler, ['AnimationName']);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLActorAnimation, ['*Frame']);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLActor,
-    ['*Frame*', 'Interval', 'OverlaySkeleton', 'UseMeshmaterials']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLActor,  ['OverlaySkeleton']);
-
-  // GLMesh 
-  RegisterPropertiesInCategory(strOpenGLCategoryName,
-    [TypeInfo(TGLMeshMode), TypeInfo(TGLVertexMode)]);
-
-  // GLGraph 
-  RegisterPropertiesInCategory(strOpenGLCategoryName,
-    [TypeInfo(TGLHeightFieldOptions)]);
-  RegisterPropertiesInCategory(strVisualCategoryName,
-    [TypeInfo(TGLHeightFieldColorMode), TypeInfo(TGLSamplingScale),
-    TypeInfo(TGLXYZGridLinesStyle), TypeInfo(TGLXYZGridParts)]);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLXYZGrid, ['Antialiased']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLXYZGrid, ['Antialiased', 'Line*']);
-
-  // GLParticles
-  RegisterPropertiesInCategory(strLayoutCategoryName, TGLParticles, ['VisibleAtRunTime']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLParticles, ['*Size', 'VisibleAtRunTime']);
-
-  // GLSkydome
-  RegisterPropertiesInCategory(strOpenGLCategoryName,
-    [TypeInfo(TGLSkyDomeBands), TypeInfo(TGLSkyDomeOptions), TypeInfo(TGLSkyDomeStars)]);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLSkyDomeBand, ['Slices', 'Stacks', '*Angle']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLSkyDomeStar, ['Dec', 'Magnitude', 'RA']);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLEarthSkyDome,
-    ['Slices', 'Stacks', 'SunElevation', 'Turbidity']);
-
-  // GLMirror
-  RegisterPropertiesInCategory(strOpenGLCategoryName,
-    [TypeInfo(TGLMirrorOptions), TypeInfo(TGLBaseSceneObject)]);
-
-  // GLParticleFX 
-  RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLBlendingMode)]);
-  RegisterPropertiesInCategory(strVisualCategoryName,
-    [TypeInfo(TGLBlendingMode), TypeInfo(TPFXLifeColors), TypeInfo(TSpriteColorMode)]);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLParticleFXRenderer, ['ZWrite']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLParticleFXRenderer, ['ZWrite']);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TPFXLifeColor, ['LifeTime']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TPFXLifeColor, ['LifeTime']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLLifeColoredPFXManager, ['Acceleration', 'ParticleSize']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLPolygonPFXManager, ['NbSides']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLPointLightPFXManager, ['TexMapSize']);
-
-  // GLTerrainRenderer 
-  RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLHeightDataSource)]);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLTerrainRenderer,
-    ['*CLOD*', 'QualityDistance', 'Tile*']);
-
-  // GLzBuffer 
-  RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLMemoryViewer),
-    TypeInfo(TGLSceneViewer), TypeInfo(TOptimise)]);
-  RegisterPropertiesInCategory(strVisualCategoryName, [TypeInfo(TOptimise)]);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLZShadows,
-    ['DepthFade', '*Shadow', 'Soft', 'Tolerance']);
-
-  // GLHUDObjects
-  RegisterPropertiesInCategory(strLayoutCategoryName, [TypeInfo(TTextLayout)]);
-  RegisterPropertiesInCategory(strVisualCategoryName, [TypeInfo(TGLBitmapFont), TypeInfo(TTextLayout)]);
-  RegisterPropertiesInCategory(strLocalizableCategoryName,[TypeInfo(TGLBitmapFont)]);
-
-  // GLTexture
-  RegisterPropertiesInCategory(strOpenGLCategoryName,
-    [TypeInfo(TGLMaterial), TypeInfo(TGLMaterialLibrary),
-    TypeInfo(TGLLibMaterials), TypeInfo(TGLTextureNeededEvent)]);
-  RegisterPropertiesInCategory(strOpenGLCategoryName,
-    TGLLibMaterial, ['Texture2Name']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLLibMaterial, ['TextureOffset', 'TextureScale']);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLMaterialLibrary, ['TexturePaths']);
-
-  // GLCadencer
-  RegisterPropertiesInCategory(strOpenGLCategoryName,
-    [TypeInfo(TGLCadencer)]);
-
-  // GLCollision
-  RegisterPropertiesInCategory(strOpenGLCategoryName,
-    [TypeInfo(TObjectCollisionEvent)]);
-
-  // GLFireFX
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLFireFXManager,
-    ['MaxParticles', 'NoZWrite', 'Paused', 'UseInterval']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLFireFXManager,
-    ['Fire*', 'InitialDir', 'NoZWrite', 'Particle*', 'Paused']);
-
-  // GLThorFX
-  RegisterPropertiesInCategory(strOpenGLCategoryName,
-    [TypeInfo(TCalcPointEvent)]);
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLThorFXManager,
-    ['Maxpoints', 'Paused']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLThorFXManager,
-    ['Core', 'Glow*', 'Paused', 'Target', 'Vibrate', 'Wildness']);
-
-  // GLBitmapFont 
-  RegisterPropertiesInCategory(strOpenGLCategoryName,
-    [TypeInfo(TGLMagFilter), TypeInfo(TGLMinFilter)]);
-  RegisterPropertiesInCategory(strLocalizableCategoryName,
-    [TypeInfo(TGLBitmapFontRanges)]);
-  RegisterPropertiesInCategory(strLocalizableCategoryName, TGLBitmapFontRange,
-    ['*ASCII']);
-  RegisterPropertiesInCategory(strLayoutCategoryName, TGLBitmapFont,
-    ['Char*', '*Interval*', '*Space']);
-  RegisterPropertiesInCategory(strLocalizableCategoryName, TGLBitmapFont,
-    ['Glyphs']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLBitmapFont,
-    ['Char*', '*Interval*', '*Space', 'Glyphs']);
-
-  // GLHeightData
-  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLBitmapHDS, ['MaxPoolSize']);
-  RegisterPropertiesInCategory(strVisualCategoryName, TGLBitmapHDS, ['Picture']);
-end;
-
-// ******************************************************
-// Register Components
-//*******************************************************
-
-procedure Register;
-begin
-  RegisterComponents('GLScene', [TGLScene, TGLSceneViewer, TGLMemoryViewer,
-  TGLMaterialLibrary, TGLMaterialLibraryEx, TGLCadencer, TGLGuiLayout,
-  TGLBitmapFont, TGLWindowsBitmapFont, TGLScriptLibrary, TGLSoundLibrary,
-  TGLFullScreenViewer]);
-
-  RegisterComponents('GLScene PFX',
-    [TGLCustomPFXManager, TGLPolygonPFXManager,
-    TGLPointLightPFXManager, TGLCustomSpritePFXManager, TGLPerlinPFXManager,
-    TGLLinePFXManager, TGLFireFXManager, TGLThorFXManager,
-    TGLEParticleMasksManager]);
-
-  RegisterComponents('GLScene Utils', [TGLAsyncTimer, TGLStaticImposterBuilder,
-	TGLCollisionManager, TGLAnimationControler, TGLAVIRecorder, TGLDCEManager,
-	TGLFPSMovementManager, TGLMaterialScripter, TGLUserInterface, TGLNavigator,
-	TGLSmoothNavigator, TGLSmoothUserInterface, TGLTimeEventsMGR,
-	TGLApplicationFileIO, TGLVfsPAK, TGLSimpleNavigation, TGLGizmo,
-	TGLCameraController, TGLSLanguage, TGLSLogger, TGLSArchiveManager,
-	TGLJoystick, TGLScreenSaver, TGLSSynHiMemo]);
-
-  RegisterComponents('GLScene Terrain', [TGLBitmapHDS, TGLCustomHDS,
-    TGLHeightTileFileHDS, TGLBumpmapHDS, TGLPerlinHDS, TGLTexturedHDS,
-    TGLAsyncHDS, TGLShadowHDS]);
-
-  RegisterComponents('GLScene Shaders', [TGLTexCombineShader, TGLPhongShader,
-    TGLUserShader, TGLHiddenLineShader, TGLCelShader, TGLOutlineShader,
-    TGLMultiMaterialShader, TGLBumpShader, TGLSLShader,
-    TGLSLDiffuseSpecularShader, TGLSLBumpShader, TGLAsmShader,
-    TGLShaderCombiner, TGLTextureSharingShader, TGLSLPostBlurShader,
-    TGLSLPostThermalVisionShader, TGLSLPostDreamVisionShader, TGLSLPostNightVisionShader,
-    TGLSLPostPixelateShader, TGLSLPostPosterizeShader, TGLSLPostFrostShader,
-    TGLSLPostTroubleShader]);
-
-  RegisterComponentEditor(TGLSceneViewer, TGLSceneViewerEditor);
-  RegisterComponentEditor(TGLScene, TGLSceneEditor);
-  RegisterComponentEditor(TGLMaterialLibrary, TGLMaterialLibraryEditor);
-  RegisterComponentEditor(TGLMaterialLibraryEx, TGLMaterialLibraryEditor);
-  RegisterComponentEditor(TGLSArchiveManager, TGLSArchiveManagerEditor);
-
-  GLRegisterPropertiesInCategories;
-
-  RegisterPropertyEditor(TypeInfo(TResolution), nil, '', TGLResolutionProperty);
-  RegisterPropertyEditor(TypeInfo(TGLTexture), TGLMaterial, '',
-    TGLTextureProperty);
-  RegisterPropertyEditor(TypeInfo(TGLTextureImage), TGLTexture, '',
-    TGLTextureImageProperty);
-  RegisterPropertyEditor(TypeInfo(string), TGLTexture, 'ImageClassName',
-    TGLImageClassProperty);
-
-  RegisterPropertyEditor(TypeInfo(TGLSoundFile), TGLSoundSample, '', TSoundFileProperty);
-  RegisterPropertyEditor(TypeInfo(string), TGLBaseSoundSource, 'SoundName', TSoundNameProperty);
-
-  RegisterPropertyEditor(TypeInfo(TGLCoordinates), nil, '', TGLCoordinatesProperty);
-
-  RegisterPropertyEditor(TypeInfo(TGLColor), nil, '', TGLColorProperty);
-  RegisterPropertyEditor(TypeInfo(TGLMaterial), nil, '', TGLMaterialProperty);
-  RegisterComponentEditor(TGLGuiLayout, TGLGUILayoutEditor);
-
-  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLMaterial, '',
-    TGLLibMaterialNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLLibMaterial,
-    'Texture2Name', TGLLibMaterialNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLSkyBox, '',
-    TGLLibMaterialNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLEParticleMask, '',
-    TGLLibMaterialNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLGameMenu, '',
-    TGLLibMaterialNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName),
-    TGLMaterialMultiProxyMaster, '', TGLLibMaterialNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLSLBumpShader, '',
-    TGLLibMaterialNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLSpriteAnimation, '',
-    TGLLibMaterialNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLMaterialProxy, '',
-    TGLLibMaterialNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLActorProxy, '',
-    TGLLibMaterialNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLFBORenderer, '',
-    TGLLibMaterialNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLActorAnimationName), TGLAnimationControler,
-    '', TGLAnimationNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName),
-    TGLTextureSharingShaderMaterial, 'LibMaterialName',
-    TGLLibMaterialNameProperty);
-  RegisterSelectionEditor(TGLBaseSceneObject,
-    TGLBaseSceneObjectSelectionEditor);
-  RegisterSelectionEditor(TGLSoundLibrary, TGLSoundLibrarySelectionEditor);
-  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLLibMaterialProperty,
-    'NextPass', TGLLibMaterialNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName),
-    TGLTextureProperties, 'LibTextureName', TGLLibTextureNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName),
-    TGLTextureProperties, 'LibSamplerName', TGLLibSamplerNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName),
-    TGLMultitexturingProperties, 'LibCombinerName', TGLLibCombinerNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName),
-    TGLMultitexturingProperties, 'LibAsmProgName', TGLLibAsmProgNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel3,
-    'LibVertexShaderName', TGLLibShaderNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel3,
-    'LibFragmentShaderName', TGLLibShaderNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel4,
-    'LibVertexShaderName', TGLLibShaderNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel4,
-    'LibFragmentShaderName', TGLLibShaderNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel4,
-    'LibGeometryShaderName', TGLLibShaderNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel5,
-    'LibVertexShaderName', TGLLibShaderNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel5,
-    'LibFragmentShaderName', TGLLibShaderNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel5,
-    'LibGeometryShaderName', TGLLibShaderNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel5,
-    'LibTessControlShaderName', TGLLibShaderNameProperty);
-  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel5,
-    'LibTessEvalShaderName', TGLLibShaderNameProperty);
-
-  RegisterPropertyEditor(TypeInfo(string), TGLTextureImageEx, 'SourceFile',
-    TPictureFileProperty);
-  RegisterPropertyEditor(TypeInfo(string), TGLShaderEx, 'SourceFile',
-    TShaderFileProperty);
-  RegisterPropertyEditor(TypeInfo(string), TGLASMVertexProgram, 'SourceFile',
-    TAsmProgFileProperty);
-
-  RegisterPropertyEditor(TypeInfo(Boolean), TGLBaseShaderModel,
-    'AutoFillOfUniforms', TUniformAutoSetProperty);
-  RegisterPropertyEditor(TypeInfo(TStringList), TGLShaderEx, 'Source',
-    TGLShaderEditorProperty);
-end;
-
-function GetGLSceneVersion: string;
-var
-  LProject: IOTAProject;
-  LExePath, LProjectPath, LSVN, LRevision: string;
-begin
-  LRevision := Copy(GLSCENE_REVISION, 20, 5);
-
-  // will be assigned after project compilation
-  // after each compilation get it from file \.svn\entries in 4-th line
-  // and write to file GLSceneRevision
-  // in both fail (no \.svn\entries or GLSceneRevision file) get a version value from GLScene.pas
-  LProject := GetActiveProject;
-  LExePath := ExtractFilePath(ParamStr(0));
-  if Assigned(LProject) then
-  begin
-    LProjectPath := ExtractFilePath(LProject.FileName);
-    LSVN := LProjectPath + '.svn\entries';
-    if FileExists(LSVN) then
-      with TStringList.Create do
-        try
-          // Load
-          LoadFromFile(LSVN);
-          if (Count >= 4) and (Trim(Strings[3]) <> '') and
-            IsDirectoryWriteable(LExePath) then
-          begin
-            LRevision := Trim(Strings[3]);
-            // Save
-            Clear;
-            Add(LRevision);
-            SaveToFile(LExePath + 'GLSceneRevision');
-          end;
-        finally
-          Free;
-        end;
-  end
-  else if FileExists(LExePath + 'GLSceneRevision') then
-    try
-      with TStringList.Create do
-        try
-          LoadFromFile(LExePath + 'GLSceneRevision');
-          if (Count >= 1) and (Trim(Strings[0]) <> '') then
-            LRevision := Trim(Strings[0]);
-        finally
-          Free;
-        end;
-    except
-    end;
-
-  // Finally
-  Result := Format(GLSCENE_VERSION, [LRevision]);
-end;
-
-function GetProjectTargetName: string;
-var
-  Project: IOTAProject;
-begin
-  Result := '';
-  Project := GetActiveProject;
-  if Assigned(Project) then
-  begin
-    Result := Project.ProjectOptions.TargetName;
-    if Length(Result) > 0 then
-      ForceDirectories(ExtractFilePath(Result));
-  end;
-end;
-
-// ------------------------------------------------------------------
-initialization
-// ------------------------------------------------------------------
-
-  SplashScreenServices.AddPluginBitmap(GetGLSceneVersion,
-  LoadBitmap(HInstance, 'TGLScene'), False, 'MPL 2.0 license', 'VCL version');
-  GLCrossPlatform.IsDesignTime := True;
-  GLCrossPlatform.vProjectTargetName := GetProjectTargetName;
-  GLColor.vUseDefaultColorSets := True;
-  GLCoordinates.vUseDefaultCoordinateSets := True;
-  ReadVideoModes;
-
-with ObjectManager do
-begin
-  CreateDefaultObjectIcons(HInstance);
-  RegisterSceneObject(TGLCamera, 'Camera', '', HInstance);
-  RegisterSceneObject(TGLLightSource, 'LightSource', '', HInstance);
-  RegisterSceneObject(TGLDummyCube, 'DummyCube', '', HInstance);
-
-  // Basic geometry
-  RegisterSceneObject(TGLSprite, 'Sprite', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLPoints, 'Points', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLLines, 'Lines', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLPlane, 'Plane', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLPolygon, 'Polygon', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLCube, 'Cube', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLFrustrum, 'Frustrum', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLSphere, 'Sphere', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLDisk, 'Disk', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLCone, 'Cone', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLCylinder, 'Cylinder', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLCapsule, 'Capsule', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLDodecahedron, 'Dodecahedron', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLIcosahedron, 'Icosahedron', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLHexahedron, 'Hexahedron', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLOctahedron, 'Octahedron', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLTetrahedron, 'Tetrahedron', strOCBasicGeometry, HInstance);
-  RegisterSceneObject(TGLSuperellipsoid, 'Superellipsoid', strOCBasicGeometry, HInstance);
-
-  // Advanced geometry
-  RegisterSceneObject(TGLAnimatedSprite, 'Animated Sprite', strOCAdvancedGeometry, HInstance);
-  RegisterSceneObject(TGLArrowLine, 'ArrowLine', strOCAdvancedGeometry, HInstance);
-  RegisterSceneObject(TGLArrowArc, 'ArrowArc', strOCAdvancedGeometry, HInstance);
-  RegisterSceneObject(TGLAnnulus, 'Annulus', strOCAdvancedGeometry, HInstance);
-  RegisterSceneObject(TGLExtrusionSolid, 'ExtrusionSolid', strOCAdvancedGeometry, HInstance);
-  RegisterSceneObject(TGLMultiPolygon, 'MultiPolygon', strOCAdvancedGeometry, HInstance);
-  RegisterSceneObject(TGLPipe, 'Pipe', strOCAdvancedGeometry, HInstance);
-  RegisterSceneObject(TGLRevolutionSolid, 'RevolutionSolid', strOCAdvancedGeometry, HInstance);
-  RegisterSceneObject(TGLTorus, 'Torus', strOCAdvancedGeometry, HInstance);
-
-  // Mesh objects
-  RegisterSceneObject(TGLActor, 'Actor', strOCMeshObjects, HInstance);
-  RegisterSceneObject(TGLFreeForm, 'FreeForm', strOCMeshObjects, HInstance);
-  RegisterSceneObject(TGLMesh, 'Mesh', strOCMeshObjects, HInstance);
-  RegisterSceneObject(TGLTilePlane, 'TilePlane', strOCMeshObjects, HInstance);
-  RegisterSceneObject(TGLPortal, 'Portal', strOCMeshObjects, HInstance);
-  RegisterSceneObject(TGLTerrainRenderer, 'TerrainRenderer', strOCMeshObjects, HInstance);
-
-  // Graph-plotting objects
-  RegisterSceneObject(TGLFlatText, 'FlatText', strOCGraphPlottingObjects, HInstance);
-  RegisterSceneObject(TGLHeightField, 'HeightField', strOCGraphPlottingObjects, HInstance);
-  RegisterSceneObject(TGLXYZGrid, 'XYZGrid', strOCGraphPlottingObjects, HInstance);
-
-  // Particle systems
-  RegisterSceneObject(TGLParticles, 'Particles', strOCParticleSystems, HInstance);
-  RegisterSceneObject(TGLParticleFXRenderer, 'PFX Renderer', strOCParticleSystems, HInstance);
-
-  // Environment objects
-  RegisterSceneObject(TGLEarthSkyDome, 'EarthSkyDome', strOCEnvironmentObjects, HInstance);
-  RegisterSceneObject(TGLSkyDome, 'SkyDome', strOCEnvironmentObjects, HInstance);
-  RegisterSceneObject(TGLSkyBox, 'SkyBox', strOCEnvironmentObjects, HInstance);
-  RegisterSceneObject(TGLAtmosphere, 'Atmosphere', strOCEnvironmentObjects, HInstance);
-
-  // HUD objects.
-  RegisterSceneObject(TGLHUDSprite, 'HUD Sprite', strOCHUDObjects, HInstance);
-  RegisterSceneObject(TGLHUDText, 'HUD Text', strOCHUDObjects, HInstance);
-  RegisterSceneObject(TGLResolutionIndependantHUDText,
-    'Resolution Independant HUD Text', strOCHUDObjects, HInstance);
-  RegisterSceneObject(TGLAbsoluteHUDText, 'Absolute HUD Text', strOCHUDObjects, HInstance);
-  RegisterSceneObject(TGLGameMenu, 'GameMenu', strOCHUDObjects, HInstance);
-  RegisterSceneObject(TGLConsole, 'Console', strOCHUDObjects, HInstance);
-
-  // GUI objects.
-  RegisterSceneObject(TGLBaseControl, 'Root Control', strOCGuiObjects, HInstance);
-  RegisterSceneObject(TGLPopupMenu, 'GLPopupMenu', strOCGuiObjects, HInstance);
-  RegisterSceneObject(TGLForm, 'GLForm', strOCGuiObjects, HInstance);
-  RegisterSceneObject(TGLPanel, 'GLPanel', strOCGuiObjects, HInstance);
-  RegisterSceneObject(TGLButton, 'GLButton', strOCGuiObjects, HInstance);
-  RegisterSceneObject(TGLCheckBox, 'GLCheckBox', strOCGuiObjects, HInstance);
-  RegisterSceneObject(TGLEdit, 'GLEdit', strOCGuiObjects, HInstance);
-  RegisterSceneObject(TGLLabel, 'GLLabel', strOCGuiObjects, HInstance);
-  RegisterSceneObject(TGLAdvancedLabel, 'GLAdvancedLabel', strOCGuiObjects, HInstance);
-  RegisterSceneObject(TGLScrollbar, 'GLScrollbar', strOCGuiObjects, HInstance);
-  RegisterSceneObject(TGLStringGrid, 'GLStringGrid', strOCGuiObjects, HInstance);
-  RegisterSceneObject(TGLCustomControl, 'GLBitmapControl', strOCGuiObjects, HInstance);
-
-  // Special objects
-  RegisterSceneObject(TGLLensFlare, 'LensFlare', strOCSpecialObjects, HInstance);
-  RegisterSceneObject(TGLTextureLensFlare, 'TextureLensFlare', strOCSpecialObjects, HInstance);
-  RegisterSceneObject(TGLMirror, 'Mirror', strOCSpecialObjects, HInstance);
-  RegisterSceneObject(TGLShadowPlane, 'ShadowPlane', strOCSpecialObjects, HInstance);
-  RegisterSceneObject(TGLShadowVolume, 'ShadowVolume', strOCSpecialObjects, HInstance);
-  RegisterSceneObject(TGLZShadows, 'ZShadows', strOCSpecialObjects, HInstance);
-  RegisterSceneObject(TGLSLTextureEmitter, 'GLSL Texture Emitter', strOCSpecialObjects, HInstance);
-  RegisterSceneObject(TGLSLProjectedTextures, 'GLSL Projected Textures', strOCSpecialObjects, HInstance);
-  RegisterSceneObject(TGLTextureEmitter, 'Texture Emitter', strOCSpecialObjects, HInstance);
-  RegisterSceneObject(TGLProjectedTextures, 'Projected Textures', strOCSpecialObjects, HInstance);
-  RegisterSceneObject(TGLBlur, 'Blur', strOCSpecialObjects, HInstance);
-  RegisterSceneObject(TGLMotionBlur, 'MotionBlur', strOCSpecialObjects, HInstance);
-
-  RegisterSceneObject(TGLSpaceText, 'SpaceText', strOCDoodad, HInstance);
-
-  RegisterSceneObject(TGLTrail, 'GLTrail', strOCSpecialObjects, HInstance);
-  RegisterSceneObject(TGLPostEffect, 'PostEffect', strOCSpecialObjects, HInstance);
-  RegisterSceneObject(TGLPostShaderHolder, 'PostShaderHolder', strOCSpecialObjects, HInstance);
-
-  // Doodad objects.
-  RegisterSceneObject(TGLTeapot, 'Teapot', strOCDoodad, HInstance);
-  RegisterSceneObject(TGLTree, 'Tree', strOCDoodad, HInstance);
-  RegisterSceneObject(TGLWaterPlane, 'WaterPlane', strOCDoodad, HInstance);
-
-  // Proxy objects.
-  RegisterSceneObject(TGLProxyObject, 'ProxyObject', strOCProxyObjects, HInstance);
-  RegisterSceneObject(TGLColorProxy, 'ColorProxy', strOCProxyObjects, HInstance);
-  RegisterSceneObject(TGLFreeFormProxy, 'FreeFormProxy', strOCProxyObjects, HInstance);
-  RegisterSceneObject(TGLMaterialProxy, 'MaterialProxy', strOCProxyObjects, HInstance);
-  RegisterSceneObject(TGLActorProxy, 'ActorProxy', strOCProxyObjects, HInstance);
-  RegisterSceneObject(TGLMultiProxy, 'MultiProxy', strOCProxyObjects, HInstance);
-  RegisterSceneObject(TGLMaterialMultiProxy, 'MaterialMultiProxy', strOCProxyObjects, HInstance);
-
-  // Other objects.
-  RegisterSceneObject(TGLDirectOpenGL, 'Direct OpenGL', '', HInstance);
-  RegisterSceneObject(TGLRenderPoint, 'Render Point', '', HInstance);
-  RegisterSceneObject(TGLImposter, 'Imposter Sprite', '', HInstance);
-  RegisterSceneObject(TGLFeedback, 'OpenGL Feedback', '', HInstance);
-  RegisterSceneObject(TGLFBORenderer, 'OpenGL FrameBuffer', '', HInstance);
-end;
-
-finalization
-
-ObjectManager.Free;
-
-end.
+//
+// This unit is part of the GLScene Engine, http://glscene.org
+//
+
+unit GLS.SceneRegister;
+
+(*
+  Registration unit for GLScene library components, property editors and
+  IDE experts.
+*)
+
+interface
+
+{$I GLScene.inc}
+
+uses
+  WinApi.Windows,
+  System.Classes,
+  System.SysUtils,
+  System.TypInfo,
+  VCL.Forms,
+  VCL.Dialogs,
+  VCL.Controls,
+  VCL.StdCtrls,
+  VCL.Graphics,
+
+  ToolsAPI,
+  DesignIntf,
+  DesignEditors,
+  VCLEditors,
+
+  GLScene,
+  GLStrings,
+  GLContext,
+  GLColor,
+  GLCrossPlatform,
+  GLObjectManager;
+
+type
+  TGLLibMaterialNameProperty = class(TStringProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure Edit; override;
+  end;
+
+  TGLSceneViewerEditor = class(TComponentEditor)
+  public
+    procedure ExecuteVerb(Index: Integer); override;
+    function GetVerb(Index: Integer): string; override;
+    function GetVerbCount: Integer; override;
+  end;
+
+  TGLSceneEditor = class(TComponentEditor)
+  public
+    procedure Edit; override;
+    procedure ExecuteVerb(Index: Integer); override;
+    function GetVerb(Index: Integer): string; override;
+    function GetVerbCount: Integer; override;
+  end;
+
+  TGLResolutionProperty = class(TPropertyEditor)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    function GetValue: string; override;
+    procedure GetValues(Proc: TGetStrProc); override;
+    procedure SetValue(const Value: string); override;
+  end;
+
+  TGLTextureProperty = class(TClassProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+  end;
+
+  TGLTextureImageProperty = class(TClassProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure Edit; override;
+  end;
+
+  TGLImageClassProperty = class(TClassProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure GetValues(Proc: TGetStrProc); override;
+    function GetValue: string; override;
+    procedure SetValue(const Value: string); override;
+  end;
+
+  TGLColorProperty = class(TClassProperty, ICustomPropertyDrawing,
+    ICustomPropertyListDrawing)
+  protected
+    function ColorToBorderColor(aColor: TColorVector; selected: Boolean): TColor;
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure GetValues(Proc: TGetStrProc); override;
+    procedure Edit; override;
+    // ICustomPropertyListDrawing  stuff
+    procedure ListMeasureHeight(const Value: string; ACanvas: TCanvas; var AHeight: Integer);
+    procedure ListMeasureWidth(const Value: string; ACanvas: TCanvas; var AWidth: Integer);
+    procedure ListDrawValue(const Value: string; ACanvas: TCanvas; const ARect: TRect; ASelected: Boolean);
+    // CustomPropertyDrawing
+    procedure PropDrawName(ACanvas: TCanvas; const ARect: TRect; ASelected: Boolean);
+    procedure PropDrawValue(ACanvas: TCanvas; const ARect: TRect; ASelected: Boolean);
+    function GetValue: string; override;
+    procedure SetValue(const Value: string); override;
+  end;
+
+  TSoundFileProperty = class(TClassProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    function GetValue: string; override;
+    procedure Edit; override;
+  end;
+
+  TSoundNameProperty = class(TStringProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure GetValues(Proc: TGetStrProc); override;
+  end;
+
+  TGLCoordinatesProperty = class(TClassProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure Edit; override;
+  end;
+
+  TGLMaterialProperty = class(TClassProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure Edit; override;
+  end;
+
+  TGLGUILayoutEditor = class(TComponentEditor)
+  public
+    procedure Edit; override;
+    procedure ExecuteVerb(Index: Integer); override;
+    function GetVerb(Index: Integer): string; override;
+    function GetVerbCount: Integer; override;
+  end;
+
+  (* Editor copied from DsgnIntf.
+    Could have been avoided, if only that guy at Borland didn't chose to
+    publish only half of the stuff (and that's not the only class with
+    that problem, most of the subitems handling code in TGLSceneBaseObject is
+    here for the same reason...), the "protected" wasn't meant just to lure
+    programmers into code they can't reuse... Arrr! and he did that again
+    in D6! Grrr... *)
+  TReuseableDefaultEditor = class(TComponentEditor, IDefaultEditor)
+  protected
+    FFirst: IProperty;
+    FBest: IProperty;
+    FContinue: Boolean;
+    procedure CheckEdit(const Prop: IProperty);
+    procedure EditProperty(const Prop: IProperty; var Continue: Boolean); virtual;
+  public
+    procedure Edit; override;
+  end;
+
+  //  Editor for material library.
+  TGLMaterialLibraryEditor = class(TReuseableDefaultEditor, IDefaultEditor)
+  protected
+    procedure EditProperty(const Prop: IProperty; var Continue: Boolean); override;
+  public
+    procedure ExecuteVerb(Index: Integer); override;
+    function GetVerb(Index: Integer): string; override;
+    function GetVerbCount: Integer; override;
+  end;
+
+  TGLAnimationNameProperty = class(TStringProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure GetValues(Proc: TGetStrProc); override;
+  end;
+
+  (*  Selection editor for TGLSoundLibrary 
+    Allows units to be added to the uses clause automatically when
+    sound files are loaded into a TGLSoundLibrary at design-time. *)
+  TGLSoundLibrarySelectionEditor = class(TSelectionEditor)
+  public
+    procedure RequiresUnits(Proc: TGetStrProc); override;
+  end;
+
+  (*  Selection editor for TGLBaseSceneObject.
+    Allows units to be added to the uses clause automatically when
+    behaviours/effects are added to a TGLBaseSceneObject at design-time. *)
+  TGLBaseSceneObjectSelectionEditor = class(TSelectionEditor)
+  public
+    procedure RequiresUnits(Proc: TGetStrProc); override;
+  end;
+
+  // Editor for GLScene Archive Manager.  
+  TGLSArchiveManagerEditor = class(TReuseableDefaultEditor, IDefaultEditor)
+  protected
+    procedure EditProperty(const Prop: IProperty; var Continue: Boolean); override;
+  public
+    procedure ExecuteVerb(Index: Integer); override;
+    function GetVerb(Index: Integer): string; override;
+    function GetVerbCount: Integer; override;
+  end;
+
+  TGLMaterialComponentNameProperty = class(TStringProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure Edit; override;
+  end;
+
+  TGLLibTextureNameProperty = class(TGLMaterialComponentNameProperty)
+  public
+    procedure GetValues(Proc: TGetStrProc); override;
+  end;
+
+  TGLLibSamplerNameProperty = class(TGLMaterialComponentNameProperty)
+  public
+    procedure GetValues(Proc: TGetStrProc); override;
+  end;
+
+  TGLLibCombinerNameProperty = class(TGLMaterialComponentNameProperty)
+  public
+    procedure GetValues(Proc: TGetStrProc); override;
+  end;
+
+  TGLLibShaderNameProperty = class(TGLMaterialComponentNameProperty)
+  public
+    procedure GetValues(Proc: TGetStrProc); override;
+  end;
+
+  TGLLibAttachmentNameProperty = class(TGLMaterialComponentNameProperty)
+  public
+    procedure GetValues(Proc: TGetStrProc); override;
+  end;
+
+  TGLLibAsmProgNameProperty = class(TGLMaterialComponentNameProperty)
+  public
+    procedure GetValues(Proc: TGetStrProc); override;
+  end;
+
+  TPictureFileProperty = class(TStringProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure Edit; override;
+  end;
+
+  TShaderFileProperty = class(TStringProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure Edit; override;
+  end;
+
+  TAsmProgFileProperty = class(TStringProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure Edit; override;
+  end;
+
+  TUniformAutoSetProperty = class(TPropertyEditor)
+  private
+    procedure PassUniform(const S: string);
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure Edit; override;
+  end;
+
+  TGLShaderEditorProperty = class(TClassProperty)
+  protected
+    function GetStrings: TStrings;
+    procedure SetStrings(const Value: TStrings);
+    procedure OnShaderCheck(Sender: TObject);
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure Edit; override;
+  end;
+
+// Register Components
+procedure Register;
+
+// Auto-create for object manager
+function ObjectManager: TGLObjectManager;
+
+// ------------------------------------------------------------------
+implementation
+// ------------------------------------------------------------------
+
+uses
+  FLibMaterialPicker,
+  FGUILayoutEditor,
+  FMaterialEditorForm,
+  FShaderMemo,
+  FShaderUniformEditor,
+  FVectorEditor,
+  FSceneEditor,
+  GLAnimatedSprite,
+  GLApplicationFileIO,
+  GLAsmShader,
+  GLAsyncHDS,
+  GLAsyncTimer,
+  GLAtmosphere,
+  GLAVIRecorder,
+  GLBaseClasses,
+  GLBitmapFont,
+  GLBlur,
+  GLBumpmapHDS,
+  GLBumpShader,
+  GLCadencer,
+  GLCameraController,
+  GLCelShader,
+  GLCollision,
+  GLCompositeImage,
+  GLConsole,
+  GLCoordinates,
+  GLDCE,
+  GLDynamicTexture,
+  GLEParticleMasksManager,
+  GLExplosionFx,
+  GLExtrusion,
+  GLFBORenderer,
+  GLFeedback,
+  GLFireFX,
+  GLFPSMovement,
+  GLGameMenu,
+  GLGeomObjects,
+  GLGizmo,
+  GLGraph,
+  GLGraphics,
+  GLGui,
+  GLHeightData,
+  GLHeightTileFileHDS,
+  GLHiddenLineShader,
+  GLHUDObjects,
+  GLImposter,
+  GLLensFlare,
+  GLLinePFX,
+  GLMaterial,
+  GLMaterialEx,
+  GLMaterialMultiProxy,
+  GLMaterialScript,
+  GLMesh,
+  GLMirror,
+  GLMultiMaterialShader,
+  GLMultiPolygon,
+  GLMultiProxy,
+  GLNavigator,
+  GLNodes,
+  GLObjects,
+  GLOutlineShader,
+  GLParticleFX,
+  GLParticles,
+  GLPerlin,
+  GLPerlinPFX,
+  GLPhongShader,
+  GLPolyhedron,
+  GLPortal,
+  GLPostEffects,
+  GLProjectedTextures,
+  GLProxyObjects,
+  GLRenderContextInfo,
+  GLSArchiveManager,
+  GLScreen,
+  GLScriptBase,
+  GLShaderCombiner,
+  GLShadowHDS,
+  GLShadowPlane,
+  GLShadowVolume,
+  GLSimpleNavigation,
+  GLSkyBox,
+  GLSkydome,
+  GLSLanguage,
+  GLSLBumpShader,
+  GLSLDiffuseSpecularShader,
+  GLSLPostShaders,
+  GLSLProjectedTextures,
+  GLSLShader,
+  GLSmoothNavigator,
+  GLState,
+  GLTeapot,
+  GLTerrainRenderer,
+  GLTexCombineShader,
+  GLTexLensFlare,
+  GLTexture,
+  GLTexturedHDS,
+  GLTextureImageEditors,
+  GLTextureSharingShader,
+  GLThorFX,
+  GLTilePlane,
+  GLTimeEventsMgr,
+  GLTrail,
+  GLTree,
+  GLTypes,
+  GLFileTIN,
+  GLUserShader,
+  GLUtils,
+  GLVectorFileObjects,
+  GLVfsPAK,
+  GLWin32Viewer,
+  GLWaterPlane,
+  GLWindows,
+  GLWindowsFont,
+  GLzBuffer,
+  GLSMemo,
+  GLVectorTypes,
+  GLVectorGeometry,
+  // Image file formats
+  FileDDSImage,
+  FileTGA,
+  // Vector file formats
+  GLFile3DS,
+  GLFileASE,
+  GLFileB3D,
+  GLFileGL2,
+  GLFileGTS,
+  GLFileLMTS,
+  GLFileLWO,
+  GLFileMD2,
+  GLFileMD3,
+  GLFileMD5,
+  GLFileMDC,
+  GLFileMS3D,
+  GLFileNMF,
+  GLFileNurbs,
+  GLFileObj,
+  GLFileOCT,
+  GLFilePLY,
+  GLFileQ3BSP,
+  GLFileSMD,
+  GLFileSTL,
+  GLFileVRML,
+
+  // Sound file formats
+  GLFileWAV,
+  GLFileMP3,
+
+  // Raster file format
+  GLFileDDS,
+  GLFileO3TC,
+  GLFileHDR,
+  GLFileJPEG,
+  GLFilePNG,
+  GLFileBMP,
+  GLFileTGA,
+
+  GLSound,
+  GLSoundFileObjects,
+  GLSpaceText,
+  GLJoystick,
+  GLScreenSaver,
+  GLFullScreenViewer,
+  GLSLog;
+
+var
+  vObjectManager: TGLObjectManager;
+
+function ObjectManager: TGLObjectManager;
+begin
+  if not Assigned(vObjectManager) then
+    vObjectManager := TGLObjectManager.Create(nil);
+  Result := vObjectManager;
+end;
+
+//----------------- TGLSceneViewerEditor ---------------------------------------
+procedure TGLSceneViewerEditor.ExecuteVerb(Index: Integer);
+var
+  source: TGLSceneViewer;
+begin
+  source := Component as TGLSceneViewer;
+  case Index of
+    0: source.Buffer.ShowInfo;
+  end;
+end;
+
+function TGLSceneViewerEditor.GetVerb(Index: Integer): string;
+begin
+  case Index of
+    0: Result := 'Show context info';
+  end;
+end;
+
+function TGLSceneViewerEditor.GetVerbCount: Integer;
+begin
+  Result := 1;
+end;
+
+//----------------- TGLSceneEditor ---------------------------------------------
+
+procedure TGLSceneEditor.Edit;
+begin
+  with GLSceneEditorForm do
+  begin
+    SetScene(Self.Component as TGLScene, Self.Designer);
+    Show;
+  end;
+end;
+
+procedure TGLSceneEditor.ExecuteVerb(Index: Integer);
+begin
+  case Index of
+    0: Edit;
+  end;
+end;
+
+function TGLSceneEditor.GetVerb(Index: Integer): string;
+begin
+  case Index of
+    0: Result := 'Show Scene Editor';
+  end;
+end;
+
+function TGLSceneEditor.GetVerbCount: Integer;
+begin
+  Result := 1;
+end;
+
+//----------------- TGLResolutionProperty ----------------------------------------
+function TGLResolutionProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paValueList];
+end;
+
+function TGLResolutionProperty.GetValue: string;
+begin
+  Result := vVideoModes[GetOrdValue].Description;
+end;
+
+procedure TGLResolutionProperty.GetValues(Proc: TGetStrProc);
+var
+  i: Integer;
+begin
+  for i := 0 to vNumberVideoModes - 1 do
+    Proc(vVideoModes[i].Description);
+end;
+
+procedure TGLResolutionProperty.SetValue(const Value: string);
+
+const
+  Nums = ['0' .. '9'];
+
+var
+  XRes, YRes, BPP: Integer;
+  Pos, SLength: Integer;
+  TempStr: string;
+
+begin
+  if CompareText(Value, 'default') <> 0 then
+  begin
+    // initialize scanning
+    TempStr := Trim(Value) + '|'; // ensure at least one delimiter
+    SLength := Length(TempStr);
+    XRes := 0;
+    YRes := 0;
+    BPP := 0;
+    // contains the string something?
+    if SLength > 1 then
+    begin
+      // determine first number
+      for Pos := 1 to SLength do
+        if not(AnsiChar(TempStr[Pos]) in Nums) then
+          Break;
+      if Pos <= SLength then
+      begin
+        // found a number?
+        XRes := StrToInt(Copy(TempStr, 1, Pos - 1));
+        // search for following non-numerics
+        for Pos := Pos to SLength do
+          if AnsiChar(TempStr[Pos]) in Nums then
+            Break;
+        Delete(TempStr, 1, Pos - 1); // take it out of the String
+        SLength := Length(TempStr); // rest length of String
+        if SLength > 1 then // something to scan?
+        begin
+          // determine second number
+          for Pos := 1 to SLength do
+            if not(AnsiChar(TempStr[Pos]) in Nums) then
+              Break;
+          if Pos <= SLength then
+          begin
+            YRes := StrToInt(Copy(TempStr, 1, Pos - 1));
+            // search for following non-numerics
+            for Pos := Pos to SLength do
+              if AnsiChar(TempStr[Pos]) in Nums then
+                Break;
+            Delete(TempStr, 1, Pos - 1); // take it out of the String
+            SLength := Length(TempStr); // rest length of String
+            if SLength > 1 then
+            begin
+              for Pos := 1 to SLength do
+                if not(AnsiChar(TempStr[Pos]) in Nums) then
+                  Break;
+              if Pos <= SLength then
+                BPP := StrToInt(Copy(TempStr, 1, Pos - 1));
+            end;
+          end;
+        end;
+      end;
+    end;
+    SetOrdValue(GetIndexFromResolution(XRes, YRes, BPP));
+  end
+  else
+    SetOrdValue(0);
+end;
+
+//----------------- TGLTextureProperty -----------------------------------------
+
+function TGLTextureProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paSubProperties];
+end;
+
+//----------------- TGLTextureImageProperty ------------------------------------
+
+function TGLTextureImageProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paDialog];
+end;
+
+procedure TGLTextureImageProperty.Edit;
+begin
+  if EditGLTextureImage(TGLTextureImage(GetOrdValue)) then
+    Designer.Modified;
+end;
+
+//----------------- TGLImageClassProperty --------------------------------------
+
+function TGLImageClassProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paValueList];
+end;
+
+procedure TGLImageClassProperty.GetValues(Proc: TGetStrProc);
+var
+  i: Integer;
+  sl: TStrings;
+begin
+  sl := GetGLTextureImageClassesAsStrings;
+  try
+    for i := 0 to sl.Count - 1 do
+      Proc(sl[i]);
+  finally
+    sl.Free;
+  end;
+end;
+
+function TGLImageClassProperty.GetValue: string;
+begin
+  Result := FindGLTextureImageClass(GetStrValue).FriendlyName;
+end;
+
+procedure TGLImageClassProperty.SetValue(const Value: string);
+var
+  tic: TGLTextureImageClass;
+begin
+  tic := FindGLTextureImageClassByFriendlyName(Value);
+  if Assigned(tic) then
+    SetStrValue(tic.ClassName)
+  else
+    SetStrValue('');
+  Modified;
+end;
+
+//----------------- TGLColorproperty -----------------------------------------------------------------------------------
+
+procedure TGLColorProperty.Edit;
+var
+  colorDialog: TColorDialog;
+  GLColor: TGLColor;
+begin
+  colorDialog := TColorDialog.Create(nil);
+  try
+    GLColor := TGLColor(GetOrdValue);
+    colorDialog.Options := [cdFullOpen];
+    colorDialog.Color := ConvertColorVector(GLColor.Color);
+    if colorDialog.Execute then
+    begin
+      GLColor.Color := ConvertWinColor(colorDialog.Color);
+      Modified;
+    end;
+  finally
+    colorDialog.Free;
+  end;
+end;
+
+function TGLColorProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paSubProperties, paValueList, paDialog];
+end;
+
+procedure TGLColorProperty.GetValues(Proc: TGetStrProc);
+begin
+  ColorManager.EnumColors(Proc);
+end;
+
+function TGLColorProperty.GetValue: string;
+begin
+  Result := ColorManager.GetColorName(TGLColor(GetOrdValue).Color);
+end;
+
+procedure TGLColorProperty.SetValue(const Value: string);
+begin
+  TGLColor(GetOrdValue).Color := ColorManager.GetColor(Value);
+  Modified;
+end;
+
+function TGLColorProperty.ColorToBorderColor(aColor: TColorVector; selected: Boolean): TColor;
+begin
+  if (aColor.X > 0.75) or (aColor.Y > 0.75) or (aColor.Z > 0.75) then
+    Result := clBlack
+  else if selected then
+    Result := clWhite
+  else
+    Result := ConvertColorVector(aColor);
+end;
+
+procedure TGLColorProperty.PropDrawValue(ACanvas: TCanvas; const ARect: TRect;
+  ASelected: Boolean);
+begin
+  if GetVisualValue <> '' then
+    ListDrawValue(GetVisualValue, ACanvas, ARect, True)
+  else
+    DefaultPropertyDrawValue(Self, ACanvas, ARect);
+end;
+
+procedure TGLColorProperty.ListDrawValue(const Value: string; ACanvas: TCanvas;
+  const ARect: TRect; ASelected: Boolean);
+var
+  vRight: Integer;
+  vOldPenColor, vOldBrushColor: TColor;
+  Color: TColorVector;
+begin
+  vRight := (ARect.Bottom - ARect.Top) + ARect.Left;
+  with ACanvas do
+    try
+      vOldPenColor := Pen.Color;
+      vOldBrushColor := Brush.Color;
+
+      Pen.Color := Brush.Color;
+      Rectangle(ARect.Left, ARect.Top, vRight, ARect.Bottom);
+
+      Color := ColorManager.GetColor(Value);
+      Brush.Color := ConvertColorVector(Color);
+      Pen.Color := ColorToBorderColor(Color, ASelected);
+
+      Rectangle(ARect.Left + 1, ARect.Top + 1, vRight - 1, ARect.Bottom - 1);
+
+      Brush.Color := vOldBrushColor;
+      Pen.Color := vOldPenColor;
+    finally
+      DefaultPropertyListDrawValue(Value, ACanvas,
+        Rect(vRight, ARect.Top, ARect.Right, ARect.Bottom), ASelected);
+    end;
+end;
+
+procedure TGLColorProperty.ListMeasureWidth(const Value: string;
+  ACanvas: TCanvas; var AWidth: Integer);
+begin
+  AWidth := AWidth + ACanvas.TextHeight('M');
+end;
+
+procedure TGLColorProperty.ListMeasureHeight(const Value: string;
+  ACanvas: TCanvas; var AHeight: Integer);
+begin
+  // Nothing
+end;
+
+procedure TGLColorProperty.PropDrawName(ACanvas: TCanvas; const ARect: TRect;
+  ASelected: Boolean);
+begin
+  DefaultPropertyDrawName(Self, ACanvas, ARect);
+end;
+
+//----------------- TSoundFileProperty -----------------------------------------
+function TSoundFileProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paDialog];
+end;
+
+function TSoundFileProperty.GetValue: string;
+var
+  sample: TGLSoundSample;
+begin
+  sample := GetComponent(0) as TGLSoundSample;
+  if sample.Data <> nil then
+    Result := '(' + sample.Data.ClassName + ')'
+  else
+    Result := '(empty)';
+end;
+
+procedure TSoundFileProperty.Edit;
+var
+  ODialog: TOpenDialog;
+  sample: TGLSoundSample;
+  Desc, F: string;
+begin
+  sample := GetComponent(0) as TGLSoundSample;
+  ODialog := TOpenDialog.Create(nil);
+  try
+    GetGLSoundFileFormats.BuildFilterStrings(TGLSoundFile, Desc, F);
+    ODialog.Filter := Desc;
+    if ODialog.Execute then
+    begin
+      sample.LoadFromFile(ODialog.FileName);
+      Modified;
+    end;
+  finally
+    ODialog.Free;
+  end;
+end;
+
+//----------------- TSoundNameProperty -----------------------------------------
+
+function TSoundNameProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paValueList];
+end;
+
+procedure TSoundNameProperty.GetValues(Proc: TGetStrProc);
+var
+  i: Integer;
+  source: TGLBaseSoundSource;
+begin
+  source := (GetComponent(0) as TGLBaseSoundSource);
+  if Assigned(source.SoundLibrary) then
+    with source.SoundLibrary do
+      for i := 0 to Samples.Count - 1 do
+        Proc(Samples[i].Name);
+end;
+
+//----------------- TGLCoordinatesProperty -------------------------------------
+
+function TGLCoordinatesProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paDialog, paSubProperties];
+end;
+
+procedure TGLCoordinatesProperty.Edit;
+var
+  glc: TGLCoordinates;
+  x, y, z: Single;
+begin
+  glc := TGLCoordinates(GetOrdValue);
+  x := glc.x;
+  y := glc.y;
+  z := glc.z;
+  if GLVectorEditorForm.Execute(x, y, z) then
+  begin
+    glc.AsVector := VectorMake(x, y, z);
+    Modified;
+  end;
+end;
+
+//----------------- TGLMaterialProperty --------------------------------------------------------------------------------
+
+function TGLMaterialProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paDialog, paSubProperties];
+end;
+
+procedure TGLMaterialProperty.Edit;
+begin
+  if FMaterialEditorForm.GLMaterialEditorForm.Execute(TGLMaterial(GetOrdValue))
+  then
+    Modified;
+end;
+
+procedure TGLGUILayoutEditor.Edit;
+begin
+  GUILayoutEditorForm.Execute(TGLGuiLayout(Self.Component));
+end;
+
+procedure TGLGUILayoutEditor.ExecuteVerb(Index: Integer);
+begin
+  case Index of
+    0: Edit;
+  end;
+end;
+
+function TGLGUILayoutEditor.GetVerb(Index: Integer): string;
+begin
+  case Index of
+    0:
+      Result := 'Show Layout Editor';
+  end;
+end;
+
+function TGLGUILayoutEditor.GetVerbCount: Integer;
+begin
+  Result := 1;
+end;
+
+procedure TReuseableDefaultEditor.CheckEdit(const Prop: IProperty);
+begin
+  if FContinue then
+    EditProperty(Prop, FContinue);
+end;
+
+procedure TReuseableDefaultEditor.EditProperty(const Prop: IProperty;
+  var Continue: Boolean);
+var
+  PropName: string;
+  BestName: string;
+  MethodProperty: IMethodProperty;
+
+  procedure ReplaceBest;
+  begin
+    FBest := Prop;
+    if FFirst = FBest then
+      FFirst := nil;
+  end;
+
+begin
+  if not Assigned(FFirst) and Supports(Prop, IMethodProperty, MethodProperty)
+  then
+    FFirst := Prop;
+  PropName := Prop.GetName;
+  BestName := '';
+  if Assigned(FBest) then
+    BestName := FBest.GetName;
+  if CompareText(PropName, 'ONCREATE') = 0 then
+    ReplaceBest
+  else if CompareText(BestName, 'ONCREATE') <> 0 then
+    if CompareText(PropName, 'ONCHANGE') = 0 then
+      ReplaceBest
+    else if CompareText(BestName, 'ONCHANGE') <> 0 then
+      if CompareText(PropName, 'ONCLICK') = 0 then
+        ReplaceBest;
+end;
+
+procedure TReuseableDefaultEditor.Edit;
+var
+  Components: IDesignerSelections;
+begin
+  Components := TDesignerSelections.Create;
+  FContinue := True;
+  Components.Add(Component);
+  FFirst := nil;
+  FBest := nil;
+  try
+    GetComponentProperties(Components, tkAny, Designer, CheckEdit);
+    if FContinue then
+      if Assigned(FBest) then
+        FBest.Edit
+      else if Assigned(FFirst) then
+        FFirst.Edit;
+  finally
+    FFirst := nil;
+    FBest := nil;
+  end;
+end;
+
+//----------------- TGLMaterialLibraryEditor --------------------------------------------------------------------------------
+procedure TGLMaterialLibraryEditor.EditProperty(const Prop: IProperty; var Continue: Boolean);
+begin
+  if CompareText(Prop.GetName, 'MATERIALS') = 0 then
+  begin
+    FBest := Prop;
+  end;
+end;
+
+procedure TGLMaterialLibraryEditor.ExecuteVerb(Index: Integer);
+begin
+  case Index of
+    0: Edit;
+  end;
+end;
+
+function TGLMaterialLibraryEditor.GetVerb(Index: Integer): string;
+begin
+  case Index of
+    0: Result := 'Show Material Library Editor';
+  end;
+end;
+
+function TGLMaterialLibraryEditor.GetVerbCount: Integer;
+begin
+  Result := 1
+end;
+
+//----------------- TGLLibMaterialNameProperty ---------------------------------
+
+function TGLLibMaterialNameProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paDialog];
+end;
+
+procedure TGLLibMaterialNameProperty.Edit;
+var
+  buf: string;
+  ml: TGLAbstractMaterialLibrary;
+  obj: TPersistent;
+  Int: IGLMaterialLibrarySupported;
+begin
+  buf := GetStrValue;
+  obj := GetComponent(0);
+  if Supports(obj, IGLMaterialLibrarySupported, Int) then
+    ml := Int.GetMaterialLibrary
+  else
+  begin
+    ml := nil;
+    Assert(False, 'oops, unsupported...');
+  end;
+  if not Assigned(ml) then
+    ShowMessage('Select the material library first.')
+  else if GLLibMaterialPicker.Execute(buf, ml) then
+    SetStrValue(buf);
+end;
+
+//----------------- TGLAnimationNameProperty -----------------------------------
+
+function TGLAnimationNameProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paValueList];
+end;
+
+procedure TGLAnimationNameProperty.GetValues(Proc: TGetStrProc);
+var
+  i: Integer;
+  animControler: TGLAnimationControler;
+  actor: TGLActor;
+begin
+  animControler := (GetComponent(0) as TGLAnimationControler);
+  if Assigned(animControler) then
+  begin
+    actor := animControler.actor;
+    if Assigned(actor) then
+      with actor.Animations do
+      begin
+        for i := 0 to Count - 1 do
+          Proc(Items[i].Name);
+      end;
+  end;
+end;
+//---------------- TGLBaseSceneObjectSelectionEditor -----------------------
+
+procedure TGLBaseSceneObjectSelectionEditor.RequiresUnits(Proc: TGetStrProc);
+var
+  i, j: Integer;
+  comp: TGLBaseSceneObject;
+begin
+  if (Designer = nil) or (Designer.Root = nil) then
+    Exit;
+
+  for i := 0 to Designer.Root.ComponentCount - 1 do
+  begin
+    if (Designer.Root.Components[i] is TGLBaseSceneObject) then
+    begin
+      comp := TGLBaseSceneObject(Designer.Root.Components[i]);
+      for j := 0 to comp.Behaviours.Count - 1 do
+        Proc(FindUnitName(comp.Behaviours[j]));
+      for j := 0 to comp.Effects.Count - 1 do
+        Proc(FindUnitName(comp.Effects[j]));
+    end;
+  end;
+end;
+
+//---------------------------- TGLSoundLibrarySelectionEditor -----------------------
+
+procedure TGLSoundLibrarySelectionEditor.RequiresUnits(Proc: TGetStrProc);
+var
+  i, j: Integer;
+  comp: TGLSoundLibrary;
+begin
+  if (Designer = nil) or (Designer.Root = nil) then
+    Exit;
+
+  for i := 0 to Designer.Root.ComponentCount - 1 do
+  begin
+    if (Designer.Root.Components[i] is TGLSoundLibrary) then
+    begin
+      comp := TGLSoundLibrary(Designer.Root.Components[i]);
+      for j := 0 to comp.Samples.Count - 1 do
+        if Assigned(comp.Samples[j].Data) then
+          Proc(FindUnitName(comp.Samples[j].Data));
+    end;
+  end;
+end;
+
+//-------------------- TGLSArchiveManagerEditor -----------------------
+
+procedure TGLSArchiveManagerEditor.EditProperty(const Prop: IProperty;
+  var Continue: Boolean);
+begin
+  if CompareText(Prop.GetName, 'ARCHIVES') = 0 then
+  begin
+    FBest := Prop;
+  end;
+end;
+
+procedure TGLSArchiveManagerEditor.ExecuteVerb(Index: Integer);
+begin
+  case Index of
+    0: Edit;
+  end;
+end;
+
+function TGLSArchiveManagerEditor.GetVerb(Index: Integer): string;
+begin
+  case Index of
+    0:
+      Result := 'Show Archive Manager Editor';
+  end;
+end;
+
+function TGLSArchiveManagerEditor.GetVerbCount: Integer;
+begin
+  Result := 1
+end;
+
+procedure TGLMaterialComponentNameProperty.Edit;
+var
+  LOwner: IGLMaterialLibrarySupported;
+  LItem: TGLBaseMaterialCollectionItem;
+begin
+  if Supports(GetComponent(0), IGLMaterialLibrarySupported, LOwner) then
+  begin
+    LItem := TGLMaterialLibraryEx(LOwner.GetMaterialLibrary)
+      .Components.GetItemByName(GetStrValue);
+    if Assigned(LItem) then
+      Designer.SelectComponent(LItem);
+    Modified;
+  end;
+end;
+
+function TGLMaterialComponentNameProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paValueList];
+end;
+
+procedure TGLLibTextureNameProperty.GetValues(Proc: TGetStrProc);
+var
+  LOwner: IGLMaterialLibrarySupported;
+begin
+  if Supports(GetComponent(0), IGLMaterialLibrarySupported, LOwner) then
+  begin
+    TGLMaterialLibraryEx(LOwner.GetMaterialLibrary)
+      .GetNames(Proc, TGLTextureImageEx);
+    TGLMaterialLibraryEx(LOwner.GetMaterialLibrary)
+      .GetNames(Proc, TGLFrameBufferAttachment);
+  end;
+end;
+
+procedure TGLLibSamplerNameProperty.GetValues(Proc: TGetStrProc);
+var
+  LOwner: IGLMaterialLibrarySupported;
+begin
+  if Supports(GetComponent(0), IGLMaterialLibrarySupported, LOwner) then
+    TGLMaterialLibraryEx(LOwner.GetMaterialLibrary)
+      .GetNames(Proc, TGLTextureSampler);
+end;
+
+procedure TGLLibCombinerNameProperty.GetValues(Proc: TGetStrProc);
+var
+  LOwner: IGLMaterialLibrarySupported;
+begin
+  if Supports(GetComponent(0), IGLMaterialLibrarySupported, LOwner) then
+    TGLMaterialLibraryEx(LOwner.GetMaterialLibrary)
+      .GetNames(Proc, TGLTextureCombiner);
+end;
+
+procedure TGLLibShaderNameProperty.GetValues(Proc: TGetStrProc);
+var
+  LOwner: IGLMaterialLibrarySupported;
+begin
+  if Supports(GetComponent(0), IGLMaterialLibrarySupported, LOwner) then
+    TGLMaterialLibraryEx(LOwner.GetMaterialLibrary).GetNames(Proc, TGLShaderEx);
+end;
+
+procedure TGLLibAttachmentNameProperty.GetValues(Proc: TGetStrProc);
+var
+  LOwner: IGLMaterialLibrarySupported;
+begin
+  if Supports(GetComponent(0), IGLMaterialLibrarySupported, LOwner) then
+    TGLMaterialLibraryEx(LOwner.GetMaterialLibrary)
+      .GetNames(Proc, TGLFrameBufferAttachment);
+end;
+
+procedure TGLLibAsmProgNameProperty.GetValues(Proc: TGetStrProc);
+var
+  LOwner: IGLMaterialLibrarySupported;
+begin
+  if Supports(GetComponent(0), IGLMaterialLibrarySupported, LOwner) then
+    TGLMaterialLibraryEx(LOwner.GetMaterialLibrary)
+      .GetNames(Proc, TGLASMVertexProgram);
+end;
+
+function TPictureFileProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paDialog];
+end;
+
+procedure TPictureFileProperty.Edit;
+var
+  LFileName: string;
+begin
+  if OpenPictureDialog(LFileName) then
+  begin
+    SetStrValue(RelativePath(LFileName));
+  end;
+  Modified;
+end;
+
+procedure TShaderFileProperty.Edit;
+var
+  ODialog: TOpenDialog;
+begin
+  ODialog := TOpenDialog.Create(nil);
+  try
+    ODialog.Filter := '*.glsl';
+    if ODialog.Execute then
+    begin
+      SetStrValue(RelativePath(ODialog.FileName));
+      Modified;
+    end;
+  finally
+    ODialog.Free;
+  end;
+end;
+
+function TShaderFileProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paDialog];
+end;
+
+procedure TAsmProgFileProperty.Edit;
+var
+  ODialog: TOpenDialog;
+begin
+  ODialog := TOpenDialog.Create(nil);
+  try
+    ODialog.Filter := '*.asm';
+    if ODialog.Execute then
+    begin
+      SetStrValue(RelativePath(ODialog.FileName));
+      Modified;
+    end;
+  finally
+    ODialog.Free;
+  end;
+end;
+
+function TAsmProgFileProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paDialog];
+end;
+
+function TUniformAutoSetProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paDialog, paFullWidthName];
+end;
+
+procedure TUniformAutoSetProperty.PassUniform(const S: string);
+begin
+  GLShaderUniformEditor.AddUniform(TGLBaseShaderModel(GetComponent(0))
+    .Uniforms[S]);
+end;
+
+procedure TUniformAutoSetProperty.Edit;
+var
+  LOwner: TGLBaseShaderModel;
+begin
+  LOwner := TGLBaseShaderModel(GetComponent(0));
+  if LOwner.Enabled and LOwner.IsValid then
+  begin
+    with GLShaderUniformEditor do
+    begin
+      Clear;
+      LOwner.MaterialLibrary.GetNames(AddTextureName, TGLTextureImageEx);
+      LOwner.MaterialLibrary.GetNames(AddTextureName, TGLFrameBufferAttachment);
+      LOwner.MaterialLibrary.GetNames(AddSamplerName, TGLTextureSampler);
+      LOwner.GetUniformNames(PassUniform);
+      Execute;
+    end;
+  end;
+end;
+
+function TGLShaderEditorProperty.GetAttributes: TPropertyAttributes;
+begin
+  Result := inherited GetAttributes + [paDialog] - [paSubProperties];
+end;
+
+function TGLShaderEditorProperty.GetStrings: TStrings;
+begin
+  Result := TStrings(GetOrdValue);
+end;
+
+procedure TGLShaderEditorProperty.OnShaderCheck(Sender: TObject);
+var
+  LShader: TGLShaderEx;
+  LContext: TGLContext;
+begin
+  SetStrings(GLShaderEditorForm.GLSLMemo.Lines);
+  LShader := TGLShaderEx(GetComponent(0));
+  LContext := LShader.Handle.RenderingContext;
+  if Assigned(LContext) then
+  begin
+    LContext.Activate;
+    try
+      LShader.DoOnPrepare(LContext);
+      GLShaderEditorForm.CompilatorLog.Lines.Add(LShader.InfoLog);
+    finally
+      LContext.Deactivate;
+    end;
+  end
+  else
+    GLShaderEditorForm.CompilatorLog.Lines.Add
+      ('There is no any rendering context for work with OpenGL');
+end;
+
+procedure TGLShaderEditorProperty.SetStrings(const Value: TStrings);
+begin
+  SetOrdValue(Longint(Value));
+end;
+
+procedure TGLShaderEditorProperty.Edit;
+begin
+  with GLShaderEditorForm do
+  begin
+    OnCheck := OnShaderCheck;
+    GLSLMemo.Lines.Assign(GetStrings);
+    GLSLMemo.CurX := 0;
+    GLSLMemo.CurY := 0;
+    if ShowModal = mrOk then
+    begin
+      SetStrings(GLSLMemo.Lines);
+      Modified;
+    end;
+  end;
+end;
+
+// ******************************************************
+// Register Properties
+//*******************************************************
+procedure GLRegisterPropertiesInCategories;
+begin
+  // property types
+  // TGLScreenDepth in GLWin32FullScreenViewer
+  RegisterPropertiesInCategory(strOpenGLCategoryName,
+     [TypeInfo(TGLCamera), TypeInfo(TGLSceneBuffer),
+     TypeInfo(TGLVSyncMode), TypeInfo(TGLScreenDepth)]);
+  // TGLSceneViewer
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLSceneViewer, ['*Render']);
+
+  // GLScene
+  RegisterPropertiesInCategory(strOpenGLCategoryName,
+    [TypeInfo(TGLObjectsSorting), TypeInfo(TGLProgressEvent),
+    TypeInfo(TGLBehaviours), TypeInfo(TGLEffects),
+    TypeInfo(TGLDirectRenderEvent), TypeInfo(TGLCameraStyle),
+    TypeInfo(TOnCustomPerspective), TypeInfo(TGLScene)]);
+  RegisterPropertiesInCategory(strLayoutCategoryName,
+    [TypeInfo(TGLObjectsSorting), TypeInfo(TGLNormalDirection)]);
+  RegisterPropertiesInCategory(strVisualCategoryName,
+    [TypeInfo(TGLVisibilityCulling), TypeInfo(TGLLightStyle), TypeInfo(TGLColor),
+    TypeInfo(TGLNormalDirection), TypeInfo(TGLCameraStyle)]);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLBaseSceneObject,
+    ['Rotation', 'Direction', 'Position', 'Up', 'Scale', '*Angle', 'ShowAxes', 'FocalLength']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLSceneObject, ['Parts']);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLDirectOpenGL, ['UseBuildList']);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLProxyObjectOptions)]);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLLightSource, ['*Attenuation', 'Shining', 'Spot*']);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLCamera, ['TargetObject']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLCamera, ['DepthOfView', 'SceneScale']);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLNonVisualViewer, ['*Render']);
+
+  // GLObjects
+  RegisterPropertiesInCategory(strOpenGLCategoryName,
+    [TypeInfo(TGLLinesNodes), TypeInfo(TGLLineNodesAspect),
+    TypeInfo(TGLLineSplineMode), TypeInfo(TGLLinesOptions)]);
+  // GLSpaceText
+  RegisterPropertiesInCategory(strLayoutCategoryName, [TypeInfo(TGLTextAdjust)]);
+  RegisterPropertiesInCategory(strLocalizableCategoryName, [TypeInfo(TGLSpaceTextCharRange)]);
+  RegisterPropertiesInCategory(strVisualCategoryName, [TypeInfo(TGLLineSplineMode),
+    TypeInfo(TGLCapType), TypeInfo(TGLNormalSmoothing),
+    TypeInfo(TGLArrowHeadStyle), TypeInfo(TGLTextAdjust)]);
+  // DummyCube
+  RegisterPropertiesInCategory(strLayoutCategoryName, TGLDummyCube, ['VisibleAtRunTime']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLDummyCube, ['CubeSize', 'VisibleAtRunTime']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLPlane, ['*Offset', '*Tiles']);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLSprite, ['NoZWrite']);
+  RegisterPropertiesInCategory(strLayoutCategoryName, TGLSprite, ['NoZWrite']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLSprite, ['AlphaChannel', 'Rotation']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLNode, ['X', 'Y', 'Z']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLLines,
+    ['Antialiased', 'Division', 'Line*', 'NodeSize']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLCube, ['Cube*']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLFrustrum, ['ApexHeight', 'Base*']);
+  // GLSpaceText
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLSpaceText,
+    ['AllowedDeviation', 'AspectRatio', 'Extrusion', 'Oblique', 'TextHeight']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLSphere,
+    ['Bottom', 'Radius', 'Slices', 'Stacks', 'Start', 'Stop']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLDisk,
+    ['*Radius', 'Loops', 'Slices']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLCone,
+    ['BottomRadius', 'Loops', 'Slices', 'Stacks']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLCylinder,
+    ['*Radius', 'Loops', 'Slices', 'Stacks']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLCapsule,
+    ['*Radius', 'Loops', 'Slices', 'Stacks']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLAnnulus,
+    ['Bottom*', 'Loops', 'Slices', 'Stacks', 'Top*']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLTorus,
+    ['*Radius', 'Rings', 'Sides']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLArrowLine,
+    ['Bottom*', 'Loops', 'Slices', 'Stacks', 'Top*']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLPolygon, ['Division']);
+
+  // GLMultiPolygon
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLContour, ['Division']);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLContourNodes),
+    TypeInfo(TGLContours)]);
+
+  // GLExtrusion
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLExtrusionSolid, ['Stacks']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLPipeNode, ['RadiusFactor']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLPipe,
+    ['Division', 'Radius', 'Slices']);
+  RegisterPropertiesInCategory(strVisualCategoryName,
+    [TypeInfo(TGLNodes), TypeInfo(TPipeNodesColorMode)]);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLRevolutionSolid,
+    ['Division', 'Slices', 'YOffsetPerTurn']);
+
+  // GLVectorFileObjects
+  RegisterPropertiesInCategory(strOpenGLCategoryName,
+    [TypeInfo(TGLActorAnimationMode), TypeInfo(TGLActorAnimations),
+    TypeInfo(TGLMeshAutoCenterings), TypeInfo(TGLActorFrameInterpolation),
+    TypeInfo(TGLActorAnimationReference), TypeInfo(TGLActor)]);
+  RegisterPropertiesInCategory(strLayoutCategoryName,
+    [TypeInfo(TGLMeshNormalsOrientation)]);
+  RegisterPropertiesInCategory(strVisualCategoryName,
+    [TypeInfo(TGLMeshAutoCenterings), TypeInfo(TGLActorAnimationReference),
+    TypeInfo(TGLMeshNormalsOrientation)]);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLFreeForm, ['UseMeshmaterials']);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLAnimationControler, ['AnimationName']);
+  RegisterPropertiesInCategory(sLinkageCategoryName, TGLAnimationControler, ['AnimationName']);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLActorAnimation, ['*Frame']);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLActor,
+    ['*Frame*', 'Interval', 'OverlaySkeleton', 'UseMeshmaterials']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLActor,  ['OverlaySkeleton']);
+
+  // GLMesh 
+  RegisterPropertiesInCategory(strOpenGLCategoryName,
+    [TypeInfo(TGLMeshMode), TypeInfo(TGLVertexMode)]);
+
+  // GLGraph 
+  RegisterPropertiesInCategory(strOpenGLCategoryName,
+    [TypeInfo(TGLHeightFieldOptions)]);
+  RegisterPropertiesInCategory(strVisualCategoryName,
+    [TypeInfo(TGLHeightFieldColorMode), TypeInfo(TGLSamplingScale),
+    TypeInfo(TGLXYZGridLinesStyle), TypeInfo(TGLXYZGridParts)]);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLXYZGrid, ['Antialiased']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLXYZGrid, ['Antialiased', 'Line*']);
+
+  // GLParticles
+  RegisterPropertiesInCategory(strLayoutCategoryName, TGLParticles, ['VisibleAtRunTime']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLParticles, ['*Size', 'VisibleAtRunTime']);
+
+  // GLSkydome
+  RegisterPropertiesInCategory(strOpenGLCategoryName,
+    [TypeInfo(TGLSkyDomeBands), TypeInfo(TGLSkyDomeOptions), TypeInfo(TGLSkyDomeStars)]);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLSkyDomeBand, ['Slices', 'Stacks', '*Angle']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLSkyDomeStar, ['Dec', 'Magnitude', 'RA']);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLEarthSkyDome,
+    ['Slices', 'Stacks', 'SunElevation', 'Turbidity']);
+
+  // GLMirror
+  RegisterPropertiesInCategory(strOpenGLCategoryName,
+    [TypeInfo(TGLMirrorOptions), TypeInfo(TGLBaseSceneObject)]);
+
+  // GLParticleFX 
+  RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLBlendingMode)]);
+  RegisterPropertiesInCategory(strVisualCategoryName,
+    [TypeInfo(TGLBlendingMode), TypeInfo(TPFXLifeColors), TypeInfo(TSpriteColorMode)]);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLParticleFXRenderer, ['ZWrite']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLParticleFXRenderer, ['ZWrite']);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TPFXLifeColor, ['LifeTime']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TPFXLifeColor, ['LifeTime']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLLifeColoredPFXManager, ['Acceleration', 'ParticleSize']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLPolygonPFXManager, ['NbSides']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLPointLightPFXManager, ['TexMapSize']);
+
+  // GLTerrainRenderer 
+  RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLHeightDataSource)]);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLTerrainRenderer,
+    ['*CLOD*', 'QualityDistance', 'Tile*']);
+
+  // GLzBuffer 
+  RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLMemoryViewer),
+    TypeInfo(TGLSceneViewer), TypeInfo(TOptimise)]);
+  RegisterPropertiesInCategory(strVisualCategoryName, [TypeInfo(TOptimise)]);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLZShadows,
+    ['DepthFade', '*Shadow', 'Soft', 'Tolerance']);
+
+  // GLHUDObjects
+  RegisterPropertiesInCategory(strLayoutCategoryName, [TypeInfo(TTextLayout)]);
+  RegisterPropertiesInCategory(strVisualCategoryName, [TypeInfo(TGLBitmapFont), TypeInfo(TTextLayout)]);
+  RegisterPropertiesInCategory(strLocalizableCategoryName,[TypeInfo(TGLBitmapFont)]);
+
+  // GLTexture
+  RegisterPropertiesInCategory(strOpenGLCategoryName,
+    [TypeInfo(TGLMaterial), TypeInfo(TGLMaterialLibrary),
+    TypeInfo(TGLLibMaterials), TypeInfo(TGLTextureNeededEvent)]);
+  RegisterPropertiesInCategory(strOpenGLCategoryName,
+    TGLLibMaterial, ['Texture2Name']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLLibMaterial, ['TextureOffset', 'TextureScale']);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLMaterialLibrary, ['TexturePaths']);
+
+  // GLCadencer
+  RegisterPropertiesInCategory(strOpenGLCategoryName,
+    [TypeInfo(TGLCadencer)]);
+
+  // GLCollision
+  RegisterPropertiesInCategory(strOpenGLCategoryName,
+    [TypeInfo(TObjectCollisionEvent)]);
+
+  // GLFireFX
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLFireFXManager,
+    ['MaxParticles', 'NoZWrite', 'Paused', 'UseInterval']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLFireFXManager,
+    ['Fire*', 'InitialDir', 'NoZWrite', 'Particle*', 'Paused']);
+
+  // GLThorFX
+  RegisterPropertiesInCategory(strOpenGLCategoryName,
+    [TypeInfo(TCalcPointEvent)]);
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLThorFXManager,
+    ['Maxpoints', 'Paused']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLThorFXManager,
+    ['Core', 'Glow*', 'Paused', 'Target', 'Vibrate', 'Wildness']);
+
+  // GLBitmapFont 
+  RegisterPropertiesInCategory(strOpenGLCategoryName,
+    [TypeInfo(TGLMagFilter), TypeInfo(TGLMinFilter)]);
+  RegisterPropertiesInCategory(strLocalizableCategoryName,
+    [TypeInfo(TGLBitmapFontRanges)]);
+  RegisterPropertiesInCategory(strLocalizableCategoryName, TGLBitmapFontRange,
+    ['*ASCII']);
+  RegisterPropertiesInCategory(strLayoutCategoryName, TGLBitmapFont,
+    ['Char*', '*Interval*', '*Space']);
+  RegisterPropertiesInCategory(strLocalizableCategoryName, TGLBitmapFont,
+    ['Glyphs']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLBitmapFont,
+    ['Char*', '*Interval*', '*Space', 'Glyphs']);
+
+  // GLHeightData
+  RegisterPropertiesInCategory(strOpenGLCategoryName, TGLBitmapHDS, ['MaxPoolSize']);
+  RegisterPropertiesInCategory(strVisualCategoryName, TGLBitmapHDS, ['Picture']);
+end;
+
+// ******************************************************
+// Register Components
+//*******************************************************
+
+procedure Register;
+begin
+  RegisterComponents('GLScene', [TGLScene, TGLSceneViewer, TGLMemoryViewer,
+  TGLMaterialLibrary, TGLMaterialLibraryEx, TGLCadencer, TGLGuiLayout,
+  TGLBitmapFont, TGLWindowsBitmapFont, TGLScriptLibrary, TGLSoundLibrary,
+  TGLFullScreenViewer]);
+
+  RegisterComponents('GLScene PFX',
+    [TGLCustomPFXManager, TGLPolygonPFXManager,
+    TGLPointLightPFXManager, TGLCustomSpritePFXManager, TGLPerlinPFXManager,
+    TGLLinePFXManager, TGLFireFXManager, TGLThorFXManager,
+    TGLEParticleMasksManager]);
+
+  RegisterComponents('GLScene Utils', [TGLAsyncTimer, TGLStaticImposterBuilder,
+	TGLCollisionManager, TGLAnimationControler, TGLAVIRecorder, TGLDCEManager,
+	TGLFPSMovementManager, TGLMaterialScripter, TGLUserInterface, TGLNavigator,
+	TGLSmoothNavigator, TGLSmoothUserInterface, TGLTimeEventsMGR,
+	TGLApplicationFileIO, TGLVfsPAK, TGLSimpleNavigation, TGLGizmo,
+	TGLCameraController, TGLSLanguage, TGLSLogger, TGLSArchiveManager,
+	TGLJoystick, TGLScreenSaver, TGLSSynHiMemo]);
+
+  RegisterComponents('GLScene Terrain', [TGLBitmapHDS, TGLCustomHDS,
+    TGLHeightTileFileHDS, TGLBumpmapHDS, TGLPerlinHDS, TGLTexturedHDS,
+    TGLAsyncHDS, TGLShadowHDS]);
+
+  RegisterComponents('GLScene Shaders', [TGLTexCombineShader, TGLPhongShader,
+    TGLUserShader, TGLHiddenLineShader, TGLCelShader, TGLOutlineShader,
+    TGLMultiMaterialShader, TGLBumpShader, TGLSLShader,
+    TGLSLDiffuseSpecularShader, TGLSLBumpShader, TGLAsmShader,
+    TGLShaderCombiner, TGLTextureSharingShader, TGLSLPostBlurShader,
+    TGLSLPostThermalVisionShader, TGLSLPostDreamVisionShader, TGLSLPostNightVisionShader,
+    TGLSLPostPixelateShader, TGLSLPostPosterizeShader, TGLSLPostFrostShader,
+    TGLSLPostTroubleShader]);
+
+  RegisterComponentEditor(TGLSceneViewer, TGLSceneViewerEditor);
+  RegisterComponentEditor(TGLScene, TGLSceneEditor);
+  RegisterComponentEditor(TGLMaterialLibrary, TGLMaterialLibraryEditor);
+  RegisterComponentEditor(TGLMaterialLibraryEx, TGLMaterialLibraryEditor);
+  RegisterComponentEditor(TGLSArchiveManager, TGLSArchiveManagerEditor);
+
+  GLRegisterPropertiesInCategories;
+
+  RegisterPropertyEditor(TypeInfo(TResolution), nil, '', TGLResolutionProperty);
+  RegisterPropertyEditor(TypeInfo(TGLTexture), TGLMaterial, '',
+    TGLTextureProperty);
+  RegisterPropertyEditor(TypeInfo(TGLTextureImage), TGLTexture, '',
+    TGLTextureImageProperty);
+  RegisterPropertyEditor(TypeInfo(string), TGLTexture, 'ImageClassName',
+    TGLImageClassProperty);
+
+  RegisterPropertyEditor(TypeInfo(TGLSoundFile), TGLSoundSample, '', TSoundFileProperty);
+  RegisterPropertyEditor(TypeInfo(string), TGLBaseSoundSource, 'SoundName', TSoundNameProperty);
+
+  RegisterPropertyEditor(TypeInfo(TGLCoordinates), nil, '', TGLCoordinatesProperty);
+
+  RegisterPropertyEditor(TypeInfo(TGLColor), nil, '', TGLColorProperty);
+  RegisterPropertyEditor(TypeInfo(TGLMaterial), nil, '', TGLMaterialProperty);
+  RegisterComponentEditor(TGLGuiLayout, TGLGUILayoutEditor);
+
+  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLMaterial, '',
+    TGLLibMaterialNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLLibMaterial,
+    'Texture2Name', TGLLibMaterialNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLSkyBox, '',
+    TGLLibMaterialNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLEParticleMask, '',
+    TGLLibMaterialNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLGameMenu, '',
+    TGLLibMaterialNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName),
+    TGLMaterialMultiProxyMaster, '', TGLLibMaterialNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLSLBumpShader, '',
+    TGLLibMaterialNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLSpriteAnimation, '',
+    TGLLibMaterialNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLMaterialProxy, '',
+    TGLLibMaterialNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLActorProxy, '',
+    TGLLibMaterialNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLFBORenderer, '',
+    TGLLibMaterialNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLActorAnimationName), TGLAnimationControler,
+    '', TGLAnimationNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName),
+    TGLTextureSharingShaderMaterial, 'LibMaterialName',
+    TGLLibMaterialNameProperty);
+  RegisterSelectionEditor(TGLBaseSceneObject,
+    TGLBaseSceneObjectSelectionEditor);
+  RegisterSelectionEditor(TGLSoundLibrary, TGLSoundLibrarySelectionEditor);
+  RegisterPropertyEditor(TypeInfo(TGLLibMaterialName), TGLLibMaterialProperty,
+    'NextPass', TGLLibMaterialNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName),
+    TGLTextureProperties, 'LibTextureName', TGLLibTextureNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName),
+    TGLTextureProperties, 'LibSamplerName', TGLLibSamplerNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName),
+    TGLMultitexturingProperties, 'LibCombinerName', TGLLibCombinerNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName),
+    TGLMultitexturingProperties, 'LibAsmProgName', TGLLibAsmProgNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel3,
+    'LibVertexShaderName', TGLLibShaderNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel3,
+    'LibFragmentShaderName', TGLLibShaderNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel4,
+    'LibVertexShaderName', TGLLibShaderNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel4,
+    'LibFragmentShaderName', TGLLibShaderNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel4,
+    'LibGeometryShaderName', TGLLibShaderNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel5,
+    'LibVertexShaderName', TGLLibShaderNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel5,
+    'LibFragmentShaderName', TGLLibShaderNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel5,
+    'LibGeometryShaderName', TGLLibShaderNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel5,
+    'LibTessControlShaderName', TGLLibShaderNameProperty);
+  RegisterPropertyEditor(TypeInfo(TGLMaterialComponentName), TGLShaderModel5,
+    'LibTessEvalShaderName', TGLLibShaderNameProperty);
+
+  RegisterPropertyEditor(TypeInfo(string), TGLTextureImageEx, 'SourceFile',
+    TPictureFileProperty);
+  RegisterPropertyEditor(TypeInfo(string), TGLShaderEx, 'SourceFile',
+    TShaderFileProperty);
+  RegisterPropertyEditor(TypeInfo(string), TGLASMVertexProgram, 'SourceFile',
+    TAsmProgFileProperty);
+
+  RegisterPropertyEditor(TypeInfo(Boolean), TGLBaseShaderModel,
+    'AutoFillOfUniforms', TUniformAutoSetProperty);
+  RegisterPropertyEditor(TypeInfo(TStringList), TGLShaderEx, 'Source',
+    TGLShaderEditorProperty);
+end;
+
+function GetGLSceneVersion: string;
+var
+  LProject: IOTAProject;
+  LExePath, LProjectPath, LSVN, LRevision: string;
+begin
+  LRevision := Copy(GLSCENE_REVISION, 20, 5);
+
+  // will be assigned after project compilation
+  // after each compilation get it from file \.svn\entries in 4-th line
+  // and write to file GLSceneRevision
+  // in both fail (no \.svn\entries or GLSceneRevision file) get a version value from GLScene.pas
+  LProject := GetActiveProject;
+  LExePath := ExtractFilePath(ParamStr(0));
+  if Assigned(LProject) then
+  begin
+    LProjectPath := ExtractFilePath(LProject.FileName);
+    LSVN := LProjectPath + '.svn\entries';
+    if FileExists(LSVN) then
+      with TStringList.Create do
+        try
+          // Load
+          LoadFromFile(LSVN);
+          if (Count >= 4) and (Trim(Strings[3]) <> '') and
+            IsDirectoryWriteable(LExePath) then
+          begin
+            LRevision := Trim(Strings[3]);
+            // Save
+            Clear;
+            Add(LRevision);
+            SaveToFile(LExePath + 'GLSceneRevision');
+          end;
+        finally
+          Free;
+        end;
+  end
+  else if FileExists(LExePath + 'GLSceneRevision') then
+    try
+      with TStringList.Create do
+        try
+          LoadFromFile(LExePath + 'GLSceneRevision');
+          if (Count >= 1) and (Trim(Strings[0]) <> '') then
+            LRevision := Trim(Strings[0]);
+        finally
+          Free;
+        end;
+    except
+    end;
+
+  // Finally
+  Result := Format(GLSCENE_VERSION, [LRevision]);
+end;
+
+function GetProjectTargetName: string;
+var
+  Project: IOTAProject;
+begin
+  Result := '';
+  Project := GetActiveProject;
+  if Assigned(Project) then
+  begin
+    Result := Project.ProjectOptions.TargetName;
+    if Length(Result) > 0 then
+      ForceDirectories(ExtractFilePath(Result));
+  end;
+end;
+
+// ------------------------------------------------------------------
+initialization
+// ------------------------------------------------------------------
+
+  SplashScreenServices.AddPluginBitmap(GetGLSceneVersion, LoadBitmap(HInstance, 'TGLScene'),
+    False, 'MPL 2.0 license', 'VCL version');
+  GLCrossPlatform.IsDesignTime := True;
+  GLCrossPlatform.vProjectTargetName := GetProjectTargetName;
+  GLColor.vUseDefaultColorSets := True;
+  GLCoordinates.vUseDefaultCoordinateSets := True;
+  ReadVideoModes;
+
+with ObjectManager do
+begin
+  CreateDefaultObjectIcons(HInstance);
+  RegisterSceneObject(TGLCamera, 'Camera', '', HInstance);
+  RegisterSceneObject(TGLLightSource, 'LightSource', '', HInstance);
+  RegisterSceneObject(TGLDummyCube, 'DummyCube', '', HInstance);
+
+  // Basic geometry
+  RegisterSceneObject(TGLSprite, 'Sprite', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLPoints, 'Points', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLLines, 'Lines', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLPlane, 'Plane', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLPolygon, 'Polygon', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLCube, 'Cube', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLFrustrum, 'Frustrum', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLSphere, 'Sphere', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLDisk, 'Disk', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLCone, 'Cone', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLCylinder, 'Cylinder', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLCapsule, 'Capsule', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLDodecahedron, 'Dodecahedron', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLIcosahedron, 'Icosahedron', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLHexahedron, 'Hexahedron', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLOctahedron, 'Octahedron', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLTetrahedron, 'Tetrahedron', strOCBasicGeometry, HInstance);
+  RegisterSceneObject(TGLSuperellipsoid, 'Superellipsoid', strOCBasicGeometry, HInstance);
+
+  // Advanced geometry
+  RegisterSceneObject(TGLAnimatedSprite, 'Animated Sprite', strOCAdvancedGeometry, HInstance);
+  RegisterSceneObject(TGLArrowLine, 'ArrowLine', strOCAdvancedGeometry, HInstance);
+  RegisterSceneObject(TGLArrowArc, 'ArrowArc', strOCAdvancedGeometry, HInstance);
+  RegisterSceneObject(TGLAnnulus, 'Annulus', strOCAdvancedGeometry, HInstance);
+  RegisterSceneObject(TGLExtrusionSolid, 'ExtrusionSolid', strOCAdvancedGeometry, HInstance);
+  RegisterSceneObject(TGLMultiPolygon, 'MultiPolygon', strOCAdvancedGeometry, HInstance);
+  RegisterSceneObject(TGLPipe, 'Pipe', strOCAdvancedGeometry, HInstance);
+  RegisterSceneObject(TGLRevolutionSolid, 'RevolutionSolid', strOCAdvancedGeometry, HInstance);
+  RegisterSceneObject(TGLTorus, 'Torus', strOCAdvancedGeometry, HInstance);
+
+  // Mesh objects
+  RegisterSceneObject(TGLActor, 'Actor', strOCMeshObjects, HInstance);
+  RegisterSceneObject(TGLFreeForm, 'FreeForm', strOCMeshObjects, HInstance);
+  RegisterSceneObject(TGLMesh, 'Mesh', strOCMeshObjects, HInstance);
+  RegisterSceneObject(TGLTilePlane, 'TilePlane', strOCMeshObjects, HInstance);
+  RegisterSceneObject(TGLPortal, 'Portal', strOCMeshObjects, HInstance);
+  RegisterSceneObject(TGLTerrainRenderer, 'TerrainRenderer', strOCMeshObjects, HInstance);
+
+  // Graph-plotting objects
+  RegisterSceneObject(TGLFlatText, 'FlatText', strOCGraphPlottingObjects, HInstance);
+  RegisterSceneObject(TGLHeightField, 'HeightField', strOCGraphPlottingObjects, HInstance);
+  RegisterSceneObject(TGLXYZGrid, 'XYZGrid', strOCGraphPlottingObjects, HInstance);
+
+  // Particle systems
+  RegisterSceneObject(TGLParticles, 'Particles', strOCParticleSystems, HInstance);
+  RegisterSceneObject(TGLParticleFXRenderer, 'PFX Renderer', strOCParticleSystems, HInstance);
+
+  // Environment objects
+  RegisterSceneObject(TGLEarthSkyDome, 'EarthSkyDome', strOCEnvironmentObjects, HInstance);
+  RegisterSceneObject(TGLSkyDome, 'SkyDome', strOCEnvironmentObjects, HInstance);
+  RegisterSceneObject(TGLSkyBox, 'SkyBox', strOCEnvironmentObjects, HInstance);
+  RegisterSceneObject(TGLAtmosphere, 'Atmosphere', strOCEnvironmentObjects, HInstance);
+
+  // HUD objects.
+  RegisterSceneObject(TGLHUDSprite, 'HUD Sprite', strOCHUDObjects, HInstance);
+  RegisterSceneObject(TGLHUDText, 'HUD Text', strOCHUDObjects, HInstance);
+  RegisterSceneObject(TGLResolutionIndependantHUDText,
+    'Resolution Independant HUD Text', strOCHUDObjects, HInstance);
+  RegisterSceneObject(TGLAbsoluteHUDText, 'Absolute HUD Text', strOCHUDObjects, HInstance);
+  RegisterSceneObject(TGLGameMenu, 'GameMenu', strOCHUDObjects, HInstance);
+  RegisterSceneObject(TGLConsole, 'Console', strOCHUDObjects, HInstance);
+
+  // GUI objects.
+  RegisterSceneObject(TGLBaseControl, 'Root Control', strOCGuiObjects, HInstance);
+  RegisterSceneObject(TGLPopupMenu, 'GLPopupMenu', strOCGuiObjects, HInstance);
+  RegisterSceneObject(TGLForm, 'GLForm', strOCGuiObjects, HInstance);
+  RegisterSceneObject(TGLPanel, 'GLPanel', strOCGuiObjects, HInstance);
+  RegisterSceneObject(TGLButton, 'GLButton', strOCGuiObjects, HInstance);
+  RegisterSceneObject(TGLCheckBox, 'GLCheckBox', strOCGuiObjects, HInstance);
+  RegisterSceneObject(TGLEdit, 'GLEdit', strOCGuiObjects, HInstance);
+  RegisterSceneObject(TGLLabel, 'GLLabel', strOCGuiObjects, HInstance);
+  RegisterSceneObject(TGLAdvancedLabel, 'GLAdvancedLabel', strOCGuiObjects, HInstance);
+  RegisterSceneObject(TGLScrollbar, 'GLScrollbar', strOCGuiObjects, HInstance);
+  RegisterSceneObject(TGLStringGrid, 'GLStringGrid', strOCGuiObjects, HInstance);
+  RegisterSceneObject(TGLCustomControl, 'GLBitmapControl', strOCGuiObjects, HInstance);
+
+  // Special objects
+  RegisterSceneObject(TGLLensFlare, 'LensFlare', strOCSpecialObjects, HInstance);
+  RegisterSceneObject(TGLTextureLensFlare, 'TextureLensFlare', strOCSpecialObjects, HInstance);
+  RegisterSceneObject(TGLMirror, 'Mirror', strOCSpecialObjects, HInstance);
+  RegisterSceneObject(TGLShadowPlane, 'ShadowPlane', strOCSpecialObjects, HInstance);
+  RegisterSceneObject(TGLShadowVolume, 'ShadowVolume', strOCSpecialObjects, HInstance);
+  RegisterSceneObject(TGLZShadows, 'ZShadows', strOCSpecialObjects, HInstance);
+  RegisterSceneObject(TGLSLTextureEmitter, 'GLSL Texture Emitter', strOCSpecialObjects, HInstance);
+  RegisterSceneObject(TGLSLProjectedTextures, 'GLSL Projected Textures', strOCSpecialObjects, HInstance);
+  RegisterSceneObject(TGLTextureEmitter, 'Texture Emitter', strOCSpecialObjects, HInstance);
+  RegisterSceneObject(TGLProjectedTextures, 'Projected Textures', strOCSpecialObjects, HInstance);
+  RegisterSceneObject(TGLBlur, 'Blur', strOCSpecialObjects, HInstance);
+  RegisterSceneObject(TGLMotionBlur, 'MotionBlur', strOCSpecialObjects, HInstance);
+
+  RegisterSceneObject(TGLSpaceText, 'SpaceText', strOCDoodad, HInstance);
+
+  RegisterSceneObject(TGLTrail, 'GLTrail', strOCSpecialObjects, HInstance);
+  RegisterSceneObject(TGLPostEffect, 'PostEffect', strOCSpecialObjects, HInstance);
+  RegisterSceneObject(TGLPostShaderHolder, 'PostShaderHolder', strOCSpecialObjects, HInstance);
+
+  // Doodad objects.
+  RegisterSceneObject(TGLTeapot, 'Teapot', strOCDoodad, HInstance);
+  RegisterSceneObject(TGLTree, 'Tree', strOCDoodad, HInstance);
+  RegisterSceneObject(TGLWaterPlane, 'WaterPlane', strOCDoodad, HInstance);
+
+  // Proxy objects.
+  RegisterSceneObject(TGLProxyObject, 'ProxyObject', strOCProxyObjects, HInstance);
+  RegisterSceneObject(TGLColorProxy, 'ColorProxy', strOCProxyObjects, HInstance);
+  RegisterSceneObject(TGLFreeFormProxy, 'FreeFormProxy', strOCProxyObjects, HInstance);
+  RegisterSceneObject(TGLMaterialProxy, 'MaterialProxy', strOCProxyObjects, HInstance);
+  RegisterSceneObject(TGLActorProxy, 'ActorProxy', strOCProxyObjects, HInstance);
+  RegisterSceneObject(TGLMultiProxy, 'MultiProxy', strOCProxyObjects, HInstance);
+  RegisterSceneObject(TGLMaterialMultiProxy, 'MaterialMultiProxy', strOCProxyObjects, HInstance);
+
+  // Other objects.
+  RegisterSceneObject(TGLDirectOpenGL, 'Direct OpenGL', '', HInstance);
+  RegisterSceneObject(TGLRenderPoint, 'Render Point', '', HInstance);
+  RegisterSceneObject(TGLImposter, 'Imposter Sprite', '', HInstance);
+  RegisterSceneObject(TGLFeedback, 'OpenGL Feedback', '', HInstance);
+  RegisterSceneObject(TGLFBORenderer, 'OpenGL FrameBuffer', '', HInstance);
+end;
+
+finalization
+
+ObjectManager.Free;
+
+end.

+ 0 - 164
Source/GLSceneToolbar.pas

@@ -1,164 +0,0 @@
-//
-// This unit is part of the GLScene Engine, http://glscene.org
-//
-{
-   Added GLScene's toolbar to Delphi IDE. 
-}
-
-unit GLSceneToolbar;
-
-interface
-
-uses
-  System.Classes,
-  System.SysUtils,
-  Vcl.Graphics,
-  Vcl.ImgList,
-  Vcl.Controls,
-  Vcl.ComCtrls,
-  Vcl.ExtCtrls,
-  Vcl.ActnList,
-
-  ToolsAPI,
-   
-  GLScene,
-  GLSGenerics;
-
-const
-  cGLSceneViewerToolbar = 'GLSceneViewerToolbar';
-
-type
-
-  TGLSToolButtonReceiver = class
-  protected
-    FActionList: GList<TBasicAction>;
-    procedure OnClick(Sender: TObject);
-  public
-    constructor Create;
-    destructor Destroy; override;
-  end;
-
-var
-  vReciver: TGLSToolButtonReceiver;
-  vGLSceneViewerMode: TGLSceneViewerMode;
-  vResetDesignView: Boolean;
-
-//-----------------------------------------------------------
-implementation
-//-----------------------------------------------------------
-
-function MsgServices: IOTAMessageServices;
-  begin
-    Result := (BorlandIDEServices as IOTAMessageServices);
-    Assert(Result <> nil, 'IOTAMessageServices not available');
-  end;
-
-procedure AddGLSceneToolbar;
-
-  var
-    Services: INTAServices;
-    T: Integer;
-    GLToolbar: TToolBar;
-
-    procedure AddButton(const AHint, AResName: string);
-      var
-        Bmp: TBitmap;
-        Act: TAction;
-      begin
-        Act := TAction.Create(nil);
-        Act.ActionList := Services.ActionList;
-        vReciver.FActionList.Add(Act);
-
-        Bmp := TBitmap.Create;
-        Bmp.LoadFromResourceName(HInstance, AResName);
-        Act.ImageIndex := Services.AddMasked(Bmp, Bmp.TransparentColor, 'GLScene.' + AResName);
-        Bmp.Destroy;
-
-        Act.Hint := AHint;
-        Act.Tag := T;
-        Act.OnExecute := vReciver.OnClick;
-
-        with Services.AddToolButton(cGLSceneViewerToolbar, 'GLSButton' + IntToStr(T), Act) do
-          Action := Act;
-        Act.Enabled := True;
-
-        Inc(T);
-      end;
-  begin
-    if not Supports(BorlandIDEServices, INTAServices, Services) then
-      exit;
-
-    GLToolbar := Services.ToolBar[cGLSceneViewerToolbar];
-    vReciver := TGLSToolButtonReceiver.Create;
-    T := 0;
-
-    if not Assigned(GLToolbar) then
-    begin
-      GLToolbar := Services.NewToolbar(cGLSceneViewerToolbar, 'GLScene Viewer Control');
-      if Assigned(GLToolbar) then
-        with GLToolbar do
-        begin
-          AddButton('GLSceneViewer default control mode', 'GLSceneViewerControlToolbarDefault');
-          AddButton('GLSceneViewer navigation mode', 'GLSceneViewerControlToolbarNavigation');
-          AddButton('GLSceneViewer gizmo mode', 'GLSceneViewerControlToolbarGizmo');
-          AddButton('Reset view to GLSceneViewer camera', 'GLSceneViewerControlToolbarCameraReset');
-          Visible := True;
-        end;
-      MsgServices.AddTitleMessage('GLScene Toolbar created');
-    end
-    else
-    begin
-      for T := 0 to GLToolbar.ButtonCount - 1 do
-      begin
-        GLToolbar.Buttons[T].Action.OnExecute := vReciver.OnClick;
-        vReciver.FActionList.Add(GLToolbar.Buttons[T].Action);
-      end;
-      MsgServices.AddTitleMessage('GLScene Toolbar activated');
-    end;
-    Services.ToolbarModified(GLToolbar);
-  end;
-
-constructor TGLSToolButtonReceiver.Create;
-begin
-  FActionList := GList<TBasicAction>.Create;
-  vGLSceneViewerMode := svmDefault;
-end;
-
-destructor TGLSToolButtonReceiver.Destroy;
-var
-  I: Integer;
-begin
-  for I := 0 to FActionList.Count - 1 do
-    FActionList[I].OnExecute := nil;
-  FActionList.Destroy;
-  vGLSceneViewerMode := svmDisabled;
-end;
-
-procedure TGLSToolButtonReceiver.OnClick(Sender: TObject);
-  const
-    cMode: array [TGLSceneViewerMode] of string = ('', 'default', 'navigation', 'gizmo');
-  var
-    T: Integer;
-  begin
-    inherited;
-    T := TComponent(Sender).Tag;
-    if T < 3 then
-    begin
-      vGLSceneViewerMode := TGLSceneViewerMode(T+1);
-      MsgServices.AddTitleMessage(Format('GLSceneViewer %s mode', [cMode[vGLSceneViewerMode]]));
-    end
-    else
-      vResetDesignView := True;
-  end;
-
-//---------------------------------------------------  
-initialization
-//---------------------------------------------------  
-
-  AddGLSceneToolbar;
-
-finalization
-
-  vReciver.Free;
-
-end.

+ 23 - 8
Source/GLStrings.pas

@@ -1,14 +1,33 @@
 //
 // This unit is part of the GLScene Engine, http://glscene.org
 //
-{
-   String constants that are used in many GLScene units
-}
 
 unit GLStrings;
 
+(*
+  String constants that are used for internationalization
+
+  To build your project with a single language's translations in the executable
+  itself, define one of the next languages
+
+Language             $DEFINE    2-character locale id
+  -------------------  ---------- ---------------------
+  English              LANG_EN    en
+  French               LANG_FR    fr
+  German               LANG_DE    de
+  Italian              LANG_IT    it
+  Japanese             LANG_JP    jp
+  Russian              LANG_RU    ru
+  Spanish              LANG_ES    es
+*)
+
 interface
 
+{$DEFINE LANG_EN}
+
+var
+  Language: Integer;
+
 resourcestring
 
   // General
@@ -227,14 +246,10 @@ resourcestring
   strSuccessCompilation = 'Successful compilation:' + #10#13 + '%s';
 
 
-
-//---------------------------------------------------------
-//---------------------------------------------------------
 //---------------------------------------------------------
 implementation
 //---------------------------------------------------------
-//---------------------------------------------------------
-//---------------------------------------------------------
+
 
 end.
 

+ 5 - 4
Source/GLcgRegister.pas

@@ -1,11 +1,11 @@
 //
 // This unit is part of the GLScene Engine, http://glscene.org
 //
-{
-   Registration unit for CG shader.
-}
+
 unit GLCgRegister;
 
+(*  Registration unit for CG shader *)
+
 interface
 
 {$I GLScene.inc}
@@ -16,7 +16,8 @@ uses
   DesignEditors,
   VCLEditors,
   GLMaterial,
-  GLSceneRegister,
+
+  GLS.SceneRegister,
   Cg,
   CgGL,
   GLCgShader,

+ 114 - 115
Source/Languages/English/ResStrings.inc

@@ -1,116 +1,115 @@
 resourcestring
-  SFileExistsReplace      = '%s already exists.'#10'Do you want to replace it?';
-  SSaveIn                 = 'Save &in:';
-  SSaveButton             = '&Save';
-  SSaveAsCaption          = 'Save As';
-  SOpenCaption            = 'Open';
-  SSaveAsType             = 'Save as &type:';
-  SDriveDoesNotExist      = 'Drive %c: does not exist.'#10'Please verify the appropriate drive was given.';
-  SCannotReadDrive        = 'Windows NT is unable to read drive %c:. Make sure the drive door is closed and that the disk is formatted and free of errors.';
-  SRemovableDiskHasChanged = 'A different disk is expected in drive %c:.  Please insert the appropriate disk.';
-  SFileNotFound           = '%s'#10'File not found.'#10'Please verify the correct file name was given.';
-  SPathDoesNotExist       = '%s'#10'Path does not exist.'#10'Please verify the correct path was given.';
-  SFilenameIsInvalid      = '%s'#10'The above file name is invalid.';
-  SFileAlreadyInUse       = '%s'#10'This file is already in use.'#10'Select a new name or close the file in use by another application.';
-  SFileCannotBeAccessed   = '%s'#10'Cannot access this file.'#10'Check security privileges over the network drive.';
-  SExistsAndIsReadOnly    = '%s'#10'This file exists with Read Only attributes.'#10'Please use a different file name.';
-  SFilenameIsReservedDeviceName = '%s'#10'This file name is a reserved device name.'#10'Please choose another name.';
-  SDiskIsWriteProtected   = 'Disk %c: is write-protected.'#10'A file cannot be saved on a write-protected disk.';
-  SInsufficientDiskSpace  = 'This directory of disk %c: is full.'#10'Choose another directory or disk.';
-  SDoesNotExistCreate     = '%s'#10'This file does not exist.'#10''#10'Create the file?';
-  SThereCanBeOnlyOne      = 'More than one file has the name ''%s''.'#10''#10'Choose one from the list of files.';
-  SUpOneLevelHint         = 'Up One Level';
-  SCreateNewFolderHint    = 'Create New Folder';
-  SClose                  = 'Close';
-  SLookIn                 = 'Look &in:';
-  SFileName               = 'File &name:';
-  SFilesOfType            = 'Files of &type:';
-  SOpenButton             = '&Open';
-  SCancelButton           = 'Cancel';
-  SHelpButton             = '&Help';
-  SOpenAsReadOnly         = 'Open as &read-only';
-  SOKButton               = 'OK';
-  SViewLargeIconsMenu     = 'Lar&ge Icons';
-  SViewSmallIconsMenu     = 'S&mall Icons';
-  SViewListMenu           = '&List';
-  SViewDetailsMenu        = '&Details';
-  SEditCutMenu            = 'Cu&t';
-  SEditCopyMenu           = '&Copy';
-  SEditPasteMenu          = '&Paste';
-  SDeleteMenu             = '&Delete';
-  SRenameMenu             = 'Rena&me';
-  SPropertiesMenu         = 'P&roperties';
-  SViewMenu               = '&View';
-  SArrangeIconsMenu       = 'Arrange &Icons';
-  SLineUpIconsMenu        = 'Lin&e up Icons';
-  SPasteShortcutMenu      = '&Paste';
-  SSelectAllMenu          = 'Select &All';
-  SInvertSelectionMenu    = '&Invert Selection';
-  SNewMenu                = 'Ne&w';
-  SNewFolderMenu          = '&Folder';
-  SNewShortcutMenu        = '&Shortcut';
-  SCreateFolder           = 'Create Folder';
-  SCreateFolderContext    = 'Creates a new, empty folder.';
-  SBytes                  = '%s bytes';
-  SFilesizeKB             = '%sKB';
-  SFilesizeMB             = '%sMB';
-  SFilesizeGB             = '%sGB';
-  SFilesizeTB             = '%sTB';
-  SFilesizeX_YBytes       = '%1 (%2 bytes)';
-  SYouMustTypeFilename    = 'You must type a filename.';
-  SFolderDoesNotExist     = 'The folder ''%1'' does not exist.'#10''#10'Check the folder name and try again.';
-  SNewFolder              = 'New Folder';
-  SNewShortcut            = 'New Shortcut';
-  SNewDocFilePrefix       = 'New ';
-  SNewPopupContext        = 'Contains commands for creating new items.';
-  SNewFolderContext       = 'Creates a new, empty folder.';
-  SNewShortcutContext     = 'Creates a new, empty shortcut.';
-  SCannotCreateFolder     = 'Cannot create folder %2: %1';
-  SUnableToCreateFolder   = 'Unable to create the folder ''%2'''#10''#10'%1';
-  SUnableToCreateFile     = 'Unable to create the file ''%2'''#10''#10'%1';
-  SColumnName             = 'Name';
-  SColumnInFolder         = 'In Folder';
-  SColumnSize             = 'Size';
-  SColumnType             = 'Type';
-  SColumnModified         = 'Modified';
-  SColumnStatus           = 'Status';
-  SColumnSynchCopyIn      = 'Sync Copy In';
-  SColumnComment          = 'Comment';
-  SColumnLocation         = 'Location';
-  SColumnOriginalLocation = 'Original Location';
-  SColumnDateDeleted      = 'Date Deleted';
-  SColumnAttributes       = 'Attributes';
-  SAttributesChars        = 'RHSAC';
-  SSystemFolder           = 'System Folder';
-  SDeleteHint             = 'Delete';
-  SPropertiesHint         = 'Properties';
-  SCutHint                = 'Cut';
-  SCopyHint               = 'Copy';
-  SPasteHint              = 'Paste';
-  SUndoHint               = 'Undo';
-  SDeleteContext          = 'Deletes the selected items.';
-  SPropertiesContext      = 'Displays the properties of the selected items.';
-  SCutContext             = 'Removes the selected items and copies them onto the Clipboard.';
-  SCopyContext            = 'Copies the selected items to the Clipboard. Use Paste to put them in the new location.';
-  SPasteContext           = 'Inserts the items you have copied or cut into the selected location.';
-  SSendToContext          = 'Contains items that you can copy or send the selected file or folder to.';
-  SNewContext             = 'Contains commands for creating new items.';
-  SViewContext            = 'Contains commands for customizing this window.';
-  SViewLargeIconsContext  = 'Displays items by using large icons.';
-  SViewSmallIconsContext  = 'Displays items by using small icons.';
-  SViewListContext        = 'Displays items in a list.';
-  SViewDetailsContext     = 'Displays information about each item in the window.';
-  SViewLargeIconsHint     = 'Large Icons';
-  SViewSmallIconsHint     = 'Small Icons';
-  SViewListHint           = 'List';
-  SViewDetailsHint        = 'Details';
-  SBrowseForFolder        = 'Browse for Folder';
-  SShowTreeHint           = 'Show Tree (F12)';
-  SShKey_SelectAll        = 'Ctrl+A';
-  SShKey_Delete           = 'Del';
-  SShKey_Copy             = 'Ctrl+C';
-  SShKey_Cut              = 'Ctrl+X';
-  SShKey_Paste            = 'Ctrl+V';
-  SShKey_Refresh          = 'F5';
-  SShKey_Edit             = 'F2';
-  SDialogFontName         = 'MS Sans Serif';
+  strFileExistsReplace      = '%s already exists.'#10'Do you want to replace it?';
+  strSaveIn                 = 'Save &in:';
+  strSaveButton             = '&Save';
+  strSaveAsCaption          = 'Save As';
+  strOpenCaption            = 'Open';
+  strSaveAsType             = 'Save as &type:';
+  strDriveDoesNotExist      = 'Drive %c: does not exist.'#10'Please verify the appropriate drive was given.';
+  strCannotReadDrive        = 'Windows NT is unable to read drive %c:. Make sure the drive door is closed and that the disk is formatted and free of errors.';
+  strRemovableDiskHasChanged = 'A different disk is expected in drive %c:.  Please insert the appropriate disk.';
+  strFileNotFound           = '%s'#10'File not found.'#10'Please verify the correct file name was given.';
+  strPathDoesNotExist       = '%s'#10'Path does not exist.'#10'Please verify the correct path was given.';
+  strFilenameIsInvalid      = '%s'#10'The above file name is invalid.';
+  strFileAlreadyInUse       = '%s'#10'This file is already in use.'#10'Select a new name or close the file in use by another application.';
+  strFileCannotBeAccessed   = '%s'#10'Cannot access this file.'#10'Check security privileges over the network drive.';
+  strExistsAndIsReadOnly    = '%s'#10'This file exists with Read Only attributes.'#10'Please use a different file name.';
+  strFilenameIsReservedDeviceName = '%s'#10'This file name is a reserved device name.'#10'Please choose another name.';
+  strDiskIsWriteProtected   = 'Disk %c: is write-protected.'#10'A file cannot be saved on a write-protected disk.';
+  strInsufficientDiskSpace  = 'This directory of disk %c: is full.'#10'Choose another directory or disk.';
+  strDoesNotExistCreate     = '%s'#10'This file does not exist.'#10''#10'Create the file?';
+  strThereCanBeOnlyOne      = 'More than one file has the name ''%s''.'#10''#10'Choose one from the list of files.';
+  strUpOneLevelHint         = 'Up One Level';
+  strCreateNewFolderHint    = 'Create New Folder';
+  strClose                  = 'Close';
+  strLookIn                 = 'Look &in:';
+  strFileName               = 'File &name:';
+  strFilesOfType            = 'Files of &type:';
+  strOpenButton             = '&Open';
+  strCancelButton           = 'Cancel';
+  strHelpButton             = '&Help';
+  strOpenAsReadOnly         = 'Open as &read-only';
+  strOKButton               = 'OK';
+  strViewLargeIconsMenu     = 'Lar&ge Icons';
+  strViewSmallIconsMenu     = 'S&mall Icons';
+  strViewListMenu           = '&List';
+  strViewDetailsMenu        = '&Details';
+  strEditCutMenu            = 'Cu&t';
+  strEditCopyMenu           = '&Copy';
+  strEditPasteMenu          = '&Paste';
+  strDeleteMenu             = '&Delete';
+  strRenameMenu             = 'Rena&me';
+  strPropertiesMenu         = 'P&roperties';
+  strViewMenu               = '&View';
+  strArrangeIconsMenu       = 'Arrange &Icons';
+  strLineUpIconsMenu        = 'Lin&e up Icons';
+  strPasteShortcutMenu      = '&Paste';
+  strSelectAllMenu          = 'Select &All';
+  strInvertSelectionMenu    = '&Invert Selection';
+  strNewMenu                = 'Ne&w';
+  strNewFolderMenu          = '&Folder';
+  strNewShortcutMenu        = '&Shortcut';
+  strCreateFolder           = 'Create Folder';
+  strCreateFolderContext    = 'Creates a new, empty folder.';
+  strBytes                  = '%s bytes';
+  strFilesizeKB             = '%sKB';
+  strFilesizeMB             = '%sMB';
+  strFilesizeGB             = '%sGB';
+  strFilesizeTB             = '%sTB';
+  strFilesizeX_YBytes       = '%1 (%2 bytes)';
+  strYouMustTypeFilename    = 'You must type a filename.';
+  strFolderDoesNotExist     = 'The folder ''%1'' does not exist.'#10''#10'Check the folder name and try again.';
+  strNewFolder              = 'New Folder';
+  strNewShortcut            = 'New Shortcut';
+  strNewDocFilePrefix       = 'New ';
+  strNewPopupContext        = 'Contains commands for creating new items.';
+  strNewFolderContext       = 'Creates a new, empty folder.';
+  strNewShortcutContext     = 'Creates a new, empty shortcut.';
+  strCannotCreateFolder     = 'Cannot create folder %2: %1';
+  strUnableToCreateFolder   = 'Unable to create the folder ''%2'''#10''#10'%1';
+  strUnableToCreateFile     = 'Unable to create the file ''%2'''#10''#10'%1';
+  strColumnName             = 'Name';
+  strColumnInFolder         = 'In Folder';
+  strColumnSize             = 'Size';
+  strColumnType             = 'Type';
+  strColumnModified         = 'Modified';
+  strColumnStatus           = 'Status';
+  strColumnSynchCopyIn      = 'Sync Copy In';
+  strColumnComment          = 'Comment';
+  strColumnLocation         = 'Location';
+  strColumnOriginalLocation = 'Original Location';
+  strColumnDateDeleted      = 'Date Deleted';
+  strColumnAttributes       = 'Attributes';
+  strAttributesChars        = 'RHSAC';
+  strSystemFolder           = 'System Folder';
+  strDeleteHint             = 'Delete';
+  strPropertiesHint         = 'Properties';
+  strCutHint                = 'Cut';
+  strCopyHint               = 'Copy';
+  strPasteHint              = 'Paste';
+  strUndoHint               = 'Undo';
+  strDeleteContext          = 'Deletes the selected items.';
+  strPropertiesContext      = 'Displays the properties of the selected items.';
+  strCutContext             = 'Removes the selected items and copies them onto the Clipboard.';
+  strCopyContext            = 'Copies the selected items to the Clipboard. Use Paste to put them in the new location.';
+  strPasteContext           = 'Inserts the items you have copied or cut into the selected location.';
+  strSendToContext          = 'Contains items that you can copy or send the selected file or folder to.';
+  strNewContext             = 'Contains commands for creating new items.';
+  strViewContext            = 'Contains commands for customizing this window.';
+  strViewLargeIconsContext  = 'Displays items by using large icons.';
+  strViewSmallIconsContext  = 'Displays items by using small icons.';
+  strViewListContext        = 'Displays items in a list.';
+  strViewDetailsContext     = 'Displays information about each item in the window.';
+  strViewLargeIconsHint     = 'Large Icons';
+  strViewSmallIconsHint     = 'Small Icons';
+  strViewListHint           = 'List';
+  strViewDetailsHint        = 'Details';
+  strBrowseForFolder        = 'Browse for Folder';
+  strShowTreeHint           = 'Show Tree (F12)';
+  strShKey_SelectAll        = 'Ctrl+A';
+  strShKey_Delete           = 'Del';
+  strShKey_Copy             = 'Ctrl+C';
+  strShKey_Cut              = 'Ctrl+X';
+  strShKey_Paste            = 'Ctrl+V';
+  strShKey_Refresh          = 'F5';
+  strShKey_Edit             = 'F2';  

+ 114 - 115
Source/Languages/French/ResStrings.inc

@@ -1,116 +1,115 @@
 resourcestring
-  SFileExistsReplace      = '%s existe déjà.'#10'Voulez-vous le remplacer ?';
-  SSaveIn                 = 'Enregistrer s&ous :';
-  SSaveButton             = '&Enregistrer';
-  SSaveAsCaption          = 'Enregistrer sous';
-  SOpenCaption            = 'Ouvrir';
-  SSaveAsType             = 'Enregistrer &sous :';
-  SDriveDoesNotExist      = 'Lecteur %c: n''existe pas.'#10'Vérifiez que le bon lecteur a été donné.';
-  SCannotReadDrive        = 'Windows NT ne peut pas lire le lecteur %c:. Assurez-vous que le loquet du lecteur est fermé et que le disque est formaté et sans erreurs.';
-  SRemovableDiskHasChanged = 'Une disquette différente est attendue sur le lecteur %c:. Insérez la bonne disquette.';
-  SFileNotFound           = '%s'#10'Fichier non trouvé.'#10'Vérifiez que le nom de fichier donné est correct.';
-  SPathDoesNotExist       = '%s'#10'Chemin d''accès non trouvé.'#10'Vérifiez que le chemin d''accès donné est correct.';
-  SFilenameIsInvalid      = '%s'#10'Le nom de fichier ci-dessus n''est pas valide.';
-  SFileAlreadyInUse       = '%s'#10'Ce fichier est déjà utilisé.'#10'Sélectionnez un nouveau nom ou fermez le fichier utilisé par une autre application.';
-  SFileCannotBeAccessed   = '%s'#10'Impossible d''accéder à ce fichier.'#10'Vérifiez les privilèges de sécurité sur le lecteur réseau.';
-  SExistsAndIsReadOnly    = '%s'#10'Ce fichier existe avec l''attribut Lecture seule.'#10'Utilisez un nom de fichier différent.';
-  SFilenameIsReservedDeviceName = '%s'#10'Ce nom de fichier est un nom réservé à un périphérique.'#10'Veuillez choisir un autre nom.';
-  SDiskIsWriteProtected   = 'Le disque %c: est protégé en écriture.'#10'Un fichier ne peut pas être enregistré sur un disque protégé en écriture.';
-  SInsufficientDiskSpace  = 'Le répertoire du disque %c: est plein.'#10'Choisissez un autre répertoire ou un autre disque.';
-  SDoesNotExistCreate     = '%s'#10'Ce fichier n''existe pas.'#10''#10'Voulez-vous le créer ?';
-  SThereCanBeOnlyOne      = 'Plusieurs fichiers portent le nom %s.'#10''#10'Choisissez-en un dans la liste des fichiers.';
-  SUpOneLevelHint         = 'Remonter d''un niveau';
-  SCreateNewFolderHint    = 'Créer un nouveau répertoire';
-  SClose                  = 'Fermer';
-  SLookIn                 = '&Regarder dans :';
-  SFileName               = '&Nom du fichier :';
-  SFilesOfType            = '&Type des fichiers :';
-  SOpenButton             = 'Ou&vrir';
-  SCancelButton           = 'Annuler';
-  SHelpButton             = '&Aide';
-  SOpenAsReadOnly         = '&Ouvrir en lecture seule';
-  SOKButton               = 'OK';
-  SViewLargeIconsMenu     = '&Grandes icônes';
-  SViewSmallIconsMenu     = '&Petites icônes';
-  SViewListMenu           = 'List&e';
-  SViewDetailsMenu        = '&Détails';
-  SEditCutMenu            = '&Couper';
-  SEditCopyMenu           = 'Co&pier';
-  SEditPasteMenu          = 'C&oller';
-  SDeleteMenu             = '&Supprimer';
-  SRenameMenu             = 'Reno&mmer';
-  SPropertiesMenu         = 'P&ropriétés';
-  SViewMenu               = 'A&ffichage';
-  SArrangeIconsMenu       = 'Réorga&niser les icônes';
-  SLineUpIconsMenu        = 'A&ligner les icônes';
-  SPasteShortcutMenu      = 'C&oller';
-  SSelectAllMenu          = 'Sélec&tionner tout';
-  SInvertSelectionMenu    = 'In&verser la sélection';
-  SNewMenu                = 'Nou&veau';
-  SNewFolderMenu          = '&Dossier';
-  SNewShortcutMenu        = 'Racco&urci';
-  SCreateFolder           = 'Créer un dossier';
-  SCreateFolderContext    = 'Crée un nouveau dossier vide.';
-  SBytes                  = '%s octets';
-  SFilesizeKB             = '%s Ko';
-  SFilesizeMB             = '%s Mo';
-  SFilesizeGB             = '%s Go';
-  SFilesizeTB             = '%s To';
-  SFilesizeX_YBytes       = '%1 (%2 octets)';
-  SYouMustTypeFilename    = 'Vous devez taper un nom de fichier.';
-  SFolderDoesNotExist     = 'Le dossier : %1 n''existe pas.'#10''#10'Vérifiez le nom du dossier et essayez de nouveau.';
-  SNewFolder              = 'Nouveau dossier';
-  SNewShortcut            = 'Nouveau raccourci ';
-  SNewDocFilePrefix       = 'Nouveau ';
-  SNewPopupContext        = 'Contient des commandes pour créer de nouveaux éléments.';
-  SNewFolderContext       = 'Crée un nouveau dossier vide.';
-  SNewShortcutContext     = 'Crée un nouveau raccourci vide.';
-  SCannotCreateFolder     = 'Impossible de créer le dossier %2 : %1';
-  SUnableToCreateFolder   = 'Impossible de créer le dossier ''%2'''#10''#10'%1';
-  SUnableToCreateFile     = 'Impossible de créer le fichier ''%2'''#10''#10'%1';
-  SColumnName             = 'Nom';
-  SColumnInFolder         = 'Dans le dossier';
-  SColumnSize             = 'Taille';
-  SColumnType             = 'Type';
-  SColumnModified         = 'Modifié';
-  SColumnStatus           = 'Etat';
-  SColumnSynchCopyIn      = 'Copie synchronisée';
-  SColumnComment          = 'Commentaire';
-  SColumnLocation         = 'Emplacement';
-  SColumnOriginalLocation = 'Emplacement d''origine';
-  SColumnDateDeleted      = 'Date de suppression';
-  SColumnAttributes       = 'Attributs';
-  SAttributesChars        = 'RHSAC';
-  SSystemFolder           = 'Dossier système';
-  SDeleteHint             = 'Supprimer';
-  SPropertiesHint         = 'Propriétés';
-  SCutHint                = 'Couper';
-  SCopyHint               = 'Copier';
-  SPasteHint              = 'Coller';
-  SUndoHint               = 'Annuler';
-  SDeleteContext          = 'Supprime les éléments sélectionnés.';
-  SPropertiesContext      = 'Affiche les propriétés de l''élément sélectionné.';
-  SCutContext             = 'Supprime les éléments sélectionnés et les copie dans le Presse-papiers.';
-  SCopyContext            = 'Copie les éléments sélectionnés dans le Presse-papiers. Utilisez Coller pour les déplacer vers un nouvel emplacement.';
-  SPasteContext           = 'Insère les éléments que vous avez coupés ou copiés à l''emplacement sélectionné.';
-  SSendToContext          = 'Contient les éléments que vous pouvez copier ou envoyer vers le fichier ou le dossier sélectionné.';
-  SNewContext             = 'Contient des commandes pour créer de nouveaux éléments.';
-  SViewContext            = 'Contient des commandes pour personnaliser cette fenêtre.';
-  SViewLargeIconsContext  = 'Affiche les éléments en utilisant de grandes icônes.';
-  SViewSmallIconsContext  = 'Affiche des éléments en utilisant de petites icônes.';
-  SViewListContext        = 'Affiche des éléments dans une liste.';
-  SViewDetailsContext     = 'Affiche les informations de chaque élément dans la fenêtre.';
-  SViewLargeIconsHint     = 'Grandes icônes';
-  SViewSmallIconsHint     = 'Petites icônes';
-  SViewListHint           = 'Liste';
-  SViewDetailsHint        = 'Détails';
-  SBrowseForFolder        = 'Parcourir à la recherche d''un dossier';
-  SShowTreeHint           = 'Montrer l''arbre (F12)';
-  SShKey_SelectAll        = 'Ctrl+A';
-  SShKey_Delete           = 'Del';
-  SShKey_Copy             = 'Ctrl+C';
-  SShKey_Cut              = 'Ctrl+X';
-  SShKey_Paste            = 'Ctrl+V';
-  SShKey_Refresh          = 'F5';
-  SShKey_Edit             = 'F2';
-  SDialogFontName         = 'MS Sans Serif';
+  strFileExistsReplace      = '%s existe déjà.'#10'Voulez-vous le remplacer ?';
+  strSaveIn                 = 'Enregistrer s&ous :';
+  strSaveButton             = '&Enregistrer';
+  strSaveAsCaption          = 'Enregistrer sous';
+  strOpenCaption            = 'Ouvrir';
+  strSaveAsType             = 'Enregistrer &sous :';
+  strDriveDoesNotExist      = 'Lecteur %c: n''existe pas.'#10'Vérifiez que le bon lecteur a été donné.';
+  strCannotReadDrive        = 'Windows NT ne peut pas lire le lecteur %c:. Assurez-vous que le loquet du lecteur est fermé et que le disque est formaté et sans erreurs.';
+  strRemovableDiskHasChanged = 'Une disquette différente est attendue sur le lecteur %c:. Insérez la bonne disquette.';
+  strFileNotFound           = '%s'#10'Fichier non trouvé.'#10'Vérifiez que le nom de fichier donné est correct.';
+  strPathDoesNotExist       = '%s'#10'Chemin d''accès non trouvé.'#10'Vérifiez que le chemin d''accès donné est correct.';
+  strFilenameIsInvalid      = '%s'#10'Le nom de fichier ci-dessus n''est pas valide.';
+  strFileAlreadyInUse       = '%s'#10'Ce fichier est déjà utilisé.'#10'Sélectionnez un nouveau nom ou fermez le fichier utilisé par une autre application.';
+  strFileCannotBeAccessed   = '%s'#10'Impossible d''accéder à ce fichier.'#10'Vérifiez les privilèges de sécurité sur le lecteur réseau.';
+  strExistsAndIsReadOnly    = '%s'#10'Ce fichier existe avec l''attribut Lecture seule.'#10'Utilisez un nom de fichier différent.';
+  strFilenameIsReservedDeviceName = '%s'#10'Ce nom de fichier est un nom réservé à un périphérique.'#10'Veuillez choisir un autre nom.';
+  strDiskIsWriteProtected   = 'Le disque %c: est protégé en écriture.'#10'Un fichier ne peut pas être enregistré sur un disque protégé en écriture.';
+  strInsufficientDiskSpace  = 'Le répertoire du disque %c: est plein.'#10'Choisissez un autre répertoire ou un autre disque.';
+  strDoesNotExistCreate     = '%s'#10'Ce fichier n''existe pas.'#10''#10'Voulez-vous le créer ?';
+  strThereCanBeOnlyOne      = 'Plusieurs fichiers portent le nom %s.'#10''#10'Choisissez-en un dans la liste des fichiers.';
+  strUpOneLevelHint         = 'Remonter d''un niveau';
+  strCreateNewFolderHint    = 'Créer un nouveau répertoire';
+  strClose                  = 'Fermer';
+  strLookIn                 = '&Regarder dans :';
+  strFileName               = '&Nom du fichier :';
+  strFilesOfType            = '&Type des fichiers :';
+  strOpenButton             = 'Ou&vrir';
+  strCancelButton           = 'Annuler';
+  strHelpButton             = '&Aide';
+  strOpenAsReadOnly         = '&Ouvrir en lecture seule';
+  strOKButton               = 'OK';
+  strViewLargeIconsMenu     = '&Grandes icônes';
+  strViewSmallIconsMenu     = '&Petites icônes';
+  strViewListMenu           = 'List&e';
+  strViewDetailsMenu        = '&Détails';
+  strEditCutMenu            = '&Couper';
+  strEditCopyMenu           = 'Co&pier';
+  strEditPasteMenu          = 'C&oller';
+  strDeleteMenu             = '&Supprimer';
+  strRenameMenu             = 'Reno&mmer';
+  strPropertiesMenu         = 'P&ropriétés';
+  strViewMenu               = 'A&ffichage';
+  strArrangeIconsMenu       = 'Réorga&niser les icônes';
+  strLineUpIconsMenu        = 'A&ligner les icônes';
+  strPasteShortcutMenu      = 'C&oller';
+  strSelectAllMenu          = 'Sélec&tionner tout';
+  strInvertSelectionMenu    = 'In&verser la sélection';
+  strNewMenu                = 'Nou&veau';
+  strNewFolderMenu          = '&Dossier';
+  strNewShortcutMenu        = 'Racco&urci';
+  strCreateFolder           = 'Créer un dossier';
+  strCreateFolderContext    = 'Crée un nouveau dossier vide.';
+  strBytes                  = '%s octets';
+  strFilesizeKB             = '%s Ko';
+  strFilesizeMB             = '%s Mo';
+  strFilesizeGB             = '%s Go';
+  strFilesizeTB             = '%s To';
+  strFilesizeX_YBytes       = '%1 (%2 octets)';
+  strYouMustTypeFilename    = 'Vous devez taper un nom de fichier.';
+  strFolderDoesNotExist     = 'Le dossier : %1 n''existe pas.'#10''#10'Vérifiez le nom du dossier et essayez de nouveau.';
+  strNewFolder              = 'Nouveau dossier';
+  strNewShortcut            = 'Nouveau raccourci ';
+  strNewDocFilePrefix       = 'Nouveau ';
+  strNewPopupContext        = 'Contient des commandes pour créer de nouveaux éléments.';
+  strNewFolderContext       = 'Crée un nouveau dossier vide.';
+  strNewShortcutContext     = 'Crée un nouveau raccourci vide.';
+  strCannotCreateFolder     = 'Impossible de créer le dossier %2 : %1';
+  strUnableToCreateFolder   = 'Impossible de créer le dossier ''%2'''#10''#10'%1';
+  strUnableToCreateFile     = 'Impossible de créer le fichier ''%2'''#10''#10'%1';
+  strColumnName             = 'Nom';
+  strColumnInFolder         = 'Dans le dossier';
+  strColumnSize             = 'Taille';
+  strColumnType             = 'Type';
+  strColumnModified         = 'Modifié';
+  strColumnStatus           = 'Etat';
+  strColumnSynchCopyIn      = 'Copie synchronisée';
+  strColumnComment          = 'Commentaire';
+  strColumnLocation         = 'Emplacement';
+  strColumnOriginalLocation = 'Emplacement d''origine';
+  strColumnDateDeleted      = 'Date de suppression';
+  strColumnAttributes       = 'Attributs';
+  strAttributesChars        = 'RHSAC';
+  strSystemFolder           = 'Dossier système';
+  strDeleteHint             = 'Supprimer';
+  strPropertiesHint         = 'Propriétés';
+  strCutHint                = 'Couper';
+  strCopyHint               = 'Copier';
+  strPasteHint              = 'Coller';
+  strUndoHint               = 'Annuler';
+  strDeleteContext          = 'Supprime les éléments sélectionnés.';
+  strPropertiesContext      = 'Affiche les propriétés de l''élément sélectionné.';
+  strCutContext             = 'Supprime les éléments sélectionnés et les copie dans le Presse-papiers.';
+  strCopyContext            = 'Copie les éléments sélectionnés dans le Presse-papiers. Utilisez Coller pour les déplacer vers un nouvel emplacement.';
+  strPasteContext           = 'Insère les éléments que vous avez coupés ou copiés à l''emplacement sélectionné.';
+  strSendToContext          = 'Contient les éléments que vous pouvez copier ou envoyer vers le fichier ou le dossier sélectionné.';
+  strNewContext             = 'Contient des commandes pour créer de nouveaux éléments.';
+  strViewContext            = 'Contient des commandes pour personnaliser cette fenêtre.';
+  strViewLargeIconsContext  = 'Affiche les éléments en utilisant de grandes icônes.';
+  strViewSmallIconsContext  = 'Affiche des éléments en utilisant de petites icônes.';
+  strViewListContext        = 'Affiche des éléments dans une liste.';
+  strViewDetailsContext     = 'Affiche les informations de chaque élément dans la fenêtre.';
+  strViewLargeIconsHint     = 'Grandes icônes';
+  strViewSmallIconsHint     = 'Petites icônes';
+  strViewListHint           = 'Liste';
+  strViewDetailsHint        = 'Détails';
+  strBrowseForFolder        = 'Parcourir à la recherche d''un dossier';
+  strShowTreeHint           = 'Montrer l''arbre (F12)';
+  strShKey_SelectAll        = 'Ctrl+A';
+  strShKey_Delete           = 'Del';
+  strShKey_Copy             = 'Ctrl+C';
+  strShKey_Cut              = 'Ctrl+X';
+  strShKey_Paste            = 'Ctrl+V';
+  strShKey_Refresh          = 'F5';
+  strShKey_Edit             = 'F2'; 

+ 114 - 115
Source/Languages/German/ResStrings.inc

@@ -1,116 +1,115 @@
 resourcestring
-  SFileExistsReplace      = '%s besteht bereits.'#10'Möchten Sie sie ersetzen?';
-  SSaveIn                 = 'Spe&ichern in:';
-  SSaveButton             = '&Speichern';
-  SSaveAsCaption          = 'Datei speichern unter';
-  SOpenCaption            = 'Datei öffnen';
-  SSaveAsType             = 'Da&teityp:';
-  SDriveDoesNotExist      = 'Laufwerk %c: ist nicht vorhanden.'#10'Überprüfen Sie, ob Sie das richtige Laufwerk angegeben haben.';
-  SCannotReadDrive        = 'Windows NT konnte Laufwerk %c: nicht lesen. Überprüfen Sie, ob die Laufwerksverriegelung geschlossen ist und die Diskette formatiert und fehlerfrei ist.';
-  SRemovableDiskHasChanged = 'Falsche Diskette in Laufwerk %c:. Legen Sie die richtige ein.';
-  SFileNotFound           = '%s'#10'Datei konnte nicht gefunden werden.'#10'Überprüfen Sie, ob der Dateiname richtig ist.';
-  SPathDoesNotExist       = '%s'#10'Pfad existiert nicht.'#10'Überprüfen Sie, ob der Pfad richtig ist.';
-  SFilenameIsInvalid      = '%s'#10'Der angegebene Dateiname ist ungültig.';
-  SFileAlreadyInUse       = '%s'#10'Die Datei wird bereits verwendet.'#10'Wählen Sie einen anderen Namen, oder schließen Sie die Datei in der anderen Anwendung.';
-  SFileCannotBeAccessed   = '%s'#10'Auf die Datei kann nicht zugegriffen werden.'#10'Überprüfen Sie die Sicherheitsprivilegien.';
-  SExistsAndIsReadOnly    = '%s'#10'Die Datei besteht bereits mit Schreibschutz.'#10'Verwenden Sie einen anderen Dateinamen.';
-  SFilenameIsReservedDeviceName = '%s'#10'Dieser Dateiname ist ein reservierter Gerätename.'#10'Wählen Sie einen anderen Namen.';
-  SDiskIsWriteProtected   = 'Datenträger %c: ist schreibgeschützt.'#10'Eine Datei kann nicht auf einen schreibgeschützten Datenträger gespeichert werden.';
-  SInsufficientDiskSpace  = 'Das Verzeichnis auf dem Datenträger %c: ist voll.'#10'Wählen Sie ein anderes Verzeichnis oder Datenträger.';
-  SDoesNotExistCreate     = '%s'#10'Die Datei besteht noch nicht.'#10''#10'Soll diese Datei erstellt werden?';
-  SThereCanBeOnlyOne      = 'Mehrere Dateien haben den Namen ''%s''.'#10''#10'Wählen Sie eine Datei aus der Liste aus.';
-  SUpOneLevelHint         = 'Übergeordneter Ordner';
-  SCreateNewFolderHint    = 'Neuen Ordner erstellen';
-  SClose                  = 'Schließen';
-  SLookIn                 = '&Suchen in:';
-  SFileName               = 'Datei&name:';
-  SFilesOfType            = 'Datei&typ:';
-  SOpenButton             = 'Ö&ffnen';
-  SCancelButton           = 'Abbrechen';
-  SHelpButton             = '&Hilfe';
-  SOpenAsReadOnly         = 'Mit Sch&reibschutz öffnen';
-  SOKButton               = 'OK';
-  SViewLargeIconsMenu     = '&Große Symbole';
-  SViewSmallIconsMenu     = '&Kleine Symbole';
-  SViewListMenu           = '&Liste';
-  SViewDetailsMenu        = '&Details';
-  SEditCutMenu            = '&Ausschneiden';
-  SEditCopyMenu           = '&Kopieren';
-  SEditPasteMenu          = '&Einfügen';
-  SDeleteMenu             = '&Löschen';
-  SRenameMenu             = '&Umbenennen';
-  SPropertiesMenu         = 'E&igenschaften';
-  SViewMenu               = '&Ansicht';
-  SArrangeIconsMenu       = 'Sy&mbole anordnen';
-  SLineUpIconsMenu        = 'Am Raster a&usrichten';
-  SPasteShortcutMenu      = '&Einfügen';
-  SSelectAllMenu          = 'Alles &markieren';
-  SInvertSelectionMenu    = 'Markierung &umkehren';
-  SNewMenu                = '&Neu';
-  SNewFolderMenu          = '&Ordner';
-  SNewShortcutMenu        = '&Verknüpfung';
-  SCreateFolder           = 'Ordner erstellen';
-  SCreateFolderContext    = 'Erstellt einen neuen, leeren Ordner.';
-  SBytes                  = '%s Bytes';
-  SFilesizeKB             = '%s KB';
-  SFilesizeMB             = '%s MB';
-  SFilesizeGB             = '%s GB';
-  SFilesizeTB             = '%s TB';
-  SFilesizeX_YBytes       = '%1 (%2 Bytes)';
-  SYouMustTypeFilename    = 'Geben Sie einen Dateinamen ein.';
-  SFolderDoesNotExist     = 'Der Ordner ''%1'' ist nicht vorhanden.'#10''#10'Überprüfen Sie den Ordnernamen, und wiederholen Sie den Vorgang.';
-  SNewFolder              = 'Neuer Ordner';
-  SNewShortcut            = 'Neue Verknüpfung';
-  SNewDocFilePrefix       = 'Neufassung von ';
-  SNewPopupContext        = 'Befehle zum Erstellen von neuen Objekten';
-  SNewFolderContext       = 'Erstellt einen neuen, leeren Ordner.';
-  SNewShortcutContext     = 'Erstellt eine neue, leere Verknüpfung.';
-  SCannotCreateFolder     = 'Der Ordner %2 kann nicht erstellt werden: %1';
-  SUnableToCreateFolder   = 'Der Ordner ''%2'' konnte nicht erstellt werden.'#10''#10'%1';
-  SUnableToCreateFile     = 'Die Datei ''%2'' konnte nicht erstellt werden.'#10''#10'%1';
-  SColumnName             = 'Name';
-  SColumnInFolder         = 'In Ordner';
-  SColumnSize             = 'Größe';
-  SColumnType             = 'Typ';
-  SColumnModified         = 'Geändert am';
-  SColumnStatus           = 'Status';
-  SColumnSynchCopyIn      = 'Synchronkopie in';
-  SColumnComment          = 'Kommentar';
-  SColumnLocation         = 'Ort';
-  SColumnOriginalLocation = 'Ursprung';
-  SColumnDateDeleted      = 'Löschdatum';
-  SColumnAttributes       = 'Dateiattribute';
-  SAttributesChars        = 'RHSAC';
-  SSystemFolder           = 'Systemordner';
-  SDeleteHint             = 'Löschen';
-  SPropertiesHint         = 'Eigenschaften';
-  SCutHint                = 'Ausschneiden';
-  SCopyHint               = 'Kopieren';
-  SPasteHint              = 'Einfügen';
-  SUndoHint               = 'Rückgängig';
-  SDeleteContext          = 'Löscht die gewählten Objekte.';
-  SPropertiesContext      = 'Zeigt die Eigenschaften der gewählten Objekte an.';
-  SCutContext             = 'Fügt die gewählten Objekte in die Zwischenablage ein.';
-  SCopyContext            = 'Kopiert gewählte Objekte in die Zwischenablage, die Sie dann mit "Einfügen" an der gewünschten Stelle einfügen können.';
-  SPasteContext           = 'Fügt die kopierten oder ausgeschnittenen Objekte an der gewählten Stelle ein.';
-  SSendToContext          = 'Enthält Objekte, in die Sie die gewählte Datei bzw. den gewählten Ordner kopieren oder übertragen können.';
-  SNewContext             = 'Befehle zum Erstellen von neuen Objekten';
-  SViewContext            = 'Befehle zum Anpassen des Fensters';
-  SViewLargeIconsContext  = 'Zeigt Objekte mit großen Symbolen an.';
-  SViewSmallIconsContext  = 'Zeigt Objekte mit kleinen Symbolen an.';
-  SViewListContext        = 'Zeigt Objekte in Listenform an.';
-  SViewDetailsContext     = 'Zeigt Informationen über die Objekte im Fenster an.';
-  SViewLargeIconsHint     = 'Große Symbole';
-  SViewSmallIconsHint     = 'Kleine Symbole';
-  SViewListHint           = 'Liste';
-  SViewDetailsHint        = 'Details';
-  SBrowseForFolder        = 'Ordner suchen';
-  SShowTreeHint           = 'Baum anzeigen (F12)';
-  SShKey_SelectAll        = 'Ctrl+A';
-  SShKey_Delete           = 'Del';
-  SShKey_Copy             = 'Ctrl+C';
-  SShKey_Cut              = 'Ctrl+X';
-  SShKey_Paste            = 'Ctrl+V';
-  SShKey_Refresh          = 'F5';
-  SShKey_Edit             = 'F2';
-  SDialogFontName         = 'MS Sans Serif';
+  strFileExistsReplace      = '%s besteht bereits.'#10'Möchten Sie sie ersetzen?';
+  strSaveIn                 = 'Spe&ichern in:';
+  strSaveButton             = '&Speichern';
+  strSaveAsCaption          = 'Datei speichern unter';
+  strOpenCaption            = 'Datei öffnen';
+  strSaveAsType             = 'Da&teityp:';
+  strDriveDoesNotExist      = 'Laufwerk %c: ist nicht vorhanden.'#10'Überprüfen Sie, ob Sie das richtige Laufwerk angegeben haben.';
+  strCannotReadDrive        = 'Windows NT konnte Laufwerk %c: nicht lesen. Überprüfen Sie, ob die Laufwerksverriegelung geschlossen ist und die Diskette formatiert und fehlerfrei ist.';
+  strRemovableDiskHasChanged = 'Falsche Diskette in Laufwerk %c:. Legen Sie die richtige ein.';
+  strFileNotFound           = '%s'#10'Datei konnte nicht gefunden werden.'#10'Überprüfen Sie, ob der Dateiname richtig ist.';
+  strPathDoesNotExist       = '%s'#10'Pfad existiert nicht.'#10'Überprüfen Sie, ob der Pfad richtig ist.';
+  strFilenameIsInvalid      = '%s'#10'Der angegebene Dateiname ist ungültig.';
+  strFileAlreadyInUse       = '%s'#10'Die Datei wird bereits verwendet.'#10'Wählen Sie einen anderen Namen, oder schließen Sie die Datei in der anderen Anwendung.';
+  strFileCannotBeAccessed   = '%s'#10'Auf die Datei kann nicht zugegriffen werden.'#10'Überprüfen Sie die Sicherheitsprivilegien.';
+  strExistsAndIsReadOnly    = '%s'#10'Die Datei besteht bereits mit Schreibschutz.'#10'Verwenden Sie einen anderen Dateinamen.';
+  strFilenameIsReservedDeviceName = '%s'#10'Dieser Dateiname ist ein reservierter Gerätename.'#10'Wählen Sie einen anderen Namen.';
+  strDiskIsWriteProtected   = 'Datenträger %c: ist schreibgeschützt.'#10'Eine Datei kann nicht auf einen schreibgeschützten Datenträger gespeichert werden.';
+  strInsufficientDiskSpace  = 'Das Verzeichnis auf dem Datenträger %c: ist voll.'#10'Wählen Sie ein anderes Verzeichnis oder Datenträger.';
+  strDoesNotExistCreate     = '%s'#10'Die Datei besteht noch nicht.'#10''#10'Soll diese Datei erstellt werden?';
+  strThereCanBeOnlyOne      = 'Mehrere Dateien haben den Namen ''%s''.'#10''#10'Wählen Sie eine Datei aus der Liste aus.';
+  strUpOneLevelHint         = 'Übergeordneter Ordner';
+  strCreateNewFolderHint    = 'Neuen Ordner erstellen';
+  strClose                  = 'Schließen';
+  strLookIn                 = '&Suchen in:';
+  strFileName               = 'Datei&name:';
+  strFilesOfType            = 'Datei&typ:';
+  strOpenButton             = 'Ö&ffnen';
+  strCancelButton           = 'Abbrechen';
+  strHelpButton             = '&Hilfe';
+  strOpenAsReadOnly         = 'Mit Sch&reibschutz öffnen';
+  strOKButton               = 'OK';
+  strViewLargeIconsMenu     = '&Große Symbole';
+  strViewSmallIconsMenu     = '&Kleine Symbole';
+  strViewListMenu           = '&Liste';
+  strViewDetailsMenu        = '&Details';
+  strEditCutMenu            = '&Ausschneiden';
+  strEditCopyMenu           = '&Kopieren';
+  strEditPasteMenu          = '&Einfügen';
+  strDeleteMenu             = '&Löschen';
+  strRenameMenu             = '&Umbenennen';
+  strPropertiesMenu         = 'E&igenschaften';
+  strViewMenu               = '&Ansicht';
+  strArrangeIconsMenu       = 'Sy&mbole anordnen';
+  strLineUpIconsMenu        = 'Am Raster a&usrichten';
+  strPasteShortcutMenu      = '&Einfügen';
+  strSelectAllMenu          = 'Alles &markieren';
+  strInvertSelectionMenu    = 'Markierung &umkehren';
+  strNewMenu                = '&Neu';
+  strNewFolderMenu          = '&Ordner';
+  strNewShortcutMenu        = '&Verknüpfung';
+  strCreateFolder           = 'Ordner erstellen';
+  strCreateFolderContext    = 'Erstellt einen neuen, leeren Ordner.';
+  strBytes                  = '%s Bytes';
+  strFilesizeKB             = '%s KB';
+  strFilesizeMB             = '%s MB';
+  strFilesizeGB             = '%s GB';
+  strFilesizeTB             = '%s TB';
+  strFilesizeX_YBytes       = '%1 (%2 Bytes)';
+  strYouMustTypeFilename    = 'Geben Sie einen Dateinamen ein.';
+  strFolderDoesNotExist     = 'Der Ordner ''%1'' ist nicht vorhanden.'#10''#10'Überprüfen Sie den Ordnernamen, und wiederholen Sie den Vorgang.';
+  strNewFolder              = 'Neuer Ordner';
+  strNewShortcut            = 'Neue Verknüpfung';
+  strNewDocFilePrefix       = 'Neufassung von ';
+  strNewPopupContext        = 'Befehle zum Erstellen von neuen Objekten';
+  strNewFolderContext       = 'Erstellt einen neuen, leeren Ordner.';
+  strNewShortcutContext     = 'Erstellt eine neue, leere Verknüpfung.';
+  strCannotCreateFolder     = 'Der Ordner %2 kann nicht erstellt werden: %1';
+  strUnableToCreateFolder   = 'Der Ordner ''%2'' konnte nicht erstellt werden.'#10''#10'%1';
+  strUnableToCreateFile     = 'Die Datei ''%2'' konnte nicht erstellt werden.'#10''#10'%1';
+  strColumnName             = 'Name';
+  strColumnInFolder         = 'In Ordner';
+  strColumnSize             = 'Größe';
+  strColumnType             = 'Typ';
+  strColumnModified         = 'Geändert am';
+  strColumnStatus           = 'Status';
+  strColumnSynchCopyIn      = 'Synchronkopie in';
+  strColumnComment          = 'Kommentar';
+  strColumnLocation         = 'Ort';
+  strColumnOriginalLocation = 'Ursprung';
+  strColumnDateDeleted      = 'Löschdatum';
+  strColumnAttributes       = 'Dateiattribute';
+  strAttributesChars        = 'RHSAC';
+  strSystemFolder           = 'Systemordner';
+  strDeleteHint             = 'Löschen';
+  strPropertiesHint         = 'Eigenschaften';
+  strCutHint                = 'Ausschneiden';
+  strCopyHint               = 'Kopieren';
+  strPasteHint              = 'Einfügen';
+  strUndoHint               = 'Rückgängig';
+  strDeleteContext          = 'Löscht die gewählten Objekte.';
+  strPropertiesContext      = 'Zeigt die Eigenschaften der gewählten Objekte an.';
+  strCutContext             = 'Fügt die gewählten Objekte in die Zwischenablage ein.';
+  strCopyContext            = 'Kopiert gewählte Objekte in die Zwischenablage, die Sie dann mit "Einfügen" an der gewünschten Stelle einfügen können.';
+  strPasteContext           = 'Fügt die kopierten oder ausgeschnittenen Objekte an der gewählten Stelle ein.';
+  strSendToContext          = 'Enthält Objekte, in die Sie die gewählte Datei bzw. den gewählten Ordner kopieren oder übertragen können.';
+  strNewContext             = 'Befehle zum Erstellen von neuen Objekten';
+  strViewContext            = 'Befehle zum Anpassen des Fensters';
+  strViewLargeIconsContext  = 'Zeigt Objekte mit großen Symbolen an.';
+  strViewSmallIconsContext  = 'Zeigt Objekte mit kleinen Symbolen an.';
+  strViewListContext        = 'Zeigt Objekte in Listenform an.';
+  strViewDetailsContext     = 'Zeigt Informationen über die Objekte im Fenster an.';
+  strViewLargeIconsHint     = 'Große Symbole';
+  strViewSmallIconsHint     = 'Kleine Symbole';
+  strViewListHint           = 'Liste';
+  strViewDetailsHint        = 'Details';
+  strBrowseForFolder        = 'Ordner suchen';
+  strShowTreeHint           = 'Baum anzeigen (F12)';
+  strShKey_SelectAll        = 'Ctrl+A';
+  strShKey_Delete           = 'Del';
+  strShKey_Copy             = 'Ctrl+C';
+  strShKey_Cut              = 'Ctrl+X';
+  strShKey_Paste            = 'Ctrl+V';
+  strShKey_Refresh          = 'F5';
+  strShKey_Edit             = 'F2'; 

+ 114 - 115
Source/Languages/Italian/ResStrings.inc

@@ -1,116 +1,115 @@
 resourcestring
-  SFileExistsReplace      = 'Il file %s è già esistente.'#10'Sostituire il file?';
-  SSaveIn                 = 'Sa&lva in:';
-  SSaveButton             = '&Salva';
-  SSaveAsCaption          = 'Salva con nome';
-  SOpenCaption            = 'Apri';
-  SSaveAsType             = '&Tipo file:';
-  SDriveDoesNotExist      = 'L''unità %c: non esiste.'#10'Verificare che sia stata specificata l''unità corretta.';
-  SCannotReadDrive        = 'Impossibile leggere l''unità %c:. Verificare che lo sportello dell''unità sia chiuso e che il disco sia formattato e senza errori.';
-  SRemovableDiskHasChanged = 'Disco errato nell''unità %c:. Inserire il disco corretto.';
-  SFileNotFound           = '%s'#10'Impossibile trovare il file.'#10'Verificare che sia stato specificato il nome di file corretto.';
-  SPathDoesNotExist       = '%s'#10'Percorso non esistente.'#10'Verificare che sia stato specificato il percorso corretto.';
-  SFilenameIsInvalid      = '%s'#10'Nome del file non valido.';
-  SFileAlreadyInUse       = '%s'#10'File già in uso.'#10'Selezionare un nuovo nome o chiudere il file.';
-  SFileCannotBeAccessed   = '%s'#10'Impossibile accedere al file.'#10'Controllare i privilegi di protezione sull''unità di rete.';
-  SExistsAndIsReadOnly    = '%s'#10'File di sola lettura.'#10'Utilizzare un nome di file differente.';
-  SFilenameIsReservedDeviceName = '%s'#10'Il nome di file scelto è il nome di una periferica riservata.'#10'Scegliere un altro nome.';
-  SDiskIsWriteProtected   = 'Il disco %c: è protetto.'#10'Impossibile salvare file su un disco protetto.';
-  SInsufficientDiskSpace  = 'Directory del disco %c: piena.'#10'Scegliere un''altra directory o un altro disco.';
-  SDoesNotExistCreate     = '%s'#10'File non esistente.'#10''#10'Creare il file?';
-  SThereCanBeOnlyOne      = 'Più di un file è denominato ''%s''.'#10''#10'Scegliere un file dall''elenco.';
-  SUpOneLevelHint         = 'Cartella superiore';
-  SCreateNewFolderHint    = 'Crea nuova cartella';
-  SClose                  = 'Chiudi';
-  SLookIn                 = '&Cerca in:';
-  SFileName               = '&Nome file:';
-  SFilesOfType            = '&Tipo file:';
-  SOpenButton             = '&Apri';
-  SCancelButton           = 'Annulla';
-  SHelpButton             = '&?';
-  SOpenAsReadOnly         = 'A&pri in sola lettura';
-  SOKButton               = 'OK';
-  SViewLargeIconsMenu     = 'Icone &grandi';
-  SViewSmallIconsMenu     = 'Icone &piccole';
-  SViewListMenu           = 'E&lenco';
-  SViewDetailsMenu        = 'D&ettagli';
-  SEditCutMenu            = '&Taglia';
-  SEditCopyMenu           = 'C&opia';
-  SEditPasteMenu          = '&Incolla';
-  SDeleteMenu             = '&Elimina';
-  SRenameMenu             = 'Ri&nomina';
-  SPropertiesMenu         = '&Proprietà';
-  SViewMenu               = '&Visualizza';
-  SArrangeIconsMenu       = '&Disponi icone';
-  SLineUpIconsMenu        = 'Allin&ea icone';
-  SPasteShortcutMenu      = '&Incolla';
-  SSelectAllMenu          = '&Seleziona tutto';
-  SInvertSelectionMenu    = 'In&verti selezione';
-  SNewMenu                = 'N&uovo';
-  SNewFolderMenu          = '&Cartella';
-  SNewShortcutMenu        = 'C&ollegamento';
-  SCreateFolder           = 'Crea cartella';
-  SCreateFolderContext    = 'Crea una nuova cartella vuota.';
-  SBytes                  = '%s byte';
-  SFilesizeKB             = '%s KB';
-  SFilesizeMB             = '%s MB';
-  SFilesizeGB             = '%s GB';
-  SFilesizeTB             = '%s TB';
-  SFilesizeX_YBytes       = '%1 (%2 byte)';
-  SYouMustTypeFilename    = 'Specificare il nome del file.';
-  SFolderDoesNotExist     = 'Cartella "%1" non esistente.'#10''#10'Controllare il nome della cartella e riprovare.';
-  SNewFolder              = 'Nuova cartella';
-  SNewShortcut            = 'Nuovo collegamento';
-  SNewDocFilePrefix       = 'Nuovo ';
-  SNewPopupContext        = 'Comandi per la creazione di nuovi oggetti.';
-  SNewFolderContext       = 'Crea una nuova cartella vuota.';
-  SNewShortcutContext     = 'Crea un nuovo collegamento vuoto.';
-  SCannotCreateFolder     = 'Impossibile creare la cartella %2: %1';
-  SUnableToCreateFolder   = 'Impossibile creare la cartella "%2"'#10''#10'%1';
-  SUnableToCreateFile     = 'Impossibile creare il file "%2"'#10''#10'%1';
-  SColumnName             = 'Nome';
-  SColumnInFolder         = 'Nella cartella';
-  SColumnSize             = 'Dimensione';
-  SColumnType             = 'Tipo';
-  SColumnModified         = 'Modificato';
-  SColumnStatus           = 'Stato';
-  SColumnSynchCopyIn      = 'Copia sincronizzata in';
-  SColumnComment          = 'Commento';
-  SColumnLocation         = 'Percorso';
-  SColumnOriginalLocation = 'Posizioni originali';
-  SColumnDateDeleted      = 'Data di eliminazione';
-  SColumnAttributes       = 'Attributi';
-  SAttributesChars        = 'RHSAC';
-  SSystemFolder           = 'Cartella di sistema';
-  SDeleteHint             = 'Elimina';
-  SPropertiesHint         = 'Proprietà';
-  SCutHint                = 'Taglia';
-  SCopyHint               = 'Copia';
-  SPasteHint              = 'Incolla';
-  SUndoHint               = 'Annulla';
-  SDeleteContext          = 'Elimina gli oggetti selezionati.';
-  SPropertiesContext      = 'Visualizza le proprietà dell''oggetto selezionato.';
-  SCutContext             = 'Taglia gli oggetti selezionati e li copia negli Appunti.';
-  SCopyContext            = 'Copia gli oggetti selezionati negli Appunti. Utilizzare Incolla per spostare gli oggetti copiati in una posizione diversa.';
-  SPasteContext           = 'Incolla il contenuto degli Appunti nella posizione selezionata.';
-  SSendToContext          = 'Comandi per operare sugli oggetti.';
-  SNewContext             = 'Comandi per la creazione di nuovi oggetti.';
-  SViewContext            = 'Comandi per la personalizzazione delle finestre.';
-  SViewLargeIconsContext  = 'Visualizza gli oggetti usando icone grandi.';
-  SViewSmallIconsContext  = 'Visualizza gli oggetti usando icone piccole.';
-  SViewListContext        = 'Visualizza gli oggetti in forma di elenco.';
-  SViewDetailsContext     = 'Visualizza i dettagli di ogni oggetto della finestra.';
-  SViewLargeIconsHint     = 'Icone grandi';
-  SViewSmallIconsHint     = 'Icone piccole';
-  SViewListHint           = 'Elenco';
-  SViewDetailsHint        = 'Dettagli';
-  SBrowseForFolder        = 'Sfoglia per cartelle';
-  SShowTreeHint           = 'Visualizza struttura (F12)';
-  SShKey_SelectAll        = 'Ctrl+A';
-  SShKey_Delete           = 'Del';
-  SShKey_Copy             = 'Ctrl+C';
-  SShKey_Cut              = 'Ctrl+X';
-  SShKey_Paste            = 'Ctrl+V';
-  SShKey_Refresh          = 'F5';
-  SShKey_Edit             = 'F2';
-  SDialogFontName         = 'MS Sans Serif';
+  strFileExistsReplace      = 'Il file %s è già esistente.'#10'Sostituire il file?';
+  strSaveIn                 = 'Sa&lva in:';
+  strSaveButton             = '&Salva';
+  strSaveAsCaption          = 'Salva con nome';
+  strOpenCaption            = 'Apri';
+  strSaveAsType             = '&Tipo file:';
+  strDriveDoesNotExist      = 'L''unità %c: non esiste.'#10'Verificare che sia stata specificata l''unità corretta.';
+  strCannotReadDrive        = 'Impossibile leggere l''unità %c:. Verificare che lo sportello dell''unità sia chiuso e che il disco sia formattato e senza errori.';
+  strRemovableDiskHasChanged = 'Disco errato nell''unità %c:. Inserire il disco corretto.';
+  strFileNotFound           = '%s'#10'Impossibile trovare il file.'#10'Verificare che sia stato specificato il nome di file corretto.';
+  strPathDoesNotExist       = '%s'#10'Percorso non esistente.'#10'Verificare che sia stato specificato il percorso corretto.';
+  strFilenameIsInvalid      = '%s'#10'Nome del file non valido.';
+  strFileAlreadyInUse       = '%s'#10'File già in uso.'#10'Selezionare un nuovo nome o chiudere il file.';
+  strFileCannotBeAccessed   = '%s'#10'Impossibile accedere al file.'#10'Controllare i privilegi di protezione sull''unità di rete.';
+  strExistsAndIsReadOnly    = '%s'#10'File di sola lettura.'#10'Utilizzare un nome di file differente.';
+  strFilenameIsReservedDeviceName = '%s'#10'Il nome di file scelto è il nome di una periferica riservata.'#10'Scegliere un altro nome.';
+  strDiskIsWriteProtected   = 'Il disco %c: è protetto.'#10'Impossibile salvare file su un disco protetto.';
+  strInsufficientDiskSpace  = 'Directory del disco %c: piena.'#10'Scegliere un''altra directory o un altro disco.';
+  strDoesNotExistCreate     = '%s'#10'File non esistente.'#10''#10'Creare il file?';
+  strThereCanBeOnlyOne      = 'Più di un file è denominato ''%s''.'#10''#10'Scegliere un file dall''elenco.';
+  strUpOneLevelHint         = 'Cartella superiore';
+  strCreateNewFolderHint    = 'Crea nuova cartella';
+  strClose                  = 'Chiudi';
+  strLookIn                 = '&Cerca in:';
+  strFileName               = '&Nome file:';
+  strFilesOfType            = '&Tipo file:';
+  strOpenButton             = '&Apri';
+  strCancelButton           = 'Annulla';
+  strHelpButton             = '&?';
+  strOpenAsReadOnly         = 'A&pri in sola lettura';
+  strOKButton               = 'OK';
+  strViewLargeIconsMenu     = 'Icone &grandi';
+  strViewSmallIconsMenu     = 'Icone &piccole';
+  strViewListMenu           = 'E&lenco';
+  strViewDetailsMenu        = 'D&ettagli';
+  strEditCutMenu            = '&Taglia';
+  strEditCopyMenu           = 'C&opia';
+  strEditPasteMenu          = '&Incolla';
+  strDeleteMenu             = '&Elimina';
+  strRenameMenu             = 'Ri&nomina';
+  strPropertiesMenu         = '&Proprietà';
+  strViewMenu               = '&Visualizza';
+  strArrangeIconsMenu       = '&Disponi icone';
+  strLineUpIconsMenu        = 'Allin&ea icone';
+  strPasteShortcutMenu      = '&Incolla';
+  strSelectAllMenu          = '&Seleziona tutto';
+  strInvertSelectionMenu    = 'In&verti selezione';
+  strNewMenu                = 'N&uovo';
+  strNewFolderMenu          = '&Cartella';
+  strNewShortcutMenu        = 'C&ollegamento';
+  strCreateFolder           = 'Crea cartella';
+  strCreateFolderContext    = 'Crea una nuova cartella vuota.';
+  strBytes                  = '%s byte';
+  strFilesizeKB             = '%s KB';
+  strFilesizeMB             = '%s MB';
+  strFilesizeGB             = '%s GB';
+  strFilesizeTB             = '%s TB';
+  strFilesizeX_YBytes       = '%1 (%2 byte)';
+  strYouMustTypeFilename    = 'Specificare il nome del file.';
+  strFolderDoesNotExist     = 'Cartella "%1" non esistente.'#10''#10'Controllare il nome della cartella e riprovare.';
+  strNewFolder              = 'Nuova cartella';
+  strNewShortcut            = 'Nuovo collegamento';
+  strNewDocFilePrefix       = 'Nuovo ';
+  strNewPopupContext        = 'Comandi per la creazione di nuovi oggetti.';
+  strNewFolderContext       = 'Crea una nuova cartella vuota.';
+  strNewShortcutContext     = 'Crea un nuovo collegamento vuoto.';
+  strCannotCreateFolder     = 'Impossibile creare la cartella %2: %1';
+  strUnableToCreateFolder   = 'Impossibile creare la cartella "%2"'#10''#10'%1';
+  strUnableToCreateFile     = 'Impossibile creare il file "%2"'#10''#10'%1';
+  strColumnName             = 'Nome';
+  strColumnInFolder         = 'Nella cartella';
+  strColumnSize             = 'Dimensione';
+  strColumnType             = 'Tipo';
+  strColumnModified         = 'Modificato';
+  strColumnStatus           = 'Stato';
+  strColumnSynchCopyIn      = 'Copia sincronizzata in';
+  strColumnComment          = 'Commento';
+  strColumnLocation         = 'Percorso';
+  strColumnOriginalLocation = 'Posizioni originali';
+  strColumnDateDeleted      = 'Data di eliminazione';
+  strColumnAttributes       = 'Attributi';
+  strAttributesChars        = 'RHSAC';
+  strSystemFolder           = 'Cartella di sistema';
+  strDeleteHint             = 'Elimina';
+  strPropertiesHint         = 'Proprietà';
+  strCutHint                = 'Taglia';
+  strCopyHint               = 'Copia';
+  strPasteHint              = 'Incolla';
+  strUndoHint               = 'Annulla';
+  strDeleteContext          = 'Elimina gli oggetti selezionati.';
+  strPropertiesContext      = 'Visualizza le proprietà dell''oggetto selezionato.';
+  strCutContext             = 'Taglia gli oggetti selezionati e li copia negli Appunti.';
+  strCopyContext            = 'Copia gli oggetti selezionati negli Appunti. Utilizzare Incolla per spostare gli oggetti copiati in una posizione diversa.';
+  strPasteContext           = 'Incolla il contenuto degli Appunti nella posizione selezionata.';
+  strSendToContext          = 'Comandi per operare sugli oggetti.';
+  strNewContext             = 'Comandi per la creazione di nuovi oggetti.';
+  strViewContext            = 'Comandi per la personalizzazione delle finestre.';
+  strViewLargeIconsContext  = 'Visualizza gli oggetti usando icone grandi.';
+  strViewSmallIconsContext  = 'Visualizza gli oggetti usando icone piccole.';
+  strViewListContext        = 'Visualizza gli oggetti in forma di elenco.';
+  strViewDetailsContext     = 'Visualizza i dettagli di ogni oggetto della finestra.';
+  strViewLargeIconsHint     = 'Icone grandi';
+  strViewSmallIconsHint     = 'Icone piccole';
+  strViewListHint           = 'Elenco';
+  strViewDetailsHint        = 'Dettagli';
+  strBrowseForFolder        = 'Sfoglia per cartelle';
+  strShowTreeHint           = 'Visualizza struttura (F12)';
+  strShKey_SelectAll        = 'Ctrl+A';
+  strShKey_Delete           = 'Del';
+  strShKey_Copy             = 'Ctrl+C';
+  strShKey_Cut              = 'Ctrl+X';
+  strShKey_Paste            = 'Ctrl+V';
+  strShKey_Refresh          = 'F5';
+  strShKey_Edit             = 'F2'; 

+ 114 - 115
Source/Languages/Japanese/ResStrings.inc

@@ -1,116 +1,115 @@
 resourcestring
-  SFileExistsReplace      = '%s は既に存在します。'#10'上書きしますか?';
-  SSaveIn                 = '保存する場所(&I):';
-  SSaveButton             = '保存(&S)';
-  SSaveAsCaption          = 'ファイル名を付けて保存';
-  SOpenCaption            = 'ファイルを開く';
-  SSaveAsType             = 'ファイルの種類(&T):';
-  SDriveDoesNotExist      = 'ドライブ %c: は存在しません。'#10'適切なドライブを指定してください。';
-  SCannotReadDrive        = 'Windows NT はドライブ %c: を読み取ることができません。ドライブのドアが閉じているか、ディスクがフォーマットされているか、エラーがないか調べてください。';
-  SRemovableDiskHasChanged = 'ドライブ %c: には別のディスクが必要です。適切なディスクを挿入してください。';
-  SFileNotFound           = '%s'#10'ファイルが見つかりません。'#10'正しいファイル名を指定したか調べてください。';
-  SPathDoesNotExist       = '%s'#10'パスが存在しません。'#10'正しいパスを指定したか調べてください。';
-  SFilenameIsInvalid      = '%s'#10'上記のファイル名は誤っています。';
-  SFileAlreadyInUse       = '%s'#10'このファイルは既に使用されています。'#10'新しい名前を選ぶか、または別のアプリケーションで使用中のファイルを閉じてください。';
-  SFileCannotBeAccessed   = '%s'#10'このファイルにはアクセスできません。'#10'ネットワーク ドライブに対する権限を調べてください。';
-  SExistsAndIsReadOnly    = '%s'#10'このファイルには読み取り専用属性が設定されています。'#10'別のファイル名を使用してください。';
-  SFilenameIsReservedDeviceName = '%s'#10'このファイル名は予約デバイス名です。'#10'別の名前を選んでください。';
-  SDiskIsWriteProtected   = 'ディスク %c: はライト プロテクトされています。'#10'ライト プロテクトされたディスクにファイルを保存することはできません。';
-  SInsufficientDiskSpace  = 'ディスク %c: のこのディレクトリはいっぱいです。'#10'別のディレクトリまたはディスクを選んでください。';
-  SDoesNotExistCreate     = '%s'#10'このファイルは存在しません。'#10''#10'作成しますか?';
-  SThereCanBeOnlyOne      = '''%s'' という名前のファイルが複数あります。'#10''#10'ファイルの一覧から 1 つ選んでください。';
-  SUpOneLevelHint         = '1 つ上のフォルダへ';
-  SCreateNewFolderHint    = '新しいフォルダの作成';
-  SClose                  = '閉じる';
-  SLookIn                 = 'ファイルの場所(&I):';
-  SFileName               = 'ファイル名(&N):';
-  SFilesOfType            = 'ファイルの種類(&T):';
-  SOpenButton             = '開く(&O)';
-  SCancelButton           = 'キャンセル';
-  SHelpButton             = 'ヘルプ(&H)';
-  SOpenAsReadOnly         = '読み取り専用ファイルとして開く(&R)';
-  SOKButton               = 'OK';
-  SViewLargeIconsMenu     = '大きいアイコン(&G)';
-  SViewSmallIconsMenu     = '小さいアイコン(&M)';
-  SViewListMenu           = '一覧(&L)';
-  SViewDetailsMenu        = '詳細(&D)';
-  SEditCutMenu            = '切り取り(&T)';
-  SEditCopyMenu           = 'コピー(&C)';
-  SEditPasteMenu          = '貼り付け(&P)';
-  SDeleteMenu             = '削除(&D)';
-  SRenameMenu             = '名前の変更(&M)';
-  SPropertiesMenu         = 'プロパティ(&R)';
-  SViewMenu               = '表示(&V)';
-  SArrangeIconsMenu       = 'アイコンの整列(&I)';
-  SLineUpIconsMenu        = '等間隔に整列(&E)';
-  SPasteShortcutMenu      = '貼り付け(&P)';
-  SSelectAllMenu          = 'すべて選択(&A)';
-  SInvertSelectionMenu    = '選択の切り替え(&I)';
-  SNewMenu                = '新規作成(&W)';
-  SNewFolderMenu          = 'フォルダ(&F)';
-  SNewShortcutMenu        = 'ショートカット(&S)';
-  SCreateFolder           = 'フォルダの作成';
-  SCreateFolderContext    = '新しい、空のフォルダを作成します。';
-  SBytes                  = '%s バイト';
-  SFilesizeKB             = '%sKB';
-  SFilesizeMB             = '%sMB';
-  SFilesizeGB             = '%sGB';
-  SFilesizeTB             = '%sTB';
-  SFilesizeX_YBytes       = '%1 (%2 バイト)';
-  SYouMustTypeFilename    = 'ファイル名を入力してください。';
-  SFolderDoesNotExist     = 'フォルダ ''%1'' は存在しません。'#10''#10'フォルダ名を確認してください。';
-  SNewFolder              = '新しいフォルダ';
-  SNewShortcut            = '新しいショートカット';
-  SNewDocFilePrefix       = '新規';
-  SNewPopupContext        = '新しいオブジェクトを作成するコマンドです。';
-  SNewFolderContext       = '新しい、空のフォルダを作成します。';
-  SNewShortcutContext     = '新しい、空のショートカットを作成します。';
-  SCannotCreateFolder     = '%2 フォルダを作成できません。%1';
-  SUnableToCreateFolder   = 'フォルダ ''%2'' を作成できません。'#10''#10'%1';
-  SUnableToCreateFile     = 'ファイル ''%2'' を作成できません。'#10''#10'%1';
-  SColumnName             = '名前';
-  SColumnInFolder         = 'フォルダ名';
-  SColumnSize             = 'サイズ';
-  SColumnType             = '種類 ';
-  SColumnModified         = '更新日時';
-  SColumnStatus           = '状態';
-  SColumnSynchCopyIn      = 'パス';
-  SColumnComment          = 'コメント';
-  SColumnLocation         = '場所';
-  SColumnOriginalLocation = '元の場所';
-  SColumnDateDeleted      = '削除した日';
-  SColumnAttributes       = '属性';
-  SAttributesChars        = 'RHSAC';
-  SSystemFolder           = 'システム フォルダ';
-  SDeleteHint             = '削除';
-  SPropertiesHint         = 'プロパティ';
-  SCutHint                = '切り取り';
-  SCopyHint               = 'コピー';
-  SPasteHint              = '貼り付け';
-  SUndoHint               = '元に戻す';
-  SDeleteContext          = '選択されたオブジェクトを削除します。';
-  SPropertiesContext      = '選択されたオブジェクトのプロパティを表示します。';
-  SCutContext             = '削除するオブジェクトとして選択し、クリップボードにコピーします。';
-  SCopyContext            = '選択されたオブジェクトをクリップボードにコピーします。新しい位置に挿入するには [貼り付け] を選んでください。';
-  SPasteContext           = '選択した位置に切り取りまたはコピーされたオブジェクトを貼り付けます。';
-  SSendToContext          = '選択されたファイルやフォルダをコピーするコマンドです。';
-  SNewContext             = '新しいオブジェクトを作成するコマンドです。';
-  SViewContext            = 'このウィンドウをカスタマイズするコマンドです。';
-  SViewLargeIconsContext  = 'オブジェクトを大きいアイコンで表示します。';
-  SViewSmallIconsContext  = 'オブジェクトを小さいアイコンで表示します。';
-  SViewListContext        = 'オブジェクトを一覧表示します。';
-  SViewDetailsContext     = 'ウィンドウ内の各オブジェクトの情報を表示します。';
-  SViewLargeIconsHint     = '大きいアイコン';
-  SViewSmallIconsHint     = '小さいアイコン';
-  SViewListHint           = '一覧';
-  SViewDetailsHint        = '詳細';
-  SBrowseForFolder        = 'フォルダの参照';
-  SShowTreeHint           = 'ツリーの表示 (F12)';
-  SShKey_SelectAll        = 'Ctrl+A';
-  SShKey_Delete           = 'Del';
-  SShKey_Copy             = 'Ctrl+C';
-  SShKey_Cut              = 'Ctrl+X';
-  SShKey_Paste            = 'Ctrl+V';
-  SShKey_Refresh          = 'F5';
-  SShKey_Edit             = 'F2';
-  SDialogFontName         = 'MS Pゴシック';
+  strFileExistsReplace      = '%s は既に存在します。'#10'上書きしますか?';
+  strSaveIn                 = '保存する場所(&I):';
+  strSaveButton             = '保存(&S)';
+  strSaveAsCaption          = 'ファイル名を付けて保存';
+  strOpenCaption            = 'ファイルを開く';
+  strSaveAsType             = 'ファイルの種類(&T):';
+  strDriveDoesNotExist      = 'ドライブ %c: は存在しません。'#10'適切なドライブを指定してください。';
+  strCannotReadDrive        = 'Windows NT はドライブ %c: を読み取ることができません。ドライブのドアが閉じているか、ディスクがフォーマットされているか、エラーがないか調べてください。';
+  strRemovableDiskHasChanged = 'ドライブ %c: には別のディスクが必要です。適切なディスクを挿入してください。';
+  strFileNotFound           = '%s'#10'ファイルが見つかりません。'#10'正しいファイル名を指定したか調べてください。';
+  strPathDoesNotExist       = '%s'#10'パスが存在しません。'#10'正しいパスを指定したか調べてください。';
+  strFilenameIsInvalid      = '%s'#10'上記のファイル名は誤っています。';
+  strFileAlreadyInUse       = '%s'#10'このファイルは既に使用されています。'#10'新しい名前を選ぶか、または別のアプリケーションで使用中のファイルを閉じてください。';
+  strFileCannotBeAccessed   = '%s'#10'このファイルにはアクセスできません。'#10'ネットワーク ドライブに対する権限を調べてください。';
+  strExistsAndIsReadOnly    = '%s'#10'このファイルには読み取り専用属性が設定されています。'#10'別のファイル名を使用してください。';
+  strFilenameIsReservedDeviceName = '%s'#10'このファイル名は予約デバイス名です。'#10'別の名前を選んでください。';
+  strDiskIsWriteProtected   = 'ディスク %c: はライト プロテクトされています。'#10'ライト プロテクトされたディスクにファイルを保存することはできません。';
+  strInsufficientDiskSpace  = 'ディスク %c: のこのディレクトリはいっぱいです。'#10'別のディレクトリまたはディスクを選んでください。';
+  strDoesNotExistCreate     = '%s'#10'このファイルは存在しません。'#10''#10'作成しますか?';
+  strThereCanBeOnlyOne      = '''%s'' という名前のファイルが複数あります。'#10''#10'ファイルの一覧から 1 つ選んでください。';
+  strUpOneLevelHint         = '1 つ上のフォルダへ';
+  strCreateNewFolderHint    = '新しいフォルダの作成';
+  strClose                  = '閉じる';
+  strLookIn                 = 'ファイルの場所(&I):';
+  strFileName               = 'ファイル名(&N):';
+  strFilesOfType            = 'ファイルの種類(&T):';
+  strOpenButton             = '開く(&O)';
+  strCancelButton           = 'キャンセル';
+  strHelpButton             = 'ヘルプ(&H)';
+  strOpenAsReadOnly         = '読み取り専用ファイルとして開く(&R)';
+  strOKButton               = 'OK';
+  strViewLargeIconsMenu     = '大きいアイコン(&G)';
+  strViewSmallIconsMenu     = '小さいアイコン(&M)';
+  strViewListMenu           = '一覧(&L)';
+  strViewDetailsMenu        = '詳細(&D)';
+  strEditCutMenu            = '切り取り(&T)';
+  strEditCopyMenu           = 'コピー(&C)';
+  strEditPasteMenu          = '貼り付け(&P)';
+  strDeleteMenu             = '削除(&D)';
+  strRenameMenu             = '名前の変更(&M)';
+  strPropertiesMenu         = 'プロパティ(&R)';
+  strViewMenu               = '表示(&V)';
+  strArrangeIconsMenu       = 'アイコンの整列(&I)';
+  strLineUpIconsMenu        = '等間隔に整列(&E)';
+  strPasteShortcutMenu      = '貼り付け(&P)';
+  strSelectAllMenu          = 'すべて選択(&A)';
+  strInvertSelectionMenu    = '選択の切り替え(&I)';
+  strNewMenu                = '新規作成(&W)';
+  strNewFolderMenu          = 'フォルダ(&F)';
+  strNewShortcutMenu        = 'ショートカット(&S)';
+  strCreateFolder           = 'フォルダの作成';
+  strCreateFolderContext    = '新しい、空のフォルダを作成します。';
+  strBytes                  = '%s バイト';
+  strFilesizeKB             = '%sKB';
+  strFilesizeMB             = '%sMB';
+  strFilesizeGB             = '%sGB';
+  strFilesizeTB             = '%sTB';
+  strFilesizeX_YBytes       = '%1 (%2 バイト)';
+  strYouMustTypeFilename    = 'ファイル名を入力してください。';
+  strFolderDoesNotExist     = 'フォルダ ''%1'' は存在しません。'#10''#10'フォルダ名を確認してください。';
+  strNewFolder              = '新しいフォルダ';
+  strNewShortcut            = '新しいショートカット';
+  strNewDocFilePrefix       = '新規';
+  strNewPopupContext        = '新しいオブジェクトを作成するコマンドです。';
+  strNewFolderContext       = '新しい、空のフォルダを作成します。';
+  strNewShortcutContext     = '新しい、空のショートカットを作成します。';
+  strCannotCreateFolder     = '%2 フォルダを作成できません。%1';
+  strUnableToCreateFolder   = 'フォルダ ''%2'' を作成できません。'#10''#10'%1';
+  strUnableToCreateFile     = 'ファイル ''%2'' を作成できません。'#10''#10'%1';
+  strColumnName             = '名前';
+  strColumnInFolder         = 'フォルダ名';
+  strColumnSize             = 'サイズ';
+  strColumnType             = '種類 ';
+  strColumnModified         = '更新日時';
+  strColumnStatus           = '状態';
+  strColumnSynchCopyIn      = 'パス';
+  strColumnComment          = 'コメント';
+  strColumnLocation         = '場所';
+  strColumnOriginalLocation = '元の場所';
+  strColumnDateDeleted      = '削除した日';
+  strColumnAttributes       = '属性';
+  strAttributesChars        = 'RHSAC';
+  strSystemFolder           = 'システム フォルダ';
+  strDeleteHint             = '削除';
+  strPropertiesHint         = 'プロパティ';
+  strCutHint                = '切り取り';
+  strCopyHint               = 'コピー';
+  strPasteHint              = '貼り付け';
+  strUndoHint               = '元に戻す';
+  strDeleteContext          = '選択されたオブジェクトを削除します。';
+  strPropertiesContext      = '選択されたオブジェクトのプロパティを表示します。';
+  strCutContext             = '削除するオブジェクトとして選択し、クリップボードにコピーします。';
+  strCopyContext            = '選択されたオブジェクトをクリップボードにコピーします。新しい位置に挿入するには [貼り付け] を選んでください。';
+  strPasteContext           = '選択した位置に切り取りまたはコピーされたオブジェクトを貼り付けます。';
+  strSendToContext          = '選択されたファイルやフォルダをコピーするコマンドです。';
+  strNewContext             = '新しいオブジェクトを作成するコマンドです。';
+  strViewContext            = 'このウィンドウをカスタマイズするコマンドです。';
+  strViewLargeIconsContext  = 'オブジェクトを大きいアイコンで表示します。';
+  strViewSmallIconsContext  = 'オブジェクトを小さいアイコンで表示します。';
+  strViewListContext        = 'オブジェクトを一覧表示します。';
+  strViewDetailsContext     = 'ウィンドウ内の各オブジェクトの情報を表示します。';
+  strViewLargeIconsHint     = '大きいアイコン';
+  strViewSmallIconsHint     = '小さいアイコン';
+  strViewListHint           = '一覧';
+  strViewDetailsHint        = '詳細';
+  strBrowseForFolder        = 'フォルダの参照';
+  strShowTreeHint           = 'ツリーの表示 (F12)';
+  strShKey_SelectAll        = 'Ctrl+A';
+  strShKey_Delete           = 'Del';
+  strShKey_Copy             = 'Ctrl+C';
+  strShKey_Cut              = 'Ctrl+X';
+  strShKey_Paste            = 'Ctrl+V';
+  strShKey_Refresh          = 'F5';
+  strShKey_Edit             = 'F2'; 

+ 114 - 115
Source/Languages/Portuguese/ResStrings.inc

@@ -1,116 +1,115 @@
 resourcestring
-  SFileExistsReplace      = '%s já existe.'#10'Pretende substituí-lo?';
-  SSaveIn                 = 'G&uardar em:';
-  SSaveButton             = '&Guardar';
-  SSaveAsCaption          = 'Guardar como';
-  SOpenCaption            = 'Abrir';
-  SSaveAsType             = 'Guardar com o &tipo:';
-  SDriveDoesNotExist      = 'A unidade %c: não existe.'#10'Por favor verifique se indicou a unidade apropriada.';
-  SCannotReadDrive        = 'O Windows NT não consegue ler a unidade %c:. Certifique-se de que a porta da unidade está fechada e de que o disco está formatado e isento de erros.';
-  SRemovableDiskHasChanged = 'É esperado um disco diferente na unidade %c:.  Por favor insira o disco apropriado.';
-  SFileNotFound           = '%s'#10'Ficheiro não encontrado.'#10'Por favor verifique se o nome do ficheiro está correcto.';
-  SPathDoesNotExist       = '%s'#10'Caminho não existe.'#10'Por favor verifique se o caminho está correcto.';
-  SFilenameIsInvalid      = '%s'#10'O nome do ficheiro é inválido.';
-  SFileAlreadyInUse       = '%s'#10'Este ficheiro está a ser usado.'#10'Seleccione um novo nome ou feche o ficheiro que está a ser usado por outra aplicação.';
-  SFileCannotBeAccessed   = '%s'#10'Não é possível aceder a este ficheiro.'#10'Verifique as permissões para esta unidade de rede.';
-  SExistsAndIsReadOnly    = '%s'#10'Este ficheiro existe mas só pode ser lido.'#10'Por favor utilize um nome diferente para o ficheiro.';
-  SFilenameIsReservedDeviceName = '%s'#10'Este nome está reservado para um dispositivo.'#10'Por favor escolha outro nome.';
-  SDiskIsWriteProtected   = 'O disco %c: está protegido contra escrita.'#10'Não pode guardar um ficheiro num disco protegido contra escrita.';
-  SInsufficientDiskSpace  = 'Este directório do disco %c: está cheio.'#10'Escolha outro directório ou disco.';
-  SDoesNotExistCreate     = '%s'#10'Este ficheiro não existe.'#10''#10'Criar o ficheiro?';
-  SThereCanBeOnlyOne      = 'Mais do que um ficheiro tem o nome ''%s''.'#10''#10'Escolha um da lista de ficheiros.';
-  SUpOneLevelHint         = 'Subir um nível';
-  SCreateNewFolderHint    = 'Criar nova pasta';
-  SClose                  = 'Fechar';
-  SLookIn                 = 'Procu&rar em:';
-  SFileName               = '&Nome do ficheiro:';
-  SFilesOfType            = 'Fic&heiros do tipo:';
-  SOpenButton             = '&Abrir';
-  SCancelButton           = 'Cancelar';
-  SHelpButton             = 'A&juda';
-  SOpenAsReadOnly         = 'Abrir &só para leitura';
-  SOKButton               = 'OK';
-  SViewLargeIconsMenu     = 'Íco&nes grandes';
-  SViewSmallIconsMenu     = 'Ícones &pequenos';
-  SViewListMenu           = '&Lista';
-  SViewDetailsMenu        = '&Detalhes';
-  SEditCutMenu            = 'Cor&tar';
-  SEditCopyMenu           = '&Copiar';
-  SEditPasteMenu          = 'C&olar';
-  SDeleteMenu             = '&Eliminar';
-  SRenameMenu             = 'M&udar o nome';
-  SPropertiesMenu         = 'Proprie&dades';
-  SViewMenu               = '&Ver';
-  SArrangeIconsMenu       = 'Organi&zar Ícones';
-  SLineUpIconsMenu        = 'A&linhar Ícones';
-  SPasteShortcutMenu      = 'C&olar';
-  SSelectAllMenu          = 'Seleccionar &tudo';
-  SInvertSelectionMenu    = '&Inverter selecção';
-  SNewMenu                = '&Novo';
-  SNewFolderMenu          = '&Pasta';
-  SNewShortcutMenu        = '&Atalho';
-  SCreateFolder           = 'Criar pasta';
-  SCreateFolderContext    = 'Cria uma pasta nova, vazia.';
-  SBytes                  = '%s bytes';
-  SFilesizeKB             = '%sKB';
-  SFilesizeMB             = '%sMB';
-  SFilesizeGB             = '%sGB';
-  SFilesizeTB             = '%sTB';
-  SFilesizeX_YBytes       = '%1 (%2 bytes)';
-  SYouMustTypeFilename    = 'Tem de digitar um nome para o ficheiro.';
-  SFolderDoesNotExist     = 'A pasta ''%1'' não existe.'#10''#10'Verifique o nome da pasta e tente novamente.';
-  SNewFolder              = 'Nova pasta';
-  SNewShortcut            = 'Novo atalho';
-  SNewDocFilePrefix       = 'Novo ';
-  SNewPopupContext        = 'Contém comandos para criar novos itens.';
-  SNewFolderContext       = 'Cria uma nova pasta.';
-  SNewShortcutContext     = 'Cria um novo atalho.';
-  SCannotCreateFolder     = 'Não é possível criar a pasta %2: %1';
-  SUnableToCreateFolder   = 'Não é possível criar a pasta ''%2'''#10''#10'%1';
-  SUnableToCreateFile     = 'Não é possível criar o ficheiro ''%2'''#10''#10'%1';
-  SColumnName             = 'Nome';
-  SColumnInFolder         = 'Na pasta';
-  SColumnSize             = 'Tamanho';
-  SColumnType             = 'Tipo';
-  SColumnModified         = 'Modificado';
-  SColumnStatus           = 'Estado';
-  SColumnSynchCopyIn      = 'Cópia sincronizada em';
-  SColumnComment          = 'Comentário';
-  SColumnLocation         = 'Localização';
-  SColumnOriginalLocation = 'Localização original';
-  SColumnDateDeleted      = 'Data apagado';
-  SColumnAttributes       = 'Atributos';
-  SAttributesChars        = 'RHSAC';
-  SSystemFolder           = 'Pasta de sistema';
-  SDeleteHint             = 'Eliminar';
-  SPropertiesHint         = 'Propriedades';
-  SCutHint                = 'Cortar';
-  SCopyHint               = 'Copiar';
-  SPasteHint              = 'Colar';
-  SUndoHint               = 'Desfazer';
-  SDeleteContext          = 'Apaga os itens seleccionados.';
-  SPropertiesContext      = 'Apresenta as propriedades dos itens seleccionados.';
-  SCutContext             = 'Remove os itens seleccionados e copia-os para a área de transferência.';
-  SCopyContext            = 'Copia os itens seleccionados para a área de transferência. Use Colar para os colocar na nova localização.';
-  SPasteContext           = 'Insere os itens que copiou ou cortou na localização seleccionada.';
-  SSendToContext          = 'Contém itens para onde pode copiar ou para onde pode enviar os ficheiros ou pastas seleccionados.';
-  SNewContext             = 'Contém comandos para criar novos itens.';
-  SViewContext            = 'Contém comandos para personalizar esta janela.';
-  SViewLargeIconsContext  = 'Apresenta os itens utilizando ícones grandes.';
-  SViewSmallIconsContext  = 'Apresenta os itens utilizando ícones pequenos.';
-  SViewListContext        = 'Apresenta os itens numa lista.';
-  SViewDetailsContext     = 'Apresenta informação sobre cada item na janela.';
-  SViewLargeIconsHint     = 'Ícones grandes';
-  SViewSmallIconsHint     = 'Ícones pequenos';
-  SViewListHint           = 'Lista';
-  SViewDetailsHint        = 'Detalhes';
-  SBrowseForFolder        = 'Procurar pasta';
-  SShowTreeHint           = 'Mostrar árvore (F12)';
-  SShKey_SelectAll        = 'Ctrl+A';
-  SShKey_Delete           = 'Del';
-  SShKey_Copy             = 'Ctrl+C';
-  SShKey_Cut              = 'Ctrl+X';
-  SShKey_Paste            = 'Ctrl+V';
-  SShKey_Refresh          = 'F5';
-  SShKey_Edit             = 'F2';
-  SDialogFontName         = 'MS Sans Serif';
+  strFileExistsReplace      = '%s já existe.'#10'Pretende substituí-lo?';
+  strSaveIn                 = 'G&uardar em:';
+  strSaveButton             = '&Guardar';
+  strSaveAsCaption          = 'Guardar como';
+  strOpenCaption            = 'Abrir';
+  strSaveAsType             = 'Guardar com o &tipo:';
+  strDriveDoesNotExist      = 'A unidade %c: não existe.'#10'Por favor verifique se indicou a unidade apropriada.';
+  strCannotReadDrive        = 'O Windows NT não consegue ler a unidade %c:. Certifique-se de que a porta da unidade está fechada e de que o disco está formatado e isento de erros.';
+  strRemovableDiskHasChanged = 'É esperado um disco diferente na unidade %c:.  Por favor insira o disco apropriado.';
+  strFileNotFound           = '%s'#10'Ficheiro não encontrado.'#10'Por favor verifique se o nome do ficheiro está correcto.';
+  strPathDoesNotExist       = '%s'#10'Caminho não existe.'#10'Por favor verifique se o caminho está correcto.';
+  strFilenameIsInvalid      = '%s'#10'O nome do ficheiro é inválido.';
+  strFileAlreadyInUse       = '%s'#10'Este ficheiro está a ser usado.'#10'Seleccione um novo nome ou feche o ficheiro que está a ser usado por outra aplicação.';
+  strFileCannotBeAccessed   = '%s'#10'Não é possível aceder a este ficheiro.'#10'Verifique as permissões para esta unidade de rede.';
+  strExistsAndIsReadOnly    = '%s'#10'Este ficheiro existe mas só pode ser lido.'#10'Por favor utilize um nome diferente para o ficheiro.';
+  strFilenameIsReservedDeviceName = '%s'#10'Este nome está reservado para um dispositivo.'#10'Por favor escolha outro nome.';
+  strDiskIsWriteProtected   = 'O disco %c: está protegido contra escrita.'#10'Não pode guardar um ficheiro num disco protegido contra escrita.';
+  strInsufficientDiskSpace  = 'Este directório do disco %c: está cheio.'#10'Escolha outro directório ou disco.';
+  strDoesNotExistCreate     = '%s'#10'Este ficheiro não existe.'#10''#10'Criar o ficheiro?';
+  strThereCanBeOnlyOne      = 'Mais do que um ficheiro tem o nome ''%s''.'#10''#10'Escolha um da lista de ficheiros.';
+  strUpOneLevelHint         = 'Subir um nível';
+  strCreateNewFolderHint    = 'Criar nova pasta';
+  strClose                  = 'Fechar';
+  strLookIn                 = 'Procu&rar em:';
+  strFileName               = '&Nome do ficheiro:';
+  strFilesOfType            = 'Fic&heiros do tipo:';
+  strOpenButton             = '&Abrir';
+  strCancelButton           = 'Cancelar';
+  strHelpButton             = 'A&juda';
+  strOpenAsReadOnly         = 'Abrir &só para leitura';
+  strOKButton               = 'OK';
+  strViewLargeIconsMenu     = 'Íco&nes grandes';
+  strViewSmallIconsMenu     = 'Ícones &pequenos';
+  strViewListMenu           = '&Lista';
+  strViewDetailsMenu        = '&Detalhes';
+  strEditCutMenu            = 'Cor&tar';
+  strEditCopyMenu           = '&Copiar';
+  strEditPasteMenu          = 'C&olar';
+  strDeleteMenu             = '&Eliminar';
+  strRenameMenu             = 'M&udar o nome';
+  strPropertiesMenu         = 'Proprie&dades';
+  strViewMenu               = '&Ver';
+  strArrangeIconsMenu       = 'Organi&zar Ícones';
+  strLineUpIconsMenu        = 'A&linhar Ícones';
+  strPasteShortcutMenu      = 'C&olar';
+  strSelectAllMenu          = 'Seleccionar &tudo';
+  strInvertSelectionMenu    = '&Inverter selecção';
+  strNewMenu                = '&Novo';
+  strNewFolderMenu          = '&Pasta';
+  strNewShortcutMenu        = '&Atalho';
+  strCreateFolder           = 'Criar pasta';
+  strCreateFolderContext    = 'Cria uma pasta nova, vazia.';
+  strBytes                  = '%s bytes';
+  strFilesizeKB             = '%sKB';
+  strFilesizeMB             = '%sMB';
+  strFilesizeGB             = '%sGB';
+  strFilesizeTB             = '%sTB';
+  strFilesizeX_YBytes       = '%1 (%2 bytes)';
+  strYouMustTypeFilename    = 'Tem de digitar um nome para o ficheiro.';
+  strFolderDoesNotExist     = 'A pasta ''%1'' não existe.'#10''#10'Verifique o nome da pasta e tente novamente.';
+  strNewFolder              = 'Nova pasta';
+  strNewShortcut            = 'Novo atalho';
+  strNewDocFilePrefix       = 'Novo ';
+  strNewPopupContext        = 'Contém comandos para criar novos itens.';
+  strNewFolderContext       = 'Cria uma nova pasta.';
+  strNewShortcutContext     = 'Cria um novo atalho.';
+  strCannotCreateFolder     = 'Não é possível criar a pasta %2: %1';
+  strUnableToCreateFolder   = 'Não é possível criar a pasta ''%2'''#10''#10'%1';
+  strUnableToCreateFile     = 'Não é possível criar o ficheiro ''%2'''#10''#10'%1';
+  strColumnName             = 'Nome';
+  strColumnInFolder         = 'Na pasta';
+  strColumnSize             = 'Tamanho';
+  strColumnType             = 'Tipo';
+  strColumnModified         = 'Modificado';
+  strColumnStatus           = 'Estado';
+  strColumnSynchCopyIn      = 'Cópia sincronizada em';
+  strColumnComment          = 'Comentário';
+  strColumnLocation         = 'Localização';
+  strColumnOriginalLocation = 'Localização original';
+  strColumnDateDeleted      = 'Data apagado';
+  strColumnAttributes       = 'Atributos';
+  strAttributesChars        = 'RHSAC';
+  strSystemFolder           = 'Pasta de sistema';
+  strDeleteHint             = 'Eliminar';
+  strPropertiesHint         = 'Propriedades';
+  strCutHint                = 'Cortar';
+  strCopyHint               = 'Copiar';
+  strPasteHint              = 'Colar';
+  strUndoHint               = 'Desfazer';
+  strDeleteContext          = 'Apaga os itens seleccionados.';
+  strPropertiesContext      = 'Apresenta as propriedades dos itens seleccionados.';
+  strCutContext             = 'Remove os itens seleccionados e copia-os para a área de transferência.';
+  strCopyContext            = 'Copia os itens seleccionados para a área de transferência. Use Colar para os colocar na nova localização.';
+  strPasteContext           = 'Insere os itens que copiou ou cortou na localização seleccionada.';
+  strSendToContext          = 'Contém itens para onde pode copiar ou para onde pode enviar os ficheiros ou pastas seleccionados.';
+  strNewContext             = 'Contém comandos para criar novos itens.';
+  strViewContext            = 'Contém comandos para personalizar esta janela.';
+  strViewLargeIconsContext  = 'Apresenta os itens utilizando ícones grandes.';
+  strViewSmallIconsContext  = 'Apresenta os itens utilizando ícones pequenos.';
+  strViewListContext        = 'Apresenta os itens numa lista.';
+  strViewDetailsContext     = 'Apresenta informação sobre cada item na janela.';
+  strViewLargeIconsHint     = 'Ícones grandes';
+  strViewSmallIconsHint     = 'Ícones pequenos';
+  strViewListHint           = 'Lista';
+  strViewDetailsHint        = 'Detalhes';
+  strBrowseForFolder        = 'Procurar pasta';
+  strShowTreeHint           = 'Mostrar árvore (F12)';
+  strShKey_SelectAll        = 'Ctrl+A';
+  strShKey_Delete           = 'Del';
+  strShKey_Copy             = 'Ctrl+C';
+  strShKey_Cut              = 'Ctrl+X';
+  strShKey_Paste            = 'Ctrl+V';
+  strShKey_Refresh          = 'F5';
+  strShKey_Edit             = 'F2';

+ 114 - 115
Source/Languages/Russian/ResStrings.inc

@@ -1,116 +1,115 @@
 resourcestring
-  SFileExistsReplace      = 'Файл %s уже существует.'#10'Заменить его?';
-  SSaveIn                 = '&Папка:';
-  SSaveButton             = 'Со&хранить';
-  SSaveAsCaption          = 'Сохранение файла';
-  SOpenCaption            = 'Открытие файла';
-  SSaveAsType             = '&Тип файла:';
-  SDriveDoesNotExist      = 'Диск %c: не существует.'#10'Проверьте правильность указания имени.';
-  SCannotReadDrive        = 'Не удается прочитать диск %c:. Убедитесь, что дверца устройства закрыта, диск отформатирован и не поврежден.';
-  SRemovableDiskHasChanged = 'В устройство %c: вставлен не тот диск, что требуется.  Вставьте нужный диск.';
-  SFileNotFound           = '%s'#10'Файл не найден.'#10'Проверьте правильность имени файла.';
-  SPathDoesNotExist       = '%s'#10'Путь не существует.'#10'Проверьте правильность указания пути.';
-  SFilenameIsInvalid      = '%s'#10'Недопустимое имя файла.';
-  SFileAlreadyInUse       = '%s'#10'Файл уже используется.'#10'Укажите другое имя файла или закройте файл в другом приложении.';
-  SFileCannotBeAccessed   = '%s'#10'Файл недоступен.'#10'Проверьте наличие прав доступа к сетевому диску.';
-  SExistsAndIsReadOnly    = '%s'#10'Файл существует и доступен только для чтения.'#10'Укажите другое имя файла.';
-  SFilenameIsReservedDeviceName = '%s'#10'Это имя зарезервировано как имя устройства.'#10'Укажите другое имя файла.';
-  SDiskIsWriteProtected   = 'Диск %c: защищен от записи.'#10'Сохранение на нем файлов невозможно.';
-  SInsufficientDiskSpace  = 'Выбранный каталог диска %c: полон.'#10'Укажите другой каталог или диск.';
-  SDoesNotExistCreate     = '%s'#10'Файл не существует.'#10''#10'Создать его?';
-  SThereCanBeOnlyOne      = 'Имя ''%s'' соответствует сразу нескольким файлам.'#10''#10'Выберите нужный файл из списка.';
-  SUpOneLevelHint         = 'На один уровень вверх';
-  SCreateNewFolderHint    = 'Создание новой папки';
-  SClose                  = 'Закрыть';
-  SLookIn                 = '&Папка:';
-  SFileName               = '&Имя файла:';
-  SFilesOfType            = '&Тип файлов:';
-  SOpenButton             = '&Открыть';
-  SCancelButton           = 'Отмена';
-  SHelpButton             = '&Справка';
-  SOpenAsReadOnly         = 'Только &чтение';
-  SOKButton               = 'ОК';
-  SViewLargeIconsMenu     = '&Крупные значки';
-  SViewSmallIconsMenu     = '&Мелкие значки';
-  SViewListMenu           = 'Спис&ок';
-  SViewDetailsMenu        = '&Таблица';
-  SEditCutMenu            = '&Вырезать';
-  SEditCopyMenu           = '&Копировать';
-  SEditPasteMenu          = 'Вст&авить';
-  SDeleteMenu             = '&Удалить';
-  SRenameMenu             = 'Переи&меновать';
-  SPropertiesMenu         = 'Сво&йства';
-  SViewMenu               = '&Вид';
-  SArrangeIconsMenu       = '&Упорядочить значки';
-  SLineUpIconsMenu        = 'В&ыстроить значки';
-  SPasteShortcutMenu      = 'Встав&ить';
-  SSelectAllMenu          = 'Выделить в&се';
-  SInvertSelectionMenu    = 'Обратить в&ыделение';
-  SNewMenu                = 'Созда&ть';
-  SNewFolderMenu          = '&Папка';
-  SNewShortcutMenu        = '&Ярлык';
-  SCreateFolder           = 'Создание папки';
-  SCreateFolderContext    = 'Создание новой пустой папки.';
-  SBytes                  = '%s байт';
-  SFilesizeKB             = '%s Кбайт';
-  SFilesizeMB             = '%s Мбайт';
-  SFilesizeGB             = '%s Гбайт';
-  SFilesizeTB             = '%s Тбайт';
-  SFilesizeX_YBytes       = '%1 (%2 байт)';
-  SYouMustTypeFilename    = 'Следует ввести имя файла.';
-  SFolderDoesNotExist     = 'Папка ''%1'' не существует.'#10''#10'Проверьте указанное имя и повторите попытку.';
-  SNewFolder              = '--------';
-  SNewShortcut            = 'Новый ярлык';
-  SNewDocFilePrefix       = '';
-  SNewPopupContext        = 'Команды для создания новых объектов.';
-  SNewFolderContext       = 'Создание новой пустой папки.';
-  SNewShortcutContext     = 'Создание нового несвязанного ярлыка.';
-  SCannotCreateFolder     = 'Не удается создать папку %2. %1';
-  SUnableToCreateFolder   = 'Не удается создать папку ''%2'''#10''#10'%1';
-  SUnableToCreateFile     = 'Не удается создать файл ''%2'''#10''#10'%1';
-  SColumnName             = 'Имя';
-  SColumnInFolder         = 'Папка';
-  SColumnSize             = 'Размер';
-  SColumnType             = 'Тип';
-  SColumnModified         = 'Изменен';
-  SColumnStatus           = 'Состояние';
-  SColumnSynchCopyIn      = 'Оригинал в';
-  SColumnComment          = 'Заметки';
-  SColumnLocation         = 'Размещение';
-  SColumnOriginalLocation = 'Исходное размещение';
-  SColumnDateDeleted      = 'Дата удаления';
-  SColumnAttributes       = 'Атрибуты';
-  SAttributesChars        = 'RHSAC';
-  SSystemFolder           = 'Системная папка';
-  SDeleteHint             = 'Удалить';
-  SPropertiesHint         = 'Свойства';
-  SCutHint                = 'Удалить в буфер';
-  SCopyHint               = 'Копировать в буфер';
-  SPasteHint              = 'Вставить из буфера';
-  SUndoHint               = 'Отменить';
-  SDeleteContext          = 'Удаление выделенных объектов.';
-  SPropertiesContext      = 'Отображение свойств выделенных объектов.';
-  SCutContext             = 'Удаление выделенных объектов в буфер обмена.';
-  SCopyContext            = 'Копирование выделенных объектов в буфер обмена.';
-  SPasteContext           = 'Вставка объектов из буфера обмена.';
-  SSendToContext          = 'Перечень адресов и способов отправки выделенного файла или папки.';
-  SNewContext             = 'Команды для создания новых объектов.';
-  SViewContext            = 'Команды настройки окна.';
-  SViewLargeIconsContext  = 'Отображение объектов с использованием крупных значков.';
-  SViewSmallIconsContext  = 'Отображение объектов с использованием мелких значков.';
-  SViewListContext        = 'Отображение объектов в виде списка.';
-  SViewDetailsContext     = 'Отображение объектов в виде таблицы с подробными сведениями.';
-  SViewLargeIconsHint     = 'Крупные значки';
-  SViewSmallIconsHint     = 'Мелкие значки';
-  SViewListHint           = 'Список';
-  SViewDetailsHint        = 'Таблица';
-  SBrowseForFolder        = 'Обзор папок';
-  SShowTreeHint           = 'Show Tree (F12)';
-  SShKey_SelectAll        = 'Ctrl+A';
-  SShKey_Delete           = 'Del';
-  SShKey_Copy             = 'Ctrl+C';
-  SShKey_Cut              = 'Ctrl+X';
-  SShKey_Paste            = 'Ctrl+V';
-  SShKey_Refresh          = 'F5';
-  SShKey_Edit             = 'F2';
-  SDialogFontName         = 'MS Sans Serif';
+  strFileExistsReplace      = 'Файл %s уже существует.'#10'Заменить его?';
+  strSaveIn                 = '&Папка:';
+  strSaveButton             = 'Со&хранить';
+  strSaveAsCaption          = 'Сохранение файла';
+  strOpenCaption            = 'Открытие файла';
+  strSaveAsType             = '&Тип файла:';
+  strDriveDoesNotExist      = 'Диск %c: не существует.'#10'Проверьте правильность указания имени.';
+  strCannotReadDrive        = 'Не удается прочитать диск %c:. Убедитесь, что дверца устройства закрыта, диск отформатирован и не поврежден.';
+  strRemovableDiskHasChanged = 'В устройство %c: вставлен не тот диск, что требуется.  Вставьте нужный диск.';
+  strFileNotFound           = '%s'#10'Файл не найден.'#10'Проверьте правильность имени файла.';
+  strPathDoesNotExist       = '%s'#10'Путь не существует.'#10'Проверьте правильность указания пути.';
+  strFilenameIsInvalid      = '%s'#10'Недопустимое имя файла.';
+  strFileAlreadyInUse       = '%s'#10'Файл уже используется.'#10'Укажите другое имя файла или закройте файл в другом приложении.';
+  strFileCannotBeAccessed   = '%s'#10'Файл недоступен.'#10'Проверьте наличие прав доступа к сетевому диску.';
+  strExistsAndIsReadOnly    = '%s'#10'Файл существует и доступен только для чтения.'#10'Укажите другое имя файла.';
+  strFilenameIsReservedDeviceName = '%s'#10'Это имя зарезервировано как имя устройства.'#10'Укажите другое имя файла.';
+  strDiskIsWriteProtected   = 'Диск %c: защищен от записи.'#10'Сохранение на нем файлов невозможно.';
+  strInsufficientDiskSpace  = 'Выбранный каталог диска %c: полон.'#10'Укажите другой каталог или диск.';
+  strDoesNotExistCreate     = '%s'#10'Файл не существует.'#10''#10'Создать его?';
+  strThereCanBeOnlyOne      = 'Имя ''%s'' соответствует сразу нескольким файлам.'#10''#10'Выберите нужный файл из списка.';
+  strUpOneLevelHint         = 'На один уровень вверх';
+  strCreateNewFolderHint    = 'Создание новой папки';
+  strClose                  = 'Закрыть';
+  strLookIn                 = '&Папка:';
+  strFileName               = '&Имя файла:';
+  strFilesOfType            = '&Тип файлов:';
+  strOpenButton             = '&Открыть';
+  strCancelButton           = 'Отмена';
+  strHelpButton             = '&Справка';
+  strOpenAsReadOnly         = 'Только &чтение';
+  strOKButton               = 'ОК';
+  strViewLargeIconsMenu     = '&Крупные значки';
+  strViewSmallIconsMenu     = '&Мелкие значки';
+  strViewListMenu           = 'Спис&ок';
+  strViewDetailsMenu        = '&Таблица';
+  strEditCutMenu            = '&Вырезать';
+  strEditCopyMenu           = '&Копировать';
+  strEditPasteMenu          = 'Вст&авить';
+  strDeleteMenu             = '&Удалить';
+  strRenameMenu             = 'Переи&меновать';
+  strPropertiesMenu         = 'Сво&йства';
+  strViewMenu               = '&Вид';
+  strArrangeIconsMenu       = '&Упорядочить значки';
+  strLineUpIconsMenu        = 'В&ыстроить значки';
+  strPasteShortcutMenu      = 'Встав&ить';
+  strSelectAllMenu          = 'Выделить в&се';
+  strInvertSelectionMenu    = 'Обратить в&ыделение';
+  strNewMenu                = 'Созда&ть';
+  strNewFolderMenu          = '&Папка';
+  strNewShortcutMenu        = '&Ярлык';
+  strCreateFolder           = 'Создание папки';
+  strCreateFolderContext    = 'Создание новой пустой папки.';
+  strBytes                  = '%s байт';
+  strFilesizeKB             = '%s Кбайт';
+  strFilesizeMB             = '%s Мбайт';
+  strFilesizeGB             = '%s Гбайт';
+  strFilesizeTB             = '%s Тбайт';
+  strFilesizeX_YBytes       = '%1 (%2 байт)';
+  strYouMustTypeFilename    = 'Следует ввести имя файла.';
+  strFolderDoesNotExist     = 'Папка ''%1'' не существует.'#10''#10'Проверьте указанное имя и повторите попытку.';
+  strNewFolder              = '--------';
+  strNewShortcut            = 'Новый ярлык';
+  strNewDocFilePrefix       = '';
+  strNewPopupContext        = 'Команды для создания новых объектов.';
+  strNewFolderContext       = 'Создание новой пустой папки.';
+  strNewShortcutContext     = 'Создание нового несвязанного ярлыка.';
+  strCannotCreateFolder     = 'Не удается создать папку %2. %1';
+  strUnableToCreateFolder   = 'Не удается создать папку ''%2'''#10''#10'%1';
+  strUnableToCreateFile     = 'Не удается создать файл ''%2'''#10''#10'%1';
+  strColumnName             = 'Имя';
+  strColumnInFolder         = 'Папка';
+  strColumnSize             = 'Размер';
+  strColumnType             = 'Тип';
+  strColumnModified         = 'Изменен';
+  strColumnStatus           = 'Состояние';
+  strColumnSynchCopyIn      = 'Оригинал в';
+  strColumnComment          = 'Заметки';
+  strColumnLocation         = 'Размещение';
+  strColumnOriginalLocation = 'Исходное размещение';
+  strColumnDateDeleted      = 'Дата удаления';
+  strColumnAttributes       = 'Атрибуты';
+  strAttributesChars        = 'RHSAC';
+  strSystemFolder           = 'Системная папка';
+  strDeleteHint             = 'Удалить';
+  strPropertiesHint         = 'Свойства';
+  strCutHint                = 'Удалить в буфер';
+  strCopyHint               = 'Копировать в буфер';
+  strPasteHint              = 'Вставить из буфера';
+  strUndoHint               = 'Отменить';
+  strDeleteContext          = 'Удаление выделенных объектов.';
+  strPropertiesContext      = 'Отображение свойств выделенных объектов.';
+  strCutContext             = 'Удаление выделенных объектов в буфер обмена.';
+  strCopyContext            = 'Копирование выделенных объектов в буфер обмена.';
+  strPasteContext           = 'Вставка объектов из буфера обмена.';
+  strSendToContext          = 'Перечень адресов и способов отправки выделенного файла или папки.';
+  strNewContext             = 'Команды для создания новых объектов.';
+  strViewContext            = 'Команды настройки окна.';
+  strViewLargeIconsContext  = 'Отображение объектов с использованием крупных значков.';
+  strViewSmallIconsContext  = 'Отображение объектов с использованием мелких значков.';
+  strViewListContext        = 'Отображение объектов в виде списка.';
+  strViewDetailsContext     = 'Отображение объектов в виде таблицы с подробными сведениями.';
+  strViewLargeIconsHint     = 'Крупные значки';
+  strViewSmallIconsHint     = 'Мелкие значки';
+  strViewListHint           = 'Список';
+  strViewDetailsHint        = 'Таблица';
+  strBrowseForFolder        = 'Обзор папок';
+  strShowTreeHint           = 'Show Tree (F12)';
+  strShKey_SelectAll        = 'Ctrl+A';
+  strShKey_Delete           = 'Del';
+  strShKey_Copy             = 'Ctrl+C';
+  strShKey_Cut              = 'Ctrl+X';
+  strShKey_Paste            = 'Ctrl+V';
+  strShKey_Refresh          = 'F5';
+  strShKey_Edit             = 'F2'; 

+ 114 - 115
Source/Languages/Spanish/ResStrings.inc

@@ -1,116 +1,115 @@
 resourcestring
-  SFileExistsReplace      = 'Ya existe el archivo %s.'#10'¿Desea reemplazarlo?';
-  SSaveIn                 = 'Guardar &en:';
-  SSaveButton             = '&Guardar';
-  SSaveAsCaption          = 'Guardar como';
-  SOpenCaption            = 'Abrir';
-  SSaveAsType             = 'Guardar como &tipo:';
-  SDriveDoesNotExist      = 'La unidad %c: no existe.'#10'Compruebe que el nombre de la unidad sea correcto.';
-  SCannotReadDrive        = 'Windows NT no puede leer la unidad %c. Compruebe que la puerta de la unidad esté cerrada y que el disquete tenga formato y esté libre de errores.';
-  SRemovableDiskHasChanged = 'Se esperaba otro disco en la unidad %c. Introduzca el disquete adecuado.';
-  SFileNotFound           = '%s'#10'No se ha encontrado el archivo.'#10'Compruebe que la ruta y el nombre del archivo sean correctos.';
-  SPathDoesNotExist       = '%s'#10'Esta ruta de acceso no existe.'#10'Compruebe que se haya especificado la ruta de acceso correcta.';
-  SFilenameIsInvalid      = '%s'#10'El nombre del archivo no es válido.';
-  SFileAlreadyInUse       = '%s'#10'Este archivo ya está en uso.'#10'Utilice un nuevo nombre de archivo o cierre el archivo que la otra aplicación está utilizando.';
-  SFileCannotBeAccessed   = '%s'#10'No se puede acceder a este archivo.'#10'Compruebe los privilegios de seguridad en la unidad de red.';
-  SExistsAndIsReadOnly    = '%s'#10'Este archivo tiene el atributo de sólo lectura.'#10'Utilice un nombre diferente.';
-  SFilenameIsReservedDeviceName = '%s'#10'El nombre de este archivo es un nombre reservado para un dispositivo.'#10'Utilice un nombre diferente.';
-  SDiskIsWriteProtected   = 'El disquete %c: está protegido contra escritura.'#10'No se puede guardar un archivo en un disquete protegido contra escritura.';
-  SInsufficientDiskSpace  = 'Este directorio del disco %c está lleno.'#10'Elija otro directorio o disco.';
-  SDoesNotExistCreate     = '%s'#10'Este archivo no existe.'#10''#10'¿Desea crear el archivo?';
-  SThereCanBeOnlyOne      = 'Más de un archivo tiene el nombre ''%s''.'#10''#10'Elija uno de la lista.';
-  SUpOneLevelHint         = 'Subir un nivel';
-  SCreateNewFolderHint    = 'Crear nueva carpeta';
-  SClose                  = 'Cerrar';
-  SLookIn                 = 'Buscar &en:';
-  SFileName               = '&Nombre del archivo:';
-  SFilesOfType            = 'Archivos de &tipo:';
-  SOpenButton             = '&Abrir';
-  SCancelButton           = 'Cancelar';
-  SHelpButton             = 'Ay&uda';
-  SOpenAsReadOnly         = 'Ab&rir como de sólo lectura';
-  SOKButton               = 'Aceptar';
-  SViewLargeIconsMenu     = 'Iconos &grandes';
-  SViewSmallIconsMenu     = 'Ico&nos pequeños';
-  SViewListMenu           = '&Lista';
-  SViewDetailsMenu        = '&Detalles';
-  SEditCutMenu            = 'Cor&tar';
-  SEditCopyMenu           = '&Copiar';
-  SEditPasteMenu          = 'Pega&r';
-  SDeleteMenu             = '&Eliminar';
-  SRenameMenu             = 'Ca&mbiar nombre';
-  SPropertiesMenu         = '&Propiedades';
-  SViewMenu               = '&Ver';
-  SArrangeIconsMenu       = 'Organi&zar iconos';
-  SLineUpIconsMenu        = 'Alin&ear iconos';
-  SPasteShortcutMenu      = 'Pega&r';
-  SSelectAllMenu          = 'Seleccion&ar todo';
-  SInvertSelectionMenu    = '&Invertir selección';
-  SNewMenu                = 'Nue&vo';
-  SNewFolderMenu          = '&Carpeta';
-  SNewShortcutMenu        = 'Acce&so directo';
-  SCreateFolder           = 'Crear carpeta';
-  SCreateFolderContext    = 'Crea una nueva carpeta vacía.';
-  SBytes                  = '%s bytes';
-  SFilesizeKB             = '%sKB';
-  SFilesizeMB             = '%sMB';
-  SFilesizeGB             = '%sGB';
-  SFilesizeTB             = '%sTB';
-  SFilesizeX_YBytes       = '%1 (%2 bytes)';
-  SYouMustTypeFilename    = 'Debe escribir un nombre de archivo.';
-  SFolderDoesNotExist     = 'La carpeta ''%1'' no existe.'#10''#10'Compruebe el nombre de la carpeta y vuelva a intentarlo.';
-  SNewFolder              = 'Nueva carpeta';
-  SNewShortcut            = 'Nuevo acceso directo';
-  SNewDocFilePrefix       = 'Nuevo ';
-  SNewPopupContext        = 'Contiene comandos para crear nuevos elementos.';
-  SNewFolderContext       = 'Crea una nueva carpeta vacía.';
-  SNewShortcutContext     = 'Crea un nuevo acceso directo vacío.';
-  SCannotCreateFolder     = 'No se puede crear la carpeta %2: %1';
-  SUnableToCreateFolder   = 'No se ha podido crear la carpeta ''%2'''#10''#10'%1';
-  SUnableToCreateFile     = 'No se puede crear el archivo ''%2'''#10''#10'%1';
-  SColumnName             = 'Nombre';
-  SColumnInFolder         = 'En carpeta';
-  SColumnSize             = 'Tamaño';
-  SColumnType             = 'Tipo';
-  SColumnModified         = 'Modificado';
-  SColumnStatus           = 'Estado';
-  SColumnSynchCopyIn      = 'Copia de sincronización en';
-  SColumnComment          = 'Comentario';
-  SColumnLocation         = 'Ubicación';
-  SColumnOriginalLocation = 'Ubicación original';
-  SColumnDateDeleted      = 'Fecha eliminación';
-  SColumnAttributes       = 'Atributos';
-  SAttributesChars        = 'RHSAC';
-  SSystemFolder           = 'Carpeta del sistema';
-  SDeleteHint             = 'Eliminar';
-  SPropertiesHint         = 'Propiedades';
-  SCutHint                = 'Cortar';
-  SCopyHint               = 'Copiar';
-  SPasteHint              = 'Pegar';
-  SUndoHint               = 'Deshacer';
-  SDeleteContext          = 'Elimina los elementos seleccionados.';
-  SPropertiesContext      = 'Muestra las propiedades de los elementos seleccionados.';
-  SCutContext             = 'Elimina los elementos seleccionados y los copia en el Portapapeles.';
-  SCopyContext            = 'Copia los elementos seleccionados en el Portapapeles. Utilice Pegar para colocarlos en la nueva ubicación.';
-  SPasteContext           = 'Inserta en la ubicación seleccionada los elementos que ha copiado o cortado.';
-  SSendToContext          = 'Contiene elementos a los que puede copiar o enviar  la carpeta o archivo seleccionado.';
-  SNewContext             = 'Contiene comandos para crear nuevos elementos.';
-  SViewContext            = 'Contiene comandos para personalizar esta ventana.';
-  SViewLargeIconsContext  = 'Muestra los elementos utilizando iconos grandes.';
-  SViewSmallIconsContext  = 'Muestra los elementos utilizando iconos pequeños.';
-  SViewListContext        = 'Muestra los elementos en una lista.';
-  SViewDetailsContext     = 'Muestra información acerca de cada elemento en la ventana.';
-  SViewLargeIconsHint     = 'Iconos grandes';
-  SViewSmallIconsHint     = 'Iconos pequeños';
-  SViewListHint           = 'Lista';
-  SViewDetailsHint        = 'Detalles';
-  SBrowseForFolder        = 'Examinar para encontrar carpeta';
-  SShowTreeHint           = 'Muestra Arbol (F12)';
-  SShKey_SelectAll        = 'Ctrl+A';
-  SShKey_Delete           = 'Del';
-  SShKey_Copy             = 'Ctrl+C';
-  SShKey_Cut              = 'Ctrl+X';
-  SShKey_Paste            = 'Ctrl+V';
-  SShKey_Refresh          = 'F5';
-  SShKey_Edit             = 'F2';
-  SDialogFontName         = 'MS Sans Serif';
+  strFileExistsReplace      = 'Ya existe el archivo %s.'#10'¿Desea reemplazarlo?';
+  strSaveIn                 = 'Guardar &en:';
+  strSaveButton             = '&Guardar';
+  strSaveAsCaption          = 'Guardar como';
+  strOpenCaption            = 'Abrir';
+  strSaveAsType             = 'Guardar como &tipo:';
+  strDriveDoesNotExist      = 'La unidad %c: no existe.'#10'Compruebe que el nombre de la unidad sea correcto.';
+  strCannotReadDrive        = 'Windows NT no puede leer la unidad %c. Compruebe que la puerta de la unidad esté cerrada y que el disquete tenga formato y esté libre de errores.';
+  strRemovableDiskHasChanged = 'Se esperaba otro disco en la unidad %c. Introduzca el disquete adecuado.';
+  strFileNotFound           = '%s'#10'No se ha encontrado el archivo.'#10'Compruebe que la ruta y el nombre del archivo sean correctos.';
+  strPathDoesNotExist       = '%s'#10'Esta ruta de acceso no existe.'#10'Compruebe que se haya especificado la ruta de acceso correcta.';
+  strFilenameIsInvalid      = '%s'#10'El nombre del archivo no es válido.';
+  strFileAlreadyInUse       = '%s'#10'Este archivo ya está en uso.'#10'Utilice un nuevo nombre de archivo o cierre el archivo que la otra aplicación está utilizando.';
+  strFileCannotBeAccessed   = '%s'#10'No se puede acceder a este archivo.'#10'Compruebe los privilegios de seguridad en la unidad de red.';
+  strExistsAndIsReadOnly    = '%s'#10'Este archivo tiene el atributo de sólo lectura.'#10'Utilice un nombre diferente.';
+  strFilenameIsReservedDeviceName = '%s'#10'El nombre de este archivo es un nombre reservado para un dispositivo.'#10'Utilice un nombre diferente.';
+  strDiskIsWriteProtected   = 'El disquete %c: está protegido contra escritura.'#10'No se puede guardar un archivo en un disquete protegido contra escritura.';
+  strInsufficientDiskSpace  = 'Este directorio del disco %c está lleno.'#10'Elija otro directorio o disco.';
+  strDoesNotExistCreate     = '%s'#10'Este archivo no existe.'#10''#10'¿Desea crear el archivo?';
+  strThereCanBeOnlyOne      = 'Más de un archivo tiene el nombre ''%s''.'#10''#10'Elija uno de la lista.';
+  strUpOneLevelHint         = 'Subir un nivel';
+  strCreateNewFolderHint    = 'Crear nueva carpeta';
+  strClose                  = 'Cerrar';
+  strLookIn                 = 'Buscar &en:';
+  strFileName               = '&Nombre del archivo:';
+  strFilesOfType            = 'Archivos de &tipo:';
+  strOpenButton             = '&Abrir';
+  strCancelButton           = 'Cancelar';
+  strHelpButton             = 'Ay&uda';
+  strOpenAsReadOnly         = 'Ab&rir como de sólo lectura';
+  strOKButton               = 'Aceptar';
+  strViewLargeIconsMenu     = 'Iconos &grandes';
+  strViewSmallIconsMenu     = 'Ico&nos pequeños';
+  strViewListMenu           = '&Lista';
+  strViewDetailsMenu        = '&Detalles';
+  strEditCutMenu            = 'Cor&tar';
+  strEditCopyMenu           = '&Copiar';
+  strEditPasteMenu          = 'Pega&r';
+  strDeleteMenu             = '&Eliminar';
+  strRenameMenu             = 'Ca&mbiar nombre';
+  strPropertiesMenu         = '&Propiedades';
+  strViewMenu               = '&Ver';
+  strArrangeIconsMenu       = 'Organi&zar iconos';
+  strLineUpIconsMenu        = 'Alin&ear iconos';
+  strPasteShortcutMenu      = 'Pega&r';
+  strSelectAllMenu          = 'Seleccion&ar todo';
+  strInvertSelectionMenu    = '&Invertir selección';
+  strNewMenu                = 'Nue&vo';
+  strNewFolderMenu          = '&Carpeta';
+  strNewShortcutMenu        = 'Acce&so directo';
+  strCreateFolder           = 'Crear carpeta';
+  strCreateFolderContext    = 'Crea una nueva carpeta vacía.';
+  strBytes                  = '%s bytes';
+  strFilesizeKB             = '%sKB';
+  strFilesizeMB             = '%sMB';
+  strFilesizeGB             = '%sGB';
+  strFilesizeTB             = '%sTB';
+  strFilesizeX_YBytes       = '%1 (%2 bytes)';
+  strYouMustTypeFilename    = 'Debe escribir un nombre de archivo.';
+  strFolderDoesNotExist     = 'La carpeta ''%1'' no existe.'#10''#10'Compruebe el nombre de la carpeta y vuelva a intentarlo.';
+  strNewFolder              = 'Nueva carpeta';
+  strNewShortcut            = 'Nuevo acceso directo';
+  strNewDocFilePrefix       = 'Nuevo ';
+  strNewPopupContext        = 'Contiene comandos para crear nuevos elementos.';
+  strNewFolderContext       = 'Crea una nueva carpeta vacía.';
+  strNewShortcutContext     = 'Crea un nuevo acceso directo vacío.';
+  strCannotCreateFolder     = 'No se puede crear la carpeta %2: %1';
+  strUnableToCreateFolder   = 'No se ha podido crear la carpeta ''%2'''#10''#10'%1';
+  strUnableToCreateFile     = 'No se puede crear el archivo ''%2'''#10''#10'%1';
+  strColumnName             = 'Nombre';
+  strColumnInFolder         = 'En carpeta';
+  strColumnSize             = 'Tamaño';
+  strColumnType             = 'Tipo';
+  strColumnModified         = 'Modificado';
+  strColumnStatus           = 'Estado';
+  strColumnSynchCopyIn      = 'Copia de sincronización en';
+  strColumnComment          = 'Comentario';
+  strColumnLocation         = 'Ubicación';
+  strColumnOriginalLocation = 'Ubicación original';
+  strColumnDateDeleted      = 'Fecha eliminación';
+  strColumnAttributes       = 'Atributos';
+  strAttributesChars        = 'RHSAC';
+  strSystemFolder           = 'Carpeta del sistema';
+  strDeleteHint             = 'Eliminar';
+  strPropertiesHint         = 'Propiedades';
+  strCutHint                = 'Cortar';
+  strCopyHint               = 'Copiar';
+  strPasteHint              = 'Pegar';
+  strUndoHint               = 'Deshacer';
+  strDeleteContext          = 'Elimina los elementos seleccionados.';
+  strPropertiesContext      = 'Muestra las propiedades de los elementos seleccionados.';
+  strCutContext             = 'Elimina los elementos seleccionados y los copia en el Portapapeles.';
+  strCopyContext            = 'Copia los elementos seleccionados en el Portapapeles. Utilice Pegar para colocarlos en la nueva ubicación.';
+  strPasteContext           = 'Inserta en la ubicación seleccionada los elementos que ha copiado o cortado.';
+  strSendToContext          = 'Contiene elementos a los que puede copiar o enviar  la carpeta o archivo seleccionado.';
+  strNewContext             = 'Contiene comandos para crear nuevos elementos.';
+  strViewContext            = 'Contiene comandos para personalizar esta ventana.';
+  strViewLargeIconsContext  = 'Muestra los elementos utilizando iconos grandes.';
+  strViewSmallIconsContext  = 'Muestra los elementos utilizando iconos pequeños.';
+  strViewListContext        = 'Muestra los elementos en una lista.';
+  strViewDetailsContext     = 'Muestra información acerca de cada elemento en la ventana.';
+  strViewLargeIconsHint     = 'Iconos grandes';
+  strViewSmallIconsHint     = 'Iconos pequeños';
+  strViewListHint           = 'Lista';
+  strViewDetailsHint        = 'Detalles';
+  strBrowseForFolder        = 'Examinar para encontrar carpeta';
+  strShowTreeHint           = 'Muestra Arbol (F12)';
+  strShKey_SelectAll        = 'Ctrl+A';
+  strShKey_Delete           = 'Del';
+  strShKey_Copy             = 'Ctrl+C';
+  strShKey_Cut              = 'Ctrl+X';
+  strShKey_Paste            = 'Ctrl+V';
+  strShKey_Refresh          = 'F5';
+  strShKey_Edit             = 'F2';

+ 0 - 0
external/PhysXwrap.dll → external/PhysXwrap32.dll


BIN
external/PhysXwrap64.dll


+ 21 - 14
external/SetupDLLs.bat

@@ -1,51 +1,57 @@
 @echo off
 echo Copying DLLs to the Windows System32 and SysWOW64 directories
 echo Copying nVidia CG DLLs
-rem win64
-copy cg.dll %SystemRoot%\System32\
-copy cgGL.dll %SystemRoot%\System32\
 rem win32
 copy cg.dll %SystemRoot%\SysWOW64\
 copy cgGL.dll %SystemRoot%\SysWOW64\
+rem win64
+copy cg.dll %SystemRoot%\System32\
+copy cgGL.dll %SystemRoot%\System32\
 
+echo.
 echo Copying SDL2 DLLs
 rem win32
 copy sdl2.dll %SystemRoot%\SysWOW64\sdl2.dll
 rem win64
 copy sdl264.dll %SystemRoot%\System32\sdl264.dll
 
+echo.
 echo Copying Sound DLLs
 rem win32
-copy bass.dll %SystemRoot%\SysWOW64\
-copy fmod.dll %SystemRoot%\SysWOW64\
+copy bass32.dll %SystemRoot%\SysWOW64\
+copy fmod32.dll %SystemRoot%\SysWOW64\
 copy OpenAL32.dll %SystemRoot%\SysWOW64\
 rem win64
 copy bass64.dll %SystemRoot%\System32\
-copy fmod.dll %SystemRoot%\System32\
+copy fmod64.dll %SystemRoot%\System32\
 copy OpenAL64.dll %SystemRoot%\System32\
 
+echo.
 echo Copying ODE DLLs
 rem win32
-copy ode_single.dll %SystemRoot%\SysWOW64\
-copy ode_double.dll %SystemRoot%\SysWOW64\
+copy ode32s.dll %SystemRoot%\SysWOW64\
+copy ode32d.dll %SystemRoot%\SysWOW64\
 rem win64
-copy ode_single64.dll %SystemRoot%\System32\
-copy ode_double64.dll %SystemRoot%\System32\
+copy ode64s.dll %SystemRoot%\System32\
+copy ode64d.dll %SystemRoot%\System32\
 
+echo.
 echo Copying Newton DLLs
 rem win32
-copy newton.dll %SystemRoot%\SysWOW64\
-copy dJointLibrary.dll %SystemRoot%\SysWOW64\
+copy newton32.dll %SystemRoot%\SysWOW64\
+copy dJointLibrary32.dll %SystemRoot%\SysWOW64\
 rem win64
 copy newton64.dll %SystemRoot%\System32\
 copy dJointLibrary64.dll %SystemRoot%\System32\
 
+echo.
 echo Copying nVidia PhysX DLLs
 rem win32
-copy PhysXwrap.dll %SystemRoot%\SysWOW64\
+copy PhysXwrap32.dll %SystemRoot%\SysWOW64\
 rem win64
-copy PhysXwrap.dll %SystemRoot%\System32\
+copy PhysXwrap64.dll %SystemRoot%\System32\
 
+echo.
 echo Copying CUDA and zlib1 DLLs
 rem win32
 copy cutil32.dll %SystemRoot%\SysWOW64\
@@ -53,3 +59,4 @@ copy zlib1.dll %SystemRoot%\SysWOW64\
 rem win64
 copy cutil64.dll %SystemRoot%\System32\
 copy zlib1.dll %SystemRoot%\System32\
+pause

+ 0 - 0
external/dJointLibrary.dll → external/dJointLibrary32.dll