Changeset 68 for trunk/IDE/UCore.pas


Ignore:
Timestamp:
Jul 30, 2012, 3:52:56 PM (12 years ago)
Author:
chronos
Message:
  • Added: Addon modules support.
  • Modified: Restored usage of URegistry unit.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IDE/UCore.pas

    r66 r68  
    77uses
    88  Classes, SysUtils, FileUtil, ULastOpenedList, UProject, UApplicationInfo,
    9   UCompiler, UGeneralRegistry, UDebugLog, UCoolTranslator, UTarget;
     9  UCompiler, URegistry, Registry, UDebugLog, UCoolTranslator, UTarget,
     10  USourceCode, UModule;
    1011
    1112type
     
    1314
    1415  TCustomCompiler = class(TCompiler)
     16  private
     17    procedure InitSystemModule;
     18  public
    1519    StartTime: TDateTime;
    1620    SourceFiles: TSourceFileManager;
     
    1822    procedure Init; override;
    1923    function ElapsedTime: TDateTime;
    20     procedure LoadFromRegistry(Root: Integer; const Key: string);
    21     procedure SaveToRegistry(Root: Integer; const Key: string);
     24    procedure LoadFromRegistry(Root: HKEY; const Key: string);
     25    procedure SaveToRegistry(Root: HKEY; const Key: string);
    2226    constructor Create; override;
    2327    destructor Destroy; override;
     
    4549    TargetProject: TProject;
    4650    Compiler: TCustomCompiler;
     51    ModuleManager: TModuleManager;
    4752    procedure ProjectTemplatesInit;
    4853    procedure ProjectOpen(FileName: string);
    4954    procedure ProjectNew;
    5055    procedure CompilerDebugLog(Text: string);
    51     procedure LoadFromRegistry(Root: Integer; const Key: string);
    52     procedure SaveToRegistry(Root: Integer; const Key: string);
     56    procedure LoadFromRegistry(Root: HKEY; const Key: string);
     57    procedure SaveToRegistry(Root: HKEY; const Key: string);
    5358  end;
    5459
     
    100105  ReopenLastOpenedFile := True;
    101106  LogParsing := False;
     107
     108  ModuleManager := TModuleManager.Create;
    102109end;
    103110
    104111procedure TCore.DataModuleDestroy(Sender: TObject);
    105112begin
     113  ModuleManager.Free;
    106114  ProjectTemplates.Free;
    107115  LastOpenedFiles.Free;
     
    142150end;
    143151
    144 procedure TCore.LoadFromRegistry(Root: Integer; const Key: string);
    145 begin
    146   with TGeneralRegistry.Create(nil) do
     152procedure TCore.LoadFromRegistry(Root: HKEY; const Key: string);
     153begin
     154  with TRegistryEx.Create do
    147155    try
    148       CurrentRoot := Root;
     156      RootKey := Root;
    149157      OpenKey(Key, True);
    150158      if ValueExists('ReopenLastOpenedFile') then
     
    163171      Free;
    164172    end;
    165   LastOpenedFiles.LoadFromRegistry(Root, Key + '\LastOpenedFiles');
     173  LastOpenedFiles.LoadFromRegistry(Root, Key + '\LastOpenedFiles'); //Root, Key + '\LastOpenedFiles');
    166174  Compiler.LoadFromRegistry(Root, Key + '\Compiler');
    167175  FormMain.LoadFromRegistry(Root, Key);
    168176end;
    169177
    170 procedure TCore.SaveToRegistry(Root: Integer; const Key: string);
    171 begin
    172   with TGeneralRegistry.Create(nil) do
     178procedure TCore.SaveToRegistry(Root: HKEY; const Key: string);
     179begin
     180  with TRegistryEx.Create do
    173181    try
    174       CurrentRoot := Root;
     182      RootKey := Root;
    175183      OpenKey(Key, True);
    176184      WriteBool('ReopenLastOpenedFile', ReopenLastOpenedFile);
     
    192200{ TCustomCompiler }
    193201
     202procedure TCustomCompiler.InitSystemModule;
     203var
     204  SystemModule: TSourceModule;
     205begin
     206  SystemModule := TSourceModule.Create;
     207  with SystemModule do begin
     208    Name := 'System';
     209    Internal := True;
     210    with TType(Body.Types.AddNew(TType.Create)) do begin
     211      Name := 'Byte';
     212      Size := 1;
     213      Internal := True;
     214    end;
     215    with TType(Body.Types.AddNew(TType.Create)) do begin
     216      Name := 'ShortInt';
     217      Size := 1;
     218      Internal := True;
     219    end;
     220    with TType(Body.Types.AddNew(TType.Create)) do begin
     221      Name := 'Word';
     222      Size := 2;
     223      Internal := True;
     224    end;
     225    with TType(Body.Types.AddNew(TType.Create)) do begin
     226      Name := 'SmallInt';
     227      Size := 2;
     228      Internal := True;
     229    end;
     230    with TType(Body.Types.AddNew(TType.Create)) do begin
     231      Name := 'Cardinal';
     232      Size := 4;
     233      Internal := True;
     234    end;
     235    with TType(Body.Types.AddNew(TType.Create)) do begin
     236      Name := 'Integer';
     237      Size := 4;
     238      Internal := True;
     239    end;
     240    with TType(Body.Types.AddNew(TType.Create)) do begin
     241      Name := 'UInt64';
     242      Size := 8;
     243      Internal := True;
     244    end;
     245    with TType(Body.Types.AddNew(TType.Create)) do begin
     246      Name := 'Int64';
     247      Size := 8;
     248      Internal := True;
     249    end;
     250    with TFunction(Body.Functions.AddNew(TFunction.Create)) do begin
     251      Name := 'WriteLn';
     252      Internal := True;
     253    end;
     254    ParentProgram := AbstractCode;
     255  end;
     256  AbstractCode.Modules.Add(SystemModule);
     257end;
     258
    194259procedure TCustomCompiler.Init;
    195260begin
    196261  inherited;
    197262  StartTime := Now;
     263  InitSystemModule;
    198264end;
    199265
     
    203269end;
    204270
    205 procedure TCustomCompiler.LoadFromRegistry(Root: Integer; const Key: string);
     271procedure TCustomCompiler.LoadFromRegistry(Root: HKEY; const Key: string);
    206272var
    207273  I: Integer;
    208274begin
    209   with TGeneralRegistry.Create(nil) do
     275  with TRegistryEx.Create do
    210276    try
    211       CurrentRoot := Root;
     277      RootKey := Root;
    212278      for I := 0 to Targets.Count - 1 do
    213279      with TTarget(Targets[I]) do begin
     
    225291end;
    226292
    227 procedure TCustomCompiler.SaveToRegistry(Root: Integer; const Key: string);
     293procedure TCustomCompiler.SaveToRegistry(Root: HKEY; const Key: string);
    228294var
    229295  I: Integer;
    230296begin
    231   with TGeneralRegistry.Create(nil) do
     297  with TRegistryEx.Create do
    232298    try
    233       CurrentRoot := Root;
     299      RootKey := Root;
    234300      for I := 0 to Targets.Count - 1 do
    235301      with TTarget(Targets[I]) do begin
Note: See TracChangeset for help on using the changeset viewer.