1/*
2	Copyright 1999, Be Incorporated.   All Rights Reserved.
3	This file may be used under the terms of the Be Sample Code License.
4*/
5
6#include <Alert.h>
7#include <Application.h>
8#include <Catalog.h>
9#include <LayoutBuilder.h>
10#include <Screen.h>
11#include <TranslatorAddOn.h>
12#include <View.h>
13#include <Window.h>
14
15
16#include <stdio.h>
17
18#undef B_TRANSLATION_CONTEXT
19#define B_TRANSLATION_CONTEXT "PPMMain"
20
21
22BPoint get_window_origin();
23void set_window_origin(BPoint pt);
24
25class PPMWindow : public BWindow
26{
27public:
28	PPMWindow(BRect area)
29		: BWindow(area, B_TRANSLATE("PPM Settings"), B_TITLED_WINDOW,
30			  B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_AUTO_UPDATE_SIZE_LIMITS)
31	{
32		BLayoutBuilder::Group<>(this, B_HORIZONTAL);
33	}
34	~PPMWindow()
35	{
36		BPoint pt(0, 0);
37		ConvertToScreen(&pt);
38		set_window_origin(pt);
39		be_app->PostMessage(B_QUIT_REQUESTED);
40	}
41};
42
43int
44main()
45{
46	BApplication app("application/x-vnd.Haiku-PPMTranslator");
47	BView* v = NULL;
48	BRect r(0, 0, 1, 1);
49	if (MakeConfig(NULL, &v, &r)) {
50		BAlert* err = new BAlert("Error",
51			B_TRANSLATE("Something is wrong with the PPMTranslator!"),
52			B_TRANSLATE("OK"));
53		err->SetFlags(err->Flags() | B_CLOSE_ON_ESCAPE);
54		err->Go();
55		return 1;
56	}
57	PPMWindow* w = new PPMWindow(r);
58	v->ResizeTo(r.Width(), r.Height());
59	w->AddChild(v);
60	BPoint o = get_window_origin();
61	{
62		BScreen scrn;
63		BRect f = scrn.Frame();
64		f.InsetBy(10, 23);
65		/* if not in a good place, start where the cursor is */
66		if (!f.Contains(o)) {
67			uint32 i;
68			v->GetMouse(&o, &i, false);
69			o.x -= r.Width() / 2;
70			o.y -= r.Height() / 2;
71			/* clamp location to screen */
72			if (o.x < f.left)
73				o.x = f.left;
74			if (o.y < f.top)
75				o.y = f.top;
76			if (o.x > f.right)
77				o.x = f.right;
78			if (o.y > f.bottom)
79				o.y = f.bottom;
80		}
81	}
82	w->MoveTo(o);
83	w->Show();
84	app.Run();
85	return 0;
86}
87