view ui.h @ 466:796508f828f6

Refactor much of the "windowing" UI code into a new module, ui.[ch]
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 26 May 2012 06:56:18 +0300
parents
children 607bd4491e79
line wrap: on
line source

/*
 * NNChat - Custom chat client for NewbieNudes.com chatrooms
 * Written by Matti 'ccr' Hämäläinen
 * (C) Copyright 2008-2012 Tecnic Software productions (TNSP)
 */
#ifndef LIBNNUI_H
#define LIBNNUI_H

#include "th_types.h"
#include "th_string.h"

#ifdef HAVE_NCURSES_H
#include <ncurses.h>
#else
#include <curses.h>
#endif


#define SET_MAX_WINDOWS (32)
#define NN_BACKBUF_LEN    (512)       // Backbuffer size (in lines)

typedef struct
{
    qringbuf_t *data;   // "Backbuffer" data for this window
    int pos;            // Current position in the window, 0 = real time
    BOOL dirty;

    char *id;           // Chatter ID, NULL = main window
    int num;		// Window number

    char *buf;
    size_t len, bufsize;
    size_t chlen;
} nn_window_t;


extern nn_window_t *currWin;
extern BOOL cursesInit;
extern WINDOW *mainWin, *statusWin, *editWin;

BOOL nnwin_init(int delay);
void nnwin_shutdown();

BOOL nnwin_init_windows(void);
void nnwin_close_windows(void);

nn_window_t *nnwin_main_window();
nn_window_t *nnwin_get(const int index);
nn_window_t *nnwin_find(const char *id);

BOOL     nnwin_open(const char *name, BOOL curwin);
void     nnwin_close(nn_window_t *win);

void     nnwin_update_statusline(char *optUserName, int optUserColor);
void     nnwin_update_editbuf(nn_editbuf_t *buf);
int      nnwin_print(WINDOW *win, const char *fmt);
int      nnwin_print_buf(nn_window_t *win, const char *fmt);
void     nnwin_update_all(void);
char *   nnwin_prompt_requester(WINDOW *win, const char *info, BOOL allowEmpty);
BOOL     nnwin_update_main(BOOL force);


#endif