SDocumentationAnchor.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
  2. #include "SDocumentationAnchor.h"
  3. #include "Widgets/Images/SImage.h"
  4. #include "Widgets/Input/SButton.h"
  5. #include "EditorStyleSet.h"
  6. #include "Widgets/SToolTip.h"
  7. #include "IDocumentation.h"
  8. #include "DocumentationLink.h"
  9. //#include "ExtDocumentation.h"
  10. void SExtDocumentationAnchor::Construct(const FArguments& InArgs )
  11. {
  12. Link = InArgs._Link;
  13. TAttribute<FText> ToolTipText = InArgs._ToolTipText;
  14. if ( !ToolTipText.IsBound() && ToolTipText.Get().IsEmpty() )
  15. {
  16. ToolTipText = NSLOCTEXT("DocumentationAnchor", "DefaultToolTip", "Click to open documentation");
  17. }
  18. Default = FAppStyle::GetBrush( "HelpIcon" );
  19. Hovered = FAppStyle::GetBrush( "HelpIcon.Hovered" );
  20. Pressed = FAppStyle::GetBrush( "HelpIcon.Pressed" );
  21. FString PreviewLink = InArgs._PreviewLink;
  22. if (!PreviewLink.IsEmpty())
  23. {
  24. // All in-editor udn documents must live under the Shared/ folder
  25. ensure(PreviewLink.StartsWith(TEXT("Shared/")));
  26. }
  27. ChildSlot
  28. [
  29. SAssignNew( Button, SButton )
  30. .ContentPadding( 0 )
  31. .ButtonStyle(FAppStyle::Get(), "HelpButton" )
  32. .OnClicked( this, &SExtDocumentationAnchor::OnClicked )
  33. .HAlign( HAlign_Center )
  34. .VAlign( VAlign_Center )
  35. .ToolTip( IDocumentation::Get()->CreateToolTip( ToolTipText, NULL, PreviewLink, InArgs._PreviewExcerptName ) )
  36. [
  37. SAssignNew(ButtonImage, SImage)
  38. .Image( this, &SExtDocumentationAnchor::GetButtonImage )
  39. ]
  40. ];
  41. }
  42. const FSlateBrush* SExtDocumentationAnchor::GetButtonImage() const
  43. {
  44. if ( Button->IsPressed() )
  45. {
  46. return Pressed;
  47. }
  48. if ( ButtonImage->IsHovered() )
  49. {
  50. return Hovered;
  51. }
  52. return Default;
  53. }
  54. FReply SExtDocumentationAnchor::OnClicked() const
  55. {
  56. IDocumentation::Get()->Open(Link.Get(), FDocumentationSourceInfo(TEXT("doc_anchors")));
  57. return FReply::Handled();
  58. }
  59. #ifdef EXT_DOC_NAMESPACE
  60. #undef EXT_DOC_NAMESPACE
  61. #endif