Changeset 4 for trunk/UMainForm.pas
- Timestamp:
- Feb 3, 2011, 8:01:00 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/UMainForm.pas
r3 r4 7 7 uses 8 8 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls, 9 StdCtrls, ActnList, Contnrs, USource, UInstance, UOptions,9 StdCtrls, ActnList, Menus, Contnrs, USource, UInstance, UOptions, 10 10 DOM, XMLWrite, XMLRead, HTTPSend; 11 11 … … 14 14 SourceURL = 'http://tv.zdechov.net/fpc/SourceList.xml'; 15 15 16 const 17 BooleanText: array[Boolean] of string = ('No', 'Yes'); 18 16 19 type 17 20 … … 21 24 AAdd: TAction; 22 25 ACompile: TAction; 23 AOptions: TAction; 26 AUpdate: TAction; 27 AEdit: TAction; 24 28 ARemove: TAction; 25 29 AStart: TAction; 26 A Update: TAction;30 ADownload: TAction; 27 31 ActionList1: TActionList; 28 32 Button1: TButton; … … 31 35 Button4: TButton; 32 36 Button5: TButton; 37 ButtonEdit: TButton; 33 38 Button6: TButton; 34 39 Label1: TLabel; 35 40 ListView1: TListView; 41 MenuItem1: TMenuItem; 42 MenuItem2: TMenuItem; 43 MenuItem3: TMenuItem; 44 MenuItem4: TMenuItem; 45 MenuItem5: TMenuItem; 46 MenuItem6: TMenuItem; 47 PopupMenu1: TPopupMenu; 36 48 procedure AAddExecute(Sender: TObject); 37 49 procedure ACompileExecute(Sender: TObject); 50 procedure AEditExecute(Sender: TObject); 38 51 procedure ARemoveExecute(Sender: TObject); 39 52 procedure AStartExecute(Sender: TObject); 53 procedure ADownloadExecute(Sender: TObject); 40 54 procedure AUpdateExecute(Sender: TObject); 41 55 procedure FormCreate(Sender: TObject); … … 50 64 procedure SaveInstanceList; 51 65 public 52 Instances: T ObjectList;66 Instances: TInstanceList; 53 67 Sources: TSourceList; 54 68 end; … … 65 79 procedure TMainForm.FormCreate(Sender: TObject); 66 80 begin 67 Instances := T ObjectList.Create;81 Instances := TInstanceList.Create; 68 82 Sources := TSourceList.Create; 69 83 LoadInstanceList; … … 72 86 procedure TMainForm.AAddExecute(Sender: TObject); 73 87 begin 74 OptionsForm.ShowModal; 88 OptionsForm.Instance := nil; 89 if OptionsForm.ShowModal = mrOK then begin 90 Instances.Add(OptionsForm.Instance); 91 ReloadList; 92 end; 75 93 end; 76 94 … … 84 102 end; 85 103 104 procedure TMainForm.AEditExecute(Sender: TObject); 105 begin 106 if Assigned(ListView1.Selected) then begin 107 OptionsForm.Instance := ListView1.Selected.Data; 108 if OptionsForm.ShowModal = mrYes then 109 ReloadList; 110 end; 111 end; 112 86 113 procedure TMainForm.ARemoveExecute(Sender: TObject); 87 114 begin … … 98 125 if ListView1.Selected.Index < Instances.Count then begin 99 126 TInstance(Instances[ListView1.Selected.Index]).Start; 127 ReloadList; 128 end; 129 end; 130 131 procedure TMainForm.ADownloadExecute(Sender: TObject); 132 begin 133 if Assigned(ListView1.Selected) then 134 if ListView1.Selected.Index < Instances.Count then begin 135 TInstance(Instances[ListView1.Selected.Index]).Download; 100 136 ReloadList; 101 137 end; … … 120 156 procedure TMainForm.FormShow(Sender: TObject); 121 157 begin 158 ReloadList; 122 159 ListView1SelectItem(nil, nil, False); 123 160 end; … … 129 166 Item.Caption := Name; 130 167 Item.Data := Instances[Item.Index]; 131 Item.SubItems.Add(FPCRevision); 132 Item.SubItems.Add(IDERevision); 168 if Assigned(FPCSource) then 169 Item.SubItems.Add(FPCSource.Name + ' ' + FPCSource.VersionNumber) 170 else Item.SubItems.Add(''); 171 if Assigned(IDESource) then 172 Item.SubItems.Add(IDESource.Name + ' ' + IDESource.VersionNumber) 173 else Item.SubItems.Add(''); 174 Item.SubItems.Add(BooleanText[Downloaded]); 175 Item.SubItems.Add(BooleanText[Compiled]); 133 176 end; 134 177 end; … … 137 180 Selected: Boolean); 138 181 begin 139 ACompile.Enabled := Assigned(ListView1.Selected); 140 AUpdate.Enabled := Assigned(ListView1.Selected); 141 AStart.Enabled := Assigned(ListView1.Selected); 142 ARemove.Enabled := Assigned(ListView1.Selected); 143 AOptions.Enabled := Assigned(ListView1.Selected); 182 if Assigned(ListView1.Selected) then 183 with TInstance(ListView1.Selected.Data) do begin 184 AEdit.Enabled := True; 185 ACompile.Enabled := Downloaded; 186 ADownload.Enabled := True; 187 AStart.Enabled := Downloaded and Compiled; 188 ARemove.Enabled := True; 189 end else begin 190 AEdit.Enabled := False; 191 ACompile.Enabled := False; 192 ADownload.Enabled := False; 193 AStart.Enabled := False; 194 ARemove.Enabled := False; 195 end; 144 196 end; 145 197 … … 164 216 ReadXMLFile(Doc, UTF8Decode(ConfigFileName)); 165 217 166 Instances. Free;167 Sources. Free;218 Instances.Clear; 219 Sources.Clear; 168 220 169 221 NewNode := Doc.DocumentElement.FindNode('Sources'); … … 172 224 NewSource := TSource.Create; 173 225 with NewSource do begin 174 NewNode := Doc.DocumentElement.FindNode('Id');226 NewNode := Child.FindNode('Id'); 175 227 if Assigned(NewNode) then 176 228 Id := StrToInt(NewNode.TextContent); 177 NewNode := Doc.DocumentElement.FindNode('Name');229 NewNode := Child.FindNode('Name'); 178 230 if Assigned(NewNode) then 179 231 Name := UTF8Encode(string(NewNode.TextContent)); 180 NewNode := Doc.DocumentElement.FindNode('SubversionURL');232 NewNode := Child.FindNode('SubversionURL'); 181 233 if Assigned(NewNode) then 182 234 SubversionURL := UTF8Encode(string(NewNode.TextContent)); 183 NewNode := Doc.DocumentElement.FindNode('VersionNumber');235 NewNode := Child.FindNode('VersionNumber'); 184 236 if Assigned(NewNode) then 185 237 VersionNumber := UTF8Encode(string(NewNode.TextContent)); 186 NewNode := Doc.DocumentElement.FindNode('VersionType');238 NewNode := Child.FindNode('VersionType'); 187 239 if Assigned(NewNode) then 188 240 VersionType := UTF8Encode(string(NewNode.TextContent)); 189 NewNode := Doc.DocumentElement.FindNode('SourceType');241 NewNode := Child.FindNode('SourceType'); 190 242 if Assigned(NewNode) then 191 243 SourceType := TSourceType(StrToInt(NewNode.TextContent)); 192 244 end; 245 Sources.Add(NewSource); 193 246 Child := Child.NextSibling; 194 247 end; … … 199 252 NewInstance := TInstance.Create; 200 253 with NewInstance do begin 201 NewNode := Doc.DocumentElement.FindNode('Id');254 NewNode := Child.FindNode('Id'); 202 255 if Assigned(NewNode) then 203 256 Id := StrToInt(NewNode.TextContent); 204 NewNode := Doc.DocumentElement.FindNode('Name');257 NewNode := Child.FindNode('Name'); 205 258 if Assigned(NewNode) then 206 259 Name := UTF8Encode(string(NewNode.TextContent)); 207 NewNode := Doc.DocumentElement.FindNode('IDEDate');260 NewNode := Child.FindNode('IDEDate'); 208 261 if Assigned(NewNode) then 209 262 IDEDate := StrToDateTime(string(NewNode.TextContent)); 210 NewNode := Doc.DocumentElement.FindNode('IDERevision');263 NewNode := Child.FindNode('IDERevision'); 211 264 if Assigned(NewNode) then 212 265 IDERevision := UTF8Encode(string(NewNode.TextContent)); 213 NewNode := Doc.DocumentElement.FindNode('IDESource');266 NewNode := Child.FindNode('IDESource'); 214 267 if Assigned(NewNode) then 215 268 IDESource := Sources.FindById(StrToInt(NewNode.TextContent)); 216 NewNode := Doc.DocumentElement.FindNode('FPCDate');269 NewNode := Child.FindNode('FPCDate'); 217 270 if Assigned(NewNode) then 218 271 FPCDate := StrToDateTime(string(NewNode.TextContent)); 219 NewNode := Doc.DocumentElement.FindNode('FPCRevision');272 NewNode := Child.FindNode('FPCRevision'); 220 273 if Assigned(NewNode) then 221 274 FPCRevision := UTF8Encode(string(NewNode.TextContent)); 222 NewNode := Doc.DocumentElement.FindNode('FPCSource');275 NewNode := Child.FindNode('FPCSource'); 223 276 if Assigned(NewNode) then 224 277 FPCSource := Sources.FindById(StrToInt(NewNode.TextContent)); 225 278 end; 279 Instances.Add(NewInstance); 226 280 Child := Child.NextSibling; 227 281 end; … … 238 292 NewNode: TDOMNode; 239 293 NewNode2: TDOMNode; 294 NewNode3: TDOMNode; 240 295 begin 241 296 Doc := TXMLDocument.Create; … … 249 304 for I := 0 to Instances.Count - 1 do 250 305 with TInstance(Instances[I]) do begin 306 NewNode3 := OwnerDocument.CreateElement('Id'); 307 with NewNode3 do begin 251 308 NewNode2 := OwnerDocument.CreateElement('Id'); 252 309 NewNode2.TextContent := IntToStr(Id); 253 AppendChild(NewNode );310 AppendChild(NewNode2); 254 311 NewNode2 := OwnerDocument.CreateElement('Name'); 255 312 NewNode2.TextContent := UTF8Decode(Name); 256 AppendChild(NewNode );313 AppendChild(NewNode2); 257 314 NewNode2 := OwnerDocument.CreateElement('IDEDate'); 258 315 NewNode2.TextContent := DateTimeToStr(IDEDate); 259 AppendChild(NewNode );316 AppendChild(NewNode2); 260 317 NewNode2 := OwnerDocument.CreateElement('IDERevision'); 261 318 NewNode2.TextContent := UTF8Decode(IDERevision); 262 AppendChild(NewNode );319 AppendChild(NewNode2); 263 320 NewNode2 := OwnerDocument.CreateElement('IDESource'); 264 NewNode2.TextContent := IntToStr(IDESource.Id); 265 AppendChild(NewNode); 321 if Assigned(IDESource) then NewNode2.TextContent := IntToStr(IDESource.Id) 322 else NewNode2.TextContent := '0'; 323 AppendChild(NewNode2); 266 324 NewNode2 := OwnerDocument.CreateElement('FPCDate'); 267 325 NewNode2.TextContent := DateTimeToStr(FPCDate); 268 AppendChild(NewNode );326 AppendChild(NewNode2); 269 327 NewNode2 := OwnerDocument.CreateElement('FPCRevision'); 270 328 NewNode2.TextContent := UTF8Decode(FPCRevision); 271 AppendChild(NewNode );329 AppendChild(NewNode2); 272 330 NewNode2 := OwnerDocument.CreateElement('FPCSource'); 273 NewNode2.TextContent := IntToStr(FPCSource.Id); 274 AppendChild(NewNode); 331 if Assigned(IDESource) then NewNode2.TextContent := IntToStr(FPCSource.Id) 332 else NewNode2.TextContent := '0'; 333 AppendChild(NewNode2); 334 end; 335 AppendChild(NewNode3); 275 336 end; 276 337 AppendChild(NewNode); … … 280 341 for I := 0 to Sources.Count - 1 do 281 342 with TSource(Sources[I]) do begin 343 NewNode3 := OwnerDocument.CreateElement('Item'); 344 with NewNode3 do begin 282 345 NewNode2 := OwnerDocument.CreateElement('Id'); 283 346 NewNode2.TextContent := IntToStr(Id); 284 AppendChild(NewNode );347 AppendChild(NewNode2); 285 348 NewNode2 := OwnerDocument.CreateElement('Name'); 286 349 NewNode2.TextContent := UTF8Decode(Name); 287 AppendChild(NewNode );350 AppendChild(NewNode2); 288 351 NewNode2 := OwnerDocument.CreateElement('SubversionURL'); 289 352 NewNode2.TextContent := UTF8Decode(SubversionURL); 290 AppendChild(NewNode );353 AppendChild(NewNode2); 291 354 NewNode2 := OwnerDocument.CreateElement('VersionType'); 292 355 NewNode2.TextContent := UTF8Decode(VersionType); 293 AppendChild(NewNode );356 AppendChild(NewNode2); 294 357 NewNode2 := OwnerDocument.CreateElement('VersionNumber'); 295 358 NewNode2.TextContent := UTF8Decode(VersionNumber); 296 AppendChild(NewNode );359 AppendChild(NewNode2); 297 360 NewNode2 := OwnerDocument.CreateElement('SourceType'); 298 361 NewNode2.TextContent := IntToStr(Byte(SourceType)); 299 AppendChild(NewNode); 362 AppendChild(NewNode2); 363 end; 364 AppendChild(NewNode3); 300 365 end; 301 366 AppendChild(NewNode);
Note:
See TracChangeset
for help on using the changeset viewer.