Changeset 3


Ignore:
Timestamp:
Feb 2, 2011, 2:14:37 PM (13 years ago)
Author:
chronos
Message:
  • Added: Not finished updating of sources from web.
Location:
trunk
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk

    • Property svn:ignore
      •  

        old new  
        11lib
        22FreePascalManager.exe
         3SourceList.xml
         4Config.xml
  • trunk/FreePascalManager.lpi

    r2 r3  
    3030      </local>
    3131    </RunParams>
    32     <RequiredPackages Count="1">
     32    <RequiredPackages Count="2">
    3333      <Item1>
     34        <PackageName Value="synapse"/>
     35      </Item1>
     36      <Item2>
    3437        <PackageName Value="LCL"/>
    35       </Item1>
     38      </Item2>
    3639    </RequiredPackages>
    37     <Units Count="7">
     40    <Units Count="11">
    3841      <Unit0>
    3942        <Filename Value="FreePascalManager.lpr"/>
    4043        <IsPartOfProject Value="True"/>
    4144        <UnitName Value="FreePascalManager"/>
    42         <UsageCount Value="22"/>
     45        <UsageCount Value="27"/>
    4346      </Unit0>
    4447      <Unit1>
    4548        <Filename Value="UMainForm.pas"/>
    4649        <IsPartOfProject Value="True"/>
    47         <ComponentName Value="Form1"/>
     50        <ComponentName Value="MainForm"/>
    4851        <ResourceBaseClass Value="Form"/>
    4952        <UnitName Value="UMainForm"/>
    50         <IsVisibleTab Value="True"/>
    5153        <EditorIndex Value="0"/>
    5254        <WindowIndex Value="0"/>
    53         <TopLine Value="117"/>
    54         <CursorPos X="45" Y="122"/>
    55         <UsageCount Value="22"/>
     55        <TopLine Value="1"/>
     56        <CursorPos X="33" Y="18"/>
     57        <UsageCount Value="27"/>
    5658        <Loaded Value="True"/>
    5759        <LoadedDesigner Value="True"/>
     
    6365        <ResourceBaseClass Value="Form"/>
    6466        <UnitName Value="UOptions"/>
    65         <EditorIndex Value="1"/>
    66         <WindowIndex Value="0"/>
    67         <TopLine Value="1"/>
    68         <CursorPos X="3" Y="9"/>
    69         <UsageCount Value="22"/>
     67        <EditorIndex Value="2"/>
     68        <WindowIndex Value="0"/>
     69        <TopLine Value="37"/>
     70        <CursorPos X="29" Y="52"/>
     71        <UsageCount Value="27"/>
    7072        <Loaded Value="True"/>
    7173        <LoadedDesigner Value="True"/>
     
    7577        <IsPartOfProject Value="True"/>
    7678        <UnitName Value="UInstance"/>
    77         <EditorIndex Value="2"/>
    78         <WindowIndex Value="0"/>
    79         <TopLine Value="23"/>
    80         <CursorPos X="3" Y="44"/>
    81         <UsageCount Value="22"/>
     79        <EditorIndex Value="4"/>
     80        <WindowIndex Value="0"/>
     81        <TopLine Value="4"/>
     82        <CursorPos X="1" Y="18"/>
     83        <UsageCount Value="27"/>
    8284        <Loaded Value="True"/>
    8385      </Unit3>
     
    8688        <IsPartOfProject Value="True"/>
    8789        <UnitName Value="USource"/>
    88         <EditorIndex Value="3"/>
    89         <WindowIndex Value="0"/>
    90         <TopLine Value="16"/>
    91         <CursorPos X="1" Y="40"/>
    92         <UsageCount Value="22"/>
     90        <IsVisibleTab Value="True"/>
     91        <EditorIndex Value="5"/>
     92        <WindowIndex Value="0"/>
     93        <TopLine Value="49"/>
     94        <CursorPos X="14" Y="54"/>
     95        <UsageCount Value="27"/>
    9396        <Loaded Value="True"/>
    9497      </Unit4>
     
    98101        <TopLine Value="1670"/>
    99102        <CursorPos X="14" Y="1683"/>
    100         <UsageCount Value="11"/>
     103        <UsageCount Value="10"/>
    101104      </Unit5>
    102105      <Unit6>
     
    106109        <TopLine Value="5"/>
    107110        <CursorPos X="20" Y="47"/>
    108         <UsageCount Value="10"/>
     111        <UsageCount Value="9"/>
    109112      </Unit6>
     113      <Unit7>
     114        <Filename Value="E:\Programy\Lazarus\0.9.31_2.5.1\fpc\2.5.1\source\packages\fcl-xml\src\dom.pp"/>
     115        <UnitName Value="DOM"/>
     116        <EditorIndex Value="1"/>
     117        <WindowIndex Value="0"/>
     118        <TopLine Value="233"/>
     119        <CursorPos X="14" Y="246"/>
     120        <UsageCount Value="13"/>
     121        <Loaded Value="True"/>
     122      </Unit7>
     123      <Unit8>
     124        <Filename Value="E:\Projekty\Knihovny\Free Pascal\synapse\httpsend.pas"/>
     125        <UnitName Value="httpsend"/>
     126        <EditorIndex Value="3"/>
     127        <WindowIndex Value="0"/>
     128        <TopLine Value="749"/>
     129        <CursorPos X="3" Y="753"/>
     130        <UsageCount Value="11"/>
     131        <Loaded Value="True"/>
     132      </Unit8>
     133      <Unit9>
     134        <Filename Value="FPCSourceList.xml"/>
     135        <WindowIndex Value="0"/>
     136        <TopLine Value="58"/>
     137        <CursorPos X="72" Y="81"/>
     138        <UsageCount Value="21"/>
     139        <DefaultSyntaxHighlighter Value="XML"/>
     140      </Unit9>
     141      <Unit10>
     142        <Filename Value="IDESourceList.xml"/>
     143        <WindowIndex Value="0"/>
     144        <TopLine Value="1"/>
     145        <CursorPos X="46" Y="49"/>
     146        <UsageCount Value="20"/>
     147        <DefaultSyntaxHighlighter Value="XML"/>
     148      </Unit10>
    110149    </Units>
    111     <JumpHistory Count="30" HistoryIndex="28">
     150    <JumpHistory Count="30" HistoryIndex="29">
    112151      <Position1>
    113         <Filename Value="UMainForm.pas"/>
    114         <Caret Line="165" Column="36" TopLine="144"/>
     152        <Filename Value="USource.pas"/>
     153        <Caret Line="79" Column="1" TopLine="65"/>
    115154      </Position1>
    116155      <Position2>
    117         <Filename Value="UMainForm.pas"/>
    118         <Caret Line="102" Column="9" TopLine="87"/>
     156        <Filename Value="USource.pas"/>
     157        <Caret Line="80" Column="1" TopLine="65"/>
    119158      </Position2>
    120159      <Position3>
    121         <Filename Value="UMainForm.pas"/>
    122         <Caret Line="127" Column="33" TopLine="106"/>
     160        <Filename Value="USource.pas"/>
     161        <Caret Line="78" Column="36" TopLine="65"/>
    123162      </Position3>
    124163      <Position4>
    125         <Filename Value="UMainForm.pas"/>
    126         <Caret Line="96" Column="1" TopLine="83"/>
     164        <Filename Value="USource.pas"/>
     165        <Caret Line="77" Column="1" TopLine="65"/>
    127166      </Position4>
    128167      <Position5>
    129         <Filename Value="UMainForm.pas"/>
    130         <Caret Line="97" Column="19" TopLine="89"/>
     168        <Filename Value="USource.pas"/>
     169        <Caret Line="79" Column="1" TopLine="65"/>
    131170      </Position5>
    132171      <Position6>
    133         <Filename Value="UMainForm.pas"/>
    134         <Caret Line="106" Column="17" TopLine="93"/>
     172        <Filename Value="USource.pas"/>
     173        <Caret Line="80" Column="1" TopLine="65"/>
    135174      </Position6>
    136175      <Position7>
    137         <Filename Value="UMainForm.pas"/>
    138         <Caret Line="127" Column="54" TopLine="114"/>
     176        <Filename Value="USource.pas"/>
     177        <Caret Line="85" Column="1" TopLine="65"/>
    139178      </Position7>
    140179      <Position8>
    141         <Filename Value="UMainForm.pas"/>
    142         <Caret Line="159" Column="16" TopLine="137"/>
     180        <Filename Value="USource.pas"/>
     181        <Caret Line="78" Column="17" TopLine="65"/>
    143182      </Position8>
    144183      <Position9>
    145         <Filename Value="UMainForm.pas"/>
    146         <Caret Line="97" Column="8" TopLine="84"/>
     184        <Filename Value="UOptions.pas"/>
     185        <Caret Line="48" Column="16" TopLine="37"/>
    147186      </Position9>
    148187      <Position10>
    149         <Filename Value="UMainForm.pas"/>
    150         <Caret Line="3" Column="14" TopLine="1"/>
     188        <Filename Value="UOptions.pas"/>
     189        <Caret Line="52" Column="29" TopLine="37"/>
    151190      </Position10>
    152191      <Position11>
    153         <Filename Value="UMainForm.pas"/>
    154         <Caret Line="152" Column="17" TopLine="130"/>
     192        <Filename Value="USource.pas"/>
     193        <Caret Line="76" Column="19" TopLine="59"/>
    155194      </Position11>
    156195      <Position12>
    157         <Filename Value="UMainForm.pas"/>
    158         <Caret Line="161" Column="30" TopLine="138"/>
     196        <Filename Value="USource.pas"/>
     197        <Caret Line="85" Column="1" TopLine="72"/>
    159198      </Position12>
    160199      <Position13>
    161200        <Filename Value="USource.pas"/>
    162         <Caret Line="25" Column="45" TopLine="1"/>
     201        <Caret Line="97" Column="54" TopLine="78"/>
    163202      </Position13>
    164203      <Position14>
    165204        <Filename Value="USource.pas"/>
    166         <Caret Line="35" Column="13" TopLine="13"/>
     205        <Caret Line="83" Column="1" TopLine="78"/>
    167206      </Position14>
    168207      <Position15>
    169208        <Filename Value="USource.pas"/>
    170         <Caret Line="24" Column="23" TopLine="11"/>
     209        <Caret Line="84" Column="1" TopLine="78"/>
    171210      </Position15>
    172211      <Position16>
    173212        <Filename Value="USource.pas"/>
    174         <Caret Line="8" Column="29" TopLine="1"/>
     213        <Caret Line="85" Column="1" TopLine="78"/>
    175214      </Position16>
    176215      <Position17>
    177         <Filename Value="UMainForm.pas"/>
    178         <Caret Line="45" Column="25" TopLine="11"/>
     216        <Filename Value="USource.pas"/>
     217        <Caret Line="86" Column="1" TopLine="78"/>
    179218      </Position17>
    180219      <Position18>
    181         <Filename Value="UMainForm.pas"/>
    182         <Caret Line="61" Column="21" TopLine="48"/>
     220        <Filename Value="USource.pas"/>
     221        <Caret Line="87" Column="1" TopLine="78"/>
    183222      </Position18>
    184223      <Position19>
    185         <Filename Value="UMainForm.pas"/>
    186         <Caret Line="73" Column="49" TopLine="69"/>
     224        <Filename Value="USource.pas"/>
     225        <Caret Line="88" Column="1" TopLine="78"/>
    187226      </Position19>
    188227      <Position20>
    189         <Filename Value="UMainForm.pas"/>
    190         <Caret Line="89" Column="35" TopLine="75"/>
     228        <Filename Value="USource.pas"/>
     229        <Caret Line="89" Column="1" TopLine="78"/>
    191230      </Position20>
    192231      <Position21>
    193         <Filename Value="UInstance.pas"/>
    194         <Caret Line="23" Column="21" TopLine="1"/>
     232        <Filename Value="USource.pas"/>
     233        <Caret Line="90" Column="1" TopLine="78"/>
    195234      </Position21>
    196235      <Position22>
    197         <Filename Value="UMainForm.pas"/>
    198         <Caret Line="77" Column="1" TopLine="65"/>
     236        <Filename Value="USource.pas"/>
     237        <Caret Line="91" Column="1" TopLine="78"/>
    199238      </Position22>
    200239      <Position23>
    201         <Filename Value="UMainForm.pas"/>
    202         <Caret Line="78" Column="1" TopLine="71"/>
     240        <Filename Value="USource.pas"/>
     241        <Caret Line="92" Column="1" TopLine="78"/>
    203242      </Position23>
    204243      <Position24>
    205         <Filename Value="UInstance.pas"/>
    206         <Caret Line="24" Column="20" TopLine="11"/>
     244        <Filename Value="USource.pas"/>
     245        <Caret Line="93" Column="1" TopLine="78"/>
    207246      </Position24>
    208247      <Position25>
    209         <Filename Value="UMainForm.pas"/>
    210         <Caret Line="94" Column="56" TopLine="81"/>
     248        <Filename Value="USource.pas"/>
     249        <Caret Line="94" Column="1" TopLine="78"/>
    211250      </Position25>
    212251      <Position26>
    213         <Filename Value="UInstance.pas"/>
    214         <Caret Line="25" Column="22" TopLine="11"/>
     252        <Filename Value="USource.pas"/>
     253        <Caret Line="95" Column="1" TopLine="78"/>
    215254      </Position26>
    216255      <Position27>
    217         <Filename Value="UMainForm.pas"/>
    218         <Caret Line="96" Column="56" TopLine="83"/>
     256        <Filename Value="USource.pas"/>
     257        <Caret Line="96" Column="1" TopLine="78"/>
    219258      </Position27>
    220259      <Position28>
    221         <Filename Value="UMainForm.pas"/>
    222         <Caret Line="44" Column="15" TopLine="30"/>
     260        <Filename Value="USource.pas"/>
     261        <Caret Line="99" Column="1" TopLine="78"/>
    223262      </Position28>
    224263      <Position29>
    225         <Filename Value="UMainForm.pas"/>
    226         <Caret Line="119" Column="19" TopLine="117"/>
     264        <Filename Value="USource.pas"/>
     265        <Caret Line="100" Column="1" TopLine="79"/>
    227266      </Position29>
    228267      <Position30>
    229         <Filename Value="UMainForm.pas"/>
    230         <Caret Line="44" Column="15" TopLine="31"/>
     268        <Filename Value="USource.pas"/>
     269        <Caret Line="99" Column="30" TopLine="80"/>
    231270      </Position30>
    232271    </JumpHistory>
     
    254293  </CompilerOptions>
    255294  <Debugging>
     295    <BreakPoints Count="3">
     296      <Item1>
     297        <Source Value="UMainForm.pas"/>
     298        <Line Value="240"/>
     299      </Item1>
     300      <Item2>
     301        <Source Value="USource.pas"/>
     302        <Line Value="83"/>
     303      </Item2>
     304      <Item3>
     305        <Source Value="USource.pas"/>
     306        <Line Value="52"/>
     307      </Item3>
     308    </BreakPoints>
    256309    <Exceptions Count="3">
    257310      <Item1>
  • trunk/FreePascalManager.lpr

    r2 r3  
    88  {$ENDIF}{$ENDIF}
    99  Interfaces, // this includes the LCL widgetset
    10   Forms, UMainForm, UOptions, UInstance, USource
     10  Forms, UMainForm, UOptions, UInstance, USource, synapse
    1111  { you can add units after this };
    1212
     
    1515begin
    1616  Application.Initialize;
    17   Application.CreateForm(TForm1, Form1);
     17  Application.CreateForm(TMainForm, MainForm);
    1818  Application.CreateForm(TOptionsForm, OptionsForm);
    1919  Application.Run;
  • trunk/UMainForm.lfm

    r2 r3  
    1 object Form1: TForm1
     1object MainForm: TMainForm
    22  Left = 266
    33  Height = 363
  • trunk/UMainForm.pas

    r2 r3  
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
    99  StdCtrls, ActnList, Contnrs, USource, UInstance, UOptions,
    10   DOM, XMLWrite, XMLRead;
     10  DOM, XMLWrite, XMLRead, HTTPSend;
    1111
    1212const
    1313  ConfigFileName = 'Config.xml';
     14  SourceURL = 'http://tv.zdechov.net/fpc/SourceList.xml';
    1415
    1516type
    1617
    17   { TForm1 }
    18 
    19   TForm1 = class(TForm)
     18  { TMainForm }
     19
     20  TMainForm = class(TForm)
    2021    AAdd: TAction;
    2122    ACompile: TAction;
     
    5152    Instances: TObjectList;
    5253    Sources: TSourceList;
    53   end; 
     54  end;
    5455
    5556var
    56   Form1: TForm1;
     57  MainForm: TMainForm;
    5758
    5859implementation
     
    6061{$R *.lfm}
    6162
    62 { TForm1 }
    63 
    64 procedure TForm1.FormCreate(Sender: TObject);
     63{ TMainForm }
     64
     65procedure TMainForm.FormCreate(Sender: TObject);
    6566begin
    6667  Instances := TObjectList.Create;
    6768  Sources := TSourceList.Create;
    68 end;
    69 
    70 procedure TForm1.AAddExecute(Sender: TObject);
     69  LoadInstanceList;
     70end;
     71
     72procedure TMainForm.AAddExecute(Sender: TObject);
    7173begin
    7274  OptionsForm.ShowModal;
    7375end;
    7476
    75 procedure TForm1.ACompileExecute(Sender: TObject);
     77procedure TMainForm.ACompileExecute(Sender: TObject);
    7678begin
    7779  if Assigned(ListView1.Selected) then
     
    8284end;
    8385
    84 procedure TForm1.ARemoveExecute(Sender: TObject);
     86procedure TMainForm.ARemoveExecute(Sender: TObject);
    8587begin
    8688  if Assigned(ListView1.Selected) then
     
    9193end;
    9294
    93 procedure TForm1.AStartExecute(Sender: TObject);
     95procedure TMainForm.AStartExecute(Sender: TObject);
    9496begin
    9597  if Assigned(ListView1.Selected) then
     
    100102end;
    101103
    102 procedure TForm1.AUpdateExecute(Sender: TObject);
     104procedure TMainForm.AUpdateExecute(Sender: TObject);
    103105begin
    104106  if Assigned(ListView1.Selected) then
     
    109111end;
    110112
    111 procedure TForm1.FormDestroy(Sender: TObject);
    112 begin
     113procedure TMainForm.FormDestroy(Sender: TObject);
     114begin
     115  SaveInstanceList;
    113116  Instances.Free;
    114117  Sources.Free;
    115118end;
    116119
    117 procedure TForm1.FormShow(Sender: TObject);
     120procedure TMainForm.FormShow(Sender: TObject);
    118121begin
    119122  ListView1SelectItem(nil, nil, False);
    120123end;
    121124
    122 procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
     125procedure TMainForm.ListView1Data(Sender: TObject; Item: TListItem);
    123126begin
    124127  if Item.Index < Instances.Count then
     
    131134end;
    132135
    133 procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
     136procedure TMainForm.ListView1SelectItem(Sender: TObject; Item: TListItem;
    134137  Selected: Boolean);
    135138begin
     
    141144end;
    142145
    143 procedure TForm1.ReloadList;
     146procedure TMainForm.ReloadList;
    144147begin
    145148  ListView1.Items.Count := Instances.Count;
     
    147150end;
    148151
    149 procedure TForm1.LoadInstanceList;
     152procedure TMainForm.LoadInstanceList;
    150153var
    151154  Doc: TXMLDocument;
     
    157160  Child: TDOMNode;
    158161begin
     162  if FileExistsUTF8(ConfigFileName) then
    159163  try
    160164    ReadXMLFile(Doc, UTF8Decode(ConfigFileName));
     
    177181        if Assigned(NewNode) then
    178182          SubversionURL := UTF8Encode(string(NewNode.TextContent));
    179         NewNode := Doc.DocumentElement.FindNode('Version');
    180         if Assigned(NewNode) then
    181           Version := UTF8Encode(string(NewNode.TextContent));
    182         NewNode := Doc.DocumentElement.FindNode('Variation');
    183         if Assigned(NewNode) then
    184           Variation := UTF8Encode(string(NewNode.TextContent));
     183        NewNode := Doc.DocumentElement.FindNode('VersionNumber');
     184        if Assigned(NewNode) then
     185          VersionNumber := UTF8Encode(string(NewNode.TextContent));
     186        NewNode := Doc.DocumentElement.FindNode('VersionType');
     187        if Assigned(NewNode) then
     188          VersionType := UTF8Encode(string(NewNode.TextContent));
    185189        NewNode := Doc.DocumentElement.FindNode('SourceType');
    186190        if Assigned(NewNode) then
     
    227231end;
    228232
    229 procedure TForm1.SaveInstanceList;
     233procedure TMainForm.SaveInstanceList;
    230234var
    231235  I: Integer;
     
    270274        AppendChild(NewNode);
    271275      end;
    272       AppendChild(RootNode);
     276      AppendChild(NewNode);
    273277
    274278      NewNode := OwnerDocument.CreateElement('Sources');
     
    285289        NewNode2.TextContent := UTF8Decode(SubversionURL);
    286290        AppendChild(NewNode);
    287         NewNode2 := OwnerDocument.CreateElement('Version');
    288         NewNode2.TextContent := UTF8Decode(Version);
    289         AppendChild(NewNode);
    290         NewNode2 := OwnerDocument.CreateElement('Variation');
    291         NewNode2.TextContent := UTF8Decode(Variation);
     291        NewNode2 := OwnerDocument.CreateElement('VersionType');
     292        NewNode2.TextContent := UTF8Decode(VersionType);
     293        AppendChild(NewNode);
     294        NewNode2 := OwnerDocument.CreateElement('VersionNumber');
     295        NewNode2.TextContent := UTF8Decode(VersionNumber);
    292296        AppendChild(NewNode);
    293297        NewNode2 := OwnerDocument.CreateElement('SourceType');
     
    295299        AppendChild(NewNode);
    296300      end;
    297       AppendChild(RootNode);
     301      AppendChild(NewNode);
    298302    end;
    299303    WriteXMLFile(Doc, UTF8Decode(ConfigFileName));
     
    303307end;
    304308
     309procedure DownloadFile(const Url, PathToSaveTo: string);
     310var
     311  fs: TFileStream;
     312begin
     313  fs := TFileStream.Create(PathToSaveTo, fmOpenWrite or fmCreate);
     314  try
     315    HttpGetBinary(Url, fs);
     316  finally
     317    fs.Free;
     318  end;
     319end;
     320
    305321end.
    306322
  • trunk/UOptions.lfm

    r2 r3  
    102102    TabOrder = 3
    103103  end
     104  object ButtonUpdateSource: TButton
     105    Left = 10
     106    Height = 25
     107    Top = 381
     108    Width = 75
     109    Caption = 'Update list'
     110    OnClick = ButtonUpdateSourceClick
     111    TabOrder = 4
     112  end
    104113end
  • trunk/UOptions.pas

    r2 r3  
    77uses
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
    9   ComCtrls;
     9  ComCtrls, DOM, XMLWrite, XMLRead, HTTPSend;
    1010
    1111type
     
    1414
    1515  TOptionsForm = class(TForm)
     16    ButtonUpdateSource: TButton;
    1617    ButtonCancel: TButton;
    1718    ButtonOk: TButton;
     
    2021    ListView1: TListView;
    2122    ListView2: TListView;
     23    procedure ButtonUpdateSourceClick(Sender: TObject);
    2224  private
    23     { private declarations }
     25    procedure ReloadList;
    2426  public
    2527    { public declarations }
     
    3335{$R *.lfm}
    3436
     37uses
     38  UMainForm;
     39
     40{ TOptionsForm }
     41
     42procedure TOptionsForm.ButtonUpdateSourceClick(Sender: TObject);
     43var
     44  fs: TFileStream;
     45begin
     46  fs := TFileStream.Create(ExtractFileName(SourceURL), fmOpenWrite or fmCreate);
     47  try
     48    HttpGetBinary(SourceURL, fs);
     49  finally
     50    fs.Free;
     51  end;
     52  MainForm.Sources.UpdateFormFile(ExtractFileName(SourceURL));
     53  ReloadList;
     54end;
     55
     56procedure TOptionsForm.ReloadList;
     57begin
     58  ListView1.Items.Count := MainForm.Sources.Count;
     59  ListView1.Refresh;
     60end;
     61
    3562end.
    3663
  • trunk/USource.pas

    r2 r3  
    66
    77uses
    8   Classes, SysUtils, Contnrs;
     8  Classes, SysUtils, Contnrs, FileUtil,
     9  DOM, XMLWrite, XMLRead, HTTPSend;
    910
    1011type
    1112  TSourceType = (stFPC, stIDE);
     13
     14  { TSource }
    1215
    1316  TSource = class
     
    1518    Name: string;
    1619    SubversionURL: string;
    17     Version: string;
    18     Variation: string;
     20    VersionNumber: string;
     21    VersionType: string;
    1922    SourceType: TSourceType;
     23    procedure Assign(Source: TSource);
    2024  end;
    2125
     
    2428  TSourceList = class(TObjectList)
    2529    function FindById(Id: Integer): TSource;
     30    procedure UpdateFormFile(FileName: string);
    2631  end;
    2732
    2833implementation
     34
     35{ TSource }
     36
     37procedure TSource.Assign(Source: TSource);
     38begin
     39  Id := Source.Id;
     40  Name := Source.Name;
     41  VersionNumber := Source.VersionNumber;
     42  VersionType := Source.VersionType;
     43  SubversionURL := Source.SubversionURL;
     44  SourceType := Source.SourceType;
     45end;
    2946
    3047{ TSourceList }
     
    4057end;
    4158
     59procedure TSourceList.UpdateFormFile(FileName: string);
     60var
     61  Doc: TXMLDocument;
     62  NewNode: TDOMNode;
     63  NewSubNode: TDOMNode;
     64  I: Integer;
     65  NewSource: TSource;
     66  Child: TDOMNode;
     67  ExistedSource: TSource;
     68begin
     69  if FileExistsUTF8(FileName) then
     70  try
     71    ReadXMLFile(Doc, UTF8Decode(FileName));
     72
     73    NewNode := Doc.DocumentElement.FindNode('Items');
     74    Child := NewNode.FirstChild;
     75    while Assigned(Child) do
     76    with Child do begin
     77      try
     78        NewSource := TSource.Create;
     79        with NewSource do begin
     80          NewSubNode := Child.FindNode('Name');
     81          if Assigned(NewSubNode) then
     82            Name := UTF8Encode(string(NewSubNode.TextContent));
     83          NewSubNode := Child.FindNode('Id');
     84          if Assigned(NewSubNode) then
     85            Id := StrToInt(NewSubNode.TextContent);
     86          NewSubNode := Child.FindNode('SubversionURL');
     87          if Assigned(NewSubNode) then
     88            SubversionURL := UTF8Encode(string(NewSubNode.TextContent));
     89          NewSubNode := Child.FindNode('VersionNumber');
     90          if Assigned(NewSubNode) then
     91            VersionNumber := UTF8Encode(string(NewSubNode.TextContent));
     92          NewSubNode := Child.FindNode('VersionType');
     93          if Assigned(NewSubNode) then
     94            VersionType := UTF8Encode(string(NewSubNode.TextContent));
     95          NewSubNode := Child.FindNode('SourceType');
     96          if Assigned(NewSubNode) then
     97            SourceType := TSourceType(StrToInt(NewSubNode.TextContent));
     98        end;
     99        ExistedSource := FindById(NewSource.Id);
     100        if Assigned(ExistedSource) then begin
     101          ExistedSource.Assign(NewSource);
     102        end else begin
     103          Add(NewSource);
     104          FreeAndNil(NewSource);
     105        end;
     106      finally
     107        NewSource.Free;
     108      end;
     109      Child := Child.NextSibling;
     110    end;
     111  finally
     112    Doc.Free;
     113  end;
     114end;
     115
    42116end.
    43117
Note: See TracChangeset for help on using the changeset viewer.