You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
2.9 KiB
123 lines
2.9 KiB
using System.Collections.Generic; |
|
|
|
using UnityEditor; |
|
using UnityEngine; |
|
|
|
using Unity.PlasticSCM.Editor.UI; |
|
|
|
namespace Unity.PlasticSCM.Editor.Help |
|
{ |
|
internal class HelpPanel |
|
{ |
|
internal Vector2 TextScroll; |
|
|
|
internal bool Visible { get; private set; } |
|
|
|
internal PlasticGui.Help.HelpImage Image |
|
{ |
|
get { return mHelpImage; } |
|
} |
|
|
|
internal HelpData Data |
|
{ |
|
get { return mHelpData; } |
|
} |
|
|
|
internal GUIContent GUIContent |
|
{ |
|
get { return mHelpGUIContent; } |
|
} |
|
|
|
internal HelpPanel(EditorWindow window) |
|
{ |
|
mWindow = window; |
|
} |
|
|
|
internal void Show(PlasticGui.Help.HelpImage helpImage, HelpData helpData) |
|
{ |
|
ClearData(); |
|
|
|
UpdateData(helpImage, helpData); |
|
|
|
Visible = true; |
|
|
|
mWindow.Repaint(); |
|
} |
|
|
|
internal void Hide() |
|
{ |
|
ClearData(); |
|
|
|
Visible = false; |
|
|
|
mWindow.Repaint(); |
|
} |
|
|
|
internal bool TryGetLinkAtChar( |
|
int charIndex, |
|
out HelpLink link) |
|
{ |
|
link = null; |
|
|
|
FormattedHelpLink formattedLink = GetFormattedLinkAtChar( |
|
mFormattedLinks, charIndex); |
|
|
|
if (formattedLink == null) |
|
return false; |
|
|
|
link = formattedLink.Source; |
|
|
|
return !BuildFormattedHelp.IsLinkMetaChar(formattedLink, charIndex); |
|
} |
|
|
|
void ClearData() |
|
{ |
|
mHelpImage = PlasticGui.Help.HelpImage.GenericBuho; |
|
mHelpData = null; |
|
mHelpGUIContent = null; |
|
mFormattedLinks = null; |
|
} |
|
|
|
void UpdateData(PlasticGui.Help.HelpImage helpImage, HelpData helpData) |
|
{ |
|
mHelpImage = helpImage; |
|
mHelpData = helpData; |
|
|
|
string formattedHelpText; |
|
BuildFormattedHelp.ForData( |
|
mHelpData.CleanText, |
|
mHelpData.FormattedBlocks.ToArray(), |
|
mHelpData.Links.ToArray(), |
|
out formattedHelpText, |
|
out mFormattedLinks); |
|
|
|
mHelpGUIContent = new GUIContent(formattedHelpText); |
|
} |
|
|
|
static FormattedHelpLink GetFormattedLinkAtChar( |
|
List<FormattedHelpLink> formattedLinks, int charIndex) |
|
{ |
|
for(int i = 0; i < formattedLinks.Count; i++) |
|
{ |
|
FormattedHelpLink link = formattedLinks[i]; |
|
|
|
if (link.Position <= charIndex && |
|
charIndex < link.Position + link.Length) |
|
return link; |
|
|
|
if (charIndex <= link.Position + link.Length) |
|
return null; |
|
} |
|
|
|
return null; |
|
} |
|
|
|
PlasticGui.Help.HelpImage mHelpImage; |
|
HelpData mHelpData; |
|
|
|
GUIContent mHelpGUIContent; |
|
List<FormattedHelpLink> mFormattedLinks; |
|
|
|
EditorWindow mWindow; |
|
} |
|
}
|
|
|