ide: add an ability to edit resource type and name

git-svn-id: trunk@43232 -
This commit is contained in:
paul 2013-10-13 08:47:50 +00:00
parent 0bdad272d2
commit 0633a8cb97
2 changed files with 118 additions and 12 deletions

View File

@ -9,12 +9,19 @@ object ResourcesOptionsFrame: TResourcesOptionsFrame
DesignLeft = 561
DesignTop = 308
object lbResources: TListView
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = ToolBar1
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = lblResourceName
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 304
Top = 26
Width = 742
Align = alClient
Width = 610
Anchors = [akTop, akLeft, akRight, akBottom]
AutoWidthLastColumn = True
BorderSpacing.Right = 6
Columns = <
item
Caption = 'FullFileName'
@ -31,7 +38,7 @@ object ResourcesOptionsFrame: TResourcesOptionsFrame
end
item
Caption = 'Resource'
Width = 508
Width = 376
end>
RowSelect = True
TabOrder = 0
@ -70,6 +77,63 @@ object ResourcesOptionsFrame: TResourcesOptionsFrame
OnClick = btnClearClick
end
end
object lblResourceName: TLabel
AnchorSideLeft.Control = edResourceName
AnchorSideTop.Control = lbResources
Left = 616
Height = 15
Top = 26
Width = 93
Caption = 'lblResourceName'
FocusControl = edResourceName
ParentColor = False
end
object edResourceName: TEdit
AnchorSideLeft.Control = lblResourceName
AnchorSideTop.Control = lblResourceName
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 616
Height = 23
Top = 47
Width = 126
Anchors = [akTop, akRight]
BorderSpacing.Top = 6
CharCase = ecUppercase
OnEditingDone = edResourceNameEditingDone
OnKeyDown = edResourceNameKeyDown
TabOrder = 2
end
object lblResourceType: TLabel
AnchorSideLeft.Control = cbResourceType
AnchorSideTop.Control = edResourceName
AnchorSideTop.Side = asrBottom
Left = 616
Height = 15
Top = 76
Width = 87
BorderSpacing.Top = 6
Caption = 'lblResourceType'
ParentColor = False
end
object cbResourceType: TComboBox
AnchorSideLeft.Control = edResourceName
AnchorSideTop.Control = lblResourceType
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 616
Height = 23
Top = 97
Width = 126
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6
ItemHeight = 15
OnChange = cbResourceTypeChange
Style = csDropDownList
TabOrder = 3
end
object dlgOpen: TOpenDialog
left = 146
top = 93

View File

@ -5,15 +5,20 @@ unit project_resources_options;
interface
uses
Classes, SysUtils, FileUtil, Graphics, Forms, Controls, ComCtrls, Dialogs, LCLProc,
IDEOptionsIntf, IDEImagesIntf, IDEDialogs,
Project, ProjectUserResources, LCLStrConsts, LazarusIDEStrConsts;
Classes, SysUtils, FileUtil, Graphics, Forms, Controls, ComCtrls, Dialogs,
LCLProc, LCLType,
IDEOptionsIntf, IDEImagesIntf, IDEDialogs, Project,
ProjectUserResources, LCLStrConsts, ExtCtrls, StdCtrls, LazarusIDEStrConsts;
type
{ TResourcesOptionsFrame }
TResourcesOptionsFrame = class(TAbstractIDEOptionsEditor)
cbResourceType: TComboBox;
edResourceName: TEdit;
lblResourceType: TLabel;
lblResourceName: TLabel;
lbResources: TListView;
dlgOpen: TOpenDialog;
ToolBar1: TToolBar;
@ -23,6 +28,10 @@ type
procedure btnAddClick(Sender: TObject);
procedure btnClearClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
procedure cbResourceTypeChange(Sender: TObject);
procedure edResourceNameEditingDone(Sender: TObject);
procedure edResourceNameKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure lbResourcesInsert(Sender: TObject; Item: TListItem);
procedure lbResourcesSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
@ -57,15 +66,32 @@ begin
end;
procedure TResourcesOptionsFrame.btnDeleteClick(Sender: TObject);
var
Index: Integer;
begin
Index := lbResources.ItemIndex;
if (Index <> -1) then
lbResources.Items.Delete(Index);
if Assigned(lbResources.Selected) then
lbResources.Items.Delete(lbResources.Selected.Index);
btnClear.Enabled := lbResources.Items.Count > 0;
end;
procedure TResourcesOptionsFrame.cbResourceTypeChange(Sender: TObject);
begin
lbResources.Selected.SubItems[1] := ResourceTypeToStr[TUserResourceType(cbResourceType.ItemIndex)];
end;
procedure TResourcesOptionsFrame.edResourceNameEditingDone(Sender: TObject);
begin
lbResources.Selected.SubItems[2] := edResourceName.Text;
end;
procedure TResourcesOptionsFrame.edResourceNameKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = VK_RETURN then
begin
edResourceName.EditingDone;
Key := 0;
end;
end;
procedure TResourcesOptionsFrame.lbResourcesInsert(Sender: TObject;
Item: TListItem);
begin
@ -74,7 +100,17 @@ end;
procedure TResourcesOptionsFrame.lbResourcesSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
begin
btnDelete.Enabled := lbResources.ItemIndex <> -1;
btnDelete.Enabled := Assigned(lbResources.Selected);
edResourceName.Enabled := Assigned(lbResources.Selected);
if edResourceName.Enabled then
edResourceName.Text := lbResources.Selected.SubItems[2]
else
edResourceName.Text := '';
cbResourceType.Enabled := Assigned(lbResources.Selected);
if cbResourceType.Enabled then
cbResourceType.ItemIndex := Ord(StrToResourceType(lbResources.Selected.SubItems[1]))
else
cbResourceType.ItemIndex := -1;
end;
procedure TResourcesOptionsFrame.AddResourceItem(ResFile: String; ResType: TUserResourceType; ResName: String);
@ -110,6 +146,8 @@ begin
end;
procedure TResourcesOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
var
rt: TUserResourceType;
begin
ToolBar1.Images := IDEImages.Images_16;
lbResources.Column[1].Caption := rsResourceFileName;
@ -121,6 +159,10 @@ begin
btnDelete.ImageIndex := IDEImages.LoadImage(16, 'laz_delete');
btnClear.Caption := lisDeleteAll;
btnClear.ImageIndex := IDEImages.LoadImage(16, 'menu_clean');
lblResourceName.Caption := rsResource + ':';
lblResourceType.Caption := rsResourceType + ':';
for rt := Low(TUserResourceType) to High(TUserResourceType) do
cbResourceType.Items.Add(ResourceTypeToStr[rt]);
// system resources can be:
// 1. Graphic files
// 2. Font files