Rev 84 | Rev 86 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 84 | Rev 85 | ||
---|---|---|---|
Line 99... | Line 99... | ||
99 | implementation |
99 | implementation |
100 | 100 | ||
101 | {$R *.dfm} |
101 | {$R *.dfm} |
102 | 102 | ||
103 | uses |
103 | uses |
104 | ShellAPI, Clipbrd, Math, AlphaNumSort, UD2_Utils, UD2_TaskProperties; |
104 | ShellAPI, Clipbrd, Math, AlphaNumSort, UD2_Utils, UD2_TaskProperties, UD2_Parsing; |
105 | 105 | ||
106 | type |
106 | type |
107 | TUD2ListViewEntry = class(TObject) |
107 | TUD2ListViewEntry = class(TObject) |
108 | ShortTaskName: string; |
108 | ShortTaskName: string; |
109 | CloseAfterLaunching: boolean; |
109 | CloseAfterLaunching: boolean; |
Line 210... | Line 210... | ||
210 | procedure TUD2MainForm.DoRun(ShortTaskName: string); |
210 | procedure TUD2MainForm.DoRun(ShortTaskName: string); |
211 | resourcestring |
211 | resourcestring |
212 | LNG_TASK_NOT_EXISTS = 'The task "%s" does not exist in the INI file.'; |
212 | LNG_TASK_NOT_EXISTS = 'The task "%s" does not exist in the INI file.'; |
213 | LNG_NOTHING_MATCHES = 'No identification string matches to your environment. No application was launched. Please check the Task Definition File.'; |
213 | LNG_NOTHING_MATCHES = 'No identification string matches to your environment. No application was launched. Please check the Task Definition File.'; |
214 | var |
214 | var |
215 | slCmds: TStringList; |
- | |
216 | i: integer; |
215 | i: integer; |
217 | cmd: string; |
216 | cmds: TUD2CommandArray; |
218 | begin |
217 | begin |
219 | if not ud2.TaskExists(ShortTaskName) then |
218 | if not ud2.TaskExists(ShortTaskName) then |
220 | begin |
219 | begin |
221 | // This can happen if the task name is taken from command line |
220 | // This can happen if the task name is taken from command line |
222 | MessageDlg(Format(LNG_TASK_NOT_EXISTS, [ShortTaskName]), mtError, [mbOK], 0); |
221 | MessageDlg(Format(LNG_TASK_NOT_EXISTS, [ShortTaskName]), mtError, [mbOK], 0); |
223 | ExitCode := EXITCODE_TASK_NOT_EXISTS; |
222 | ExitCode := EXITCODE_TASK_NOT_EXISTS; |
224 | Exit; |
223 | Exit; |
225 | end; |
224 | end; |
226 | 225 | ||
227 | slCmds := TStringList.Create; |
226 | SetLength(cmds, 0); |
228 | try |
- | |
229 | ud2.GetCommandList(ShortTaskName, slCmds); |
227 | cmds := ud2.GetCommandList(ShortTaskName); |
230 | 228 | ||
231 | if (slCmds.Count = 0) and ud2.ReadMetatagBool(ShortTaskName, TagWarnIfNothingMatches, DefaultWarnIfNothingMatches) then |
229 | if (Length(cmds) = 0) and ud2.ReadMetatagBool(ShortTaskName, TagWarnIfNothingMatches, DefaultWarnIfNothingMatches) then |
232 | begin |
230 | begin |
233 | MessageDlg(LNG_NOTHING_MATCHES, mtWarning, [mbOK], 0); |
231 | MessageDlg(LNG_NOTHING_MATCHES, mtWarning, [mbOK], 0); |
234 | ExitCode := EXITCODE_TASK_NOTHING_MATCHES; |
232 | ExitCode := EXITCODE_TASK_NOTHING_MATCHES; |
235 | end; |
233 | end; |
236 | 234 | ||
237 | for i := 0 to slCmds.Count-1 do |
235 | for i := Low(cmds) to High(cmds) do |
238 | begin |
236 | begin |
239 | cmd := slCmds.Strings[i]; |
237 | UD2_RunCMD(cmds[i]); |
240 | if cmd = '' then continue; |
- | |
241 | UD2_RunCMD(cmd, SW_NORMAL); // Idea: Let SW_NORMAL be configurable by the user? |
- | |
242 | end; |
- | |
243 | finally |
- | |
244 | slCmds.Free; |
- | |
245 | end; |
238 | end; |
246 | end; |
239 | end; |
247 | 240 | ||
248 | procedure TUD2MainForm.FormDestroy(Sender: TObject); |
241 | procedure TUD2MainForm.FormDestroy(Sender: TObject); |
249 | var |
242 | var |
Line 386... | Line 379... | ||
386 | TasksListViewDblClick(Sender); |
379 | TasksListViewDblClick(Sender); |
387 | end; |
380 | end; |
388 | end; |
381 | end; |
389 | 382 | ||
390 | procedure TUD2MainForm.Button1Click(Sender: TObject); |
383 | procedure TUD2MainForm.Button1Click(Sender: TObject); |
- | 384 | var |
|
- | 385 | cmd: TUD2Command; |
|
391 | begin |
386 | begin |
- | 387 | cmd.executable := ud2.IniFileName; |
|
- | 388 | cmd.runAsAdmin := false; |
|
- | 389 | cmd.runInOwnDirectory := false; |
|
392 | UD2_RunCMD(ud2.IniFileName, SW_NORMAL); |
390 | cmd.windowMode := SW_NORMAL; |
- | 391 | UD2_RunCMD(cmd); |
|
393 | end; |
392 | end; |
394 | 393 | ||
395 | procedure TUD2MainForm.Button2Click(Sender: TObject); |
394 | procedure TUD2MainForm.Button2Click(Sender: TObject); |
396 | begin |
395 | begin |
397 | if CompatSaveDialogExecute(SaveDialog1) then |
396 | if CompatSaveDialogExecute(SaveDialog1) then |
Line 400... | Line 399... | ||
400 | end; |
399 | end; |
401 | end; |
400 | end; |
402 | 401 | ||
403 | procedure TUD2MainForm.URLLabelClick(Sender: TObject); |
402 | procedure TUD2MainForm.URLLabelClick(Sender: TObject); |
404 | var |
403 | var |
405 | s: string; |
404 | cmd: TUD2Command; |
406 | begin |
405 | begin |
407 | s := TLabel(Sender).Caption; |
406 | cmd.executable := TLabel(Sender).Caption; |
408 | if Pos('@', s) > 0 then |
407 | if Pos('@', cmd.executable) > 0 then |
409 | s := 'mailto:' + s |
408 | cmd.executable := 'mailto:' + cmd.executable |
410 | else |
409 | else |
411 | s := 'http://' + s; |
410 | cmd.executable := 'http://' + cmd.executable; |
- | 411 | ||
- | 412 | cmd.runAsAdmin := false; |
|
- | 413 | cmd.runInOwnDirectory := false; |
|
- | 414 | cmd.windowMode := SW_NORMAL; |
|
- | 415 | ||
412 | UD2_RunCMD(s, SW_NORMAL); |
416 | UD2_RunCMD(cmd); |
413 | end; |
417 | end; |
414 | 418 | ||
415 | procedure TUD2MainForm.TasksPopupMenuPopup(Sender: TObject); |
419 | procedure TUD2MainForm.TasksPopupMenuPopup(Sender: TObject); |
416 | begin |
420 | begin |
417 | Run1.Enabled := TasksListView.ItemIndex <> -1; |
421 | Run1.Enabled := TasksListView.ItemIndex <> -1; |
Line 527... | Line 531... | ||
527 | begin |
531 | begin |
528 | if ud2.FulfilsEverySubterm(ParamStr(2)) then |
532 | if ud2.FulfilsEverySubterm(ParamStr(2)) then |
529 | begin |
533 | begin |
530 | ExitCode := EXITCODE_OK; |
534 | ExitCode := EXITCODE_OK; |
531 | 535 | ||
- | 536 | if ParamStr(3) <> '' then |
|
- | 537 | begin |
|
532 | if ParamStr(3) <> '' then UD2_RunCMD(ParamStr(3), SW_NORMAL); // Idea: SW_NORMAL changeable via parameter |
538 | UD2_RunCMD(UD2P_DecodeCommand(ParamStr(3))); |
- | 539 | end; |
|
533 | end |
540 | end |
534 | else |
541 | else |
535 | begin |
542 | begin |
536 | ExitCode := EXITCODE_TASK_NOTHING_MATCHES; |
543 | ExitCode := EXITCODE_TASK_NOTHING_MATCHES; |
537 | end; |
544 | end; |
Line 568... | Line 575... | ||
568 | end; |
575 | end; |
569 | 576 | ||
570 | procedure TUD2MainForm.Button5Click(Sender: TObject); |
577 | procedure TUD2MainForm.Button5Click(Sender: TObject); |
571 | var |
578 | var |
572 | idTerm: string; |
579 | idTerm: string; |
- | 580 | cmds: TUD2CommandArray; |
|
573 | slCmd: TStrings; |
581 | sCmds: string; |
- | 582 | i: integer; |
|
574 | begin |
583 | begin |
575 | // TODO xxx: Auch eine Möglichkeit geben, einfach nur "Testecho(abc)" einzugeben und es kommt was bei raus |
584 | // TODO xxx: Auch eine Möglichkeit geben, einfach nur "Testecho(abc)" einzugeben und es kommt was bei raus |
576 | 585 | ||
577 | if InputQuery('Enter example term', 'Example: Testecho(abc):abc=calc.exe', idTerm) then |
586 | if InputQuery('Enter example term', 'Example: Testecho(abc):abc=calc.exe', idTerm) then |
578 | begin |
587 | begin |
- | 588 | SetLength(cmds, 0); |
|
579 | slCmd := TStringList.Create; |
589 | cmds := ud2.CheckTerm(idTerm); |
- | 590 | ||
- | 591 | sCmds := ''; |
|
- | 592 | for i := Low(cmds) to High(cmds) do |
|
580 | try |
593 | begin |
581 | ud2.CheckTerm(idTerm, slCmd); |
594 | sCmds := sCmds + cmds[i].executable + #13#10; |
- | 595 | end; |
|
- | 596 | ||
582 | if slCmd.Count = 0 then |
597 | if Length(cmds) = 0 then |
583 | ShowMessage('No commands would be executed.') |
598 | ShowMessage('No commands would be executed.') |
584 | else |
599 | else |
585 | showmessage('Following commands would be executed:' + #13#10#13#10 + slCmd.Text); |
600 | showmessage('Following commands would be executed:' + #13#10#13#10 + sCmds); |
586 | finally |
- | |
587 | slCmd.Free; |
- | |
588 | end; |
- | |
589 | end; |
601 | end; |
590 | LoadDetectedIDs; |
602 | LoadDetectedIDs; |
591 | end; |
603 | end; |
592 | 604 | ||
593 | end. |
605 | end. |