Merge: Nitsmell : Adding new code smells and print console updated
[nit.git] / lib / curses / curses.nit
index fccf346..688493e 100644 (file)
 # limitations under the License.
 
 # Curses for Nit
-module curses
+module curses is pkgconfig("ncurses")
+
+in "C header" `{
+       #include <ncurses.h>
+`}
 
 # A curse windows
-extern Window
+extern class Window `{WINDOW *`}
        # Initialize the screen
-       new is extern "initscr"
+       new `{
+               WINDOW *res;
+               res = initscr();
+               if (res == NULL) {
+                       fprintf(stderr, "Error initialising ncurses.\n");
+                       exit(EXIT_FAILURE);
+               }
+               raw();
+               keypad(res, TRUE);
+               noecho();
+               return res;
+       `}
 
-       # print a string somewhere
+       # Move the cursor at the position (y,x) and print a string
        # NOTE: as with the curses API, the position is (y,x)
-       fun mvaddstr(y,x: Int, str: String) is extern import String::to_cstring
+       fun mvaddstr(y,x: Int, str: String) import String.to_cstring `{
+               char *c_string = String_to_cstring( str );
+               mvaddstr(y, x, c_string);
+       `}
+
+       # Update the window
+       fun refresh `{
+               refresh();
+       `}
+
+       # Clear the entire window so it can be repainted from scratch with a refresh
+       fun wclear `{
+               wclear(self);
+       `}
+
+       # Delete the window
+       fun delwin `{
+               delwin(self);
+       `}
 
-       fun refresh is extern
-       fun wclear is extern
-       fun delwin is extern
-       fun endwin is extern
+       # Suspend the curses session and restore the previous terminal
+       fun endwin `{
+               endwin();
+       `}
 end