Files
haiku-beta6/src/tests/add-ons/print/pdf/linepathbuilder/LPBApp.cpp
T
Michael Pfeiffer 8002202d9d Renamed View.* to PathView.* and Application.* to LPBApp.*.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@504 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-28 17:53:03 +00:00

110 lines
3.1 KiB
C++

#include "LPBApp.h"
BMessage* NewMessage(uint32 what, uint32 data)
{
BMessage* m = new BMessage(what);
m->AddInt32("data", (int32)data);
return m;
}
AppWindow::AppWindow(BRect aRect)
: BWindow(aRect, APPLICATION, B_TITLED_WINDOW, 0) {
// add menu bar
BRect rect = BRect(0,0,aRect.Width(), aRect.Height());
menubar = new BMenuBar(rect, "menu_bar");
BMenu *menu;
menu = new BMenu("Game");
menu->AddItem(new BMenuItem("New", new BMessage(MENU_APP_NEW), 'N'));
menu->AddSeparatorItem();
menu->AddItem(new BMenuItem("About ...", new BMessage(B_ABOUT_REQUESTED)));
menu->AddSeparatorItem();
menu->AddItem(new BMenuItem("Quit", new BMessage(B_QUIT_REQUESTED), 'Q'));
menubar->AddItem(menu);
menu = new BMenu("Line Cap");
menu->AddItem(new BMenuItem("Round", NewMessage(CAP_MSG, B_ROUND_CAP)));
menu->AddItem(new BMenuItem("Butt", NewMessage(CAP_MSG, B_BUTT_CAP)));
menu->AddItem(new BMenuItem("Square", NewMessage(CAP_MSG, B_SQUARE_CAP)));
menubar->AddItem(menu);
menu = new BMenu("Line Join");
menu->AddItem(new BMenuItem("Round", NewMessage(JOIN_MSG, B_ROUND_JOIN)));
menu->AddItem(new BMenuItem("Miter", NewMessage(JOIN_MSG, B_MITER_JOIN)));
menu->AddItem(new BMenuItem("Bevel", NewMessage(JOIN_MSG, B_BEVEL_JOIN)));
menu->AddItem(new BMenuItem("Butt", NewMessage(JOIN_MSG, B_BUTT_JOIN)));
menu->AddItem(new BMenuItem("Square", NewMessage(JOIN_MSG, B_SQUARE_JOIN)));
menubar->AddItem(menu);
menu = new BMenu("Path");
menu->AddItem(new BMenuItem("Open", new BMessage(OPEN_MSG)));
menu->AddItem(new BMenuItem("Close", new BMessage(CLOSE_MSG)));
menubar->AddItem(menu);
AddChild(menubar);
// add path view
aRect.Set(0, menubar->Bounds().Height()+1, aRect.Width(), aRect.Height());
view = NULL;
AddChild(view = new PathView(aRect));
// make window visible
Show();
}
void AppWindow::MessageReceived(BMessage *message) {
int32 data;
message->FindInt32("data", &data);
switch(message->what) {
case MENU_APP_NEW:
break;
case B_ABOUT_REQUESTED:
AboutRequested();
break;
case CAP_MSG:
view->SetLineMode((cap_mode)data, view->LineJoinMode(), view->LineMiterLimit());
view->Invalidate();
break;
case JOIN_MSG:
view->SetLineMode(view->LineCapMode(), (join_mode)data, view->LineMiterLimit());
view->Invalidate();
break;
case OPEN_MSG:
case CLOSE_MSG:
view->SetClose(message->what == CLOSE_MSG);
view->Invalidate();
break;
default:
BWindow::MessageReceived(message);
}
}
bool AppWindow::QuitRequested() {
be_app->PostMessage(B_QUIT_REQUESTED);
return(true);
}
void AppWindow::AboutRequested() {
BAlert *about = new BAlert(APPLICATION,
APPLICATION " " VERSION "\nThis program is freeware under BSD/MIT license.\n\n"
"Written 2002.\n\n"
"By Michael Pfeiffer.\n\n"
"EMail: [email protected].","Close");
about->Go();
}
App::App() : BApplication("application/x-vnd.myapplication") {
BRect aRect;
// set up a rectangle and instantiate a new window
aRect.Set(100, 80, 410, 380);
window = NULL;
window = new AppWindow(aRect);
}
int main(int argc, char *argv[]) {
be_app = NULL;
App app;
be_app->Run();
return 0;
}