WinHelp.cpp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include <Common.h>
  5. #include <Tools.h>
  6. #include <TextsWin.h>
  7. #include <CoreMain.h>
  8. #include <HelpIntfs.hpp>
  9. //---------------------------------------------------------------------------
  10. #pragma package(smart_init)
  11. //---------------------------------------------------------------------------
  12. class TWebHelpSystem : public TInterfacedObject, public ICustomHelpViewer
  13. {
  14. public:
  15. __fastcall TWebHelpSystem(const UnicodeString & Version, const UnicodeString & Language);
  16. virtual int __fastcall UnderstandsKeyword(const UnicodeString HelpString);
  17. virtual TStringList * __fastcall GetHelpStrings(const UnicodeString HelpString);
  18. virtual void __fastcall NotifyID(const int ViewerID);
  19. virtual void __fastcall SoftShutDown();
  20. virtual void __fastcall ShutDown();
  21. virtual UnicodeString __fastcall GetViewerName();
  22. virtual bool __fastcall CanShowTableOfContents();
  23. virtual void __fastcall ShowTableOfContents();
  24. virtual void __fastcall ShowHelp(const UnicodeString HelpString);
  25. IUNKNOWN
  26. private:
  27. UnicodeString FVersion;
  28. UnicodeString FLanguage;
  29. };
  30. //---------------------------------------------------------------------------
  31. void __fastcall SearchHelp(const UnicodeString & Message)
  32. {
  33. OpenBrowser(FMTLOAD(DOCUMENTATION_SEARCH_URL2,
  34. (EncodeUrlString(Message), Configuration->ProductVersion,
  35. IntToHex(__int64(GUIConfiguration->Locale), 4))));
  36. }
  37. //---------------------------------------------------------------------------
  38. void __fastcall InitializeWinHelp()
  39. {
  40. InitializeCustomHelp(new TWebHelpSystem(
  41. Configuration->ProductVersion, IntToHex(__int64(GUIConfiguration->Locale), 4)));
  42. }
  43. //---------------------------------------------------------------------------
  44. void __fastcall FinalizeWinHelp()
  45. {
  46. FinalizeCustomHelp();
  47. }
  48. //---------------------------------------------------------------------------
  49. __fastcall TWebHelpSystem::TWebHelpSystem(
  50. const UnicodeString & Version, const UnicodeString & Language) :
  51. FVersion(Version), FLanguage(Language)
  52. {
  53. }
  54. //---------------------------------------------------------------------------
  55. int __fastcall TWebHelpSystem::UnderstandsKeyword(const UnicodeString HelpString)
  56. {
  57. // pretend that we know everything
  58. return 1;
  59. }
  60. //---------------------------------------------------------------------------
  61. TStringList * __fastcall TWebHelpSystem::GetHelpStrings(const UnicodeString HelpString)
  62. {
  63. TStringList * Result = new TStringList();
  64. Result->Add(GetViewerName() + L" : " + HelpString);
  65. return Result;
  66. }
  67. //---------------------------------------------------------------------------
  68. void __fastcall TWebHelpSystem::NotifyID(const int /*ViewerID*/)
  69. {
  70. }
  71. //---------------------------------------------------------------------------
  72. void __fastcall TWebHelpSystem::SoftShutDown()
  73. {
  74. }
  75. //---------------------------------------------------------------------------
  76. void __fastcall TWebHelpSystem::ShutDown()
  77. {
  78. }
  79. //---------------------------------------------------------------------------
  80. UnicodeString __fastcall TWebHelpSystem::GetViewerName()
  81. {
  82. return L"Web";
  83. }
  84. //---------------------------------------------------------------------------
  85. bool __fastcall TWebHelpSystem::CanShowTableOfContents()
  86. {
  87. return true;
  88. }
  89. //---------------------------------------------------------------------------
  90. void __fastcall TWebHelpSystem::ShowTableOfContents()
  91. {
  92. OpenBrowser(FMTLOAD(DOCUMENTATION_URL2, (FVersion, FLanguage)));
  93. }
  94. //---------------------------------------------------------------------------
  95. void __fastcall TWebHelpSystem::ShowHelp(const UnicodeString AHelpString)
  96. {
  97. UnicodeString HelpUrl;
  98. if (IsHttpUrl(AHelpString))
  99. {
  100. HelpUrl = AHelpString;
  101. }
  102. else
  103. {
  104. // see also AppendUrlParams
  105. UnicodeString HelpString = AHelpString;
  106. const wchar_t FragmentSeparator = L'#';
  107. UnicodeString HelpPath = CutToChar(HelpString, FragmentSeparator, false);
  108. HelpUrl = FMTLOAD(DOCUMENTATION_KEYWORD_URL2, (HelpPath, FVersion, FLanguage));
  109. AddToList(HelpUrl, HelpString, FragmentSeparator);
  110. }
  111. OpenBrowser(HelpUrl);
  112. }