Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _BUTTON_H
00024 #define _BUTTON_H
00025
00026 #ifdef HAVE_CONFIG_H
00027 # include <config.h>
00028 #endif
00029
00030 #ifdef HAVE_NCURSES_H
00031 # include <ncurses.h>
00032 #else // HAVE_NCURSES_H
00033 # ifdef HAVE_CURSES_H
00034 # include <curses.h>
00035 # else
00036 # error "Neither curses.h nor ncurses.h available"
00037 # endif // HAVE_CURSES_H
00038 #endif // HAVE_NCURSES_H
00039 #include "curswa.h"
00040
00041 #ifdef HAVE_STRING
00042 # include <string>
00043 #endif
00044
00045 #include "uiexception.h"
00046
00053 namespace YAPET {
00054 namespace UI {
00062 class Button {
00063 private:
00064 enum {
00070 BASE_SIZE = 4
00071 };
00072
00073 WINDOW* window;
00074
00075 inline Button (const Button&) {}
00076 inline const Button& operator= (const Button&) {
00077 return *this;
00078 }
00079
00080 std::string label;
00081
00082 int start_x;
00083 int start_y;
00084 bool readonly;
00085
00086 protected:
00087 inline virtual void onClick() {};
00088 void createWindow() throw (UIException);
00089
00090 public:
00091 Button (std::string l, int x, int y, bool ro = false);
00092 virtual ~Button();
00093
00094 void setLabel (std::string l) throw (UIException);
00095 std::string getLabel() {
00096 return label;
00097 }
00098
00099 void refresh() throw (UIException);
00100
00109 int focus() throw (UIException);
00118 inline int getLength() const {
00119 return BASE_SIZE + label.length();
00120 }
00121
00122 inline void setReadonly(bool ro) { readonly = ro; }
00123 inline bool getReadonly() const { return readonly; }
00124 };
00125 }
00126 }
00127 #endif // _BUTTON_H