Subversion Repositories userdetect2

Rev

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

  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
  40.   UD2_Utils, UD2_Main, UD2_Parsing, ShellAPI;
  41.  
  42. procedure TUD2TaskPropertiesForm.LoadExecutableFilesList;
  43. resourcestring
  44.   LNG_RIOD = 'Run in own directory';
  45.   LNG_ADMIN = 'Run as admin';
  46. var
  47.   i: integer;
  48.   flags: string;
  49.   cmds: TUD2CommandArray;
  50.   cmd: TUD2Command;
  51. begin
  52.   //fud2.GetCommandList(AShortTaskName, ListBox1.Items);
  53.  
  54.   ListBox1.Clear;
  55.   cmds := fud2.GetCommandList(FShortTaskName);
  56.  
  57.   for i := Low(cmds) to High(cmds) do
  58.   begin
  59.     cmd := cmds[i];
  60.  
  61.     flags := '';
  62.  
  63.     if cmd.runAsAdmin then
  64.     begin
  65.       if flags <> '' then flags := flags + ', ';
  66.       flags := flags + LNG_ADMIN;
  67.     end;
  68.  
  69.     if cmd.runInOwnDirectory then
  70.     begin
  71.       if flags <> '' then flags := flags + ', ';
  72.       flags := flags + LNG_RIOD;
  73.     end;
  74.  
  75.     if flags <> '' then
  76.     begin
  77.       flags := ' [' + flags + ']';
  78.     end;
  79.  
  80.     ListBox1.Items.Add(cmd.executable + flags);
  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
  104.     UD2MainForm.TasksImageList.GetIcon(0, Image1.Picture.Icon);
  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);
  133. var
  134.   cmd: TUD2Command;
  135. begin
  136.   cmd.executable := fud2.IniFileName;
  137.   cmd.runAsAdmin := false;
  138.   cmd.runInOwnDirectory := false;
  139.   cmd.windowMode := SW_NORMAL;
  140.   UD2_RunCMD(cmd);
  141. end;
  142.  
  143. end.
  144.