Subversion Repositories userdetect2

Rev

Rev 80 | Rev 82 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 80 Rev 81
Line 6... Line 6...
6
{$LEGACYIFEND ON}
6
{$LEGACYIFEND ON}
7
{$IFEND}
7
{$IFEND}
8
 
8
 
9
{$INCLUDE 'UserDetect2.inc'}
9
{$INCLUDE 'UserDetect2.inc'}
10
 
10
 
-
 
11
{$WARN UNSAFE_CODE OFF}
-
 
12
{$WARN UNSAFE_TYPE OFF}
-
 
13
{$WARN UNSAFE_CAST OFF}
-
 
14
 
11
uses
15
uses
12
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
16
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
13
  Dialogs, StdCtrls, Grids, ValEdit, UD2_Obj, ComCtrls, ImgList, ExtCtrls,
17
  Dialogs, StdCtrls, Grids, ValEdit, UD2_Obj, ComCtrls, ImgList, ExtCtrls,
14
  CommCtrl, Menus, VTSListView, VTSCompat;
18
  CommCtrl, Menus, VTSListView, VTSCompat;
15
 
19
 
Line 58... Line 62...
58
    CopyTaskDefinitionExample1: TMenuItem;
62
    CopyTaskDefinitionExample1: TMenuItem;
59
    Button3: TButton;
63
    Button3: TButton;
60
    VersionLabel: TLabel;
64
    VersionLabel: TLabel;
61
    LoadedPluginsPopupMenu: TPopupMenu;
65
    LoadedPluginsPopupMenu: TPopupMenu;
62
    MenuItem1: TMenuItem;
66
    MenuItem1: TMenuItem;
-
 
67
    Panel2: TPanel;
-
 
68
    Image2: TImage;
63
    procedure FormDestroy(Sender: TObject);
69
    procedure FormDestroy(Sender: TObject);
64
    procedure FormShow(Sender: TObject);
70
    procedure FormShow(Sender: TObject);
65
    procedure TasksListViewDblClick(Sender: TObject);
71
    procedure TasksListViewDblClick(Sender: TObject);
66
    procedure TasksListViewKeyPress(Sender: TObject; var Key: Char);
72
    procedure TasksListViewKeyPress(Sender: TObject; var Key: Char);
67
    procedure Button1Click(Sender: TObject);
73
    procedure Button1Click(Sender: TObject);
Line 83... Line 89...
83
    procedure LoadINITemplate;
89
    procedure LoadINITemplate;
84
    procedure LoadLoadedPluginList;
90
    procedure LoadLoadedPluginList;
85
    function GetIniFileName: string;
91
    function GetIniFileName: string;
86
    procedure DoRun(ShortTaskName: string);
92
    procedure DoRun(ShortTaskName: string);
87
    procedure CheckForErrors;
93
    procedure CheckForErrors;
-
 
94
  public
-
 
95
    procedure Run;
88
  end;
96
  end;
89
 
97
 
90
var
98
var
91
  UD2MainForm: TUD2MainForm;
99
  UD2MainForm: TUD2MainForm;
92
 
100
 
Line 123... Line 131...
123
 
131
 
124
function TUD2MainForm.GetIniFileName: string;
132
function TUD2MainForm.GetIniFileName: string;
125
resourcestring
133
resourcestring
126
  LNG_FILE_NOT_FOUND = 'File "%s" not found.';
134
  LNG_FILE_NOT_FOUND = 'File "%s" not found.';
127
begin
135
begin
128
  if ParamCount >= 1 then
136
  if (ParamCount >= 1) and not CheckBoolParam(1, 'C') then
129
  begin
137
  begin
130
    if FileExists(ParamStr(1)) then
138
    if FileExists(ParamStr(1)) then
131
    begin
139
    begin
132
      result := ParamStr(1);
140
      result := ParamStr(1);
133
    end
141
    end
Line 220... Line 228...
220
 
228
 
221
  slCmds := TStringList.Create;
229
  slCmds := TStringList.Create;
222
  try
230
  try
223
    ud2.GetCommandList(ShortTaskName, slCmds);
231
    ud2.GetCommandList(ShortTaskName, slCmds);
224
 
232
 
225
    if (slCmds.Count = 0) and
-
 
226
      ud2.ReadMetatagBool(ShortTaskName,
-
 
227
      TagWarnIfNothingMatches, DefaultWarnIfNothingMatches) then
233
    if (slCmds.Count = 0) and ud2.ReadMetatagBool(ShortTaskName, TagWarnIfNothingMatches, DefaultWarnIfNothingMatches) then
228
    begin
234
    begin
229
      MessageDlg(LNG_NOTHING_MATCHES, mtWarning, [mbOK], 0);
235
      MessageDlg(LNG_NOTHING_MATCHES, mtWarning, [mbOK], 0);
230
    ExitCode := EXITCODE_TASK_NOTHING_MATCHES;
236
      ExitCode := EXITCODE_TASK_NOTHING_MATCHES;
231
    end;
237
    end;
232
 
238
 
233
    for i := 0 to slCmds.Count-1 do
239
    for i := 0 to slCmds.Count-1 do
234
    begin
240
    begin
235
      cmd := slCmds.Strings[i];
241
      cmd := slCmds.Strings[i];
236
      if cmd = '' then continue;
242
      if cmd = '' then continue;
237
      UD2_RunCMD(cmd, SW_NORMAL); // Idea: let SW_NORMAL be configurable by the user?
243
      UD2_RunCMD(cmd, SW_NORMAL); // Idea: Let SW_NORMAL be configurable by the user?
238
    end;
244
    end;
239
  finally
245
  finally
240
    slCmds.Free;
246
    slCmds.Free;
241
  end;
247
  end;
242
end;
248
end;
Line 350... Line 356...
350
    LoadedPluginsListView.Columns.Items[i].Width := LVSCW_AUTOSIZE_USEHEADER;
356
    LoadedPluginsListView.Columns.Items[i].Width := LVSCW_AUTOSIZE_USEHEADER;
351
  end;
357
  end;
352
end;
358
end;
353
 
359
 
354
procedure TUD2MainForm.FormShow(Sender: TObject);
360
procedure TUD2MainForm.FormShow(Sender: TObject);
355
resourcestring
-
 
356
  LNG_SYNTAX = 'Syntax: %s [TaskDefinitionFile [TaskName]]';
-
 
357
var
-
 
358
  LoadedIniFile: string;
-
 
359
begin
361
begin
360
  ExitCode := EXITCODE_OK;
-
 
361
 
-
 
362
  // To avoid accidental changes from the GUI designer
362
  // To avoid accidental change of the default tab from the IDE VCL Designer
363
  PageControl1.ActivePage := TasksTabSheet;
363
  PageControl1.ActivePage := TasksTabSheet;
364
 
-
 
365
  if ((ParamCount = 1) and (ParamStr(1) = '/?')) or (ParamCount >= 3) then
-
 
366
  begin
-
 
367
    ExitCode := EXTICODE_SYNTAX_ERROR;
-
 
368
    MessageDlg(Format(LNG_SYNTAX, [GetOwnCmdName]), mtInformation, [mbOK], 0);
-
 
369
    Close;
-
 
370
    Exit;
-
 
371
  end;
-
 
372
 
-
 
373
  LoadedIniFile := GetIniFileName;
-
 
374
  if LoadedIniFile = '' then
-
 
375
  begin
-
 
376
    Close;
-
 
377
    Exit;
-
 
378
  end;
-
 
379
  ud2 := TUD2.Create(LoadedIniFile);
-
 
380
 
-
 
381
  ud2.HandlePluginDir('',        '*.smp');
-
 
382
  ud2.HandlePluginDir('Plugins', '*.smp');
-
 
383
  ud2.HandlePluginDir('Plugins', '*.dll');
-
 
384
 
-
 
385
  if ParamCount >= 2 then
-
 
386
  begin
-
 
387
    DoRun(ParamStr(2));
-
 
388
    Close;
-
 
389
    Exit;
-
 
390
  end
-
 
391
  else
-
 
392
  begin
-
 
393
    LoadTaskList;
-
 
394
    LoadDetectedIDs;
-
 
395
    LoadINITemplate;
-
 
396
    LoadLoadedPluginList;
-
 
397
    CheckForErrors;
-
 
398
  end;
-
 
399
end;
364
end;
400
 
365
 
401
procedure TUD2MainForm.TasksListViewDblClick(Sender: TObject);
366
procedure TUD2MainForm.TasksListViewDblClick(Sender: TObject);
402
var
367
var
403
  obj: TUD2ListViewEntry;
368
  obj: TUD2ListViewEntry;
Line 516... Line 481...
516
begin
481
begin
517
  s := '; ' + LoadedPluginsListView.Selected.SubItems.Strings[6];
482
  s := '; ' + LoadedPluginsListView.Selected.SubItems.Strings[6];
518
  Clipboard.AsText := s;
483
  Clipboard.AsText := s;
519
end;
484
end;
520
 
485
 
-
 
486
procedure TUD2MainForm.Run;
-
 
487
resourcestring
-
 
488
  LNG_SYNTAX = 'Syntax: %s [TaskDefinitionFile [/T TaskName] | /C IdentificationTerm [Command] | /?]';
-
 
489
var
-
 
490
  LoadedIniFile: string;
-
 
491
begin
-
 
492
  ExitCode := EXITCODE_OK;
-
 
493
 
-
 
494
  if ((ParamCount = 1) and CheckBoolParam(1, '?')) or
-
 
495
     (CheckBoolParam(2, 'T') and (ParamCount > 3)) or
-
 
496
     (CheckBoolParam(1, 'C') and (ParamCount > 3)) or
-
 
497
     (not CheckBoolParam(2, 'T') and not CheckBoolParam(1, 'C') and (ParamCount > 1)) then
-
 
498
  begin
-
 
499
    ExitCode := EXITCODE_SYNTAX_ERROR;
-
 
500
    MessageDlg(Format(LNG_SYNTAX, [GetOwnCmdName]), mtInformation, [mbOK], 0);
-
 
501
 
-
 
502
    Visible := false;
-
 
503
    Close;
-
 
504
    Exit;
-
 
505
  end;
-
 
506
 
-
 
507
  LoadedIniFile := GetIniFileName;
-
 
508
  if LoadedIniFile = '' then
-
 
509
  begin
-
 
510
    Visible := false;
-
 
511
    Close;
-
 
512
    Exit;
-
 
513
  end;
-
 
514
  ud2 := TUD2.Create(LoadedIniFile);
-
 
515
 
-
 
516
  ud2.HandlePluginDir('',        '*.smp');
-
 
517
  ud2.HandlePluginDir('Plugins', '*.smp');
-
 
518
  ud2.HandlePluginDir('Plugins', '*.dll');
-
 
519
 
-
 
520
  if CheckBoolParam(1, 'C') then
-
 
521
  begin
-
 
522
    if ud2.FulfilsEverySubterm(ParamStr(2)) then
-
 
523
    begin
-
 
524
      ExitCode := EXITCODE_OK;
-
 
525
 
-
 
526
      if ParamStr(3) <> '' then UD2_RunCMD(ParamStr(3), SW_NORMAL); // Idea: SW_NORMAL changeable via parameter
-
 
527
    end
-
 
528
    else
-
 
529
    begin
-
 
530
      ExitCode := EXITCODE_TASK_NOTHING_MATCHES;
-
 
531
    end;
-
 
532
 
-
 
533
    Visible := false;
-
 
534
    Close;
-
 
535
    Exit;
-
 
536
  end
-
 
537
  else if CheckBoolParam(2, 'T') then
-
 
538
  begin
-
 
539
    DoRun(ParamStr(3));
-
 
540
 
-
 
541
    Visible := false;
-
 
542
    Close;
-
 
543
    Exit;
-
 
544
  end
-
 
545
  else
-
 
546
  begin
-
 
547
    LoadTaskList;
-
 
548
    LoadDetectedIDs;
-
 
549
    LoadINITemplate;
-
 
550
    LoadLoadedPluginList;
-
 
551
    CheckForErrors;
-
 
552
 
-
 
553
    Visible := true;
-
 
554
    Exit;
-
 
555
  end;
-
 
556
end;
-
 
557
 
521
end.
558
end.