Changeset 24


Ignore:
Timestamp:
Nov 10, 2010, 9:42:27 AM (14 years ago)
Author:
george
Message:
  • Added: Parsing type parameters.
  • Fixed: Saving edited files.
Location:
trunk
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Compiler/Analyze/UAnalyzerPascal.pas

    r21 r24  
    5050    function ParseType(TypeList: TTypeList; var NewType: TType; ExpectName: Boolean = True;
    5151      AssignSymbol: string = '='; ForwardDeclaration: Boolean = False): Boolean;
    52     function ParseTypeSubType(TypeList: TTypeList; var NewType: TType; Name: string;
     52    function ParseTypeParameters(var NewType: TType): Boolean;
     53    function ParseTypeSubType(var NewType: TType;
    5354      ExpectName: Boolean; ForwardDeclaration: Boolean): Boolean;
    54     function ParseTypeBase(TypeList: TTypeList; var NewType: TType; Name: string): Boolean;
    55     function ParseTypePointer(TypeList: TTypeList; var NewType: TType; Name: string): Boolean;
    56     function ParseTypeEnumeration(TypeList: TTypeList; var NewType: TType; Name: string): Boolean;
    57     function ParseTypeRecord(TypeList: TTypeList; var NewType: TType; Name: string): Boolean;
    58     function ParseTypeClass(TypeList: TTypeList; var NewType: TType; Name: string): Boolean;
    59     function ParseTypeArray(TypeList: TTypeList; var NewType: TType; Name: string): Boolean;
    60     function ParseTypeSubRange(TypeList: TTypeList; var NewType: TType; Name: string): Boolean;
     55    function ParseTypeBase(var NewType: TType): Boolean;
     56    function ParseTypePointer(var NewType: TType): Boolean;
     57    function ParseTypeEnumeration(var NewType: TType): Boolean;
     58    function ParseTypeRecord(var NewType: TType): Boolean;
     59    function ParseTypeClass(var NewType: TType): Boolean;
     60    function ParseTypeArray(var NewType: TType): Boolean;
     61    function ParseTypeSubRange(var NewType: TType): Boolean;
    6162    constructor Create;
    6263    destructor Destroy; override;
     
    10241025function TAnalyzerPascal.ParseType(TypeList: TTypeList; var NewType: TType; ExpectName: Boolean = True;
    10251026  AssignSymbol: string = '='; ForwardDeclaration: Boolean = False): Boolean;
    1026 var
    1027   Name: string;
    1028   TypeName: string;
    1029 begin
    1030   NewType := nil;
     1027begin
     1028  NewType := TType.Create;
     1029  NewType.Parent := TypeList;
    10311030  //with SourceCode do
    10321031  begin
    10331032    if ExpectName then begin
    1034       Name := ReadToken;
     1033      NewType.Name := ReadToken;
     1034      if ParseTypeParameters(NewType) then ;
    10351035      Expect(AssignSymbol);
    10361036    end;
    10371037
    10381038    Result := True;
    1039     if not ParseTypeEnumeration(TypeList, NewType, Name) then
    1040     if not ParseTypeRecord(TypeList, NewType, Name) then
    1041     if not ParseTypeClass(TypeList, NewType, Name) then
    1042     if not ParseTypeArray(TypeList, NewType, Name) then
    1043     if not ParseTypePointer(TypeList, NewType, Name) then
    1044     if not ParseTypeBase(TypeList, NewType, Name) then
    1045     if not ParseTypeSubType(TypeList, NewType, Name, ExpectName, ForwardDeclaration) then
    1046     if not ParseTypeSubRange(TypeList, NewType, Name) then begin
     1039    if not ParseTypeEnumeration(NewType) then
     1040    if not ParseTypeRecord(NewType) then
     1041    if not ParseTypeClass(NewType) then
     1042    if not ParseTypeArray(NewType) then
     1043    if not ParseTypePointer(NewType) then
     1044    if not ParseTypeBase(NewType) then
     1045    if not ParseTypeSubType(NewType, ExpectName, ForwardDeclaration) then
     1046    if not ParseTypeSubRange(NewType) then begin
    10471047      ErrorMessage(SInvalidConstruction, [NextToken]);
     1048      NewType.Free;
    10481049      Result := False;
    10491050    end;
     
    10511052end;
    10521053
    1053 function TAnalyzerPascal.ParseTypeSubType(TypeList: TTypeList; var NewType: TType; Name: string;
     1054function TAnalyzerPascal.ParseTypeParameters(var NewType: TType): Boolean;
     1055var
     1056  NewType2: TType;
     1057begin
     1058  if NextToken = '<' then begin
     1059    Expect('<');
     1060    while ((NextToken = ',') or (NewType.Parameters.Count = 0)) and (NextTokenType <> ttEndOfFile) do begin
     1061      if NewType.Parameters.Count > 0 then Expect(',');
     1062      NewType2 := TType.Create;
     1063      NewType2.Name := ReadToken;
     1064      NewType2.Parent := NewType.Parent;
     1065      NewType.Parameters.Add(NewType2);
     1066    end;
     1067    Expect('>');
     1068    Result := True;
     1069  end else Result := False;
     1070end;
     1071
     1072function TAnalyzerPascal.ParseTypeSubType(var NewType: TType;
    10541073  ExpectName: Boolean; ForwardDeclaration: Boolean): Boolean;
    10551074var
    10561075  TypeName: string;
     1076  TempType: TType;
    10571077begin
    10581078  Result := False;
    1059   NewType := nil;
    10601079  // Use existed type
    10611080  if NextTokenType = ttIdentifier then begin
    10621081    TypeName := ReadToken;
    10631082    if ExpectName then begin
    1064       NewType := TType.Create;
    1065       NewType.Parent := TypeList;
    1066       NewType.Name := Name;
    1067       NewType.UsedType := TypeList.Search(TypeName);
     1083      NewType.UsedType := NewType.Parent.Search(TypeName);
    10681084      Result := True;
    10691085      if not Assigned(NewType.UsedType) then
    10701086        ErrorMessage(SUndefinedType, [TypeName], -1);
    10711087    end else begin
    1072       NewType := TypeList.Search(TypeName);
     1088      NewType := NewType.Parent.Search(TypeName);
    10731089      if not Assigned(TType(NewType)) then begin
    10741090        if ForwardDeclaration then begin
    10751091          // ForwardDeclaration
    1076           NewType := TType.Create;
    1077           NewType.Parent := TypeList;
    10781092          NewType.Name := TypeName;
    10791093          NewType.UsedType := nil;
     
    10861100end;
    10871101
    1088 function TAnalyzerPascal.ParseTypeBase(TypeList: TTypeList; var NewType: TType; Name: string): Boolean;
     1102function TAnalyzerPascal.ParseTypeBase(var NewType: TType): Boolean;
     1103var
     1104  TempType: TType;
    10891105begin
    10901106  // Buildin base type construction
    10911107  if NextToken = 'type' then begin
    10921108    Expect('type');
     1109    TempType := NewType;
    10931110    NewType := TTypeInherited.Create;
    1094     NewType.Parent := TypeList;
    1095     NewType.Name := Name;
     1111    NewType.Assign(TempType);
     1112    TempType.Free;
    10961113    if NextToken = '(' then begin
    10971114      Expect('(');
    1098       if ParseType(TypeList, NewType.UsedType, False) then ;
     1115      if ParseType(NewType.Parent, NewType.UsedType, False) then ;
    10991116      Expect(')');
    11001117    end else NewType.UsedType := nil;
     
    11031120end;
    11041121
    1105 function TAnalyzerPascal.ParseTypePointer(TypeList: TTypeList; var NewType: TType; Name: string
    1106   ): Boolean;
     1122function TAnalyzerPascal.ParseTypePointer(var NewType: TType): Boolean;
     1123var
     1124  TempType: TType;
    11071125begin
    11081126  if NextToken = '^' then begin
    11091127    Expect('^');
     1128    TempType := NewType;
    11101129    NewType := TTypePointer.Create;
    1111     NewType.Parent := TypeList;
    1112     NewType.Name := Name;
    1113     Result := ParseType(TypeList, NewType.UsedType, False, '=', True);
    1114   end else Result := False;
    1115 end;
    1116 
    1117 function TAnalyzerPascal.ParseTypeEnumeration(TypeList: TTypeList; var NewType: TType;
    1118   Name: string): Boolean;
     1130    NewType.Assign(TempType);
     1131    TempType.Free;
     1132    Result := ParseType(NewType.Parent, NewType.UsedType, False, '=', True);
     1133  end else Result := False;
     1134end;
     1135
     1136function TAnalyzerPascal.ParseTypeEnumeration(var NewType: TType
     1137  ): Boolean;
     1138var
     1139  TempType: TType;
    11191140begin
    11201141  if NextToken = '(' then begin
    11211142      Expect('(');
     1143      TempType := NewType;
    11221144      NewType := TTypeEnumeration.Create;
    1123       NewType.Parent := TypeList;
    1124       NewType.Name := Name;
     1145      NewType.Assign(TempType);
     1146      TempType.Free;
    11251147      with TTypeEnumeration(NewType) do
    11261148      with TEnumItem(Items[Items.Add(TEnumItem.Create)]) do begin
     
    11481170end;
    11491171
    1150 function TAnalyzerPascal.ParseTypeRecord(TypeList: TTypeList; var NewType: TType; Name: string
    1151   ): Boolean;
     1172function TAnalyzerPascal.ParseTypeRecord(var NewType: TType): Boolean;
    11521173var
    11531174  Visibility: TTypeVisibility;
    11541175  SectionType: TCommonBlockSection;
    11551176  NewType2: TType;
     1177  TempType: TType;
    11561178begin
    11571179  if NextToken = 'record' then begin
     
    11591181    SectionType := cbsVariable;
    11601182    Visibility := tvPublic;
     1183    TempType := NewType;
    11611184    NewType := TTypeRecord.Create;
    1162     NewType.Parent := TypeList;
    1163     TTypeRecord(NewType).CommonBlock.Parent := TypeList.Parent;
    1164     NewType.Name := Name;
     1185    NewType.Assign(TempType);
     1186    TempType.Free;
     1187    TTypeRecord(NewType).CommonBlock.Parent := NewType.Parent.Parent;
    11651188    while (NextToken <> 'end') and (NextTokenType <> ttEndOfFile) do begin
    11661189      // Visibility sections
     
    12201243end;
    12211244
    1222 function TAnalyzerPascal.ParseTypeClass(TypeList: TTypeList; var NewType: TType; Name: string
     1245function TAnalyzerPascal.ParseTypeClass(var NewType: TType
    12231246  ): Boolean;
    12241247var
    12251248  NewType2: TType;
     1249  TempType: TType;
    12261250begin
    12271251  if NextToken = 'class' then begin
    12281252    Expect('class');
     1253    TempType := NewType;
    12291254    NewType := TTypeClass.Create;
    1230     NewType.Parent := TypeList;
    1231     NewType.Name := Name;
     1255    NewType.Assign(TempType);
     1256    TempType.Free;
    12321257    if NextToken <> ';' then begin
    12331258      while (NextToken <> 'end') and (NextTokenType <> ttEndOfFile) do
    12341259      begin
    1235         if ParseType(TypeList, NewType2, True, ':') then begin
    1236           NewType2.Parent := TypeList;
     1260        if ParseType(NewType.Parent, NewType2, True, ':') then begin
     1261          NewType2.Parent := NewType.Parent;
    12371262          TTypeClass(NewType).Items.Add(NewType2);
    12381263        end;
     
    12451270end;
    12461271
    1247 function TAnalyzerPascal.ParseTypeArray(TypeList: TTypeList; var NewType: TType; Name: string
    1248   ): Boolean;
     1272function TAnalyzerPascal.ParseTypeArray(var NewType: TType): Boolean;
    12491273var
    12501274  UseName: string;
    12511275  UseType: TType;
     1276  TempType: TType;
    12521277begin
    12531278  if NextToken = 'array' then begin
    12541279    Expect('array');
     1280    TempType := NewType;
    12551281    NewType := TTypeArray.Create;
    1256     NewType.Parent := TypeList;
    1257     NewType.Name := Name;
     1282    NewType.Assign(TempType);
     1283    TempType.Free;
    12581284    if NextToken = '[' then begin
    12591285      Expect('[');
    12601286      UseName := NextToken;
    12611287      if NextTokenType = ttIdentifier then begin
    1262         TTypeArray(NewType).IndexType := TypeList.Parent.Types.Search(UseName);
     1288        TTypeArray(NewType).IndexType := NewType.Parent.Parent.Types.Search(UseName);
    12631289        if not Assigned(TTypeArray(NewType).IndexType) then
    12641290          ErrorMessage(SUndefinedType, [UseName], -1);
    12651291      end else
    12661292      if NextTokenType = ttConstantNumber then begin
    1267         ParseTypeSubRange(TypeList, TTypeArray(NewType).IndexType, Name);
     1293        ParseTypeSubRange(TTypeArray(NewType).IndexType);
    12681294        if not Assigned(TTypeArray(NewType).IndexType) then begin
    12691295          ErrorMessage(SInvalidConstruction, [NextToken], -1);
     
    12741300    Expect('of');
    12751301    UseName := NextToken;
    1276     Result := ParseType(TypeList, TTypeArray(NewType).ItemType, False);
     1302    Result := ParseType(NewType.Parent, TTypeArray(NewType).ItemType, False);
    12771303    if not Assigned(TTypeArray(NewType).ItemType) then
    12781304      ErrorMessage(SUndefinedType, [UseName], -1);
     
    12801306end;
    12811307
    1282 function TAnalyzerPascal.ParseTypeSubRange(TypeList: TTypeList; var NewType: TType;
    1283   Name: string): Boolean;
     1308function TAnalyzerPascal.ParseTypeSubRange(var NewType: TType): Boolean;
    12841309var
    12851310  UseName: string;
     1311  TempType: TType;
    12861312begin
    12871313  if NextTokenType = ttConstantString then begin
     1314    TempType := NewType;
    12881315    NewType := TTypeSubRange.Create;
     1316    NewType.Assign(TempType);
     1317    TempType.Free;
    12891318    TTypeSubRange(NewType).Bottom := ReadToken;
    12901319    Expect('..');
     
    12931322  end else
    12941323  if NextTokenType = ttConstantNumber then begin
     1324    TempType := NewType;
    12951325    NewType := TTypeSubRange.Create;
     1326    NewType.Assign(TempType);
     1327    TempType.Free;
    12961328    TTypeSubRange(NewType).Bottom := ReadToken;
    12971329    Expect('..');
  • trunk/Compiler/USourceCode.pas

    r19 r24  
    182182  end;
    183183
     184  { TType }
     185
    184186  TType = class
    185187    ForwardDeclared: Boolean;
     
    191193    Exported: Boolean;
    192194    Visibility: TTypeVisibility;
     195    Parameters: TTypeList;
     196    procedure Assign(Source: TType);
     197    constructor Create;
     198    destructor Destroy; override;
    193199  end;
    194200
     
    468474    'shr', 'as', 'div', 'mod', 'or', 'xor', '-', '+', '=', '>', '<', '<>', '<=',
    469475     '>=', 'is', 'in', ':=');
     476
     477resourcestring
     478  SAssignmentError = 'Assignment error';
    470479
    471480implementation
     
    10711080constructor TTypeClass.Create;
    10721081begin
     1082  inherited;
    10731083  Items := TListType.Create;
    10741084end;
     
    10801090end;
    10811091
     1092{ TType }
     1093
     1094procedure TType.Assign(Source: TType);
     1095var
     1096  I: Integer;
     1097  NewType: TType;
     1098begin
     1099  if Assigned(Source) then begin
     1100    Name := Source.Name;
     1101    Parameters.Clear;
     1102    for I := 0 to Source.Parameters.Count - 1 do begin
     1103      NewType := TType.Create;
     1104      //NewType := TType(Source.Parameters[I].ClassType.Create);
     1105      NewType.Assign(Source.Parameters[I]);
     1106      Parameters.Add(NewType);
     1107    end;
     1108    Visibility := Source.Visibility;
     1109    Parent := Source.Parent;
     1110    Internal := Source.Internal;
     1111    ForwardDeclared := Source.ForwardDeclared;
     1112    Exported := Source.Exported;
     1113    Size := Source.Size;
     1114    UsedType := Source.UsedType;
     1115  end else raise Exception.Create(SAssignmentError);
     1116end;
     1117
     1118constructor TType.Create;
     1119begin
     1120  Parameters := TTypeList.Create;
     1121  //Parameters.Parent := Parent.Parent;
     1122end;
     1123
     1124destructor TType.Destroy;
     1125begin
     1126  Parameters.Free;
     1127  inherited Destroy;
     1128end;
     1129
    10821130end.
    10831131
  • trunk/IDE/Common/ULastOpenedList.pas

    r2 r24  
    2222    procedure LoadFromRegistry(Root: HKEY; Key: string);
    2323    procedure SaveToRegistry(Root: HKEY; Key: string);
    24     procedure Add(FileName: string);
     24    procedure AddItem(FileName: string);
    2525  end;
    2626
     
    9595end;
    9696
    97 procedure TLastOpenedList.Add(FileName:string);
     97procedure TLastOpenedList.AddItem(FileName:string);
    9898begin
    9999  if IndexOf(FileName) <> -1 then Delete(IndexOf(FileName));
  • trunk/IDE/Forms/UCodeForm.pas

    r21 r24  
    1919    procedure SynEditSourceChange(Sender: TObject);
    2020  private
    21     { private declarations }
     21    FProjectFile: TProjectFile;
     22    procedure SetProjectFile(const AValue: TProjectFile);
    2223  public
    23     ProjectFile: TProjectFile;
     24    property ProjectFile: TProjectFile read FProjectFile write SetProjectFile;
     25    procedure Save;
    2426  end;
    2527
     
    4143end;
    4244
     45procedure TCodeForm.SetProjectFile(const AValue: TProjectFile);
     46begin
     47  if FProjectFile = AValue then Exit;
     48  FProjectFile := AValue;
     49  if Assigned(AValue) then
     50    SynEditSource.Lines.Assign(FProjectFile.Source)
     51    else SynEditSource.ClearAll;
     52end;
     53
     54procedure TCodeForm.Save;
     55begin
     56  if Assigned(ProjectFile) then
     57    ProjectFile.Source.Assign(SynEditSource.Lines);
     58end;
     59
    4360end.
    4461
  • trunk/IDE/Forms/UMainForm.lfm

    r21 r24  
    11object MainForm: TMainForm
    2   Left = 362
     2  Left = 336
    33  Height = 501
    4   Top = 115
     4  Top = 102
    55  Width = 695
    66  Caption = 'Transpascal IDE'
     
    152152      Caption = 'New'
    153153      Hint = 'Create new project'
     154      OnExecute = AProjectNewExecute
    154155    end
    155156    object AProjectOpen: TAction
     
    164165      Hint = 'Save project to disk'
    165166      OnExecute = AProjectSaveExecute
     167      ShortCut = 16467
    166168    end
    167169    object AProjectSaveAs: TAction
  • trunk/IDE/Forms/UMainForm.pas

    r22 r24  
    77uses
    88  SysUtils, Variants, Classes, Graphics, Controls, Forms,
    9   Dialogs, StdCtrls, UCompiler, Registry,
     9  Dialogs, StdCtrls, UCompiler, Registry, Contnrs,
    1010  ComCtrls, ExtCtrls, SynEdit, SynHighlighterPas,
    1111  UProject, FileUtil, Menus, ActnList, UCoolDocking,
     
    5252    ToolBar1: TToolBar;
    5353    procedure AProjectCloseExecute(Sender: TObject);
     54    procedure AProjectNewExecute(Sender: TObject);
    5455    procedure AProjectOpenExecute(Sender: TObject);
    5556    procedure AProjectSaveAsExecute(Sender: TObject);
     
    9192procedure TMainForm.ABuildExecute(Sender: TObject);
    9293begin
     94  CodeForm.Save;
     95
    9396  // Compile project file
    9497  if (ComboBoxAnalyzer.Items.Count > 0) and (ComboBoxAnalyzer.ItemIndex <> -1) and
     
    208211begin
    209212  Project.LoadFromFile(FileName);
    210   LastOpenedFiles.Add(FileName);
     213  LastOpenedFiles.AddItem(FileName);
    211214  LastOpenedFiles.ReloadMenu;
    212215  ProjectManager.UpdateProjectTree;
     
    235238  for I := 0 to Compiler.Producers.Count - 1 do
    236239    ComboBoxProducer.AddItem(Compiler.Producers[I].Name, nil);
     240
    237241  ComboBoxAnalyzer.Clear;
    238242  for I := 0 to Compiler.Analyzers.Count - 1 do
     
    289293end;
    290294
     295procedure TMainForm.AProjectNewExecute(Sender: TObject);
     296begin
     297  Project.Clear;
     298  Project.Name := 'New project';
     299  ProjectManager.UpdateProjectTree;
     300  Caption := ApplicationInfo.Name + ' - ' + Project.Name;
     301end;
     302
    291303procedure TMainForm.AProjectSaveAsExecute(Sender: TObject);
    292304begin
    293305  if SaveDialog1.Execute then begin
    294306    Project.SaveToFile(SaveDialog1.FileName);
     307    CodeForm.Save;
    295308    Project.Save;
    296309  end;
     
    299312procedure TMainForm.AProjectSaveExecute(Sender: TObject);
    300313begin
     314  CodeForm.Save;
    301315  Project.SaveToFile(Project.GetDir(True) + Project.Name + '.tppr');
    302316end;
  • trunk/IDE/Forms/UMessagesForm.lfm

    r2 r24  
    2626        Width = 500
    2727      end>
    28     ItemIndex = -1
    2928    OwnerData = True
    3029    ReadOnly = True
  • trunk/IDE/Forms/UMessagesForm.pas

    r2 r24  
    4747procedure TMessagesForm.ListView1Click(Sender: TObject);
    4848begin
    49   ListView1SelectItem(Self, ListView1.Selected, ListView1.Selected.Selected);
     49  if Assigned(ListView1.Selected) then
     50    ListView1SelectItem(Self, ListView1.Selected, ListView1.Selected.Selected);
    5051end;
    5152
  • trunk/IDE/Forms/UProjectManager.pas

    r23 r24  
    7777    NewNode.Expand(True);
    7878    EndUpdate;
    79     TreeViewProject.TopItem.Items[0].Selected := True;
     79    if Assigned(TreeViewProject.TopItem) and
     80      (TreeViewProject.TopItem.Count > 0) then
     81      TreeViewProject.TopItem.Items[0].Selected := True
     82      else CodeForm.ProjectFile := nil;
    8083  end;
    8184end;
  • trunk/IDE/Transpascal.lpi

    r23 r24  
    5353      </Item5>
    5454    </RequiredPackages>
    55     <Units Count="65">
     55    <Units Count="74">
    5656      <Unit0>
    5757        <Filename Value="Transpascal.lpr"/>
     
    5959        <UnitName Value="Transpascal"/>
    6060        <WindowIndex Value="0"/>
    61         <TopLine Value="1"/>
    62         <CursorPos X="17" Y="3"/>
     61        <TopLine Value="8"/>
     62        <CursorPos X="36" Y="20"/>
    6363        <UsageCount Value="215"/>
    6464        <DefaultSyntaxHighlighter Value="Delphi"/>
     
    7373        <EditorIndex Value="0"/>
    7474        <WindowIndex Value="0"/>
    75         <TopLine Value="284"/>
    76         <CursorPos X="1" Y="301"/>
     75        <TopLine Value="1"/>
     76        <CursorPos X="49" Y="9"/>
    7777        <UsageCount Value="215"/>
    7878        <Loaded Value="True"/>
     
    9696        <TopLine Value="745"/>
    9797        <CursorPos X="46" Y="759"/>
    98         <UsageCount Value="117"/>
     98        <UsageCount Value="116"/>
    9999        <DefaultSyntaxHighlighter Value="Delphi"/>
    100100      </Unit3>
     
    105105        <TopLine Value="1"/>
    106106        <CursorPos X="40" Y="11"/>
    107         <UsageCount Value="117"/>
     107        <UsageCount Value="116"/>
    108108        <DefaultSyntaxHighlighter Value="Delphi"/>
    109109      </Unit4>
     
    114114        <TopLine Value="187"/>
    115115        <CursorPos X="34" Y="201"/>
    116         <UsageCount Value="117"/>
     116        <UsageCount Value="116"/>
    117117      </Unit5>
    118118      <Unit6>
     
    122122        <TopLine Value="1"/>
    123123        <CursorPos X="1" Y="14"/>
    124         <UsageCount Value="117"/>
     124        <UsageCount Value="116"/>
    125125      </Unit6>
    126126      <Unit7>
     
    130130        <TopLine Value="124"/>
    131131        <CursorPos X="42" Y="136"/>
    132         <UsageCount Value="117"/>
     132        <UsageCount Value="116"/>
    133133      </Unit7>
    134134      <Unit8>
     
    138138        <TopLine Value="442"/>
    139139        <CursorPos X="47" Y="455"/>
    140         <UsageCount Value="117"/>
     140        <UsageCount Value="116"/>
    141141      </Unit8>
    142142      <Unit9>
     
    146146        <TopLine Value="78"/>
    147147        <CursorPos X="27" Y="86"/>
    148         <UsageCount Value="9"/>
     148        <UsageCount Value="8"/>
    149149      </Unit9>
    150150      <Unit10>
     
    153153        <TopLine Value="61"/>
    154154        <CursorPos X="7" Y="68"/>
    155         <UsageCount Value="19"/>
     155        <UsageCount Value="18"/>
    156156      </Unit10>
    157157      <Unit11>
     
    160160        <TopLine Value="139"/>
    161161        <CursorPos X="16" Y="146"/>
    162         <UsageCount Value="19"/>
     162        <UsageCount Value="18"/>
    163163      </Unit11>
    164164      <Unit12>
     
    168168        <TopLine Value="69"/>
    169169        <CursorPos X="1" Y="82"/>
    170         <UsageCount Value="79"/>
     170        <UsageCount Value="78"/>
    171171      </Unit12>
    172172      <Unit13>
     
    176176        <TopLine Value="320"/>
    177177        <CursorPos X="1" Y="327"/>
    178         <UsageCount Value="33"/>
     178        <UsageCount Value="32"/>
    179179      </Unit13>
    180180      <Unit14>
     
    182182        <IsPartOfProject Value="True"/>
    183183        <UnitName Value="UProject"/>
    184         <IsVisibleTab Value="True"/>
    185         <EditorIndex Value="1"/>
    186         <WindowIndex Value="0"/>
    187         <TopLine Value="164"/>
    188         <CursorPos X="21" Y="175"/>
     184        <EditorIndex Value="6"/>
     185        <WindowIndex Value="0"/>
     186        <TopLine Value="7"/>
     187        <CursorPos X="30" Y="25"/>
    189188        <UsageCount Value="223"/>
    190189        <Loaded Value="True"/>
     
    197196        <TopLine Value="70"/>
    198197        <CursorPos X="53" Y="92"/>
    199         <UsageCount Value="97"/>
     198        <UsageCount Value="96"/>
    200199      </Unit15>
    201200      <Unit16>
     
    205204        <TopLine Value="3"/>
    206205        <CursorPos X="32" Y="17"/>
    207         <UsageCount Value="98"/>
     206        <UsageCount Value="97"/>
    208207      </Unit16>
    209208      <Unit17>
     
    213212        <TopLine Value="45"/>
    214213        <CursorPos X="14" Y="58"/>
    215         <UsageCount Value="97"/>
     214        <UsageCount Value="96"/>
    216215      </Unit17>
    217216      <Unit18>
     
    221220        <ResourceBaseClass Value="Form"/>
    222221        <UnitName Value="UProjectManager"/>
    223         <EditorIndex Value="11"/>
    224         <WindowIndex Value="0"/>
    225         <TopLine Value="28"/>
    226         <CursorPos X="45" Y="40"/>
     222        <EditorIndex Value="18"/>
     223        <WindowIndex Value="0"/>
     224        <TopLine Value="68"/>
     225        <CursorPos X="39" Y="82"/>
    227226        <UsageCount Value="207"/>
    228227        <Loaded Value="True"/>
     
    236235        <ResourceBaseClass Value="Form"/>
    237236        <UnitName Value="UCodeForm"/>
    238         <EditorIndex Value="2"/>
    239         <WindowIndex Value="0"/>
    240         <TopLine Value="19"/>
    241         <CursorPos X="1" Y="40"/>
     237        <EditorIndex Value="7"/>
     238        <WindowIndex Value="0"/>
     239        <TopLine Value="36"/>
     240        <CursorPos X="52" Y="50"/>
    242241        <UsageCount Value="207"/>
    243242        <Loaded Value="True"/>
     
    251250        <ResourceBaseClass Value="Form"/>
    252251        <UnitName Value="UMessagesForm"/>
    253         <EditorIndex Value="3"/>
    254         <WindowIndex Value="0"/>
    255         <TopLine Value="51"/>
    256         <CursorPos X="64" Y="66"/>
     252        <EditorIndex Value="10"/>
     253        <WindowIndex Value="0"/>
     254        <TopLine Value="47"/>
     255        <CursorPos X="5" Y="54"/>
    257256        <UsageCount Value="207"/>
    258257        <Loaded Value="True"/>
     258        <LoadedDesigner Value="True"/>
    259259        <DefaultSyntaxHighlighter Value="Delphi"/>
    260260      </Unit20>
     
    290290        <TopLine Value="141"/>
    291291        <CursorPos X="93" Y="154"/>
    292         <UsageCount Value="75"/>
     292        <UsageCount Value="74"/>
    293293      </Unit23>
    294294      <Unit24>
     
    307307        <UnitName Value="ULastOpenedList"/>
    308308        <WindowIndex Value="0"/>
    309         <TopLine Value="1"/>
    310         <CursorPos X="48" Y="11"/>
     309        <TopLine Value="11"/>
     310        <CursorPos X="22" Y="24"/>
    311311        <UsageCount Value="200"/>
    312312        <DefaultSyntaxHighlighter Value="Delphi"/>
     
    316316        <IsPartOfProject Value="True"/>
    317317        <UnitName Value="UApplicationInfo"/>
    318         <WindowIndex Value="0"/>
    319         <TopLine Value="35"/>
    320         <CursorPos X="19" Y="58"/>
     318        <EditorIndex Value="5"/>
     319        <WindowIndex Value="0"/>
     320        <TopLine Value="43"/>
     321        <CursorPos X="27" Y="52"/>
    321322        <UsageCount Value="200"/>
     323        <Loaded Value="True"/>
    322324        <DefaultSyntaxHighlighter Value="Delphi"/>
    323325      </Unit26>
     
    328330        <TopLine Value="268"/>
    329331        <CursorPos X="39" Y="283"/>
    330         <UsageCount Value="108"/>
     332        <UsageCount Value="107"/>
    331333      </Unit27>
    332334      <Unit28>
     
    336338        <TopLine Value="143"/>
    337339        <CursorPos X="68" Y="156"/>
    338         <UsageCount Value="72"/>
     340        <UsageCount Value="71"/>
    339341      </Unit28>
    340342      <Unit29>
     
    344346        <TopLine Value="309"/>
    345347        <CursorPos X="64" Y="322"/>
    346         <UsageCount Value="105"/>
     348        <UsageCount Value="104"/>
    347349      </Unit29>
    348350      <Unit30>
     
    352354        <TopLine Value="266"/>
    353355        <CursorPos X="32" Y="279"/>
    354         <UsageCount Value="105"/>
     356        <UsageCount Value="104"/>
    355357      </Unit30>
    356358      <Unit31>
     
    360362        <TopLine Value="15"/>
    361363        <CursorPos X="1" Y="28"/>
    362         <UsageCount Value="22"/>
     364        <UsageCount Value="21"/>
    363365      </Unit31>
    364366      <Unit32>
     
    377379        <TopLine Value="365"/>
    378380        <CursorPos X="5" Y="370"/>
    379         <UsageCount Value="2"/>
     381        <UsageCount Value="1"/>
    380382      </Unit33>
    381383      <Unit34>
     
    385387        <TopLine Value="26"/>
    386388        <CursorPos X="14" Y="39"/>
    387         <UsageCount Value="102"/>
     389        <UsageCount Value="101"/>
    388390      </Unit34>
    389391      <Unit35>
     
    402404        <TopLine Value="1"/>
    403405        <CursorPos X="36" Y="55"/>
    404         <UsageCount Value="15"/>
     406        <UsageCount Value="14"/>
    405407        <DefaultSyntaxHighlighter Value="Delphi"/>
    406408      </Unit36>
     
    410412        <TopLine Value="1"/>
    411413        <CursorPos X="3" Y="21"/>
    412         <UsageCount Value="15"/>
     414        <UsageCount Value="14"/>
    413415        <DefaultSyntaxHighlighter Value="Delphi"/>
    414416      </Unit37>
     
    418420        <TopLine Value="1377"/>
    419421        <CursorPos X="32" Y="1396"/>
    420         <UsageCount Value="15"/>
     422        <UsageCount Value="14"/>
    421423        <DefaultSyntaxHighlighter Value="Delphi"/>
    422424      </Unit38>
     
    426428        <TopLine Value="27"/>
    427429        <CursorPos X="84" Y="48"/>
    428         <UsageCount Value="9"/>
     430        <UsageCount Value="8"/>
    429431      </Unit39>
    430432      <Unit40>
     
    433435        <TopLine Value="100"/>
    434436        <CursorPos X="43" Y="102"/>
    435         <UsageCount Value="9"/>
     437        <UsageCount Value="8"/>
    436438      </Unit40>
    437439      <Unit41>
     
    441443        <TopLine Value="1"/>
    442444        <CursorPos X="44" Y="6"/>
    443         <UsageCount Value="13"/>
     445        <UsageCount Value="12"/>
    444446      </Unit41>
    445447      <Unit42>
     
    449451        <TopLine Value="22"/>
    450452        <CursorPos X="2" Y="35"/>
    451         <UsageCount Value="13"/>
     453        <UsageCount Value="12"/>
    452454      </Unit42>
    453455      <Unit43>
    454456        <Filename Value="E:\Projekty\PascalClassLibrary\Generics\TemplateGenerics\Generic\GenericList.inc"/>
    455         <EditorIndex Value="12"/>
     457        <EditorIndex Value="16"/>
    456458        <WindowIndex Value="0"/>
    457459        <TopLine Value="71"/>
    458460        <CursorPos X="1" Y="85"/>
    459         <UsageCount Value="80"/>
     461        <UsageCount Value="82"/>
    460462        <Loaded Value="True"/>
    461463      </Unit43>
     
    465467        <TopLine Value="107"/>
    466468        <CursorPos X="10" Y="120"/>
    467         <UsageCount Value="73"/>
     469        <UsageCount Value="72"/>
    468470      </Unit44>
    469471      <Unit45>
     
    473475        <TopLine Value="1"/>
    474476        <CursorPos X="1" Y="12"/>
    475         <UsageCount Value="72"/>
     477        <UsageCount Value="71"/>
    476478      </Unit45>
    477479      <Unit46>
    478480        <Filename Value="..\Compiler\UCompiler.pas"/>
    479481        <UnitName Value="UCompiler"/>
    480         <EditorIndex Value="4"/>
     482        <EditorIndex Value="11"/>
    481483        <WindowIndex Value="0"/>
    482484        <TopLine Value="60"/>
    483485        <CursorPos X="45" Y="68"/>
    484         <UsageCount Value="38"/>
     486        <UsageCount Value="40"/>
    485487        <Loaded Value="True"/>
    486488      </Unit46>
     
    491493        <TopLine Value="58"/>
    492494        <CursorPos X="1" Y="79"/>
    493         <UsageCount Value="31"/>
     495        <UsageCount Value="30"/>
    494496      </Unit47>
    495497      <Unit48>
    496498        <Filename Value="..\Compiler\Analyze\UAnalyzer.pas"/>
    497499        <UnitName Value="UAnalyzer"/>
    498         <EditorIndex Value="5"/>
    499         <WindowIndex Value="0"/>
    500         <TopLine Value="66"/>
    501         <CursorPos X="37" Y="79"/>
    502         <UsageCount Value="37"/>
     500        <EditorIndex Value="12"/>
     501        <WindowIndex Value="0"/>
     502        <TopLine Value="36"/>
     503        <CursorPos X="5" Y="49"/>
     504        <UsageCount Value="39"/>
    503505        <Loaded Value="True"/>
    504506      </Unit48>
     
    506508        <Filename Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
    507509        <UnitName Value="UAnalyzerPascal"/>
    508         <EditorIndex Value="10"/>
    509         <WindowIndex Value="0"/>
    510         <TopLine Value="836"/>
    511         <CursorPos X="1" Y="849"/>
    512         <UsageCount Value="37"/>
     510        <EditorIndex Value="17"/>
     511        <WindowIndex Value="0"/>
     512        <TopLine Value="1239"/>
     513        <CursorPos X="1" Y="1255"/>
     514        <UsageCount Value="39"/>
    513515        <Loaded Value="True"/>
    514516      </Unit49>
     
    516518        <Filename Value="..\Compiler\Produce\UProducerPascal.pas"/>
    517519        <UnitName Value="UProducerPascal"/>
    518         <EditorIndex Value="8"/>
    519         <WindowIndex Value="0"/>
    520         <TopLine Value="148"/>
     520        <EditorIndex Value="13"/>
     521        <WindowIndex Value="0"/>
     522        <TopLine Value="164"/>
    521523        <CursorPos X="52" Y="171"/>
    522         <UsageCount Value="37"/>
     524        <UsageCount Value="39"/>
    523525        <Loaded Value="True"/>
    524526      </Unit50>
     
    529531        <TopLine Value="10"/>
    530532        <CursorPos X="40" Y="23"/>
    531         <UsageCount Value="30"/>
     533        <UsageCount Value="29"/>
    532534      </Unit51>
    533535      <Unit52>
     
    537539        <TopLine Value="107"/>
    538540        <CursorPos X="22" Y="110"/>
    539         <UsageCount Value="5"/>
     541        <UsageCount Value="4"/>
    540542      </Unit52>
    541543      <Unit53>
     
    545547        <TopLine Value="16"/>
    546548        <CursorPos X="33" Y="26"/>
    547         <UsageCount Value="12"/>
     549        <UsageCount Value="11"/>
    548550      </Unit53>
    549551      <Unit54>
    550552        <Filename Value="..\Compiler\USourceCode.pas"/>
    551553        <UnitName Value="USourceCode"/>
    552         <EditorIndex Value="9"/>
    553         <WindowIndex Value="0"/>
    554         <TopLine Value="727"/>
    555         <CursorPos X="1" Y="740"/>
    556         <UsageCount Value="37"/>
     554        <IsVisibleTab Value="True"/>
     555        <EditorIndex Value="14"/>
     556        <WindowIndex Value="0"/>
     557        <TopLine Value="1090"/>
     558        <CursorPos X="30" Y="1103"/>
     559        <UsageCount Value="39"/>
    557560        <Loaded Value="True"/>
    558561      </Unit54>
     
    563566        <TopLine Value="1"/>
    564567        <CursorPos X="55" Y="19"/>
    565         <UsageCount Value="5"/>
     568        <UsageCount Value="4"/>
    566569      </Unit55>
    567570      <Unit56>
     
    571574        <TopLine Value="1"/>
    572575        <CursorPos X="26" Y="5"/>
    573         <UsageCount Value="5"/>
     576        <UsageCount Value="4"/>
    574577      </Unit56>
    575578      <Unit57>
     
    579582        <TopLine Value="1"/>
    580583        <CursorPos X="37" Y="12"/>
    581         <UsageCount Value="31"/>
     584        <UsageCount Value="30"/>
    582585      </Unit57>
    583586      <Unit58>
     
    587590        <TopLine Value="12"/>
    588591        <CursorPos X="38" Y="26"/>
    589         <UsageCount Value="31"/>
     592        <UsageCount Value="30"/>
    590593      </Unit58>
    591594      <Unit59>
    592595        <Filename Value="E:\Programy\Lazarus\lcl\stdctrls.pp"/>
    593596        <UnitName Value="StdCtrls"/>
    594         <WindowIndex Value="0"/>
    595         <TopLine Value="438"/>
    596         <CursorPos X="3" Y="406"/>
    597         <UsageCount Value="5"/>
     597        <EditorIndex Value="4"/>
     598        <WindowIndex Value="0"/>
     599        <TopLine Value="250"/>
     600        <CursorPos X="15" Y="368"/>
     601        <UsageCount Value="10"/>
     602        <Loaded Value="True"/>
    598603      </Unit59>
    599604      <Unit60>
     
    602607        <TopLine Value="628"/>
    603608        <CursorPos X="1" Y="649"/>
    604         <UsageCount Value="31"/>
     609        <UsageCount Value="30"/>
    605610      </Unit60>
    606611      <Unit61>
    607612        <Filename Value="E:\Projekty\PascalClassLibrary\Generics\TemplateGenerics\Generic\GenericObjectList.inc"/>
    608         <WindowIndex Value="0"/>
    609         <TopLine Value="1"/>
    610         <CursorPos X="24" Y="4"/>
     613        <EditorIndex Value="15"/>
     614        <WindowIndex Value="0"/>
     615        <TopLine Value="65"/>
     616        <CursorPos X="1" Y="78"/>
    611617        <UsageCount Value="12"/>
     618        <Loaded Value="True"/>
    612619      </Unit61>
    613620      <Unit62>
     
    617624        <TopLine Value="1"/>
    618625        <CursorPos X="1" Y="1"/>
    619         <UsageCount Value="11"/>
     626        <UsageCount Value="10"/>
    620627      </Unit62>
    621628      <Unit63>
    622629        <Filename Value="E:\Programy\Lazarus\fpc\2.4.3\source\rtl\objpas\classes\classesh.inc"/>
    623         <EditorIndex Value="6"/>
    624         <WindowIndex Value="0"/>
    625         <TopLine Value="625"/>
    626         <CursorPos X="36" Y="638"/>
    627         <UsageCount Value="14"/>
     630        <EditorIndex Value="2"/>
     631        <WindowIndex Value="0"/>
     632        <TopLine Value="284"/>
     633        <CursorPos X="15" Y="297"/>
     634        <UsageCount Value="16"/>
    628635        <Loaded Value="True"/>
    629636      </Unit63>
    630637      <Unit64>
    631638        <Filename Value="E:\Programy\Lazarus\fpc\2.4.3\source\rtl\objpas\classes\stringl.inc"/>
    632         <EditorIndex Value="7"/>
    633639        <WindowIndex Value="0"/>
    634640        <TopLine Value="428"/>
    635641        <CursorPos X="3" Y="441"/>
    636         <UsageCount Value="14"/>
    637         <Loaded Value="True"/>
     642        <UsageCount Value="15"/>
    638643      </Unit64>
     644      <Unit65>
     645        <Filename Value="E:\Programy\Lazarus\components\synedit\synedit.pp"/>
     646        <UnitName Value="SynEdit"/>
     647        <EditorIndex Value="8"/>
     648        <WindowIndex Value="0"/>
     649        <TopLine Value="4144"/>
     650        <CursorPos X="21" Y="4146"/>
     651        <UsageCount Value="12"/>
     652        <Loaded Value="True"/>
     653      </Unit65>
     654      <Unit66>
     655        <Filename Value="E:\Programy\Lazarus\components\synedit\syneditmiscclasses.pp"/>
     656        <UnitName Value="SynEditMiscClasses"/>
     657        <EditorIndex Value="9"/>
     658        <WindowIndex Value="0"/>
     659        <TopLine Value="93"/>
     660        <CursorPos X="43" Y="112"/>
     661        <UsageCount Value="12"/>
     662        <Loaded Value="True"/>
     663      </Unit66>
     664      <Unit67>
     665        <Filename Value="E:\Programy\Lazarus\lcl\include\treeview.inc"/>
     666        <WindowIndex Value="0"/>
     667        <TopLine Value="60"/>
     668        <CursorPos X="1" Y="73"/>
     669        <UsageCount Value="11"/>
     670      </Unit67>
     671      <Unit68>
     672        <Filename Value="E:\Programy\Lazarus\lcl\comctrls.pp"/>
     673        <UnitName Value="ComCtrls"/>
     674        <WindowIndex Value="0"/>
     675        <TopLine Value="2650"/>
     676        <CursorPos X="27" Y="2663"/>
     677        <UsageCount Value="11"/>
     678      </Unit68>
     679      <Unit69>
     680        <Filename Value="E:\Programy\Lazarus\lcl\include\listitem.inc"/>
     681        <WindowIndex Value="0"/>
     682        <TopLine Value="529"/>
     683        <CursorPos X="27" Y="546"/>
     684        <UsageCount Value="11"/>
     685      </Unit69>
     686      <Unit70>
     687        <Filename Value="E:\Programy\Lazarus\fpc\2.4.3\source\rtl\objpas\classes\persist.inc"/>
     688        <WindowIndex Value="0"/>
     689        <TopLine Value="18"/>
     690        <CursorPos X="34" Y="27"/>
     691        <UsageCount Value="10"/>
     692      </Unit70>
     693      <Unit71>
     694        <Filename Value="E:\Programy\Lazarus\fpc\2.4.3\source\rtl\objpas\rtlconst.inc"/>
     695        <WindowIndex Value="0"/>
     696        <TopLine Value="21"/>
     697        <CursorPos X="3" Y="34"/>
     698        <UsageCount Value="10"/>
     699      </Unit71>
     700      <Unit72>
     701        <Filename Value="E:\Programy\Lazarus\fpc\2.4.3\source\packages\fcl-base\src\contnrs.pp"/>
     702        <UnitName Value="contnrs"/>
     703        <EditorIndex Value="1"/>
     704        <WindowIndex Value="0"/>
     705        <TopLine Value="59"/>
     706        <CursorPos X="26" Y="72"/>
     707        <UsageCount Value="10"/>
     708        <Loaded Value="True"/>
     709      </Unit72>
     710      <Unit73>
     711        <Filename Value="E:\Programy\Lazarus\fpc\2.4.3\source\rtl\objpas\classes\lists.inc"/>
     712        <EditorIndex Value="3"/>
     713        <WindowIndex Value="0"/>
     714        <TopLine Value="841"/>
     715        <CursorPos X="3" Y="843"/>
     716        <UsageCount Value="10"/>
     717        <Loaded Value="True"/>
     718      </Unit73>
    639719    </Units>
    640     <JumpHistory Count="30" HistoryIndex="29">
     720    <JumpHistory Count="29" HistoryIndex="28">
    641721      <Position1>
    642         <Filename Value="UProject.pas"/>
    643         <Caret Line="131" Column="1" TopLine="113"/>
     722        <Filename Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
     723        <Caret Line="1252" Column="1" TopLine="1239"/>
    644724      </Position1>
    645725      <Position2>
    646         <Filename Value="UProject.pas"/>
    647         <Caret Line="132" Column="1" TopLine="113"/>
     726        <Filename Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
     727        <Caret Line="1253" Column="1" TopLine="1239"/>
    648728      </Position2>
    649729      <Position3>
    650         <Filename Value="UProject.pas"/>
    651         <Caret Line="134" Column="1" TopLine="113"/>
     730        <Filename Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
     731        <Caret Line="1254" Column="1" TopLine="1239"/>
    652732      </Position3>
    653733      <Position4>
    654         <Filename Value="UProject.pas"/>
    655         <Caret Line="135" Column="1" TopLine="114"/>
     734        <Filename Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
     735        <Caret Line="1255" Column="1" TopLine="1239"/>
    656736      </Position4>
    657737      <Position5>
     738        <Filename Value="..\Compiler\USourceCode.pas"/>
     739        <Caret Line="1099" Column="1" TopLine="1094"/>
     740      </Position5>
     741      <Position6>
     742        <Filename Value="..\Compiler\USourceCode.pas"/>
     743        <Caret Line="1100" Column="1" TopLine="1094"/>
     744      </Position6>
     745      <Position7>
     746        <Filename Value="..\Compiler\USourceCode.pas"/>
     747        <Caret Line="1101" Column="1" TopLine="1094"/>
     748      </Position7>
     749      <Position8>
     750        <Filename Value="..\Compiler\USourceCode.pas"/>
     751        <Caret Line="1102" Column="1" TopLine="1094"/>
     752      </Position8>
     753      <Position9>
     754        <Filename Value="..\Compiler\USourceCode.pas"/>
     755        <Caret Line="1103" Column="1" TopLine="1094"/>
     756      </Position9>
     757      <Position10>
     758        <Filename Value="..\Compiler\USourceCode.pas"/>
     759        <Caret Line="1104" Column="1" TopLine="1094"/>
     760      </Position10>
     761      <Position11>
    658762        <Filename Value="E:\Projekty\PascalClassLibrary\Generics\TemplateGenerics\Generic\GenericList.inc"/>
    659763        <Caret Line="84" Column="1" TopLine="71"/>
    660       </Position5>
    661       <Position6>
     764      </Position11>
     765      <Position12>
    662766        <Filename Value="E:\Projekty\PascalClassLibrary\Generics\TemplateGenerics\Generic\GenericList.inc"/>
    663767        <Caret Line="85" Column="1" TopLine="71"/>
    664       </Position6>
    665       <Position7>
    666         <Filename Value="UProject.pas"/>
    667         <Caret Line="174" Column="1" TopLine="161"/>
    668       </Position7>
    669       <Position8>
    670         <Filename Value="UProject.pas"/>
    671         <Caret Line="201" Column="1" TopLine="188"/>
    672       </Position8>
    673       <Position9>
    674         <Filename Value="UProject.pas"/>
    675         <Caret Line="175" Column="1" TopLine="162"/>
    676       </Position9>
    677       <Position10>
    678         <Filename Value="UProject.pas"/>
    679         <Caret Line="191" Column="1" TopLine="178"/>
    680       </Position10>
    681       <Position11>
    682         <Filename Value="UProject.pas"/>
    683         <Caret Line="192" Column="1" TopLine="178"/>
    684       </Position11>
    685       <Position12>
    686         <Filename Value="UProject.pas"/>
    687         <Caret Line="215" Column="1" TopLine="202"/>
    688768      </Position12>
    689769      <Position13>
    690         <Filename Value="UProject.pas"/>
    691         <Caret Line="216" Column="1" TopLine="202"/>
     770        <Filename Value="..\Compiler\USourceCode.pas"/>
     771        <Caret Line="1099" Column="1" TopLine="1094"/>
    692772      </Position13>
    693773      <Position14>
    694         <Filename Value="UProject.pas"/>
    695         <Caret Line="193" Column="1" TopLine="180"/>
     774        <Filename Value="..\Compiler\USourceCode.pas"/>
     775        <Caret Line="1100" Column="1" TopLine="1094"/>
    696776      </Position14>
    697777      <Position15>
    698         <Filename Value="UProject.pas"/>
    699         <Caret Line="301" Column="1" TopLine="288"/>
     778        <Filename Value="..\Compiler\USourceCode.pas"/>
     779        <Caret Line="1101" Column="1" TopLine="1094"/>
    700780      </Position15>
    701781      <Position16>
    702         <Filename Value="UProject.pas"/>
    703         <Caret Line="302" Column="1" TopLine="288"/>
     782        <Filename Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
     783        <Caret Line="1252" Column="1" TopLine="1239"/>
    704784      </Position16>
    705785      <Position17>
    706         <Filename Value="UProject.pas"/>
    707         <Caret Line="194" Column="1" TopLine="181"/>
     786        <Filename Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
     787        <Caret Line="1059" Column="1" TopLine="1046"/>
    708788      </Position17>
    709789      <Position18>
    710         <Filename Value="UProject.pas"/>
    711         <Caret Line="176" Column="1" TopLine="163"/>
     790        <Filename Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
     791        <Caret Line="1252" Column="1" TopLine="1239"/>
    712792      </Position18>
    713793      <Position19>
    714         <Filename Value="UProject.pas"/>
    715         <Caret Line="135" Column="1" TopLine="122"/>
     794        <Filename Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
     795        <Caret Line="1253" Column="1" TopLine="1239"/>
    716796      </Position19>
    717797      <Position20>
    718         <Filename Value="UProject.pas"/>
    719         <Caret Line="132" Column="24" TopLine="122"/>
     798        <Filename Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
     799        <Caret Line="1254" Column="1" TopLine="1239"/>
    720800      </Position20>
    721801      <Position21>
    722         <Filename Value="UProject.pas"/>
    723         <Caret Line="283" Column="1" TopLine="270"/>
     802        <Filename Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
     803        <Caret Line="1255" Column="1" TopLine="1239"/>
    724804      </Position21>
    725805      <Position22>
    726         <Filename Value="UProject.pas"/>
    727         <Caret Line="284" Column="1" TopLine="270"/>
     806        <Filename Value="..\Compiler\USourceCode.pas"/>
     807        <Caret Line="1099" Column="1" TopLine="1094"/>
    728808      </Position22>
    729809      <Position23>
    730         <Filename Value="UProject.pas"/>
    731         <Caret Line="285" Column="1" TopLine="270"/>
     810        <Filename Value="..\Compiler\USourceCode.pas"/>
     811        <Caret Line="1100" Column="1" TopLine="1094"/>
    732812      </Position23>
    733813      <Position24>
    734         <Filename Value="UProject.pas"/>
    735         <Caret Line="286" Column="1" TopLine="270"/>
     814        <Filename Value="..\Compiler\USourceCode.pas"/>
     815        <Caret Line="1101" Column="1" TopLine="1094"/>
    736816      </Position24>
    737817      <Position25>
    738         <Filename Value="UProject.pas"/>
    739         <Caret Line="287" Column="1" TopLine="270"/>
     818        <Filename Value="..\Compiler\USourceCode.pas"/>
     819        <Caret Line="1102" Column="1" TopLine="1094"/>
    740820      </Position25>
    741821      <Position26>
    742         <Filename Value="UProject.pas"/>
    743         <Caret Line="289" Column="1" TopLine="270"/>
     822        <Filename Value="..\Compiler\USourceCode.pas"/>
     823        <Caret Line="1103" Column="1" TopLine="1094"/>
    744824      </Position26>
    745825      <Position27>
    746         <Filename Value="UProject.pas"/>
    747         <Caret Line="291" Column="26" TopLine="270"/>
     826        <Filename Value="E:\Projekty\PascalClassLibrary\Generics\TemplateGenerics\Generic\GenericList.inc"/>
     827        <Caret Line="84" Column="1" TopLine="71"/>
    748828      </Position27>
    749829      <Position28>
    750         <Filename Value="UProject.pas"/>
    751         <Caret Line="133" Column="28" TopLine="122"/>
     830        <Filename Value="E:\Projekty\PascalClassLibrary\Generics\TemplateGenerics\Generic\GenericList.inc"/>
     831        <Caret Line="85" Column="1" TopLine="71"/>
    752832      </Position28>
    753833      <Position29>
    754         <Filename Value="UProject.pas"/>
    755         <Caret Line="136" Column="35" TopLine="122"/>
     834        <Filename Value="..\Compiler\USourceCode.pas"/>
     835        <Caret Line="1103" Column="30" TopLine="1094"/>
    756836      </Position29>
    757       <Position30>
    758         <Filename Value="UProject.pas"/>
    759         <Caret Line="179" Column="55" TopLine="173"/>
    760       </Position30>
    761837    </JumpHistory>
    762838  </ProjectOptions>
     
    797873    <Other>
    798874      <CompilerMessages>
     875        <IgnoredMessages idx5023="True" idx5024="True" idx5025="True" idx5026="True" idx5027="True" idx5028="True" idx5029="True" idx5030="True" idx5031="True"/>
    799876        <UseMsgFile Value="True"/>
    800877      </CompilerMessages>
     
    803880  </CompilerOptions>
    804881  <Debugging>
     882    <BreakPoints Count="2">
     883      <Item1>
     884        <Source Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
     885        <Line Value="1252"/>
     886      </Item1>
     887      <Item2>
     888        <Source Value="..\Compiler\Analyze\UAnalyzerPascal.pas"/>
     889        <Line Value="1059"/>
     890      </Item2>
     891    </BreakPoints>
    805892    <Exceptions Count="3">
    806893      <Item1>
  • trunk/IDE/Transpascal.lpr

    r23 r24  
    1818  HeapTraceLog = 'heaptrclog.trc';
    1919begin
    20   Application.Title:='Transpascal IDE';
     20  Application.Title := 'Transpascal IDE';
    2121  // Heap trace
    2222  DeleteFile(ExtractFilePath(ParamStr(0)) + HeapTraceLog);
  • trunk/IDE/UApplicationInfo.pas

    r10 r24  
    5050
    5151with ApplicationInfo do begin
    52   Name := 'Transpascal';
     52  Name := 'Transpascal IDE';
    5353  Identification := 1;
    5454  ReleaseDate := '22.10.2010';
  • trunk/IDE/UProject.pas

    r23 r24  
    1414
    1515  TProjectNode = class
     16  private
     17    FModified: Boolean;
     18    procedure SetModified(const AValue: Boolean);
     19  public
    1620    Parent: TProjectNode;
    1721    Name: string;
    1822    ProducedFileName: string;
    19     Modified: Boolean;
    2023    procedure SaveToXMLNode(Node: TDOMNode); virtual;
    2124    procedure LoadFromXMLNode(Node: TDOMNode); virtual;
     
    2326    procedure Save; virtual;
    2427    function GetDir(IncludeRoot: Boolean = False): string; virtual;
     28    property Modified: Boolean read FModified write SetModified;
    2529  end;
    2630
     
    197201procedure TProjectFile.Save;
    198202begin
     203  if Modified then
     204    Source.SaveToFile(Parent.GetDir(True) + Name);
    199205  inherited Save;
    200   Source.SaveToFile(Parent.GetDir(True) + Name);
    201206end;
    202207
    203208{ TProjectNode }
     209
     210procedure TProjectNode.SetModified(const AValue: Boolean);
     211begin
     212  if FModified=AValue then exit;
     213  FModified:=AValue;
     214  if Assigned(Parent) then Parent.Modified := AValue;
     215end;
    204216
    205217procedure TProjectNode.SaveToXMLNode(Node: TDOMNode);
Note: See TracChangeset for help on using the changeset viewer.