summaryrefslogtreecommitdiff
path: root/UFileTypeSettings.pas
diff options
context:
space:
mode:
Diffstat (limited to 'UFileTypeSettings.pas')
-rw-r--r--UFileTypeSettings.pas55
1 files changed, 25 insertions, 30 deletions
diff --git a/UFileTypeSettings.pas b/UFileTypeSettings.pas
index d6d5eb1..03eda53 100644
--- a/UFileTypeSettings.pas
+++ b/UFileTypeSettings.pas
@@ -401,7 +401,7 @@ begin
for i := 0 to List.Count - 1 do begin
Item := TFileAssoc.Create;
with Item do begin
- Extensions := TFileAssoc(List[i]).Extensions;
+ CopyArray(TFileAssoc(List[i]).Extensions, Extensions);
FileTypeName := TFileAssoc(List[i]).FileTypeName;
DefaultAction := TFileAssoc(List[i]).DefaultAction;
FileTypeIcon := TFileAssoc(List[i]).FileTypeIcon;
@@ -433,7 +433,7 @@ procedure TFFileTypeSettings.FillList;
ListItem := ListView.Items.Add;
if FileTypeName = ConstFTAMetaDirectory then ListItem.SetValue(0, LANGFileTypeDirectory) else
if FileTypeName = ConstFTAMetaFile then ListItem.SetValue(0, LANGFileTypeFile) else
- ListItem.SetValue(0, Extensions);
+ ListItem.SetValue(0, MakeString(';', Extensions));
if (FileTypeName = ConstFTAMetaDirectory) or (FileTypeName = ConstFTAMetaFile)
then ListItem.SetValue(1, LANGFileTypeMetafile)
else ListItem.SetValue(1, FileTypeName);
@@ -520,7 +520,6 @@ end;
procedure TFFileTypeSettings.ListViewSelectionChanged(Sender: TObject);
var b: boolean;
Item: TFileAssoc;
- s: string;
i: integer;
ListItem: TGTKListItem;
Color: TGDKColor;
@@ -555,14 +554,9 @@ begin
end;
Item := ListView.Selected.AsPointer(2);
FNameExtListView.Items.Clear;
- if Length(Item.Extensions) > 0 then begin
- s := Item.Extensions;
- while Pos(';', s) > 0 do begin
- FNameExtListView.Items.Add.SetValue(0, Trim(Copy(s, 1, Pos(';', s) - 1)));
- Delete(s, 1, Pos(';', s));
- end;
- if Length(Trim(s)) > 0 then FNameExtListView.Items.Add.SetValue(0, Trim(s));
- end;
+ if Length(Item.Extensions) > 0 then
+ for i := 0 to Length(Item.Extensions) - 1 do
+ FNameExtListView.Items.Add.SetValue(0, Item.Extensions[i]);
IconEntry.Text := Item.FileTypeIcon;
IconEntryChanged(Self);
if (TFileAssoc(ListView.Selected.AsPointer(2)).FileTypeName = ConstFTAMetaDirectory) or
@@ -597,7 +591,8 @@ end;
procedure TFFileTypeSettings.AddExtButtonClick(Sender: TObject);
var i: integer;
- s, sx: string;
+ sx: string;
+ Assoc: TFileAssoc;
begin
if Length(Trim(FNameExtEntry.Text)) = 0 then Exit;
if FNameExtListView.Items.Count > 0 then
@@ -606,32 +601,32 @@ begin
sx := WideLowerCase(Trim(FNameExtEntry.Text));
if sx[1] = '.' then Delete(sx, 1, 1);
FNameExtListView.Items.Add.SetValue(0, sx);
- s := TFileAssoc(ListView.Selected.AsPointer(2)).Extensions;
- if Length(s) > 0 then s := s + ';';
- s := s + sx;
- ListView.Selected.SetValue(0, s);
- TFileAssoc(ListView.Selected.AsPointer(2)).Extensions := s;
+
+ Assoc := TFileAssoc(ListView.Selected.AsPointer(2));
+ SetLength(Assoc.Extensions, Length(Assoc.Extensions) + 1);
+ Assoc.Extensions[Length(Assoc.Extensions) - 1] := sx;
+ ListView.Selected.SetValue(0, MakeString(';', Assoc.Extensions));
+
FNameExtEntry.Text := '';
end;
procedure TFFileTypeSettings.RemoveExtButtonClick(Sender: TObject);
var s: string;
i: integer;
+ Assoc: TFileAssoc;
begin
try
- if (FNameExtListView.Items.Count = 0) or (not Assigned(FNameExtListView.Selected)) or
- (not Assigned(ListView.Selected)) or (not Assigned(ListView.Selected.AsPointer(2))) then Exit;
- s := TFileAssoc(ListView.Selected.AsPointer(2)).Extensions;
- i := Pos(FNameExtListView.Selected.AsString(0), s);
- if i = 0 then Exit;
- Delete(s, i, Length(FNameExtListView.Selected.AsString(0)));
- if s = ';' then s := '' else
- if (Length(s) >= i) and (s[i] = ';') then Delete(s, i, 1) else
- if (Length(s) >= i - 1) and (i > 1) and (s[i - 1] = ';') then Delete(s, i - 1, 1);
- ListView.Selected.SetValue(0, s);
- TFileAssoc(ListView.Selected.AsPointer(2)).Extensions := s;
- FNameExtListView.Items.Delete(FNameExtListView.Selected.Index);
- except end;
+ if (FNameExtListView.Items.Count = 0) or (not Assigned(FNameExtListView.Selected)) or
+ (not Assigned(ListView.Selected)) or (not Assigned(ListView.Selected.AsPointer(2))) then Exit;
+ Assoc := TFileAssoc(ListView.Selected.AsPointer(2));
+ if Length(Assoc.Extensions) > 0 then
+ for i := Length(Assoc.Extensions) - 1 downto 0 do
+ if Assoc.Extensions[i] = FNameExtListView.Selected.AsString(0) then
+ DeleteFromArray(i, Assoc.Extensions);
+ ListView.Selected.SetValue(0, MakeString(';', Assoc.Extensions));
+ FNameExtListView.Items.Delete(FNameExtListView.Selected.Index);
+ except
+ end;
end;
procedure TFFileTypeSettings.FNameExtEntryKeyDown(Sender: TObject; Key: Word; Shift: TShiftState; var Accept: boolean);