-
Notifications
You must be signed in to change notification settings - Fork 0
/
application.cpp
54 lines (47 loc) · 1.37 KB
/
application.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "application.hpp"
#include <graphics.hpp>
using namespace genv;
Application::Application(int x, int y): sizeX(x), sizeY(y)
{
isExiting = false;
focus = 0;
}
Application::~Application()
{
for (unsigned int i = 0; i < widgets.size(); i++)
delete widgets[i];
}
void Application::AddWidget(Widget *w)
{
widgets.push_back(w);
}
void Application::Run()
{
gout.open(sizeX, sizeY);
while (gin && !isExiting) // amíg fogadhat eseményeket és nincs kilépési módban
{
event ev; gin >> ev;
if ((ev.keycode == key_tab || ev.keycode == key_right) && widgets.size() > 0) // tab hatására változik a fókusz
focus++;
if(widgets.size() > 0 && ev.keycode == key_left)
focus--;
if(focus>2)
focus = 0;
if(focus<0)
focus = 2;
for (unsigned int i = 0; i < widgets.size(); i++)
widgets[i]->SetFocus(focus == i);
for (unsigned int i = 0; i < widgets.size(); i++)
{ // vectorban található vezérlõk
widgets[i]->HandleEvent(ev); // eseménykezelés
}
gout << move_to(0, 0) << color(0,0,0) << box(sizeX, sizeY);
for (unsigned int i = 0; i < widgets.size(); i++)
widgets[i]->Show(); // megjelenítés
gout << refresh;
}
}
void Application::Shutdown()
{
isExiting = true; // kilépés inicializálása
}