123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- using System;
- using Beefy;
- using Beefy.gfx;
- using Beefy.widgets;
- using Beefy.geom;
- using System.Collections;
- 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()
- }
- }
- }
- }
|