Statusbar(resolusion,event,mouse position)
This commit is contained in:
parent
cc91a8d60d
commit
880b4c1985
43
src/GUI.cpp
43
src/GUI.cpp
@ -1,7 +1,5 @@
|
|||||||
#include "GUI.hpp"
|
#include "GUI.hpp"
|
||||||
|
|
||||||
#define window_height 600
|
|
||||||
#define window_width 800
|
|
||||||
|
|
||||||
/** GUI_run
|
/** GUI_run
|
||||||
* The GUI_run-function starts all functions needed for the GUI.
|
* The GUI_run-function starts all functions needed for the GUI.
|
||||||
@ -9,34 +7,45 @@
|
|||||||
|
|
||||||
auto GUI_run(int argc, char **argv) -> int {
|
auto GUI_run(int argc, char **argv) -> int {
|
||||||
vkvm::initialize(0);
|
vkvm::initialize(0);
|
||||||
GUI_Window *window = new GUI_Window(window_width, window_height, "example");
|
int window_height, window_width;
|
||||||
|
window_height = vkvm::getHeight();
|
||||||
|
window_width = vkvm::getWidth();
|
||||||
|
char *resolusion = get_resolusion(window_height, window_width);
|
||||||
|
std::cout << resolusion << std::endl;
|
||||||
|
GUI_Window *window = new GUI_Window(window_width, window_height + 30, "example");
|
||||||
Statusbar *status[5];
|
Statusbar *status[5];
|
||||||
//Dummy-Values TBD
|
//Dummy-Values TBD
|
||||||
window->begin();
|
window->begin();
|
||||||
Image *image = new Image(0, 30, window_width, window_height - 30);
|
Image *image = new Image(0, 30, window_width, window_height);
|
||||||
status[0] = new Statusbar(0, 0, 60, 30, "0");
|
status[0] = new Statusbar(0, 0, 300, 30, resolusion);
|
||||||
status[1] = new Statusbar(60, 0, 60, 30, "status1");
|
status[1] = new Statusbar(300, 0, 170, 30, "Event:");
|
||||||
status[2] = new Statusbar(120, 0, 60, 30, "status2");
|
status[2] = new Statusbar(470, 0, 200, 30, "Mouse Position:");
|
||||||
status[3] = new Statusbar(180, 0, 60, 30, "status3");
|
|
||||||
status[4] = new Statusbar(240, 0, 60, 30, "status4");
|
|
||||||
Fl::repeat_timeout(0.5, refresh_image, image);
|
Fl::repeat_timeout(0.5, refresh_image, image);
|
||||||
Fl::repeat_timeout(0.5, refresh_statusbar, status);
|
|
||||||
window->end();
|
window->end();
|
||||||
window->show(argc, argv);
|
window->show(argc, argv);
|
||||||
return Fl::run();
|
return Fl::run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *get_resolusion(int window_height, int window_width) {
|
||||||
|
char *resolusion = new char[25];
|
||||||
|
std::string str_temp;
|
||||||
|
strcpy(resolusion, "Resolusion Height:");
|
||||||
|
str_temp = std::to_string(window_height);
|
||||||
|
strcat(resolusion, str_temp.c_str());
|
||||||
|
strcat(resolusion, " Width:");
|
||||||
|
str_temp = std::to_string(window_height);
|
||||||
|
strcat(resolusion, str_temp.c_str());
|
||||||
|
return resolusion;
|
||||||
|
}
|
||||||
|
|
||||||
void refresh_image(void *pointer) {
|
void get_new_image(void *pointer) {
|
||||||
((Image *) pointer)->getPixels();
|
((Image *) pointer)->getPixels();
|
||||||
((Image *) pointer)->redraw();
|
|
||||||
Fl::repeat_timeout(0.5, refresh_image, pointer);
|
Fl::repeat_timeout(0.5, refresh_image, pointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void refresh_image(void *pointer) {
|
||||||
void refresh_statusbar(void *pointer) {
|
((Image *) pointer)->redraw();
|
||||||
((Statusbar **) pointer)[0]->change_text();
|
Fl::repeat_timeout(0.5, get_new_image, pointer);
|
||||||
((Statusbar **) pointer)[0]->refresh_label();
|
|
||||||
Fl::repeat_timeout(0.5, refresh_statusbar, pointer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
14
src/GUI.hpp
14
src/GUI.hpp
@ -1,6 +1,7 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <Fl/Fl.H>
|
#include <Fl/Fl.H>
|
||||||
#include <Fl/Fl_Box.H>
|
#include <Fl/Fl_Box.H>
|
||||||
|
#include <Fl/Fl_Export.H>
|
||||||
#include <FL/Fl_Window.H>
|
#include <FL/Fl_Window.H>
|
||||||
#include <FL/fl_draw.H>
|
#include <FL/fl_draw.H>
|
||||||
#include "vkvm.hpp"
|
#include "vkvm.hpp"
|
||||||
@ -21,7 +22,7 @@ class GUI_Window : public Fl_Window {
|
|||||||
int x, y, button;
|
int x, y, button;
|
||||||
vkvm::KeyCode* keyCode;
|
vkvm::KeyCode* keyCode;
|
||||||
int handle(int e);
|
int handle(int e);
|
||||||
|
char* position_to_string(int x,int y);
|
||||||
public:
|
public:
|
||||||
GUI_Window(int x, int y, const char *l);
|
GUI_Window(int x, int y, const char *l);
|
||||||
};
|
};
|
||||||
@ -51,18 +52,11 @@ class Statusbar : public Fl_Box {
|
|||||||
char *text;
|
char *text;
|
||||||
public:
|
public:
|
||||||
Statusbar(int x, int y, int w, int h, char *text);
|
Statusbar(int x, int y, int w, int h, char *text);
|
||||||
|
|
||||||
void set_text(char *text);
|
|
||||||
|
|
||||||
void change_text();
|
|
||||||
|
|
||||||
void refresh_label();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
char* get_resolusion(int window_height, int window_width);
|
||||||
void refresh_image(void *pointer);
|
void refresh_image(void *pointer);
|
||||||
|
void get_new_image(void *pointer) ;
|
||||||
void refresh_statusbar(void *pointer);
|
|
||||||
|
|
||||||
int GUI_run(int argc, char **argv);
|
int GUI_run(int argc, char **argv);
|
||||||
|
|
||||||
#endif //GUI_GUI_HPP
|
#endif //GUI_GUI_HPP
|
||||||
|
@ -13,6 +13,7 @@ auto GUI_Window::handle(int e) -> int {
|
|||||||
} else {
|
} else {
|
||||||
std::cout << "Mouse:middle" << std::endl;
|
std::cout << "Mouse:middle" << std::endl;
|
||||||
}
|
}
|
||||||
|
this->child(2)->label("Event:Mouse Button");
|
||||||
vkvm::callEvent(vkvm::EventType::MouseButton);
|
vkvm::callEvent(vkvm::EventType::MouseButton);
|
||||||
return 1;
|
return 1;
|
||||||
/*Mousebutton and movement*/
|
/*Mousebutton and movement*/
|
||||||
@ -27,6 +28,8 @@ auto GUI_Window::handle(int e) -> int {
|
|||||||
} else {
|
} else {
|
||||||
std::cout << "Mouse:middle" << std::endl;
|
std::cout << "Mouse:middle" << std::endl;
|
||||||
}
|
}
|
||||||
|
this->child(2)->label("Event:Mouse Drag");
|
||||||
|
this->child(3)->label(position_to_string(x,y));
|
||||||
vkvm::callEvent(vkvm::EventType::MouseButton);
|
vkvm::callEvent(vkvm::EventType::MouseButton);
|
||||||
vkvm::callEvent(vkvm::EventType::MouseMove);
|
vkvm::callEvent(vkvm::EventType::MouseMove);
|
||||||
return 1;
|
return 1;
|
||||||
@ -36,6 +39,8 @@ auto GUI_Window::handle(int e) -> int {
|
|||||||
y = Fl::event_y();
|
y = Fl::event_y();
|
||||||
vkvm::setMousePosition(x,y);
|
vkvm::setMousePosition(x,y);
|
||||||
vkvm::callEvent(vkvm::EventType::MouseMove);
|
vkvm::callEvent(vkvm::EventType::MouseMove);
|
||||||
|
this->child(2)->label("Event:Mouse Move");
|
||||||
|
this->child(3)->label(position_to_string(x,y));
|
||||||
return 1;
|
return 1;
|
||||||
/*keyboardbutton*/
|
/*keyboardbutton*/
|
||||||
case FL_KEYBOARD:
|
case FL_KEYBOARD:
|
||||||
@ -43,6 +48,7 @@ auto GUI_Window::handle(int e) -> int {
|
|||||||
keyCode = new vkvm::KeyCode(button);
|
keyCode = new vkvm::KeyCode(button);
|
||||||
vkvm::buttonPressed(*keyCode);
|
vkvm::buttonPressed(*keyCode);
|
||||||
vkvm::callEvent(vkvm::EventType::KeyDown);
|
vkvm::callEvent(vkvm::EventType::KeyDown);
|
||||||
|
this->child(2)->label("Event:Key Down");
|
||||||
return 1;
|
return 1;
|
||||||
case FL_KEYUP:
|
case FL_KEYUP:
|
||||||
button = Fl::event_button();
|
button = Fl::event_button();
|
||||||
@ -50,11 +56,24 @@ auto GUI_Window::handle(int e) -> int {
|
|||||||
keyCode = new vkvm::KeyCode(button);
|
keyCode = new vkvm::KeyCode(button);
|
||||||
vkvm::buttonPressed(*keyCode);
|
vkvm::buttonPressed(*keyCode);
|
||||||
vkvm::callEvent(vkvm::EventType::KeyUp);
|
vkvm::callEvent(vkvm::EventType::KeyUp);
|
||||||
|
this->child(2)->label("Event:Key Up");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
GUI_Window::GUI_Window(int x, int y, const char *l) : Fl_Window(x, y, l) {}
|
GUI_Window::GUI_Window(int x, int y, const char *l) : Fl_Window(x, y, l) {}
|
||||||
|
|
||||||
|
auto GUI_Window::position_to_string(int x,int y)->char*{
|
||||||
|
char *str = new char[25];
|
||||||
|
std::string str_temp;
|
||||||
|
str = strcpy(str,"Mouse Position X:");
|
||||||
|
str_temp = std::to_string(x);
|
||||||
|
str = strcat(str,str_temp.c_str());
|
||||||
|
str = strcat(str," Y:");
|
||||||
|
str_temp = std::to_string(y);
|
||||||
|
str = strcat(str,str_temp.c_str());
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,20 +12,3 @@ Statusbar::Statusbar(int x, int y, int w, int h, char *text) :
|
|||||||
this->text = text;
|
this->text = text;
|
||||||
};
|
};
|
||||||
|
|
||||||
auto Statusbar::set_text(char *text) -> void {
|
|
||||||
this->text = text;
|
|
||||||
}
|
|
||||||
|
|
||||||
//An exampel to show, how the content of the text can be changed.
|
|
||||||
auto Statusbar::change_text() -> void {
|
|
||||||
if (text == "status0")
|
|
||||||
set_text("status1");
|
|
||||||
else
|
|
||||||
set_text("status0");
|
|
||||||
}
|
|
||||||
|
|
||||||
//This function refreshes the statusbar.
|
|
||||||
auto Statusbar::refresh_label() -> void {
|
|
||||||
this->label(text);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user