Changeset 291


Ignore:
Timestamp:
May 5, 2008, 8:31:10 PM (17 years ago)
Author:
RBRi
Message:

% external link handling fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.19_branch/NewView/MainForm.pas

    r165 r291  
    26882688var
    26892689  FilePath: string;
     2690  AlternativeFilePath: string;
     2691  FileIndex: longint;
     2692  HelpFile: THelpFile;
    26902693  Topic: TTopic;
     2694  IsFileAlreadyOpened: boolean;
    26912695begin
    26922696  // try in same dir as source file
     
    26942698              + g_ExternalLinkFilename;
    26952699
    2696   if not StrEqualIgnoringCase( FilePath, g_ExternalLinkSourceFilename ) then
     2700  AlternativeFilePath := FilePath;
     2701
     2702  if ExtractFileExt(g_ExternalLinkFilename) = '' then
     2703  begin
     2704    FilePath := ChangeFileExt(FilePath, INF_FILE_EXTENSION);
     2705    AlternativeFilePath := ChangeFileExt(FilePath, HELP_FILE_EXTENSION);
     2706  end;
     2707
     2708  // figure out, if the file is already open
     2709  IsFileAlreadyOpened := false;
     2710  for FileIndex := 0 to CurrentOpenFiles.Count - 1 do
     2711  begin
     2712    HelpFile := CurrentOpenFiles[FileIndex];
     2713    if StrEndsWithIgnoringCase(HelpFile.Filename, FilePath)
     2714       or StrEndsWithIgnoringCase(HelpFile.Filename, g_ExternalLinkFilename + HELP_FILE_EXTENSION) then
     2715    begin
     2716      IsFileAlreadyOpened := true;
     2717    end;
     2718  end;
     2719
     2720  if not IsFileAlreadyOpened then
    26972721  begin
    26982722    // different file - try and open it
     
    27032727    if not FileExists( FilePath ) then
    27042728    begin
    2705       DoErrorDlg( 'Link Error',
    2706                   'Cannot find linked file '
    2707                   + g_ExternalLinkFilename );
     2729      DoErrorDlg('Link Error', 'Cannot find linked file ''' + g_ExternalLinkFilename +'''');
    27082730      exit;
    27092731    end;
     
    27192741        exit;
    27202742    end;
    2721 
    27222743  end;
    27232744
     
    27292750  end;
    27302751
    2731   Topic := FindTopicByGlobalName( g_ExternalLinkTopic );
     2752  // don't call this search here;
     2753  // because we know the file to search in
     2754  // Topic := FindTopicByGlobalName( g_ExternalLinkTopic );
     2755  Topic := nil;
     2756  for FileIndex := 0 to CurrentOpenFiles.Count - 1 do
     2757  begin
     2758    HelpFile := CurrentOpenFiles[FileIndex];
     2759    if StrEndsWithIgnoringCase(HelpFile.Filename, g_ExternalLinkFilename + INF_FILE_EXTENSION)
     2760       or StrEndsWithIgnoringCase(HelpFile.Filename, g_ExternalLinkFilename + HELP_FILE_EXTENSION) then
     2761    begin
     2762      Topic := HelpFile.FindTopicByGlobalName(g_ExternalLinkTopic);
     2763    end;
     2764  end;
     2765
    27322766  if Topic = nil then
    27332767  begin
    2734     DoErrorDlg( 'Link Error',
    2735                 'Unable to find topic with global name '
    2736                 + g_ExternalLinkTopic );
     2768    DoErrorDlg('Link Error', 'Unable to find topic with global name ''' + g_ExternalLinkTopic + ''');
    27372769    exit;
    27382770  end;
     
    55345566    LinkDetails := StrSubstringFrom(LinkString, Length(PARAM_LINK_EXTERNAL) + 2);
    55355567
     5568    Window := FindWindowFromView(Sender, Windows);
     5569    SourceFile := Window.Topic.HelpFile as THelpFile;
     5570
    55365571    tmpLinkDetails := TStringList.Create;
    55375572    StrExtractStrings(tmpLinkDetails, LinkDetails, [' '], #0);
    55385573    LinkIndex := StrToInt(tmpLinkDetails[0]);
     5574    g_ExternalLinkFileName := SourceFile.ReferencedFiles[ LinkIndex ];
     5575    g_ExternalLinkTopic := tmpLinkDetails[1];
    55395576    tmpLinkDetails.Destroy;
    55405577
    5541     Window := FindWindowFromView( Sender, Windows );
    5542     SourceFile := Window.Topic.HelpFile as THelpFile;
    5543 
    5544     g_ExternalLinkFileName := SourceFile.ReferencedFiles[ LinkIndex ];
    5545     g_ExternalLinkTopic := LinkDetails;
    55465578    g_ExternalLinkSourceFilename := SourceFile.Filename;
    55475579    g_ExternalLinkKeepCurrent := true; // hm... what would be nice?
Note: See TracChangeset for help on using the changeset viewer.