mirror of
https://github.com/beefytech/Beef.git
synced 2025-07-10 10:16:00 +02:00
Initial checkin
This commit is contained in:
parent
c74712dad9
commit
078564ac9e
3242 changed files with 1616395 additions and 0 deletions
123
MemProfiler/Board.bf
Normal file
123
MemProfiler/Board.bf
Normal file
|
@ -0,0 +1,123 @@
|
|||
using System;
|
||||
using Beefy;
|
||||
using Beefy.gfx;
|
||||
using Beefy.widgets;
|
||||
using Beefy.geom;
|
||||
using System.Collections.Generic;
|
||||
using Beefy.utils;
|
||||
using System.Diagnostics;
|
||||
using Beefy.theme.dark;
|
||||
using Beefy.events;
|
||||
|
||||
namespace MemProfiler
|
||||
{
|
||||
class Board : Widget
|
||||
{
|
||||
DarkListView mListView;
|
||||
DarkButton mGetButton;
|
||||
|
||||
public this()
|
||||
{
|
||||
mListView = new DarkListView();
|
||||
AddWidget(mListView);
|
||||
|
||||
mListView.AddColumn(200, "Name");
|
||||
mListView.AddColumn(200, "Self");
|
||||
mListView.AddColumn(200, "Total");
|
||||
mListView.InitScrollbars(false, true);
|
||||
|
||||
mGetButton = (DarkButton)DarkTheme.sDarkTheme.CreateButton(this, "Get", 0, 0, 0, 0);
|
||||
mGetButton.mMouseClickHandler.Add(new (evt) => { GetData(); });
|
||||
}
|
||||
|
||||
public override void Resize(float x, float y, float width, float height)
|
||||
{
|
||||
base.Resize(x, y, width, height);
|
||||
|
||||
mListView.Resize(x, y, width, height - 20);
|
||||
mGetButton.Resize(20, mHeight - 20, 128, 20);
|
||||
}
|
||||
|
||||
public override void Draw(Graphics g)
|
||||
{
|
||||
base.Draw(g);
|
||||
|
||||
g.DrawBox(DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.Bkg), 0, 0, mWidth, mHeight);
|
||||
|
||||
g.SetFont(DarkTheme.sDarkTheme.mSmallFont);
|
||||
g.DrawString(StackStringFormat!("FPS: {0}", gApp.mLastFPS), mWidth - 128, mHeight - 18);
|
||||
|
||||
g.FillRect(mUpdateCnt % 200 + 200, mHeight - 2, 2, 2);
|
||||
}
|
||||
|
||||
void ValueClicked(MouseEvent theEvent)
|
||||
{
|
||||
DarkListViewItem clickedItem = (DarkListViewItem)theEvent.mSender;
|
||||
DarkListViewItem item = (DarkListViewItem)clickedItem.GetSubItem(0);
|
||||
|
||||
mListView.GetRoot().SelectItemExclusively(item);
|
||||
mListView.SetFocus();
|
||||
}
|
||||
|
||||
void GetData()
|
||||
{
|
||||
//const char* cmd = "Get";
|
||||
//DWORD bytesRead = 0;
|
||||
|
||||
mListView.GetRoot().Clear();
|
||||
|
||||
String pipeName = scope String();
|
||||
pipeName.FormatInto(@"\\.\pipe\HeapDbg_{0}", gApp.mProcessInformation.mProcessId);
|
||||
|
||||
String cmd = "Get";
|
||||
|
||||
char8[] charData = new char8[16*1024*1024];
|
||||
defer delete charData;
|
||||
|
||||
int32 bytesRead = 0;
|
||||
if (Windows.CallNamedPipeA(pipeName, (void*)cmd, (int32)cmd.Length, (void*)charData.CArray(), (int32)charData.Count, &bytesRead, 0))
|
||||
{
|
||||
String data = scope String();
|
||||
data.Reference(charData.CArray(), bytesRead, charData.Count);
|
||||
|
||||
ListViewItem curItem = mListView.GetRoot();
|
||||
|
||||
for (var lineView in data.Split('\n'))
|
||||
{
|
||||
String lineViewStr = scope String(lineView);
|
||||
|
||||
if (lineViewStr == "-")
|
||||
{
|
||||
curItem = curItem.mParentItem;
|
||||
}
|
||||
else
|
||||
{
|
||||
var childItem = curItem.CreateChildItem();
|
||||
childItem.mMouseDownHandler.Add(new => ValueClicked);
|
||||
|
||||
int32 idx = 0;
|
||||
for (var dataStr in lineViewStr.Split('\t'))
|
||||
{
|
||||
if (idx == 0)
|
||||
childItem.Label = scope String(dataStr);
|
||||
else
|
||||
{
|
||||
var subItem = childItem.CreateSubItem(idx);
|
||||
subItem.Label = scope String(dataStr);
|
||||
subItem.mMouseDownHandler.Add(new => ValueClicked);
|
||||
}
|
||||
|
||||
idx++;
|
||||
}
|
||||
|
||||
curItem = childItem;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//tree->InsertItem()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue