[w3m-dev 03455] mouse menu

* configure (config.h): MOUSE_FILE
* display.c (displayBuffer): nTab -> nTab2, N_TAB -> nTabLine()
	(redrawNLine): nTab -> nTab2, N_TAB -> nTabLine()
			mouse_menu support
* fm.h (nTab2): added
	(N_TAB): deleted
	(NO_TABBUFFER): added
	(struct _MouseMenu): added
	(mouse_menu_map): added
	(mouse_menu): added
* func.c (initMouseMenu): added
* main.c (main): initMouseMenu()
	(posTab): mouse_menu support
	(mouse_menu_action): added
	(process_mouse): mouse_menu support
	(reinit): initMouseMenu()
	(nTabLine): added
	(moveTab): check NO_TABBUFFER
* proto.h (nTabLine): added
	(initMouseMenu): added
* rc.c (sync_with_option): initMouseMenu()
From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
This commit is contained in:
Fumitoshi UKAI
2002-11-21 16:31:35 +00:00
parent be89d9319a
commit 1248fa2911
8 changed files with 216 additions and 26 deletions

67
func.c
View File

@@ -1,4 +1,4 @@
/* $Id: func.c,v 1.10 2002/06/01 16:50:16 ukai Exp $ */
/* $Id: func.c,v 1.11 2002/11/21 16:31:36 ukai Exp $ */
/*
* w3m func.c
*/
@@ -320,3 +320,68 @@ getQWord(char **str)
*str = p;
return tmp->ptr;
}
#ifdef USE_MOUSE
void
initMouseMenu(void)
{
FILE *mf;
Str line;
char *p, *s;
int f, b, x, x2;
mouse_menu = NULL;
for (b = 1; b <= 3; b++) {
for (x = 0; x < 10; x++) {
mouse_menu_map[b - 1][x].func = NULL;
mouse_menu_map[b - 1][x].data = NULL;
}
}
if ((mf = fopen(rcFile(MOUSE_FILE), "rt")) == NULL)
return;
while (!feof(mf)) {
line = Strfgets(mf);
Strchop(line);
Strremovefirstspaces(line);
if (line->length == 0)
continue;
p = line->ptr;
s = getWord(&p);
if (*s == '#') /* comment */
continue;
if (!strcmp(s, "menu")) {
s = getQWord(&p);
if (*s)
mouse_menu = Strnew_charp(s)->ptr;
continue;
}
if (strcmp(s, "button"))
continue; /* error */
s = getWord(&p);
b = atoi(s);
if (!(b >= 1 && b <= 3))
continue; /* error */
s = getWord(&p);
x = atoi(s);
if (!(IS_DIGIT(*s) && x >= 0 && x <= 9))
continue; /* error */
s = getWord(&p);
x2 = atoi(s);
if (!(IS_DIGIT(*s) && x2 >= 0 && x2 <= 9))
continue; /* error */
s = getWord(&p);
f = getFuncList(s);
if (f < 0)
continue; /* error */
s = getQWord(&p);
if (!*s)
s = NULL;
for (; x <= x2; x++) {
mouse_menu_map[b - 1][x].func = w3mFuncList[f].func;
mouse_menu_map[b - 1][x].data = s;
}
}
fclose(mf);
}
#endif