mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-20 17:08:00 +02:00
Initial checkin
This commit is contained in:
parent
c74712dad9
commit
078564ac9e
3242 changed files with 1616395 additions and 0 deletions
109
IDE/src/ui/ProfileDialog.bf
Normal file
109
IDE/src/ui/ProfileDialog.bf
Normal file
|
@ -0,0 +1,109 @@
|
|||
using System;
|
||||
using Beefy;
|
||||
using Beefy.theme.dark;
|
||||
using Beefy.widgets;
|
||||
using Beefy.gfx;
|
||||
|
||||
namespace IDE.ui
|
||||
{
|
||||
class ProfileDialog : IDEDialog
|
||||
{
|
||||
EditWidget mDescEdit;
|
||||
DarkComboBox mThreadCombo;
|
||||
EditWidget mSampleRateEdit;
|
||||
|
||||
public this()
|
||||
{
|
||||
mTitle = new String("Profile");
|
||||
mText = new String("");
|
||||
|
||||
mDescEdit = AddEdit("");
|
||||
|
||||
mThreadCombo = new DarkComboBox();
|
||||
mThreadCombo.Label = "All Threads";
|
||||
mThreadCombo.mPopulateMenuAction.Add(new => PopulateThreadList);
|
||||
AddDialogComponent(mThreadCombo);
|
||||
|
||||
mWindowFlags = BFWindow.Flags.ClientSized | BFWindow.Flags.TopMost | BFWindow.Flags.Caption |
|
||||
BFWindow.Flags.Border | BFWindow.Flags.SysMenu | BFWindow.Flags.Resizable;
|
||||
|
||||
mSampleRateEdit = AddEdit(scope String()..AppendF("{0}", gApp.mSettings.mDebuggerSettings.mProfileSampleRate));
|
||||
|
||||
AddOkCancelButtons(new (evt) => { StartProfiling(); }, null, 0, 1);
|
||||
}
|
||||
|
||||
void StartProfiling()
|
||||
{
|
||||
var str = scope String();
|
||||
mThreadCombo.GetLabel(str);
|
||||
int spacePos = str.IndexOf(' ');
|
||||
if (spacePos > 0)
|
||||
str.RemoveToEnd(spacePos);
|
||||
int threadId = int.Parse(str).GetValueOrDefault();
|
||||
|
||||
str.Clear();
|
||||
mSampleRateEdit.GetText(str);
|
||||
int sampleRate = int.Parse(str).GetValueOrDefault();
|
||||
if (sampleRate < 0)
|
||||
sampleRate = gApp.mSettings.mDebuggerSettings.mProfileSampleRate;
|
||||
sampleRate = Math.Clamp(sampleRate, 10, 10000);
|
||||
|
||||
str.Clear();
|
||||
mDescEdit.GetText(str);
|
||||
|
||||
gApp.mProfilePanel.StartProfiling(threadId, str, sampleRate);
|
||||
}
|
||||
|
||||
void PopulateThreadList(Menu menu)
|
||||
{
|
||||
var subItem = menu.AddItem("All Threads");
|
||||
subItem.mOnMenuItemSelected.Add(new (evt) => { mThreadCombo.Label = "All Threads"; });
|
||||
|
||||
String threadInfo = scope .();
|
||||
gApp.mDebugger.GetThreadInfo(threadInfo);
|
||||
|
||||
for (var infoLine in threadInfo.Split('\n'))
|
||||
{
|
||||
if (@infoLine.Pos == 0)
|
||||
continue;
|
||||
|
||||
var infoSections = infoLine.Split('\t');
|
||||
StringView id = infoSections.GetNext().GetValueOrDefault();
|
||||
StringView name = infoSections.GetNext().GetValueOrDefault();
|
||||
|
||||
var str = scope String();
|
||||
str.AppendF("{0} - {1}", id, name);
|
||||
subItem = menu.AddItem(str);
|
||||
subItem.mOnMenuItemSelected.Add(new (item) => { mThreadCombo.Label = item.mLabel; });
|
||||
}
|
||||
}
|
||||
|
||||
public override void ResizeComponents()
|
||||
{
|
||||
base.ResizeComponents();
|
||||
|
||||
float curY = GS!(30);
|
||||
|
||||
mDescEdit.Resize(GS!(6), curY, mWidth - GS!(6) - GS!(6), GS!(22));
|
||||
curY += GS!(42);
|
||||
mThreadCombo.Resize(GS!(6), curY, mWidth - GS!(6) - GS!(6), GS!(24));
|
||||
curY += GS!(42);
|
||||
mSampleRateEdit.Resize(GS!(6), curY, mWidth - GS!(6) - GS!(6), GS!(24));
|
||||
}
|
||||
|
||||
public override void Draw(Graphics g)
|
||||
{
|
||||
base.Draw(g);
|
||||
|
||||
DrawLabel(g, mDescEdit, "Profile Description (Optional)");
|
||||
DrawLabel(g, mThreadCombo, "Thread");
|
||||
DrawLabel(g, mSampleRateEdit, "Sample Rate");
|
||||
}
|
||||
|
||||
public override void CalcSize()
|
||||
{
|
||||
mWidth = GS!(280);
|
||||
mHeight = GS!(180);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue