mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 06:05:58 -06:00
93 lines
1.7 KiB
C++
93 lines
1.7 KiB
C++
#include "Circles.h"
|
|
|
|
void CircleView::UpdateView(const Rect& r)
|
|
{
|
|
Rect br = doc.GetBoundingRect();
|
|
Refresh(r.Offseted(-(Point)sb));
|
|
sb.SetTotal(br.right, br.bottom);
|
|
SetBar();
|
|
}
|
|
|
|
void CircleView::Scroll()
|
|
{
|
|
Refresh();
|
|
}
|
|
|
|
void CircleView::Layout()
|
|
{
|
|
sb.SetPage(sb.GetReducedViewSize());
|
|
}
|
|
|
|
void CircleView::Paint(Draw& w)
|
|
{
|
|
Size sz = GetSize();
|
|
w.DrawRect(sz, SColorPaper);
|
|
Point p = -(Point)sb;
|
|
for(int i = 0; i < doc.GetCount(); i++) {
|
|
DUMP(doc[i].GetRect());
|
|
w.DrawEllipse(doc[i].GetRect().Offseted(p), Blue, 1, Black);
|
|
}
|
|
}
|
|
|
|
void CircleView::LeftDown(Point p, dword)
|
|
{
|
|
doc.AddCircle(p + sb, 50);
|
|
}
|
|
|
|
void CircleView::RightDown(Point p, dword)
|
|
{
|
|
p += sb;
|
|
for(int i = 0; i < doc.GetCount(); i++)
|
|
if(doc[i].GetRect().Contains(p)) {
|
|
doc.RemoveCircle(i);
|
|
return;
|
|
}
|
|
}
|
|
|
|
void CircleView::Close()
|
|
{
|
|
doc.RemoveView(this);
|
|
}
|
|
|
|
void CircleView::FileBar(Bar& bar)
|
|
{
|
|
bar.Add("Open new view", callback(&doc, &CircleDoc::NewView));
|
|
}
|
|
|
|
void CircleView::EditBar(Bar& bar)
|
|
{
|
|
bar.Add(doc.IsUndo(), "Undo", CtrlImg::undo(), callback(&doc, &CircleDoc::Undo));
|
|
bar.Add(doc.IsRedo(), "Redo", CtrlImg::redo(), callback(&doc, &CircleDoc::Redo));
|
|
}
|
|
|
|
void CircleView::MainMenu(Bar& bar)
|
|
{
|
|
bar.Add("File", THISBACK(FileBar));
|
|
bar.Add("Edit", THISBACK(EditBar));
|
|
}
|
|
|
|
void CircleView::MainBar(Bar& bar)
|
|
{
|
|
FileBar(bar);
|
|
bar.Separator();
|
|
EditBar(bar);
|
|
}
|
|
|
|
void CircleView::SetBar()
|
|
{
|
|
tool.Set(THISBACK(MainBar));
|
|
}
|
|
|
|
CircleView::CircleView(CircleDoc& doc)
|
|
: doc(doc)
|
|
{
|
|
AddFrame(menu);
|
|
AddFrame(tool);
|
|
AddFrame(FieldFrame());
|
|
AddFrame(sb);
|
|
sb = Point(0, 0);
|
|
sb.WhenScroll = THISBACK(Scroll);
|
|
Sizeable().Zoomable();
|
|
menu.Set(THISBACK(MainMenu));
|
|
SetBar();
|
|
}
|