mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-24 10:38:02 +02:00
Initial checkin
This commit is contained in:
parent
c74712dad9
commit
078564ac9e
3242 changed files with 1616395 additions and 0 deletions
178
IDE/src/ui/AutoCompletePanel.bf
Normal file
178
IDE/src/ui/AutoCompletePanel.bf
Normal file
|
@ -0,0 +1,178 @@
|
|||
using Beefy.utils;
|
||||
using Beefy.theme.dark;
|
||||
using Beefy.widgets;
|
||||
|
||||
namespace IDE.ui
|
||||
{
|
||||
class AutoCompletePanel : Panel
|
||||
{
|
||||
public class DataArea : DockedWidget
|
||||
{
|
||||
public AutoCompletePanel mPanel;
|
||||
|
||||
public void ResizeContent()
|
||||
{
|
||||
var autoComplete = mPanel.mAutoComplete;
|
||||
|
||||
if (autoComplete == null)
|
||||
return;
|
||||
|
||||
float yOfs = 0;
|
||||
if (autoComplete.mInvokeWidget != null)
|
||||
{
|
||||
/*float height = GS!(20);
|
||||
mAutoComplete.mInvokeWidget.Resize(0, 2, mWidth, height);
|
||||
yOfs += mAutoComplete.mInvokeWidget.mHeight;*/
|
||||
|
||||
autoComplete.mInvokeWidget.ResizeContent(false);
|
||||
float height = autoComplete.mInvokeWidget.mHeight - GS!(12);
|
||||
autoComplete.mInvokeWidget.Resize(GS!(0), GS!(2), mWidth, height);
|
||||
yOfs += height;
|
||||
}
|
||||
|
||||
if (autoComplete.mAutoCompleteListWidget != null)
|
||||
{
|
||||
autoComplete.mAutoCompleteListWidget.Resize(0, yOfs, mWidth, mHeight - yOfs);
|
||||
autoComplete.mAutoCompleteListWidget.mScrollContent.mWidth = mWidth;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Resize(float x, float y, float width, float height)
|
||||
{
|
||||
base.Resize(x, y, width, height);
|
||||
ResizeContent();
|
||||
}
|
||||
}
|
||||
|
||||
public class CommentArea : DockedWidget
|
||||
{
|
||||
public AutoCompletePanel mPanel;
|
||||
|
||||
public override void Draw(Beefy.gfx.Graphics g)
|
||||
{
|
||||
base.Draw(g);
|
||||
|
||||
var autoComplete = mPanel.mAutoComplete;
|
||||
|
||||
if (autoComplete == null)
|
||||
return;
|
||||
if (autoComplete.mAutoCompleteListWidget == null)
|
||||
return;
|
||||
if (autoComplete.mAutoCompleteListWidget.mSelectIdx == -1)
|
||||
return;
|
||||
if (autoComplete.mAutoCompleteListWidget.mDocumentationDelay > 0)
|
||||
return;
|
||||
var selectedEntry = autoComplete.mAutoCompleteListWidget.mEntryList[autoComplete.mAutoCompleteListWidget.mSelectIdx];
|
||||
if (selectedEntry.mDocumentation == null)
|
||||
return;
|
||||
|
||||
DocumentationParser docParser = scope .(selectedEntry.mDocumentation);
|
||||
float drawX = GS!(6);
|
||||
float drawY = GS!(4);
|
||||
using (g.PushColor(0xFFC0C0C0))
|
||||
g.DrawString(docParser.ShowDocString, drawX, drawY, .Left, mWidth - drawX - GS!(8), .Wrap);
|
||||
}
|
||||
|
||||
public override void DrawAll(Beefy.gfx.Graphics g)
|
||||
{
|
||||
base.DrawAll(g);
|
||||
using (g.PushColor(0x80FFFFFF))
|
||||
g.DrawBox(DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.Bkg), 0, -GS!(6), mWidth, GS!(6));
|
||||
}
|
||||
}
|
||||
|
||||
public AutoComplete mAutoComplete;
|
||||
public DarkDockingFrame mDockingFrame;
|
||||
public DataArea mDataArea;
|
||||
public CommentArea mCommentArea;
|
||||
|
||||
public this()
|
||||
{
|
||||
mDataArea = new .();
|
||||
mDataArea.mPanel = this;
|
||||
mDataArea.mIsFillWidget = true;
|
||||
mCommentArea = new .();
|
||||
mCommentArea.mPanel = this;
|
||||
mCommentArea.mRequestedHeight = GS!(60);
|
||||
|
||||
mDockingFrame = new DarkDockingFrame();
|
||||
mDockingFrame.mDrawBkg = false;
|
||||
mDockingFrame.AddDockedWidget(mDataArea, null, .Top);
|
||||
mDockingFrame.AddDockedWidget(mCommentArea, mDataArea, .Bottom);
|
||||
AddWidget(mDockingFrame);
|
||||
}
|
||||
|
||||
public bool Unbind(AutoComplete autoComplete)
|
||||
{
|
||||
if (mAutoComplete != autoComplete)
|
||||
return false;
|
||||
|
||||
if ((mAutoComplete.mInvokeWidget != null) && (mAutoComplete.mInvokeWidget.mParent == mDataArea))
|
||||
mDataArea.RemoveWidget(mAutoComplete.mInvokeWidget);
|
||||
if ((mAutoComplete.mAutoCompleteListWidget != null) && (mAutoComplete.mAutoCompleteListWidget.mParent == mDataArea))
|
||||
mDataArea.RemoveWidget(mAutoComplete.mAutoCompleteListWidget);
|
||||
mAutoComplete = null;
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool StartBind(AutoComplete autoComplete)
|
||||
{
|
||||
bool showInPanel = gApp.mSettings.mEditorSettings.mAutoCompleteShowKind == .Panel;
|
||||
if (gApp.mSettings.mEditorSettings.mAutoCompleteShowKind == .PanelIfVisible)
|
||||
showInPanel = mWidgetWindow != null;
|
||||
|
||||
if (!showInPanel)
|
||||
{
|
||||
if (mAutoComplete != null)
|
||||
Unbind(mAutoComplete);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (mAutoComplete == autoComplete)
|
||||
return true;
|
||||
|
||||
if (mAutoComplete != null)
|
||||
Unbind(mAutoComplete);
|
||||
|
||||
if (mWidgetWindow == null)
|
||||
return false;
|
||||
|
||||
mAutoComplete = autoComplete;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void FinishBind()
|
||||
{
|
||||
if (mAutoComplete == null)
|
||||
return;
|
||||
|
||||
if ((mAutoComplete.mInvokeWidget != null) && (mAutoComplete.mInvokeWidget.mParent == null))
|
||||
mDataArea.AddWidget(mAutoComplete.mInvokeWidget);
|
||||
if ((mAutoComplete.mAutoCompleteListWidget != null) && (mAutoComplete.mAutoCompleteListWidget.mParent == null))
|
||||
mDataArea.AddWidget(mAutoComplete.mAutoCompleteListWidget);
|
||||
ResizeComponents();
|
||||
|
||||
if (mAutoComplete.mAutoCompleteListWidget != null)
|
||||
mAutoComplete.mAutoCompleteListWidget.CenterSelection();
|
||||
}
|
||||
|
||||
public void ResizeComponents()
|
||||
{
|
||||
mDockingFrame.Resize(0, 0, mWidth, mHeight);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public override void Resize(float x, float y, float width, float height)
|
||||
{
|
||||
base.Resize(x, y, width, height);
|
||||
ResizeComponents();
|
||||
}
|
||||
|
||||
public override void Serialize(StructuredData data)
|
||||
{
|
||||
data.Add("Type", "AutoCompletePanel");
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue