ADD: Make file as executable by one click

This commit is contained in:
Alexander Koblov 2017-01-14 17:17:28 +00:00
commit 76cbef984b
3 changed files with 287 additions and 178 deletions

View file

@ -1,11 +1,11 @@
object frmFileProperties: TfrmFileProperties
Left = 764
Height = 432
Height = 471
Top = 123
Width = 458
ActiveControl = pcPageControl
Caption = 'Properties'
ClientHeight = 432
ClientHeight = 471
ClientWidth = 458
Constraints.MinHeight = 432
Constraints.MinWidth = 458
@ -14,11 +14,11 @@ object frmFileProperties: TfrmFileProperties
OnKeyDown = FormKeyDown
Position = poScreenCenter
SessionProperties = 'Height;Width'
LCLVersion = '1.7'
LCLVersion = '1.6.0.4'
object pcPageControl: TPageControl
AnchorSideBottom.Control = gbOwner
Left = 8
Height = 251
Height = 295
Top = 8
Width = 440
ActivePage = tsProperties
@ -28,21 +28,21 @@ object frmFileProperties: TfrmFileProperties
TabOrder = 0
object tsProperties: TTabSheet
Caption = 'Properties'
ClientHeight = 218
ClientWidth = 434
ClientHeight = 267
ClientWidth = 436
object pnlData: TPanel
Left = 0
Height = 218
Height = 267
Top = 0
Width = 434
Width = 436
Align = alClient
BevelOuter = bvNone
ChildSizing.LeftRightSpacing = 10
ChildSizing.TopBottomSpacing = 10
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 2
ClientHeight = 218
ClientWidth = 434
ClientHeight = 267
ClientWidth = 436
Color = clForm
ParentColor = False
TabOrder = 0
@ -50,10 +50,10 @@ object frmFileProperties: TfrmFileProperties
Left = 10
Height = 32
Top = 12
Width = 115
Width = 116
BevelOuter = bvNone
ClientHeight = 32
ClientWidth = 115
ClientWidth = 116
TabOrder = 0
object imgFileIcon: TImage
Left = 0
@ -66,10 +66,10 @@ object frmFileProperties: TfrmFileProperties
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 135
Left = 136
Height = 32
Top = 12
Width = 21
Width = 19
BorderSpacing.Left = 10
BorderSpacing.Top = 12
BorderSpacing.Right = 10
@ -81,9 +81,9 @@ object frmFileProperties: TfrmFileProperties
object lblFolderStr: TLabel
AnchorSideTop.Side = asrBottom
Left = 10
Height = 15
Height = 18
Top = 64
Width = 115
Width = 116
BorderSpacing.Top = 20
Caption = 'Path:'
ParentColor = False
@ -91,10 +91,10 @@ object frmFileProperties: TfrmFileProperties
object lblFolder: TLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 135
Height = 15
Left = 136
Height = 18
Top = 64
Width = 21
Width = 19
BorderSpacing.Top = 6
Caption = '???'
ParentColor = False
@ -103,9 +103,9 @@ object frmFileProperties: TfrmFileProperties
object lblTypeStr: TLabel
AnchorSideTop.Side = asrBottom
Left = 10
Height = 15
Top = 85
Width = 115
Height = 18
Top = 88
Width = 116
BorderSpacing.Top = 6
Caption = 'Type:'
ParentColor = False
@ -113,10 +113,10 @@ object frmFileProperties: TfrmFileProperties
object lblType: TLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 135
Height = 15
Top = 85
Width = 21
Left = 136
Height = 18
Top = 88
Width = 19
BorderSpacing.Top = 6
Caption = '???'
ParentColor = False
@ -125,9 +125,9 @@ object frmFileProperties: TfrmFileProperties
object lblSymlinkStr: TLabel
AnchorSideTop.Side = asrBottom
Left = 10
Height = 15
Top = 106
Width = 115
Height = 18
Top = 112
Width = 116
BorderSpacing.Top = 6
Caption = 'Symlink to:'
ParentColor = False
@ -135,10 +135,10 @@ object frmFileProperties: TfrmFileProperties
object lblSymlink: TLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 135
Height = 15
Top = 106
Width = 21
Left = 136
Height = 18
Top = 112
Width = 19
BorderSpacing.Top = 6
Caption = '???'
ParentColor = False
@ -147,9 +147,9 @@ object frmFileProperties: TfrmFileProperties
object lblSizeStr: TLabel
AnchorSideTop.Side = asrBottom
Left = 10
Height = 15
Top = 127
Width = 115
Height = 18
Top = 136
Width = 116
BorderSpacing.Top = 6
Caption = 'Size:'
ParentColor = False
@ -157,10 +157,10 @@ object frmFileProperties: TfrmFileProperties
object lblSize: TLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 135
Height = 15
Top = 127
Width = 21
Left = 136
Height = 18
Top = 136
Width = 19
BorderSpacing.Top = 6
Caption = '???'
ParentColor = False
@ -169,9 +169,9 @@ object frmFileProperties: TfrmFileProperties
object lblContainsStr: TLabel
AnchorSideTop.Side = asrBottom
Left = 10
Height = 15
Top = 148
Width = 115
Height = 18
Top = 160
Width = 116
BorderSpacing.Top = 6
Caption = 'Contains:'
ParentColor = False
@ -179,10 +179,10 @@ object frmFileProperties: TfrmFileProperties
object lblContains: TLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 135
Height = 15
Top = 148
Width = 21
Left = 136
Height = 18
Top = 160
Width = 19
BorderSpacing.Top = 6
Caption = '???'
ParentColor = False
@ -191,9 +191,9 @@ object frmFileProperties: TfrmFileProperties
object lblLastAccessStr: TLabel
AnchorSideTop.Side = asrBottom
Left = 10
Height = 15
Top = 175
Width = 115
Height = 18
Top = 190
Width = 116
BorderSpacing.Top = 12
Caption = 'Last access:'
ParentColor = False
@ -201,10 +201,10 @@ object frmFileProperties: TfrmFileProperties
object lblLastAccess: TLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 135
Height = 15
Top = 175
Width = 21
Left = 136
Height = 18
Top = 190
Width = 19
BorderSpacing.Top = 12
Caption = '???'
ParentColor = False
@ -213,9 +213,9 @@ object frmFileProperties: TfrmFileProperties
object lblLastModifStr: TLabel
AnchorSideTop.Side = asrBottom
Left = 10
Height = 15
Top = 196
Width = 115
Height = 18
Top = 214
Width = 116
BorderSpacing.Top = 6
Caption = 'Last modification:'
ParentColor = False
@ -223,10 +223,10 @@ object frmFileProperties: TfrmFileProperties
object lblLastModif: TLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 135
Height = 15
Top = 196
Width = 21
Left = 136
Height = 18
Top = 214
Width = 19
BorderSpacing.Top = 6
Caption = '???'
ParentColor = False
@ -235,9 +235,9 @@ object frmFileProperties: TfrmFileProperties
object lblLastStChangeStr: TLabel
AnchorSideTop.Side = asrBottom
Left = 10
Height = 15
Top = 217
Width = 115
Height = 18
Top = 238
Width = 116
BorderSpacing.Top = 6
Caption = 'Last status change:'
ParentColor = False
@ -245,10 +245,10 @@ object frmFileProperties: TfrmFileProperties
object lblLastStChange: TLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 135
Height = 15
Top = 217
Width = 21
Left = 136
Height = 18
Top = 238
Width = 19
BorderSpacing.Top = 6
Caption = '???'
ParentColor = False
@ -258,12 +258,12 @@ object frmFileProperties: TfrmFileProperties
end
object tsAttributes: TTabSheet
Caption = 'Attributes'
ClientHeight = 218
ClientWidth = 434
ClientHeight = 237
ClientWidth = 436
object lblFileStr: TLabel
AnchorSideTop.Control = tsAttributes
Left = 8
Height = 14
Height = 18
Top = 12
Width = 58
BorderSpacing.Top = 12
@ -273,7 +273,7 @@ object frmFileProperties: TfrmFileProperties
object lblFile: TLabel
AnchorSideTop.Control = tsAttributes
Left = 104
Height = 14
Height = 18
Top = 12
Width = 58
BorderSpacing.Top = 12
@ -285,42 +285,39 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Control = cbReadOwner
AnchorSideTop.Side = asrCenter
Left = 8
Height = 14
Top = 53
Width = 40
Height = 18
Top = 69
Width = 42
Caption = 'Owner'
ParentColor = False
end
object lblWrite: TLabel
AnchorSideTop.Control = lblFile
AnchorSideTop.Control = DividerBevel1
AnchorSideTop.Side = asrBottom
Left = 176
Height = 14
Top = 34
Width = 32
BorderSpacing.Top = 8
Height = 18
Top = 48
Width = 33
Caption = 'Write'
ParentColor = False
end
object lblRead: TLabel
AnchorSideTop.Control = lblFile
AnchorSideTop.Control = DividerBevel1
AnchorSideTop.Side = asrBottom
Left = 104
Height = 14
Top = 34
Width = 29
BorderSpacing.Top = 8
Height = 18
Top = 48
Width = 30
Caption = 'Read'
ParentColor = False
end
object lblExec: TLabel
AnchorSideTop.Control = lblFile
AnchorSideTop.Control = DividerBevel1
AnchorSideTop.Side = asrBottom
Left = 240
Height = 14
Top = 34
Width = 50
BorderSpacing.Top = 8
Height = 18
Top = 48
Width = 48
Caption = 'Execute'
ParentColor = False
end
@ -328,9 +325,9 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Control = cbReadGroup
AnchorSideTop.Side = asrCenter
Left = 8
Height = 14
Top = 72
Width = 37
Height = 18
Top = 88
Width = 39
Caption = 'Group'
ParentColor = False
end
@ -338,33 +335,36 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Control = cbReadOther
AnchorSideTop.Side = asrCenter
Left = 8
Height = 14
Top = 91
Width = 35
Height = 18
Top = 107
Width = 37
Caption = 'Other'
ParentColor = False
end
object lblAttrTextStr: TLabel
AnchorSideLeft.Control = tsAttributes
AnchorSideLeft.Control = edtOctal
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtOctal
AnchorSideTop.Side = asrBottom
Left = 8
Height = 14
Top = 162
Width = 28
BorderSpacing.Left = 8
AnchorSideTop.Side = asrCenter
Left = 204
Height = 18
Top = 202
Width = 30
BorderSpacing.Left = 12
BorderSpacing.Top = 6
Caption = 'Text:'
ParentColor = False
end
object lblAttrText: TLabel
AnchorSideLeft.Control = edtOctal
AnchorSideLeft.Control = lblAttrTextStr
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = lblAttrTextStr
AnchorSideTop.Side = asrCenter
Left = 112
Height = 14
Top = 162
Left = 242
Height = 18
Top = 202
Width = 45
BorderSpacing.Left = 8
Caption = '-----------'
ParentColor = False
ParentFont = False
@ -373,8 +373,8 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Control = cbSuid
AnchorSideTop.Side = asrCenter
Left = 8
Height = 14
Top = 113
Height = 18
Top = 143
Width = 26
Caption = 'Bits:'
ParentColor = False
@ -384,8 +384,8 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Control = edtOctal
AnchorSideTop.Side = asrCenter
Left = 8
Height = 14
Top = 139
Height = 18
Top = 202
Width = 35
BorderSpacing.Left = 8
Caption = 'Octal:'
@ -397,7 +397,7 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Side = asrBottom
Left = 112
Height = 13
Top = 54
Top = 72
Width = 13
BorderSpacing.Top = 6
OnClick = cbChangeModeClick
@ -408,7 +408,7 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Side = asrBottom
Left = 184
Height = 13
Top = 54
Top = 72
Width = 13
BorderSpacing.Top = 6
OnClick = cbChangeModeClick
@ -419,7 +419,7 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Side = asrBottom
Left = 256
Height = 13
Top = 54
Top = 72
Width = 13
BorderSpacing.Top = 6
OnClick = cbChangeModeClick
@ -430,7 +430,7 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Side = asrBottom
Left = 112
Height = 13
Top = 73
Top = 91
Width = 13
BorderSpacing.Top = 6
OnClick = cbChangeModeClick
@ -441,7 +441,7 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Side = asrBottom
Left = 184
Height = 13
Top = 73
Top = 91
Width = 13
BorderSpacing.Top = 6
OnClick = cbChangeModeClick
@ -452,7 +452,7 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Side = asrBottom
Left = 256
Height = 13
Top = 73
Top = 91
Width = 13
BorderSpacing.Top = 6
OnClick = cbChangeModeClick
@ -463,7 +463,7 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Side = asrBottom
Left = 112
Height = 13
Top = 92
Top = 110
Width = 13
BorderSpacing.Top = 6
OnClick = cbChangeModeClick
@ -474,7 +474,7 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Side = asrBottom
Left = 184
Height = 13
Top = 92
Top = 110
Width = 13
BorderSpacing.Top = 6
OnClick = cbChangeModeClick
@ -485,55 +485,55 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Side = asrBottom
Left = 256
Height = 13
Top = 92
Top = 110
Width = 13
BorderSpacing.Top = 6
OnClick = cbChangeModeClick
TabOrder = 8
end
object cbSuid: TCheckBox
AnchorSideTop.Control = cbReadOther
AnchorSideLeft.Control = cbReadOther
AnchorSideTop.Control = DividerBevel2
AnchorSideTop.Side = asrBottom
Left = 112
Height = 19
Top = 111
Height = 23
Top = 141
Width = 55
BorderSpacing.Top = 6
Caption = 'SUID'
OnClick = cbChangeModeClick
TabOrder = 9
end
object cbSgid: TCheckBox
AnchorSideTop.Control = cbWriteOther
AnchorSideLeft.Control = cbWriteOther
AnchorSideTop.Control = DividerBevel2
AnchorSideTop.Side = asrBottom
Left = 184
Height = 19
Top = 111
Width = 55
BorderSpacing.Top = 6
Height = 23
Top = 141
Width = 54
Caption = 'SGID'
OnClick = cbChangeModeClick
TabOrder = 10
end
object cbSticky: TCheckBox
AnchorSideTop.Control = cbExecOther
AnchorSideLeft.Control = cbExecOther
AnchorSideTop.Control = DividerBevel2
AnchorSideTop.Side = asrBottom
Left = 256
Height = 19
Top = 111
Width = 62
BorderSpacing.Top = 6
Height = 23
Top = 141
Width = 60
Caption = 'Sticky'
OnClick = cbChangeModeClick
TabOrder = 11
end
object edtOctal: TEdit
AnchorSideLeft.Control = cbSuid
AnchorSideTop.Control = cbSuid
AnchorSideTop.Control = chkExecutable
AnchorSideTop.Side = asrBottom
Left = 112
Height = 20
Top = 136
Height = 24
Top = 199
Width = 80
BorderSpacing.Top = 6
MaxLength = 4
@ -541,6 +541,60 @@ object frmFileProperties: TfrmFileProperties
OnKeyUp = edtOctalKeyUp
TabOrder = 12
end
object chkExecutable: TCheckBox
AnchorSideLeft.Control = cbSuid
AnchorSideTop.Control = cbSuid
AnchorSideTop.Side = asrBottom
Left = 112
Height = 23
Top = 170
Width = 212
BorderSpacing.Top = 6
Caption = 'Allow &executing file as program'
OnClick = chkExecutableChange
TabOrder = 13
end
object lblExecutable: TLabel
AnchorSideLeft.Control = lblAttrBitsStr
AnchorSideTop.Control = chkExecutable
AnchorSideTop.Side = asrCenter
Left = 8
Height = 18
Top = 172
Width = 51
Caption = 'Execute:'
ParentColor = False
end
object DividerBevel1: TDividerBevel
AnchorSideLeft.Control = tsAttributes
AnchorSideTop.Control = lblFile
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = tsAttributes
AnchorSideRight.Side = asrBottom
Left = 8
Height = 18
Top = 30
Width = 420
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 8
BorderSpacing.Right = 8
Font.Style = [fsBold]
ParentFont = False
end
object DividerBevel2: TDividerBevel
AnchorSideLeft.Control = DividerBevel1
AnchorSideTop.Control = cbWriteOther
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = DividerBevel1
AnchorSideRight.Side = asrBottom
Left = 8
Height = 18
Top = 123
Width = 420
Anchors = [akTop, akLeft, akRight]
Font.Style = [fsBold]
ParentFont = False
end
end
object tsImage: TTabSheet
Caption = 'Image'
@ -560,42 +614,45 @@ object frmFileProperties: TfrmFileProperties
item
ReadOnly = True
Title.Caption = 'Name'
Width = 214
Width = 215
end
item
Title.Caption = 'Value'
Width = 214
Width = 215
end>
FixedCols = 0
TabOrder = 0
ColWidths = (
214
214
215
215
)
end
end
end
object gbOwner: TGroupBox
AnchorSideLeft.Control = pcPageControl
AnchorSideRight.Control = pcPageControl
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = btnSetProperties
Left = 8
Height = 87
Top = 265
Width = 502
Height = 86
Top = 309
Width = 440
Anchors = [akLeft, akRight, akBottom]
AutoSize = True
BorderSpacing.Bottom = 6
Caption = 'Owner'
ClientHeight = 70
ClientWidth = 498
ClientHeight = 64
ClientWidth = 436
TabOrder = 1
object lblOwnerStr: TLabel
AnchorSideLeft.Control = gbOwner
AnchorSideTop.Control = cbxUsers
AnchorSideTop.Side = asrCenter
Left = 24
Height = 15
Top = 12
Width = 37
Height = 18
Top = 9
Width = 42
BorderSpacing.Left = 24
Caption = 'O&wner'
FocusControl = cbxUsers
@ -606,9 +663,9 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Control = cbxGroups
AnchorSideTop.Side = asrCenter
Left = 24
Height = 15
Top = 43
Width = 35
Height = 18
Top = 37
Width = 39
BorderSpacing.Left = 24
Caption = '&Group'
FocusControl = cbxGroups
@ -617,12 +674,12 @@ object frmFileProperties: TfrmFileProperties
object cbxUsers: TComboBox
AnchorSideTop.Control = gbOwner
Left = 135
Height = 27
Height = 24
Top = 6
Width = 289
Width = 227
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6
ItemHeight = 0
ItemHeight = 18
Sorted = True
TabOrder = 0
end
@ -630,13 +687,13 @@ object frmFileProperties: TfrmFileProperties
AnchorSideTop.Control = cbxUsers
AnchorSideTop.Side = asrBottom
Left = 135
Height = 27
Top = 37
Width = 289
Height = 24
Top = 34
Width = 227
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 4
BorderSpacing.Bottom = 6
ItemHeight = 0
ItemHeight = 18
Sorted = True
TabOrder = 1
end
@ -645,10 +702,10 @@ object frmFileProperties: TfrmFileProperties
AnchorSideRight.Control = btnSetPropertiesToAllFiles
AnchorSideBottom.Control = btnSetPropertiesToAllFiles
AnchorSideBottom.Side = asrBottom
Left = 42
Height = 32
Top = 358
Width = 117
Left = 35
Height = 30
Top = 401
Width = 123
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Right = 6
@ -662,10 +719,10 @@ object frmFileProperties: TfrmFileProperties
AnchorSideRight.Control = btnSkipFile
AnchorSideBottom.Control = btnSkipFile
AnchorSideBottom.Side = asrBottom
Left = 165
Height = 32
Top = 358
Width = 169
Left = 164
Height = 30
Top = 401
Width = 168
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Right = 6
@ -678,10 +735,10 @@ object frmFileProperties: TfrmFileProperties
AnchorSideRight.Control = btnClose
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = btnClose
Left = 340
Height = 32
Top = 358
Width = 108
Left = 338
Height = 30
Top = 401
Width = 110
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Bottom = 4
@ -697,10 +754,10 @@ object frmFileProperties: TfrmFileProperties
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 379
Height = 32
Top = 394
Width = 69
Left = 377
Height = 30
Top = 435
Width = 71
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Right = 10
@ -716,7 +773,7 @@ object frmFileProperties: TfrmFileProperties
Enabled = False
Interval = 500
OnTimer = tmUpdateFolderSizeTimer
left = 350
top = 216
left = 360
top = 88
end
end

View file

@ -33,6 +33,9 @@ TFRMFILEPROPERTIES.LBLOCTAL.CAPTION=Octal:
TFRMFILEPROPERTIES.CBSUID.CAPTION=SUID
TFRMFILEPROPERTIES.CBSGID.CAPTION=SGID
TFRMFILEPROPERTIES.CBSTICKY.CAPTION=Sticky
TFRMFILEPROPERTIES.CHKEXECUTABLE.CAPTION=Allow &executing file as program
TFRMFILEPROPERTIES.LBLEXECUTABLE.CAPTION=Execute:
TFRMFILEPROPERTIES.TSIMAGE.CAPTION=Image
TFRMFILEPROPERTIES.GBOWNER.CAPTION=Owner
TFRMFILEPROPERTIES.LBLOWNERSTR.CAPTION=O&wner
TFRMFILEPROPERTIES.LBLGROUPSTR.CAPTION=&Group

View file

@ -31,7 +31,7 @@ interface
uses
LResources, SysUtils, Classes, Graphics, Forms, StdCtrls, Buttons, ComCtrls,
Dialogs, Controls, ExtCtrls, Grids, DCBasicTypes, uFile,
Dialogs, Controls, ExtCtrls, Grids, DividerBevel, DCBasicTypes, uFile,
uFileProperty, uFileSource, uFileSourceOperation,
uFileSourceCalcStatisticsOperation, uExifReader;
@ -58,8 +58,12 @@ type
cbWriteOwner: TCheckBox;
cbxGroups: TComboBox;
cbxUsers: TComboBox;
chkExecutable: TCheckBox;
DividerBevel1: TDividerBevel;
DividerBevel2: TDividerBevel;
edtOctal: TEdit;
gbOwner: TGroupBox;
lblExecutable: TLabel;
lblFileName: TLabel;
imgFileIcon: TImage;
lblFolder: TLabel;
@ -105,6 +109,7 @@ type
procedure btnSetPropertiesToAllFilesClick(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure cbChangeModeClick(Sender: TObject);
procedure chkExecutableChange(Sender: TObject);
procedure edtOctalKeyPress(Sender: TObject; var Key: char);
procedure edtOctalKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormCreate(Sender: TObject);
@ -128,6 +133,7 @@ type
FChangedProperties: Boolean;
function ShowError(const MessageFmt: String): TModalResult;
procedure ShowExecutable;
procedure ShowPermissions(Mode: TFileAttrs);
function ChangeProperties: Boolean;
function CheckIfChangedProperties: Boolean;
@ -220,11 +226,36 @@ begin
if ChangeTriggersEnabled then
begin
ChangeTriggersEnabled := False;
ShowExecutable;
edtOctal.Text:= DecToOct(GetModeFromForm);
ChangeTriggersEnabled := True;
end;
end;
procedure TfrmFileProperties.chkExecutableChange(Sender: TObject);
begin
if chkExecutable.Tag = 0 then
begin
chkExecutable.Tag:= 1;
case chkExecutable.State of
cbChecked,
cbUnchecked:
begin
cbExecOwner.Checked:= chkExecutable.Checked;
cbExecGroup.Checked:= chkExecutable.Checked;
cbExecOther.Checked:= chkExecutable.Checked;
end;
cbGrayed:
begin
cbExecOwner.Checked:= ((OriginalAttr and S_IXUSR) = S_IXUSR);
cbExecGroup.Checked:= ((OriginalAttr and S_IXGRP) = S_IXGRP);
cbExecOther.Checked:= ((OriginalAttr and S_IXOTH) = S_IXOTH);
end;
end;
chkExecutable.Tag:= 0;
end;
end;
procedure TfrmFileProperties.edtOctalKeyPress(Sender: TObject; var Key: char);
begin
if not ((Key in ['0'..'7']) or (Key = Chr(VK_BACK)) or (Key = Chr(VK_DELETE))) then
@ -269,6 +300,8 @@ begin
cbSuid.Checked:= ((Mode AND S_ISUID) = S_ISUID);
cbSgid.Checked:= ((Mode AND S_ISGID) = S_ISGID);
cbSticky.Checked:= ((Mode AND S_ISVTX) = S_ISVTX);
ShowExecutable;
end;
function TfrmFileProperties.ChangeProperties: Boolean;
@ -388,6 +421,7 @@ begin
//if Attrs is TNtfsFileAttributesProperty
ShowPermissions(Attrs);
chkExecutable.Visible:= FPS_ISREG(Attrs);
edtOctal.Text:= DecToOct(GetModeFromForm);
lblAttrText.Caption := Properties[fpAttributes].Format(DefaultFilePropertyFormatter);
@ -515,6 +549,21 @@ begin
LineEnding + SysErrorMessageUTF8(fpgetErrNo), mtError, mbOKCancel, 0);
end;
procedure TfrmFileProperties.ShowExecutable;
begin
if chkExecutable.Tag = 0 then
begin
if cbExecOwner.Checked and cbExecGroup.Checked and cbExecOther.Checked then
chkExecutable.State:= cbChecked
else if not (cbExecOwner.Checked or cbExecGroup.Checked or cbExecOther.Checked) then
chkExecutable.State:= cbUnchecked
else begin
chkExecutable.AllowGrayed:= True;
chkExecutable.State:= cbGrayed;
end;
end;
end;
procedure TfrmFileProperties.AllowChange(Allow: Boolean);
begin
btnSetPropertiesToAllFiles.Enabled := Allow;