ultimatepp/uppdev/Circles/CircleView.cpp
cxl 351994a6cc Adding uppdev....
git-svn-id: svn://ultimatepp.org/upp/trunk@328 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2008-08-15 08:36:24 +00:00

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();
}