Subversion Repositories userdetect2

Rev

Rev 82 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
68 daniel-mar 1
unit UD2_TaskProperties;
2
 
3
interface
4
 
5
uses
6
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7
  Dialogs, UD2_Obj, StdCtrls, ExtCtrls, Grids, ValEdit;
8
 
9
type
10
  TUD2TaskPropertiesForm = class(TForm)
11
    ValueListEditor1: TValueListEditor;
12
    LabeledEdit1: TLabeledEdit;
13
    Image1: TImage;
14
    ListBox1: TListBox;
15
    Label1: TLabel;
16
    Button1: TButton;
17
    Label2: TLabel;
18
    Button2: TButton;
19
    procedure Button2Click(Sender: TObject);
20
    procedure Button1Click(Sender: TObject);
21
  private
22
    FUD2: TUD2;
23
    FShortTaskName: string;
24
    procedure LoadExecutableFilesList;
25
    procedure LoadIcon;
26
  public
27
    constructor Create(AOwner: TComponent; AUD2: TUD2; AShortTaskName: string); reintroduce;
28
  end;
29
 
30
(*
31
var
32
  UD2TaskPropertiesForm: TTaskPropertiesForm;
33
*)
34
 
35
implementation
36
 
37
{$R *.dfm}
38
 
39
uses
85 daniel-mar 40
  UD2_Utils, UD2_Main, UD2_Parsing, ShellAPI;
68 daniel-mar 41
 
42
procedure TUD2TaskPropertiesForm.LoadExecutableFilesList;
43
resourcestring
80 daniel-mar 44
  LNG_RIOD = 'Run in own directory';
45
  LNG_ADMIN = 'Run as admin';
68 daniel-mar 46
var
47
  i: integer;
85 daniel-mar 48
  flags: string;
49
  cmds: TUD2CommandArray;
50
  cmd: TUD2Command;
68 daniel-mar 51
begin
52
  //fud2.GetCommandList(AShortTaskName, ListBox1.Items);
85 daniel-mar 53
 
68 daniel-mar 54
  ListBox1.Clear;
85 daniel-mar 55
  cmds := fud2.GetCommandList(FShortTaskName);
80 daniel-mar 56
 
85 daniel-mar 57
  for i := Low(cmds) to High(cmds) do
58
  begin
59
    cmd := cmds[i];
80 daniel-mar 60
 
85 daniel-mar 61
    flags := '';
80 daniel-mar 62
 
85 daniel-mar 63
    if cmd.runAsAdmin then
64
    begin
65
      if flags <> '' then flags := flags + ', ';
66
      flags := flags + LNG_ADMIN;
67
    end;
80 daniel-mar 68
 
85 daniel-mar 69
    if cmd.runInOwnDirectory then
70
    begin
71
      if flags <> '' then flags := flags + ', ';
72
      flags := flags + LNG_RIOD;
68 daniel-mar 73
    end;
85 daniel-mar 74
 
75
    if flags <> '' then
76
    begin
77
      flags := ' [' + flags + ']';
78
    end;
79
 
80
    ListBox1.Items.Add(cmd.executable + flags);
68 daniel-mar 81
  end;
82
end;
83
 
84
procedure TUD2TaskPropertiesForm.LoadIcon;
85
var
86
  ico: TIcon;
87
  icoSplit: TIconFileIdx;
88
  iconString: string;
89
begin
90
  iconString := fud2.ReadMetatagString(FShortTaskName, UD2_Main.TagIcon, '');
91
  if iconString <> '' then
92
  begin
93
    icoSplit := SplitIconString(iconString);
94
    ico := TIcon.Create;
95
    try
96
      ico.Handle := ExtractIcon(Application.Handle, PChar(icoSplit.FileName), icoSplit.IconIndex);
97
      Image1.Picture.Icon.Assign(ico);
98
    finally
99
      ico.Free;
100
    end;
101
  end
102
  else
103
  begin
73 daniel-mar 104
    UD2MainForm.TasksImageList.GetIcon(0, Image1.Picture.Icon);
68 daniel-mar 105
  end;
106
end;
107
 
108
constructor TUD2TaskPropertiesForm.Create(AOwner: TComponent; AUD2: TUD2; AShortTaskName: string);
109
resourcestring
110
  LNG_TASK_PROPS = 'Task properties of "%s"';
111
var
112
  Description: string;
113
begin
114
  inherited Create(AOwner);
115
  FUD2 := AUD2;
116
  FShortTaskName := AShortTaskName;
117
 
118
  FUD2.IniFile.ReadSectionValues(AShortTaskName, ValueListEditor1.Strings);
119
 
120
  Description := FUD2.GetTaskName(AShortTaskName);
121
  Caption := Format(LNG_TASK_PROPS, [Description]);
122
  LabeledEdit1.Text := AShortTaskName;
123
  LoadExecutableFilesList;
124
  LoadIcon;
125
end;
126
 
127
procedure TUD2TaskPropertiesForm.Button2Click(Sender: TObject);
128
begin
129
  Close;
130
end;
131
 
132
procedure TUD2TaskPropertiesForm.Button1Click(Sender: TObject);
85 daniel-mar 133
var
134
  cmd: TUD2Command;
68 daniel-mar 135
begin
85 daniel-mar 136
  cmd.executable := fud2.IniFileName;
137
  cmd.runAsAdmin := false;
138
  cmd.runInOwnDirectory := false;
139
  cmd.windowMode := SW_NORMAL;
140
  UD2_RunCMD(cmd);
68 daniel-mar 141
end;
142
 
143
end.