Changeset 25 for trunk/NewView/StartupUnit.pas
- Timestamp:
- Aug 1, 2006, 8:51:54 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NewView/StartupUnit.pas
r18 r25 15 15 ACLString, 16 16 GlobalFilelistUnit, 17 SharedMemoryUnit; 17 SharedMemoryUnit, 18 CmdLineParameterUnit; 18 19 19 20 const 20 21 OWN_HELP_MARKER = '[NVHELP]'; 21 22 22 type23 TWindowPosition = record24 Left: longint;25 Bottom: longint;26 Width: longint;27 Height: longint;28 end;29 30 TCommandLineParameters = record31 ShowUsageFlag: boolean; // *32 TopicParam: string; // *33 FilenamesParam: TAString;34 SearchText: string;35 SearchFlag: boolean;36 GlobalSearchText: string; // *37 GlobalSearchFlag: boolean; // *38 OwnerWindow: HWND;39 HelpManagerWindow: HWND;40 IsHelpManager: boolean;41 WindowTitle: string;42 Position: TWindowPosition;43 SetPosition: boolean;44 Language: string;45 end;46 // * posted to re-used windows47 48 Procedure ParseCommandLineParameters;49 23 50 24 function AccessSharedMemory: TSuballocatedSharedMemory; … … 67 41 68 42 var 69 Parameters: TCommandLineParameters;43 CmdLineParameters: TCmdLineParameters; 70 44 SharedMemory: TSubAllocatedSharedMemory; 71 45 GlobalFilelist: TGlobalFilelist; … … 74 48 75 49 uses 76 //Forms, 77 Dos, SysUtils, PMWin, 78 ACLUtility, ACLStringUtility, ACLFileUtility, AStringUtilityUnit, ACLProfile, 50 Dos, 51 SysUtils, 52 PMWin, 53 ACLUtility, 54 ACLStringUtility, 55 ACLFileUtility, 56 AStringUtilityUnit, 57 ACLProfile, 79 58 HelpManagerUnit; 80 59 … … 251 230 end; 252 231 253 // Parse command line parameters newview was launched with.254 // Store them into the Parameters. variables for later processing.255 Procedure ParseCommandLineParameters;256 var257 ParamIndex: longint;258 Param: string;259 ParamValue: string;260 begin261 ProfileEvent( 'ParseCommandLineParameters started' );262 263 Parameters.FilenamesParam := TAString.Create;264 Parameters.TopicParam := '';265 Parameters.ShowUsageFlag := false;266 Parameters.GlobalSearchFlag := false;267 Parameters.SearchFlag := false;268 Parameters.OwnerWindow := 0;269 Parameters.IsHelpManager := false;270 Parameters.HelpManagerWindow := 0;271 Parameters.WindowTitle := '';272 Parameters.SetPosition := false;273 Parameters.Language := '';274 275 for ParamIndex := 1 to ParamCount do276 begin277 Param := ParamStr( ParamIndex );278 if MatchFlagParam( Param, '?' )279 or MatchFlagParam( Param, 'H' )280 or MatchFlagParam( Param, 'HELP' ) then281 begin282 Parameters.ShowUsageFlag := true283 end284 else if MatchValueParam( Param, 'LANG', Parameters.Language ) then285 begin286 end287 else if MatchValueParam( Param, 'G', Parameters.GlobalSearchText ) then288 begin289 Parameters.GlobalSearchFlag := true;290 end291 else if MatchValueParam( Param, 'S', Parameters.SearchText ) then292 begin293 Parameters.SearchFlag := true;294 end295 else if MatchValueParam( Param, 'HM', ParamValue ) then296 begin297 try298 Parameters.HelpManagerWindow := StrToInt( ParamValue );299 Parameters.IsHelpManager := true;300 except301 // ignore invalid window value302 end;303 end304 else if MatchValueParam( Param, 'OWNER', ParamValue ) then305 begin306 Parameters.OwnerWindow := StrToInt( ParamValue );307 end308 else if MatchValueParam( Param, 'TITLE', ParamValue ) then309 begin310 Parameters.WindowTitle := ParamValue;311 end312 else if MatchFlagParam( Param, 'PROFILE' ) then313 begin314 StartProfile( GetLogFilesDir + 'newview.prf' );315 end316 else if MatchValueParam( Param, 'POS', ParamValue ) then317 begin318 // set window position/size319 if ExtractPositionSpec( ParamValue,320 Parameters.Position ) then321 begin322 Parameters.SetPosition := true;323 end324 else325 begin326 // invalid...327 Parameters.ShowUsageFlag := true;328 end;329 end330 else331 begin332 if Parameters.FilenamesParam.Length = 0 then333 begin334 // filename(s)335 AString_ParamStr( ParamIndex, Parameters.FilenamesParam );336 end337 else338 begin339 // search (topic) parameter... append all remaining thingies340 if Parameters.TopicParam <> '' then341 begin342 Parameters.TopicParam := Parameters.TopicParam + ' ';343 end;344 Parameters.TopicParam := Parameters.TopicParam + Param;345 end;346 end;347 end;348 349 ProfileEvent( 'Parameters parsed' );350 ProfileEvent( ' Filenames: '351 + Parameters.FilenamesParam.AsString );352 ProfileEvent( ' Topic: '353 + Parameters.TopicParam );354 355 // params will be acted on later...356 ProfileEvent( '...done' );357 358 end;359 232 360 233 // If another instance already has the files open … … 371 244 Result := NULLHANDLE; 372 245 373 if Parameters.FilenamesParam.Length= 0 then246 if length(CmdLineParameters.getFileNames) = 0 then 374 247 // not loading files; nothing to check 375 248 exit; … … 378 251 Filenames := TStringList.Create; 379 252 380 AStringToList( Parameters.FilenamesParam, FileItems, '+' );253 StringToList(cmdLineParameters.getFileNames, FileItems, '+' ); 381 254 TranslateIPFEnvironmentVars( FileItems, FileNames ); 382 255 … … 446 319 function Startup: boolean; 447 320 var 321 tmpCmdLine: String; 322 tmpSplittedCmdLine : TStringList; 323 tmpRc : Integer; 324 448 325 ExistingWindow: HWND; 449 326 begin … … 455 332 456 333 // parse parameters into Parameters object 457 ParseCommandLineParameters; 334 tmpCmdLine := nativeOS2GetCmdLineParameter; 335 tmpSplittedCmdLine := TStringList.Create; 336 tmpRc := splitCmdLineParameter(tmpCmdLine, tmpSplittedCmdLine); 337 338 CmdLineParameters := TCmdLineParameters.Create; 339 CmdLineParameters.parseCmdLine(tmpSplittedCmdLine); 340 341 tmpSplittedCmdLine.Destroy; 458 342 459 343 ExistingWindow := FindExistingWindow; … … 466 350 // destroy global list - nobody else will 467 351 GlobalFilelist.Destroy; 468 Parameters.FilenamesParam.Destroy; 352 // TODO rbri maybe we need the next line 353 // Parameters.FilenamesParam.Destroy; 469 354 470 355 WinSetFocus( HWND_DESKTOP, ExistingWindow ); 471 356 472 if Parameters.TopicParam<> '' then357 if CmdLineParameters.getTopics <> '' then 473 358 begin 474 359 PostNewViewTextMessage( ExistingWindow, 475 360 NHM_SEARCH, 476 Parameters.TopicParam);477 end; 478 479 if Parameters.GlobalSearchFlag then361 CmdLineParameters.getTopics); 362 end; 363 364 if CmdLineParameters.getGlobalSearchTextFlag then 480 365 begin 481 366 PostNewViewTextMessage( ExistingWindow, 482 367 NHM_GLOBAL_SEARCH, 483 Parameters.GlobalSearchText );484 end; 485 486 if Parameters.ShowUsageFlag then368 CmdLineParameters.getGlobalSearchText ); 369 end; 370 371 if CmdLineParameters.getShowUsageFlag then 487 372 begin 488 373 WinPostMsg( ExistingWindow, … … 492 377 end; 493 378 494 if Parameters.IsHelpManagerthen379 if CmdLineParameters.getHelpManagerFlag then 495 380 begin 496 381 // tell the new help manager instance to talk to the 497 382 // other viewer 498 WinPostMsg( Parameters.HelpManagerWindow,383 WinPostMsg( CmdLineParameters.getHelpManagerWindow, 499 384 NHM_VIEWER_READY, 500 385 ExistingWindow,
Note:
See TracChangeset
for help on using the changeset viewer.