mirror of
https://github.com/moparisthebest/Simba
synced 2024-11-29 20:32:18 -05:00
61f3c1ce98
Settings in extensions should work now, see test extension.
138 lines
3.3 KiB
ObjectPascal
138 lines
3.3 KiB
ObjectPascal
unit extensionmanagergui;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
|
StdCtrls, ComCtrls, Grids,extensionmanager;
|
|
|
|
type
|
|
|
|
{ TExtensionsForm }
|
|
|
|
TExtensionsForm = class(TForm)
|
|
Button: TButton;
|
|
ExtEnabled: TCheckBox;
|
|
ExtensionsBox: TGroupBox;
|
|
ExtensionsList: TListView;
|
|
procedure ButtonClick(Sender: TObject);
|
|
procedure ExtEnabledChange(Sender: TObject);
|
|
procedure ExtensionsListAdvancedCustomDrawItem(Sender: TCustomListView;
|
|
Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
|
|
var DefaultDraw: Boolean);
|
|
procedure ExtensionsListSelectItem(Sender: TObject; Item: TListItem;
|
|
Selected: Boolean);
|
|
procedure FormCreate(Sender: TObject);
|
|
private
|
|
{ private declarations }
|
|
procedure Refresh;
|
|
public
|
|
procedure OnChangeExtensions(Sender: TObject);
|
|
end;
|
|
|
|
var
|
|
ExtensionsForm: TExtensionsForm;
|
|
|
|
implementation
|
|
uses
|
|
virtualextension;
|
|
|
|
{ TExtensionsForm }
|
|
|
|
procedure TExtensionsForm.ButtonClick(Sender: TObject);
|
|
begin
|
|
Refresh;
|
|
end;
|
|
|
|
procedure TExtensionsForm.ExtEnabledChange(Sender: TObject);
|
|
begin
|
|
if ExtensionsList.Selected <> nil then
|
|
with TVirtualSimbaExtension(ExtManager.Extensions[ExtensionsList.Selected.Index]) do
|
|
begin;
|
|
Enabled:= ExtEnabled.Checked;
|
|
ExtEnabled.Checked := Enabled;
|
|
end;
|
|
end;
|
|
|
|
procedure TExtensionsForm.ExtensionsListAdvancedCustomDrawItem(
|
|
Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
|
|
Stage: TCustomDrawStage; var DefaultDraw: Boolean);
|
|
begin
|
|
if TVirtualSimbaExtension(ExtManager.Extensions[Item.Index]).Enabled then
|
|
Sender.Canvas.Brush.Color := $CCFFCC//$7AFF95
|
|
else
|
|
sender.canvas.brush.color := $CCCCFF//$FF3D64;
|
|
end;
|
|
|
|
procedure TExtensionsForm.ExtensionsListSelectItem(Sender: TObject;
|
|
Item: TListItem; Selected: Boolean);
|
|
var
|
|
str : string;
|
|
begin
|
|
if Selected = true then
|
|
begin
|
|
extEnabled.Visible := true;
|
|
with TVirtualSimbaExtension(ExtManager.Extensions[Item.Index]) do
|
|
begin
|
|
OnChange:= nil;
|
|
ExtEnabled.Checked := Enabled;
|
|
Onchange := @OnChangeExtensions;
|
|
str := GetName;
|
|
if str = '' then
|
|
str := ExtractFileName(Filename);
|
|
ExtEnabled.Caption:= 'Enable: ' + str;
|
|
end;
|
|
end else
|
|
ExtEnabled.Visible := false;
|
|
end;
|
|
|
|
procedure TExtensionsForm.FormCreate(Sender: TObject);
|
|
begin
|
|
ExtManager.OnChange:= @OnChangeExtensions;
|
|
Refresh;
|
|
end;
|
|
|
|
procedure TExtensionsForm.Refresh;
|
|
var
|
|
i , sel: integer;
|
|
Extensions : TList;
|
|
str : string;
|
|
begin
|
|
sel := -1;
|
|
if ExtensionsList.Selected <> nil then
|
|
sel := ExtensionsList.Selected.Index;
|
|
ExtensionsList.Clear;
|
|
Extensions := ExtManager.Extensions;
|
|
for i := 0 to Extensions.Count - 1 do
|
|
begin
|
|
with TVirtualSimbaExtension(Extensions[i]),ExtensionsList.Items.Add do
|
|
begin
|
|
Caption:= ExtractFileName(FileName);
|
|
str := GetName;
|
|
if str = '' then
|
|
str := caption; //Could not retrieve the name
|
|
SubItems.Add(str);
|
|
str := GetVersion;
|
|
if str = '' then
|
|
str := 'NA'; //Could not retrieve the version
|
|
SubItems.Add(str);
|
|
end;
|
|
end;
|
|
if sel <> -1 then
|
|
if sel < extensions.count then
|
|
ExtensionsList.Selected := ExtensionsList.Items[sel];
|
|
end;
|
|
|
|
procedure TExtensionsForm.OnChangeExtensions(Sender: TObject);
|
|
begin
|
|
Refresh;
|
|
end;
|
|
|
|
initialization
|
|
{$I extensionmanagergui.lrs}
|
|
|
|
end.
|
|
|