Files
BlitzNext/ide/funclist.cpp
T
Michael Fabian 'Xaymar' Dirks c2f795e4ef ide, launcher: Move to new directory
2019-01-19 18:31:46 +01:00

79 lines
1.5 KiB
C++

#include "funclist.h"
#include "stdafx.h"
IMPLEMENT_DYNAMIC(FuncList, CListCtrl)
BEGIN_MESSAGE_MAP(FuncList, CListCtrl)
ON_WM_CREATE()
ON_NOTIFY_REFLECT(NM_CLICK, nm_click)
END_MESSAGE_MAP()
FuncList::FuncList() : listener(0) {}
void FuncList::setListener(FuncListListener* l)
{
listener = l;
}
int FuncList::OnCreate(LPCREATESTRUCT cs)
{
CListCtrl::OnCreate(cs);
return 0;
}
void FuncList::nm_click(NMHDR* nmhdr, LRESULT* result)
{
NMLISTVIEW* lv = (NMLISTVIEW*)nmhdr;
int k = 0;
Funcs::iterator it;
for (it = funcs.begin(); it != funcs.end() && k < lv->iItem; ++k, ++it) {
}
if (it != funcs.end()) {
listener->funcSelected(*it);
}
*result = 0;
}
void FuncList::clear()
{
funcs.clear();
DeleteAllItems();
}
void FuncList::insert(int line, const string& func)
{
int n = 0;
Funcs::iterator it;
for (it = funcs.begin(); it != funcs.end() && line > *it; ++n, ++it) {
}
if (it != funcs.end() && line == *it) {
SetItemText(n, 0, func.c_str());
return;
}
it = funcs.insert(it, line);
InsertItem(n, func.c_str());
}
void FuncList::remove(int begin, int end)
{
int n = 0;
Funcs::iterator it;
for (it = funcs.begin(); it != funcs.end() && *it < begin; ++n, ++it) {
}
while (it != funcs.end() && *it < end) {
funcs.erase(it++);
DeleteItem(n);
}
}
void FuncList::relocate(int begin, int offset)
{
Funcs::iterator it;
for (it = funcs.begin(); it != funcs.end(); ++it) {
if (*it >= begin)
*it += offset;
}
}