You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
1.6 KiB
111 lines
1.6 KiB
#include "main.h"
|
|
|
|
#ifndef _TEMINAL_H_
|
|
#define _TEMINAL_H_
|
|
|
|
|
|
// This calls is used to initilaize ncurses terminal the correct way depending of the terminalk
|
|
class Terminal
|
|
{
|
|
public:
|
|
// Constuctor & Destructor
|
|
Terminal();
|
|
~Terminal();
|
|
|
|
//Functions
|
|
int setup();
|
|
void tearDown();
|
|
int getKey();
|
|
int getXMax();
|
|
int getYMax();
|
|
void startDraw();
|
|
void endDraw();
|
|
bool isDone();
|
|
void quit();
|
|
void draw(int x, int y, const std::string& toDraw);
|
|
|
|
private:
|
|
int xMax, yMax, mouseX, mouseY = 0;
|
|
bool m_done = false;
|
|
};
|
|
|
|
|
|
Terminal::Terminal()
|
|
{
|
|
setup();
|
|
}
|
|
|
|
Terminal::~Terminal()
|
|
{
|
|
tearDown();
|
|
}
|
|
|
|
int Terminal::setup()
|
|
{
|
|
initscr(); // Inits ncurses screen in memory
|
|
raw(); // raw input sor ctrl-c and ctrl-z wont work
|
|
noecho(); // don't show the user inputs
|
|
curs_set(0); // Cursor won't show up
|
|
getmaxyx(stdscr, yMax, xMax);
|
|
box(stdscr,0,0);
|
|
if(!has_colors()) // If the terminal doesn't have colors
|
|
{
|
|
tearDown(); // Destroys the mains window
|
|
printf("This menu is not supported by terminals without colors\n");
|
|
return -1; // Return an error.
|
|
}
|
|
|
|
getyx(stdscr, mouseY, mouseX);
|
|
start_color(); // Otherwise init colors
|
|
return 0;
|
|
}
|
|
|
|
void Terminal::tearDown()
|
|
{
|
|
endwin();
|
|
}
|
|
|
|
|
|
int Terminal::getKey()
|
|
{
|
|
return getch();
|
|
}
|
|
|
|
int Terminal::getXMax()
|
|
{
|
|
return xMax;
|
|
}
|
|
|
|
int Terminal::getYMax()
|
|
{
|
|
return yMax;
|
|
}
|
|
|
|
void Terminal::startDraw()
|
|
{
|
|
clear();
|
|
}
|
|
|
|
void Terminal::endDraw()
|
|
{
|
|
refresh();
|
|
}
|
|
|
|
bool Terminal::isDone()
|
|
{
|
|
return m_done;
|
|
}
|
|
|
|
void Terminal::quit()
|
|
{
|
|
m_done = true;
|
|
}
|
|
|
|
void Terminal::draw(int x, int y, const std::string& toDraw)
|
|
{
|
|
mvprintw(y,x,toDraw.c_str());
|
|
}
|
|
|
|
|
|
#endif
|