1
0
mirror of https://github.com/irssi/irssi.git synced 2024-09-01 04:14:16 -04:00

Remove cuix from trunk.

git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4560 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
Emanuele Giaquinta 2007-06-17 14:40:13 +00:00 committed by exg
parent 98e3a37d7b
commit b67f641ac1
13 changed files with 0 additions and 735 deletions

View File

@ -99,14 +99,6 @@ AC_ARG_WITH(terminfo,
fi,
want_terminfo=yes)
AC_ARG_WITH(cuix,
[ --with-cuix Use curses ui extended (experimental, not usable)],
if test x$withval = xyes; then
want_terminfo=no
want_cuix=yes
fi, want_cuix=no)
AC_ARG_WITH(modules,
[ --with-modules Specify what modules to build in binary],
if test x$withval != xyes -a x$withval != xno; then
@ -310,10 +302,6 @@ if test "x$want_socks" = "xyes"; then
])
fi
if test "x$want_cuix" = "xyes"; then
AC_DEFINE([HAVE_CUIX], [1] ,[Enable cuix support])
fi
dnl **
dnl ** fe-text checks
dnl **
@ -676,7 +664,6 @@ AM_CONDITIONAL(HAVE_PERL, test "$want_perl" != "no")
AM_CONDITIONAL(HAVE_STATIC_PERL, test "$want_perl" = "static")
AM_CONDITIONAL(NEED_TPARM, test "$need_tparm" = "yes")
AM_CONDITIONAL(USE_CURSES, test "$want_terminfo" != "yes" -a "$want_termcap" != "yes")
AM_CONDITIONAL(USE_CUIX, test "$want_cuix" = "yes")
# move LIBS to PROG_LIBS so they're not tried to be used when linking eg. perl libraries
PROG_LIBS=$LIBS

View File

@ -33,11 +33,6 @@ terminfo_sources = \
curses_sources = \
term-curses.c
cuix_sources = \
cuix-api.c \
cuix-lib.c \
cuix.c
if NEED_TPARM
use_tparm_sources = $(tparm_sources)
endif
@ -48,13 +43,6 @@ else
use_term_sources = $(terminfo_sources)
endif
if USE_CUIX
use_term_sources += $(cuix_sources)
irssi_LDADD += -lform -lpanel -lmenu
INCLUDES += -I$(top_srcdir)/src/irc/core
endif
irssi_SOURCES = \
gui-entry.c \
gui-expandos.c \

View File

@ -1,386 +0,0 @@
#include "module.h"
#include "settings.h"
#include "term.h"
#include "gui-windows.h"
#include <stdarg.h>
#if defined(USE_NCURSES) && !defined(RENAMED_NCURSES)
# include <ncurses.h>
#else
# include <curses.h>
#endif
#include <form.h>
#include <panel.h>
#include <menu.h>
#include "cuix-api.h"
#define INIT_ENTRIES 8
#define X0_OFFSET 4
#define Y0_OFFSET 2
#define Y_OFFSET 1
#define CUIX_FIELD_WIDTH 16
object *create_object (char *title, int type, void **entries)
{
object *obj;
void **new_entries;
int i;
obj = g_malloc (sizeof(object));
if (!obj) {
return NULL;
}
obj->type = type;
obj->title = title;
if (!entries) {
new_entries = g_new0 (void *, INIT_ENTRIES);
obj->entries = new_entries;
obj->alloced = INIT_ENTRIES;
obj->last = 0;
} else {
for (i = 0; ((entry **)entries)[i]; i++);
obj->alloced = i;
obj->last = i;
obj->entries = entries;
}
return obj;
}
object *create_menu (char *title)
{
return create_object (title, CUIX_MENU, NULL);
}
object *create_form (char *title)
{
return create_object (title, CUIX_FORM, NULL);
}
/* entries must be NULL terminated */
object *create_list (char *title, entry **entries)
{
return create_object (title, CUIX_LIST, (void **)entries);
}
entry *create_entry (char *label, int type, action_fn_type action)
{
entry *entry;
entry = g_malloc (sizeof(object));
if (!entry) {
return NULL;
}
entry->type = type;
entry->data = label;
entry->action = action;
return entry;
}
entry *create_menuentry (char *label, action_fn_type action)
{
return create_entry (label, CUIX_MENUENTRY, action);
}
entry *create_label (char *label)
{
return create_entry (label, CUIX_LABEL, NULL);
}
entry *create_field (char *label, action_fn_type action)
{
return create_entry (label, CUIX_FIELD, action);
}
/* Adds child at the last position of father->entries */
void attach_entry (object *father, void *child)
{
void **entries;
int i;
/* Check that we have enough space in father->entries, otherwise alloc
* twice more than previously */
if (father->last >= father->alloced) {
entries = g_new0 (void *,2 * father->alloced);
if (!entries) {
fprintf (stderr, "Problem with memory allocation, quitting now...\n");
exit (1);
}
for (i = 0; i < father->alloced; i++) {
entries[i] = father->entries[i];
}
g_free (father->entries);
father->entries = entries;
father->alloced *= 2;
}
father->entries[father->last++] = child;
}
/* Adds a submenu to father */
void attach_submenu (object *father, object *child)
{
/* Check that both are really menus */
if (father->type != CUIX_MENU || child->type != CUIX_MENU) {
fprintf (stderr, "Typing error, trying to add %p (%d) as child of"
"%p (%d)\n", father, father->type, child, child->type);
exit (1);
}
attach_entry (father, (void *)child);
}
/* Returns the maximum width occupied by labels */
int get_labels_width (object *obj)
{
int i;
unsigned int w = 0;
entry *e;
object *o;
for (i = 0; i < obj->last; i++) {
e = (entry *)obj->entries[i];
if (e->type == CUIX_LABEL || e->type == CUIX_MENUENTRY) {
w = (w > strlen (e->data)) ? w : strlen (e->data);
}
if (e->type == CUIX_MENU) {
o = (object *)obj->entries[i];
w = (w > strlen (o->title)) ? w : strlen (o->title);
}
}
w += 2 * X0_OFFSET;
return (int)w;
}
/* Puts in x and y the coordinates to center an object of size objw and objh
* in the window win */
void get_center (WINDOW *win, int objh, int objw, int *y, int *x)
{
int begx, begy, maxx, maxy, w, h;
getbegyx (win, begy, begx);
getmaxyx (win, maxy, maxx);
w = maxx - begx;
h = maxy - begy;
*x = (w - objw) / 2 + begx;
*y = (h - objh) / 2 + begy;
if (*x < 0)
*x = 0;
if (*y < 0)
*y = 0;
}
void display_object (object *obj)
{
WINDOW *subwin;
FORM *form;
MENU *menu;
FIELD **fields;
ITEM **items, *cur_item;
object *o;
entry *e;
char *result;
int i, x, y, w, h;
int ch;
p_main = new_panel(root_window->win);
if (obj->type >= CUIX_LABEL) {
fprintf (stderr, "Trying to display an entry %p (%d), terminating...\n",
obj, obj->type);
exit (1);
}
switch (obj->type) {
case CUIX_LIST:
w = get_labels_width (obj);
h = Y_OFFSET * obj->last + 2 * Y0_OFFSET;
get_center (root_window->win, h, w, &y, &x);
cuix_win = newwin (h, w, y, x);
box (cuix_win, 0, 0);
p_cuix = new_panel(cuix_win);
x = X0_OFFSET;
y = Y0_OFFSET;
for (i = 0; i < obj->last; i++) {
e = (entry *)obj->entries[i];
if (e->type != CUIX_LABEL) {
fprintf (stderr, "Non-label entry in a list.\n");
exit (1);
}
wmove (cuix_win,y,x);
waddstr (cuix_win,e->data);
y += Y_OFFSET;
x = X0_OFFSET;
}
top_panel (p_cuix);
update_panels();
doupdate();
wgetch(cuix_win);
/* refresh (); */
/* wrefresh (cuix_win); */
break;
case CUIX_FORM:
w = get_labels_width (obj);
w = (w > CUIX_FIELD_WIDTH + 2 * X0_OFFSET) ?
w : CUIX_FIELD_WIDTH + 2 * X0_OFFSET;
h = Y_OFFSET * obj->last + 2 * Y0_OFFSET;
fields = g_new0 (FIELD *, obj->last + 1);
for (i = 0; i < obj->last; i++) {
e = (entry *)obj->entries[i];
fields[i] = new_field (1, w,
Y0_OFFSET + i * Y_OFFSET, X0_OFFSET, 0, 0);
if (e->type == CUIX_LABEL) {
field_opts_off (fields[i], O_ACTIVE);
field_opts_off (fields[i], O_EDIT);
set_field_back (fields[i], A_BOLD);
}
set_field_buffer (fields[i], 0, e->data);
}
fields[obj->last] = NULL;
form = new_form (fields);
scale_form (form, &h, &w);
h += Y0_OFFSET;
w += 2 * X0_OFFSET;
get_center (root_window->win, h, w, &y, &x);
cuix_win = newwin (h, w, y, x);
keypad (cuix_win, TRUE);
nonl ();
set_form_win (form, cuix_win);
set_form_sub (form, derwin(cuix_win, w, h, X0_OFFSET, Y0_OFFSET));
post_form (form);
box (cuix_win, 0, 0);
p_cuix = new_panel (cuix_win);
top_panel (p_cuix);
while((ch = wgetch(cuix_win)) != '\n' && ch != '\r' && ch != 27 /* ESC */) {
switch(ch) {
case KEY_DOWN:
/* Go to next field */
form_driver(form, REQ_NEXT_FIELD);
/* Go to the end of the present buffer */
/* Leaves nicely at the last character */
form_driver(form, REQ_END_LINE);
break;
case KEY_UP:
/* Go to previous field */
form_driver(form, REQ_PREV_FIELD);
form_driver(form, REQ_END_LINE);
break;
case KEY_BACKSPACE:
form_driver(form, REQ_PREV_CHAR);
form_driver(form, REQ_DEL_CHAR);
break;
case KEY_LEFT:
form_driver(form, REQ_PREV_CHAR);
break;
case KEY_RIGHT:
form_driver(form, REQ_NEXT_CHAR);
break;
default:
/* If this is a normal character, it gets */
/* Printed */
form_driver(form, ch);
break;
}
}
form_driver (form, REQ_VALIDATION);
if (ch != 27) {
for (i = 0; i < obj->last; i++) {
e = (entry *)obj->entries[i];
if (e->type == CUIX_FIELD) {
result = field_buffer(fields[i],0);
e->action (result);
}
}
}
for (i = 0; i < obj->last; i++) {
free_field (fields[i]);
}
g_free (fields);
unpost_form (form);
break;
case CUIX_MENU:
w = get_labels_width (obj);
w = (w > CUIX_FIELD_WIDTH + 2 * X0_OFFSET) ?
w : CUIX_FIELD_WIDTH + 2 * X0_OFFSET;
h = Y_OFFSET * obj->last + 2 * Y0_OFFSET;
items = g_new0 (ITEM *, obj->last + 1);
for (i = 0; i < obj->last; i++) {
e = (entry *)obj->entries[i];
o = (object *)obj->entries[i];
if (e->type == CUIX_MENUENTRY) {
items[i] = new_item (e->data, "");
set_item_userptr (items[i], (void*)e);
} else {
if (e->type == CUIX_LABEL) {
items[i] = new_item (e->data, "");
item_opts_off (items[i], O_SELECTABLE);
} else {
items[i] = new_item (o->title, " (SUB) ");
set_item_userptr (items[i], (void*)o);
}
}
}
items[obj->last] = NULL;
menu = new_menu (items);
set_menu_mark (menu, " * ");
scale_menu (menu, &h, &w);
h += 4 * Y0_OFFSET;
w += 4 * X0_OFFSET;
get_center (root_window->win, h, w, &y, &x);
cuix_win = newwin (h, w, y, x);
keypad (cuix_win, TRUE);
nonl ();
set_menu_win (menu, cuix_win);
subwin = derwin (cuix_win,
h - 2 * Y0_OFFSET, w - 2 * X0_OFFSET, Y0_OFFSET, X0_OFFSET);
set_menu_sub (menu, subwin);
box (cuix_win, 0, 0);
post_menu (menu);
p_cuix = new_panel (cuix_win);
top_panel (p_cuix);
while((ch = wgetch(cuix_win)) != 27 /* ESC */) {
switch(ch) {
case KEY_DOWN:
menu_driver(menu, REQ_DOWN_ITEM);
break;
case KEY_UP:
menu_driver(menu, REQ_UP_ITEM);
break;
case '\n':
case '\r':
cur_item = current_item(menu);
e = (entry *)item_userptr(cur_item);
o = (object *)item_userptr(cur_item);
if (e->type == CUIX_MENUENTRY)
{
e->action ("");
} else {
display_object (o);
}
goto end;
break;
default:
break;
}
}
end:
for (i = 0; i < obj->last; i++) {
free_item (items[i]);
}
g_free (items);
unpost_menu (menu);
}
}

View File

@ -1,68 +0,0 @@
#ifndef __CUIX_API_H
#define __CUIX_API_H
#include "term-curses.h"
#define MAX_FIELD_SIZE 64
WINDOW *cuix_win;
PANEL *p_main;
PANEL *p_cuix;
enum objtype {
/* For objects */
CUIX_MENU,
CUIX_FORM,
CUIX_LIST,
/* For entries */
/* NB: LABEL must stay the first entry, as it is used to test if we have
* an object or an entry */
CUIX_LABEL,
CUIX_FIELD,
CUIX_MENUENTRY
};
/* This is the type of the action to be executed when the entry has been
* successfully selected (in case of a menuentry) or filled (in case of a
* field). */
typedef int(*action_fn_type)(char *);
typedef struct entry {
int type;
char *data; /* contains label or submenu title */
action_fn_type action;
} entry;
typedef struct object {
int type;
char *title;
void **entries;
int alloced; /* defines the current size of entries */
int last; /* index of the first non-alloced entry */
} object;
/* Object definitions */
object *create_menu (char *title);
object *create_form (char *title);
/* entries must be NULL terminated */
object *create_list (char *title, entry **entries);
entry *create_menuentry (char *label, action_fn_type action);
entry *create_label (char *label);
entry *create_field (char *label, action_fn_type action);
void attach_submenu (object *father, object *child);
void attach_entry (object *father, void *child);
void display_object (object *obj);
void my_menu(void);
#endif /* __CUIX_API_H */

View File

@ -1,139 +0,0 @@
#include "module.h"
#include "settings.h"
#include "cuix-lib.h"
#include "signals.h"
#include "irc.h"
#include "irc-channels.h"
#include "mode-lists.h"
#include "gui-windows.h"
int do_nothing (char *foo)
{
(void)foo;
return 0;
}
void display_message (char *message)
{
object *list;
entry *text, *entries[2];
text = create_label (message);
entries[0] = text;
entries[1] = NULL;
list = create_list ("Message", entries);
display_object (list);
}
int change_nick (char *nick)
{
SERVER_REC *server;
WI_ITEM_REC *wiitem;
if (active_win == NULL) {
server = NULL;
wiitem = NULL;
} else {
server = active_win->active_server != NULL ?
active_win->active_server : active_win->connect_server;
wiitem = active_win->active;
}
signal_emit("command nick", 3, nick, server, wiitem);
return 0;
}
int show_banlist (char *nothing)
{
GSList *tmp;
IRC_CHANNEL_REC *chan = IRC_CHANNEL(active_win->active);
BAN_REC *ban;
object *list;
entry *entry, **entries;
unsigned int size, i;
GString **baninfo;
if (!chan) {
display_message ("This is not a channel");
return 1;
}
if (!chan->banlist) {
display_message ("No bans set");
return 0;
}
size = (unsigned int) g_slist_length (chan->banlist);
entries = g_new0 (struct entry *, size + 1);
baninfo = g_new0 (GString *, size);
for (tmp = chan->banlist, i = 0; tmp; tmp = tmp->next, i++) {
ban = tmp->data;
baninfo[i] = g_string_new (NULL);
g_string_sprintf (baninfo[i], "%s set by %s %d seconds ago", ban->ban, ban->setby, (int)(time(NULL)-ban->time));
entry = create_label (baninfo[i]->str);
entries[i] = entry;
}
list = create_list ("Bans", entries);
display_object (list);
for (i = 0; i < size; i++) {
g_string_free (baninfo[i], FALSE);
}
g_free (entries);
g_free (baninfo);
return 0;
}
int change_nick_form (char *nothing) {
object *form;
entry *question, *answer;
(void)nothing;
form = create_form ("True!");
question = create_label ("Enter your new nick");
answer = create_field ("", change_nick);
attach_entry (form, question);
attach_entry (form, answer);
display_object (form);
return 0;
}
int about_list (char *nothing)
{
(void)nothing;
display_message ("(c) irssi; See http://www.irssi.org.");
return 0;
}
int home_menu (char *nothing)
{
/* Objects declaration */
object *root_menu;
entry *about, *banlist, *nick;
(void)nothing;
/* Objects initialisation */
root_menu = create_menu ("My root menu");
banlist = create_menuentry ("Banlist", show_banlist);
nick = create_menuentry ("Change nick", change_nick_form);
about = create_menuentry ("About", about_list);
/* Layout */
attach_entry (root_menu, (void *)banlist);
attach_entry (root_menu, (void *)nick);
attach_entry (root_menu, (void *)about);
/* Declare that the object is ready to be displayed and do it */
display_object (root_menu);
return 0;
}

View File

@ -1,9 +0,0 @@
#ifndef __CUIX_LIB_H
#define __CUIX_LIB_H
#include "cuix-api.h"
int home_menu (char *);
#endif /* __CUIX_LIB_H */

View File

@ -1,39 +0,0 @@
#include "module.h"
#include "settings.h"
#include "cuix-api.h"
#include "cuix-lib.h"
#include "cuix.h"
#include "term.h"
#if defined(USE_NCURSES) && !defined(RENAMED_NCURSES)
# include <ncurses.h>
#else
# include <curses.h>
#endif
void cuix_destroy (void)
{
if (cuix_win) {
del_panel (p_cuix);
delwin(cuix_win);
}
cuix_win = NULL;
cuix_active = 0;
update_panels ();
doupdate();
term_refresh (root_window);
irssi_redraw ();
}
void cuix_create(void)
{
home_menu (NULL);
cuix_destroy ();
}
void cuix_refresh (void)
{
update_panels ();
}

View File

@ -1,11 +0,0 @@
#ifndef __CUIX_TRY_H
#define __CUIX_TRY_H
int cuix_active;
void cuix_create (void);
void cuix_destroy (void);
void cuix_refresh (void);
#endif /* __CUIX_TRY_H */

View File

@ -28,9 +28,6 @@
#include "term.h"
#include "gui-printtext.h"
#include "gui-windows.h"
#ifdef HAVE_CUIX
#include "cuix.h"
#endif
int mirc_colors[] = { 15, 0, 1, 2, 12, 4, 5, 6, 14, 10, 3, 11, 9, 13, 8, 7 };
static int scrollback_lines, scrollback_time, scrollback_burst_remove;
@ -284,9 +281,6 @@ static void sig_gui_print_text(WINDOW_REC *window, void *fgcolor,
}
if (gui->use_insert_after)
gui->insert_after = insert_after;
#ifdef HAVE_CUIX
cuix_refresh ();
#endif
}
static void sig_gui_printtext_finished(WINDOW_REC *window)

View File

@ -23,9 +23,6 @@
#include "term.h"
#include "mainwindows.h"
#ifdef HAVE_CUIX
#include "cuix.h"
#endif
#include "term-curses.h"
@ -352,26 +349,14 @@ void term_refresh_thaw(void)
void term_refresh(TERM_WINDOW *window)
{
#ifdef HAVE_CUIX
if (!cuix_active) {
#endif
if (window != NULL)
wnoutrefresh(window->win);
if (freeze_refresh == 0) {
move(curs_y, curs_x);
wnoutrefresh(stdscr);
#ifdef HAVE_CUIX
cuix_refresh ();
#endif
doupdate();
}
#ifdef HAVE_CUIX
} else {
update_panels ();
doupdate ();
}
#endif
}
void term_stop(void)

View File

@ -4,11 +4,6 @@
# include <curses.h>
#endif
#ifdef HAVE_CUIX
#include <form.h>
#include <panel.h>
#endif
struct _TERM_WINDOW {
int x, y;
int width, height;

View File

@ -30,9 +30,6 @@
#include "printtext.h"
#include "gui-windows.h"
#include "textbuffer-reformat.h"
#ifdef HAVE_CUIX
#include "cuix.h"
#endif
/* SYNTAX: CLEAR [-all] [<refnum>] */
static void cmd_clear(const char *data)
@ -372,23 +369,6 @@ static void sig_away_changed(SERVER_REC *server)
}
}
#ifdef HAVE_CUIX
static void cmd_cuix(void)
{
if (!cuix_active)
{
/* textbuffer_view_clear(WINDOW_GUI(active_win)->view); */
cuix_active = 1;
cuix_create();
} else {
/* should never been called */
/* cuix_destroy (); */
cuix_active = 0;
/* textbuffer_view_clear(WINDOW_GUI(active_win)->view); */
}
}
#endif
void textbuffer_commands_init(void)
{
settings_add_level("misc", "scrollback_levelclear_levels", "crap clientcrap");
@ -402,9 +382,6 @@ void textbuffer_commands_init(void)
command_bind("scrollback end", NULL, (SIGNAL_FUNC) cmd_scrollback_end);
command_bind("scrollback redraw", NULL, (SIGNAL_FUNC) cmd_scrollback_redraw);
command_bind("scrollback status", NULL, (SIGNAL_FUNC) cmd_scrollback_status);
#ifdef HAVE_CUIX
command_bind("cuix", NULL, (SIGNAL_FUNC) cmd_cuix);
#endif
command_set_options("clear", "all");
command_set_options("scrollback clear", "all");
@ -425,9 +402,6 @@ void textbuffer_commands_deinit(void)
command_unbind("scrollback end", (SIGNAL_FUNC) cmd_scrollback_end);
command_unbind("scrollback redraw", (SIGNAL_FUNC) cmd_scrollback_redraw);
command_unbind("scrollback status", (SIGNAL_FUNC) cmd_scrollback_status);
#ifdef HAVE_CUIX
command_unbind("cuix", (SIGNAL_FUNC) cmd_cuix);
#endif
signal_remove("away mode changed", (SIGNAL_FUNC) sig_away_changed);
}

View File

@ -23,9 +23,6 @@
#include "module.h"
#include "textbuffer-view.h"
#include "utf8.h"
#ifdef HAVE_CUIX
#include "cuix.h"
#endif
typedef struct {
char *name;
@ -1336,9 +1333,6 @@ static int sig_check_linecache(void)
void textbuffer_view_init(void)
{
linecache_tag = g_timeout_add(LINE_CACHE_CHECK_TIME, (GSourceFunc) sig_check_linecache, NULL);
#ifdef HAVE_CUIX
cuix_active = 0;
#endif
}
void textbuffer_view_deinit(void)