[w3m-dev 03372] tab browser

* display.c (displayBuffer): add ny
			rootY offset by tab
			tab line
	(cursorDown): offset rootY
	(arrangeCursor): offset rootY
* etc.c (columnSkip): offset rootY
	(lineSkip): offset rootY
	(currentLineSkip): offset rootY
* file.c (HTMLlineproc2body): ATTR_TARGET
* fm.h (MapArea): add target
	(Buffer): add rootY
	(TabBuffer): added
	(Currentbuf): comment out
	(Firstbuf): comment out
	(CurrentTab): added
	(FirstTab): added
	(LastTab): added
	(open_tab_blank): added
	(close_tab_back): added
	(nTab): added
	(TabCols): added
	(N_TAB): added
	(Currentbuf): CurrentTab->currentBuffer
	(Firstbuf): CurrentTab->firstBuffer
* funcname.tab (CLOSE_TAB): added
	(NEW_TAB): added
	(NEXT_TAB): added
	(PREV_TAB): added
	(TAB_GOTO): added
	(TAB_GOTO_RELATIVE): added
	(TAB_LEFT): added
	(TAB_LINK): added
	(TAB_MENU): added
	(TAB_RIGHT): added
* html.c (ALST_AREA): add ATTR_TARGET
* image.c (showImageProgress): offset rootY
* main.c (_newT): added
	(followTab): added
	(moveTab): added
	(check_target): added
	(MAIN): init tab related values
		buf => tab
	(nscroll): offset rootY
	(pgFore): offset rootY
	(pgBack): offset rootY
	(ctrCsrV): offset rootY
	(_movD): offset rootY
	(_movU): offset rootY
	(_goLine): offset rootY
	(_mark): offset rootY
	(followA): check target
	(_followForm): offset rootY
	(drawAnchorCursor0): offset rootY
	(drawAnchorCursor): offset rootY
	(backBf): check close_tab_back
	(follow_map): rewrite for tab, check target
	(posTab): added
	(process_mouse): tab operation
			offset rootY
	(deleteFiles): for all buffers in all tabs
	(newTab): added
	(newT): added
	(numTab): added
	(deleteTab): added
	(closeT): added
	(nextT): added
	(prevT): added
	(followTab): added
	(tabA): added
	(tabURL0): added
	(tabURL): added
	(tabrURL): added
	(moveTab): added
	(tabR): added
	(tabL): added
* map.c (follow_map_menu): return MapArea
	(newMapArea): add target args
* menu.c (SelTabMenu): added
	(SelTabV): added
	(initSelTabMenu): added
	(smChTab): added
	(smDelTab): added
	(MainMenuItem): add Select Tab
				on New Tab
	(popupMenu): add initSelTabMenu()
			offset rootY
	(mainMn): offset rootY
	(selMn): offset rootY
	(initSelectMenu): offset rootY
	(tabMn): added
* proto.h (newT): added
	(closeT): added
	(nextT): added
	(prevT): added
	(tabA): added
	(tabURL): added
	(tabrURL): added
	(tabR): added
	(tabL): added
	(newTab): added
	(deleteTab): added
	(follow_map_menu): return MapArea
	(newMapArea): add target arg
	(tabMn): added
* rc.c (CMT_OPEN_TAB_BLANK): added
	(CMT_CLOSE_TAB_BACK): added
	(open_tab_blank): added
	(close_tab_back): added
* doc/README.func (CLOSE_TAB): added
	(NEW_TAB): added
	(NEXT_TAB): added
	(PREV_TAB): added
	(TAB_GOTO): added
	(TAB_GOTO_RELATIVE): added
	(TAB_LEFT): added
	(TAB_LINK): added
	(TAB_MENU): added
	(TAB_RIGHT): added
* doc-jp/README.func: ditto doc/README.func
From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
This commit is contained in:
Fumitoshi UKAI
2002-11-05 17:10:04 +00:00
parent 98d6d29e7b
commit a772c51a16
15 changed files with 911 additions and 81 deletions
+124 -1
View File
@@ -1,3 +1,126 @@
2002-11-06 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
* [w3m-dev 03372] tab browser
* display.c (displayBuffer): add ny
rootY offset by tab
tab line
(cursorDown): offset rootY
(arrangeCursor): offset rootY
* etc.c (columnSkip): offset rootY
(lineSkip): offset rootY
(currentLineSkip): offset rootY
* file.c (HTMLlineproc2body): ATTR_TARGET
* fm.h (MapArea): add target
(Buffer): add rootY
(TabBuffer): added
(Currentbuf): comment out
(Firstbuf): comment out
(CurrentTab): added
(FirstTab): added
(LastTab): added
(open_tab_blank): added
(close_tab_back): added
(nTab): added
(TabCols): added
(N_TAB): added
(Currentbuf): CurrentTab->currentBuffer
(Firstbuf): CurrentTab->firstBuffer
* funcname.tab (CLOSE_TAB): added
(NEW_TAB): added
(NEXT_TAB): added
(PREV_TAB): added
(TAB_GOTO): added
(TAB_GOTO_RELATIVE): added
(TAB_LEFT): added
(TAB_LINK): added
(TAB_MENU): added
(TAB_RIGHT): added
* html.c (ALST_AREA): add ATTR_TARGET
* image.c (showImageProgress): offset rootY
* main.c (_newT): added
(followTab): added
(moveTab): added
(check_target): added
(MAIN): init tab related values
buf => tab
(nscroll): offset rootY
(pgFore): offset rootY
(pgBack): offset rootY
(ctrCsrV): offset rootY
(_movD): offset rootY
(_movU): offset rootY
(_goLine): offset rootY
(_mark): offset rootY
(followA): check target
(_followForm): offset rootY
(drawAnchorCursor0): offset rootY
(drawAnchorCursor): offset rootY
(backBf): check close_tab_back
(follow_map): rewrite for tab, check target
(posTab): added
(process_mouse): tab operation
offset rootY
(deleteFiles): for all buffers in all tabs
(newTab): added
(newT): added
(numTab): added
(deleteTab): added
(closeT): added
(nextT): added
(prevT): added
(followTab): added
(tabA): added
(tabURL0): added
(tabURL): added
(tabrURL): added
(moveTab): added
(tabR): added
(tabL): added
* map.c (follow_map_menu): return MapArea
(newMapArea): add target args
* menu.c (SelTabMenu): added
(SelTabV): added
(initSelTabMenu): added
(smChTab): added
(smDelTab): added
(MainMenuItem): add Select Tab
on New Tab
(popupMenu): add initSelTabMenu()
offset rootY
(mainMn): offset rootY
(selMn): offset rootY
(initSelectMenu): offset rootY
(tabMn): added
* proto.h (newT): added
(closeT): added
(nextT): added
(prevT): added
(tabA): added
(tabURL): added
(tabrURL): added
(tabR): added
(tabL): added
(newTab): added
(deleteTab): added
(follow_map_menu): return MapArea
(newMapArea): add target arg
(tabMn): added
* rc.c (CMT_OPEN_TAB_BLANK): added
(CMT_CLOSE_TAB_BACK): added
(open_tab_blank): added
(close_tab_back): added
* doc/README.func (CLOSE_TAB): added
(NEW_TAB): added
(NEXT_TAB): added
(PREV_TAB): added
(TAB_GOTO): added
(TAB_GOTO_RELATIVE): added
(TAB_LEFT): added
(TAB_LINK): added
(TAB_MENU): added
(TAB_RIGHT): added
* doc-jp/README.func: ditto doc/README.func
2002-11-06 Fumitoshi UKAI <ukai@debian.or.jp> 2002-11-06 Fumitoshi UKAI <ukai@debian.or.jp>
* doc-jp/README.pre_form: added [w3m-dev 03373] * doc-jp/README.pre_form: added [w3m-dev 03373]
@@ -4159,4 +4282,4 @@ a * [w3m-dev 03276] compile error on EWS4800
* release-0-2-1 * release-0-2-1
* import w3m-0.2.1 * import w3m-0.2.1
$Id: ChangeLog,v 1.472 2002/11/05 16:37:36 ukai Exp $ $Id: ChangeLog,v 1.473 2002/11/05 17:10:04 ukai Exp $
+53 -10
View File
@@ -1,4 +1,4 @@
/* $Id: display.c,v 1.25 2002/10/29 16:19:41 ukai Exp $ */ /* $Id: display.c,v 1.26 2002/11/05 17:10:05 ukai Exp $ */
#include <signal.h> #include <signal.h>
#include "fm.h" #include "fm.h"
@@ -227,6 +227,7 @@ displayBuffer(Buffer *buf, int mode)
{ {
Str msg; Str msg;
Anchor *aa = NULL; Anchor *aa = NULL;
int ny = 0;
if (buf->topLine == NULL && readBufferCache(buf) == 0) { /* clear_buffer */ if (buf->topLine == NULL && readBufferCache(buf) == 0) { /* clear_buffer */
mode = B_FORCE_REDRAW; mode = B_FORCE_REDRAW;
@@ -253,6 +254,12 @@ displayBuffer(Buffer *buf, int mode)
else else
buf->rootX = 0; buf->rootX = 0;
buf->COLS = COLS - buf->rootX; buf->COLS = COLS - buf->rootX;
if (nTab > 1)
ny = (nTab - 1) / N_TAB + 2;
if (buf->rootY != ny) {
buf->rootY = ny;
arrangeCursor(buf);
}
if (mode == B_FORCE_REDRAW || mode == B_SCROLL || if (mode == B_FORCE_REDRAW || mode == B_SCROLL ||
#ifdef USE_IMAGE #ifdef USE_IMAGE
mode == B_REDRAW_IMAGE || mode == B_REDRAW_IMAGE ||
@@ -388,7 +395,7 @@ displayBuffer(Buffer *buf, int mode)
refresh(); refresh();
} }
standout(); standout();
message(msg->ptr, buf->cursorX + buf->rootX, buf->cursorY); message(msg->ptr, buf->cursorX + buf->rootX, buf->cursorY + buf->rootY);
standend(); standend();
term_title(buf->buffername); term_title(buf->buffername);
refresh(); refresh();
@@ -428,8 +435,41 @@ redrawNLine(Buffer *buf, int n)
#endif /* USE_BG_COLOR */ #endif /* USE_BG_COLOR */
} }
#endif /* USE_COLOR */ #endif /* USE_COLOR */
for (i = 0, l = buf->topLine; i < LASTLINE; i++) { if (nTab > 1) {
if (i >= LASTLINE - n || i < -n) TabBuffer *t;
int nx = N_TAB, col = COLS - 2, x, l;
move(0, 0);
for (t = FirstTab, i = 0; t; t = t->nextTab, i++) {
x = col * (i % nx) / nx;
move(i / nx, x);
if (t == CurrentTab)
bold();
addch('[');
l = strlen(t->currentBuffer->buffername);
if (col / nx - 2 > l)
addnstr_sup(" ", (col / nx - 2 - l) / 2);
if (t == CurrentTab)
EFFECT_ACTIVE_START;
addstr(t->currentBuffer->buffername);
if (t == CurrentTab)
EFFECT_ACTIVE_END;
clrtoeol();
x = col * (i % nx + 1) / nx - 1;
move(i / nx, x);
addch(']');
if (t == CurrentTab)
boldend();
clrtoeol();
}
move(0, col);
addstr(" x");
move((nTab - 1) / nx + 1, 0);
for (i = 0; i < COLS; i++)
addch('~');
}
for (i = buf->rootY, l = buf->topLine; i < LASTLINE; i++) {
if (i >= LASTLINE - n || (i - buf->rootY) < -n)
l0 = redrawLine(buf, l, i); l0 = redrawLine(buf, l, i);
else { else {
l0 = (l) ? l->next : NULL; l0 = (l) ? l->next : NULL;
@@ -444,7 +484,7 @@ redrawNLine(Buffer *buf, int n)
#ifdef USE_IMAGE #ifdef USE_IMAGE
if (!(activeImage && displayImage && buf->img)) if (!(activeImage && displayImage && buf->img))
return; return;
move(buf->cursorY, buf->cursorX); move(buf->cursorY + buf->rootY, buf->cursorX + buf->rootX);
for (i = 0, l = buf->topLine; i < LASTLINE; i++) { for (i = 0, l = buf->topLine; i < LASTLINE; i++) {
if (i >= LASTLINE - n || i < -n) if (i >= LASTLINE - n || i < -n)
l0 = redrawLineImage(buf, l, i); l0 = redrawLineImage(buf, l, i);
@@ -666,7 +706,7 @@ redrawLineImage(Buffer *buf, Line *l, int i)
buf->need_reshape = TRUE; buf->need_reshape = TRUE;
} }
x = (int)((rcol - column + buf->rootX) * pixel_per_char); x = (int)((rcol - column + buf->rootX) * pixel_per_char);
y = (int)(i * pixel_per_line); y = (int)((i + buf->rootY) * pixel_per_line);
sx = (int)((rcol - COLPOS(l, a->start.pos)) * pixel_per_char); sx = (int)((rcol - COLPOS(l, a->start.pos)) * pixel_per_char);
sy = (int)((l->linenumber - image->y) * pixel_per_line); sy = (int)((l->linenumber - image->y) * pixel_per_line);
if (sx == 0 && x + image->xoffset >= 0) if (sx == 0 && x + image->xoffset >= 0)
@@ -1009,7 +1049,7 @@ disp_message_nsec(char *s, int redraw_current, int sec, int purge, int mouse)
} }
if (Currentbuf != NULL) if (Currentbuf != NULL)
message(s, Currentbuf->cursorX + Currentbuf->rootX, message(s, Currentbuf->cursorX + Currentbuf->rootX,
Currentbuf->cursorY); Currentbuf->cursorY + Currentbuf->rootY);
else else
message(s, LASTLINE, 0); message(s, LASTLINE, 0);
refresh(); refresh();
@@ -1065,7 +1105,7 @@ cursorDown(Buffer *buf, int n)
{ {
if (buf->firstLine == NULL) if (buf->firstLine == NULL)
return; return;
if (buf->cursorY < LASTLINE - 1) if (buf->cursorY + buf->rootY < LASTLINE - 1)
cursorUpDown(buf, 1); cursorUpDown(buf, 1);
else { else {
buf->topLine = lineSkip(buf, buf->topLine, n, FALSE); buf->topLine = lineSkip(buf, buf->topLine, n, FALSE);
@@ -1180,9 +1220,12 @@ arrangeCursor(Buffer *buf)
if (buf == NULL || buf->currentLine == NULL) if (buf == NULL || buf->currentLine == NULL)
return; return;
/* Arrange line */ /* Arrange line */
if (buf->currentLine->linenumber - buf->topLine->linenumber >= LASTLINE || if (buf->currentLine->linenumber - buf->topLine->linenumber >= LASTLINE -
buf->currentLine->linenumber < buf->topLine->linenumber) { buf->rootY || buf->currentLine->linenumber < buf->topLine->linenumber) {
/*
buf->topLine = buf->currentLine; buf->topLine = buf->currentLine;
*/
buf->topLine = lineSkip(buf, buf->currentLine, 0, FALSE);
} }
/* Arrange column */ /* Arrange column */
if (buf->currentLine->len == 0) if (buf->currentLine->len == 0)
+10
View File
@@ -6,6 +6,7 @@ BEGIN ʸ
BOOKMARK ブックマークを読み込みます BOOKMARK ブックマークを読み込みます
CENTER_H カーソルのある位置を行の中央に移動します CENTER_H カーソルのある位置を行の中央に移動します
CENTER_V カーソルのある行を画面の中央に移動します CENTER_V カーソルのある行を画面の中央に移動します
CLOSE_TAB 現在のタブを閉じます
COMMAND w3mのコマンドを実行します COMMAND w3mのコマンドを実行します
COOKIE クッキー一覧を表示します COOKIE クッキー一覧を表示します
DEFINE_KEY キー入力とコマンドの対応を定義します DEFINE_KEY キー入力とコマンドの対応を定義します
@@ -57,6 +58,7 @@ MOVE_RIGHT1
MOVE_UP カーソルを上に移動します(改ページ時には半ページスクロール) MOVE_UP カーソルを上に移動します(改ページ時には半ページスクロール)
MOVE_UP1 カーソルを上に移動します(改ページ時には1行スクロール) MOVE_UP1 カーソルを上に移動します(改ページ時には1行スクロール)
MSGS エラーメッセージの一覧の表示 MSGS エラーメッセージの一覧の表示
NEW_TAB 新しいタブを開きます
NEXT_DOWN カーソルの下側にあるリンクに移動します NEXT_DOWN カーソルの下側にあるリンクに移動します
NEXT_LEFT カーソルの左側にあるリンクに移動します NEXT_LEFT カーソルの左側にあるリンクに移動します
NEXT_LEFT_UP カーソルの左側(無ければ前の行以前)にあるリンクに移動します NEXT_LEFT_UP カーソルの左側(無ければ前の行以前)にあるリンクに移動します
@@ -65,6 +67,7 @@ NEXT_MARK
NEXT_PAGE 次のページを表示します NEXT_PAGE 次のページを表示します
NEXT_RIGHT カーソルの右側にあるリンクに移動します NEXT_RIGHT カーソルの右側にあるリンクに移動します
NEXT_RIGHT_DOWN カーソルの右側(無ければ次行以降)にあるリンクに移動します NEXT_RIGHT_DOWN カーソルの右側(無ければ次行以降)にあるリンクに移動します
NEXT_TAB 次のタブに移動します
NEXT_UP カーソルの上側にあるリンクに移動します NEXT_UP カーソルの上側にあるリンクに移動します
NEXT_WORD 次の単語に移動します NEXT_WORD 次の単語に移動します
NOTHING 何もしません NOTHING 何もしません
@@ -78,6 +81,7 @@ PIPE_SHELL
PREV_LINK 前のリンクに移動します PREV_LINK 前のリンクに移動します
PREV_MARK 一つ前のマークに移動します PREV_MARK 一つ前のマークに移動します
PREV_PAGE 前のページを表示します PREV_PAGE 前のページを表示します
PREV_TAB 前のタブに移動します
PREV_WORD 前の単語に移動します PREV_WORD 前の単語に移動します
PRINT バッファの表示内容をファイルに保存します PRINT バッファの表示内容をファイルに保存します
QUIT w3mを終了します QUIT w3mを終了します
@@ -106,6 +110,12 @@ SOURCE HTML
STOP_IMAGE 画像の読込/表示を停止します STOP_IMAGE 画像の読込/表示を停止します
SUBMIT フォームにサブミットします SUBMIT フォームにサブミットします
SUSPEND サスペンド SUSPEND サスペンド
TAB_GOTO URLを指定して新しいタブで開きます
TAB_GOTO_RELATIVE 相対URLを指定して新しいタブで開きます
TAB_LEFT 現在のタブを左に移動します
TAB_LINK リンクが指す先の文書を新しいタブで開きます
TAB_MENU タブ選択メニューを立ち上げます
TAB_RIGHT 現在のタブを右に移動します
UP 画面を1行上にスクロールします UP 画面を1行上にスクロールします
VERSION w3m のバージョンを表示します VERSION w3m のバージョンを表示します
VIEW HTMLのソースを表示します VIEW HTMLのソースを表示します
+10
View File
@@ -6,6 +6,7 @@ BEGIN Go to the first line
BOOKMARK Read bookmark BOOKMARK Read bookmark
CENTER_H Move to the center line CENTER_H Move to the center line
CENTER_V Move to the center column CENTER_V Move to the center column
CLOSE_TAB Close current tab
COMMAND Execute w3m command(s) COMMAND Execute w3m command(s)
COOKIE View cookie list COOKIE View cookie list
DEFINE_KEY Define a binding between a key stroke and a user command DEFINE_KEY Define a binding between a key stroke and a user command
@@ -57,6 +58,7 @@ MOVE_RIGHT1 Move cursor right (1 columns shift at the right edge)
MOVE_UP Move cursor up (a half screen scroll at the top of screen) MOVE_UP Move cursor up (a half screen scroll at the top of screen)
MOVE_UP1 Move cursor up (1 line scrol at the top of screen) MOVE_UP1 Move cursor up (1 line scrol at the top of screen)
MSGS Display error messages MSGS Display error messages
NEW_TAB Open new tab
NEXT_DOWN Move to next downward link NEXT_DOWN Move to next downward link
NEXT_LEFT Move to next left link NEXT_LEFT Move to next left link
NEXT_LEFT_UP Move to next left (or upward) link NEXT_LEFT_UP Move to next left (or upward) link
@@ -65,6 +67,7 @@ NEXT_MARK Move to next word
NEXT_PAGE Move to next page NEXT_PAGE Move to next page
NEXT_RIGHT Move to next right link NEXT_RIGHT Move to next right link
NEXT_RIGHT_DOWN Move to next right (or downward) link NEXT_RIGHT_DOWN Move to next right (or downward) link
NEXT_TAB Move to next tab
NEXT_UP Move to next upward link NEXT_UP Move to next upward link
NEXT_WORD Move to next word NEXT_WORD Move to next word
NOTHING Do nothing NOTHING Do nothing
@@ -78,6 +81,7 @@ PIPE_SHELL Execute shell command and browse
PREV_LINK Move to previous link PREV_LINK Move to previous link
PREV_MARK Move to previous mark PREV_MARK Move to previous mark
PREV_PAGE Move to previous page PREV_PAGE Move to previous page
PREV_TAB Move to previous tab
PREV_WORD Move to previous word PREV_WORD Move to previous word
PRINT Save buffer to file PRINT Save buffer to file
QUIT Quit w3m QUIT Quit w3m
@@ -106,6 +110,12 @@ SOURCE View HTML source
STOP_IMAGE Stop loading and drawing of images STOP_IMAGE Stop loading and drawing of images
SUBMIT Submit form SUBMIT Submit form
SUSPEND Stop loading document SUSPEND Stop loading document
TAB_GOTO Open URL on new tab
TAB_GOTO_RELATIVE Open relative URL on new tab
TAB_LEFT Move current tab left
TAB_LINK Open current link on new tab
TAB_MENU Popup tab selection menu
TAB_RIGHT Move current tab right
UP Scroll up one line UP Scroll up one line
VERSION Display version of w3m VERSION Display version of w3m
VIEW View HTML source VIEW View HTML source
+5 -5
View File
@@ -1,4 +1,4 @@
/* $Id: etc.c,v 1.30 2002/11/05 16:03:13 ukai Exp $ */ /* $Id: etc.c,v 1.31 2002/11/05 17:10:05 ukai Exp $ */
#include "fm.h" #include "fm.h"
#include <pwd.h> #include <pwd.h>
#include "myctype.h" #include "myctype.h"
@@ -42,7 +42,7 @@ columnSkip(Buffer *buf, int offset)
{ {
int i, maxColumn; int i, maxColumn;
int column = buf->currentColumn + offset; int column = buf->currentColumn + offset;
int nlines = LASTLINE + 1; int nlines = LASTLINE + 1 - buf->rootY;
Line *l; Line *l;
maxColumn = 0; maxColumn = 0;
@@ -91,8 +91,8 @@ lineSkip(Buffer *buf, Line *line, int offset, int last)
#ifdef NEXTPAGE_TOPLINE #ifdef NEXTPAGE_TOPLINE
if (!nextpage_topline) if (!nextpage_topline)
#endif #endif
for (i = (LASTLINE - 1) - (buf->lastLine->linenumber - l->linenumber); for (i = (LASTLINE - 1 - buf->rootY) - (buf->lastLine->linenumber
i > 0 && l->prev != NULL; i--, l = l->prev) ; - l->linenumber); i > 0 && l->prev != NULL; i--, l = l->prev) ;
return l; return l;
} }
@@ -103,7 +103,7 @@ currentLineSkip(Buffer *buf, Line *line, int offset, int last)
Line *l = line; Line *l = line;
if (buf->pagerSource && !(buf->bufferprop & BP_CLOSE)) { if (buf->pagerSource && !(buf->bufferprop & BP_CLOSE)) {
n = line->linenumber + offset + LASTLINE; n = line->linenumber + offset + LASTLINE - buf->rootY;
if (buf->lastLine->linenumber < n) if (buf->lastLine->linenumber < n)
getNextPage(buf, n - buf->lastLine->linenumber); getNextPage(buf, n - buf->lastLine->linenumber);
while ((last || (buf->lastLine->linenumber < n)) && while ((last || (buf->lastLine->linenumber < n)) &&
+5 -3
View File
@@ -1,4 +1,4 @@
/* $Id: file.c,v 1.110 2002/11/05 15:56:13 ukai Exp $ */ /* $Id: file.c,v 1.111 2002/11/05 17:10:05 ukai Exp $ */
#include "fm.h" #include "fm.h"
#include <sys/types.h> #include <sys/types.h>
#include "myctype.h" #include "myctype.h"
@@ -4730,7 +4730,7 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)
{ {
Anchor *a_href = NULL, *a_img = NULL, *a_form = NULL; Anchor *a_href = NULL, *a_img = NULL, *a_form = NULL;
char outc[LINELEN]; char outc[LINELEN];
char *p, *q, *r, *s, *str; char *p, *q, *r, *s, *t, *str;
Lineprop outp[LINELEN], mode, effect; Lineprop outp[LINELEN], mode, effect;
int pos; int pos;
int nlines; int nlines;
@@ -5081,6 +5081,8 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)
MapArea *a; MapArea *a;
p = remove_space(p); p = remove_space(p);
p = url_quote_conv(p, buf->document_code); p = url_quote_conv(p, buf->document_code);
t = NULL;
parsedtag_get_value(tag, ATTR_TARGET, &t);
q = ""; q = "";
parsedtag_get_value(tag, ATTR_ALT, &q); parsedtag_get_value(tag, ATTR_ALT, &q);
r = NULL; r = NULL;
@@ -5089,7 +5091,7 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)
parsedtag_get_value(tag, ATTR_SHAPE, &r); parsedtag_get_value(tag, ATTR_SHAPE, &r);
parsedtag_get_value(tag, ATTR_COORDS, &s); parsedtag_get_value(tag, ATTR_COORDS, &s);
#endif #endif
a = newMapArea(p, q, r, s); a = newMapArea(p, t, q, r, s);
pushValue(buf->maplist->area, (void *)a); pushValue(buf->maplist->area, (void *)a);
} }
break; break;
+23 -2
View File
@@ -1,4 +1,4 @@
/* $Id: fm.h,v 1.68 2002/11/05 15:56:13 ukai Exp $ */ /* $Id: fm.h,v 1.69 2002/11/05 17:10:05 ukai Exp $ */
/* /*
* w3m: WWW wo Miru utility * w3m: WWW wo Miru utility
* *
@@ -285,6 +285,7 @@ typedef unsigned char Linecolor;
typedef struct _MapArea { typedef struct _MapArea {
char *url; char *url;
char *target;
char *alt; char *alt;
#ifdef MENU_MAP #ifdef MENU_MAP
#ifdef USE_IMAGE #ifdef USE_IMAGE
@@ -401,6 +402,7 @@ typedef struct _Buffer {
short pos; short pos;
short visualpos; short visualpos;
short rootX; short rootX;
short rootY;
short COLS; short COLS;
InputStream pagerSource; InputStream pagerSource;
AnchorList *href; AnchorList *href;
@@ -441,6 +443,12 @@ typedef struct _Buffer {
Anchor *submit; Anchor *submit;
} Buffer; } Buffer;
typedef struct _TabBuffer {
struct _TabBuffer *nextTab;
struct _TabBuffer *prevTab;
Buffer *currentBuffer;
Buffer *firstBuffer;
} TabBuffer;
#define COPY_BUFPOSITION(dstbuf, srcbuf) {\ #define COPY_BUFPOSITION(dstbuf, srcbuf) {\
(dstbuf)->topLine = (srcbuf)->topLine; \ (dstbuf)->topLine = (srcbuf)->topLine; \
@@ -466,7 +474,7 @@ typedef struct _Buffer {
#define FONTSTAT_SIZE 4 #define FONTSTAT_SIZE 4
#define INIT_BUFFER_WIDTH (COLS-1) #define INIT_BUFFER_WIDTH (COLS - 1)
typedef struct { typedef struct {
int pos; int pos;
@@ -763,8 +771,21 @@ global char *cgi_bin init(NULL);
global char *index_file init(NULL); global char *index_file init(NULL);
global char *CurrentDir; global char *CurrentDir;
/*
global Buffer *Currentbuf; global Buffer *Currentbuf;
global Buffer *Firstbuf; global Buffer *Firstbuf;
*/
global TabBuffer *CurrentTab;
global TabBuffer *FirstTab;
global TabBuffer *LastTab;
global int open_tab_blank init(FALSE);
global int close_tab_back init(FALSE);
global int nTab;
global int TabCols init(10);
#define N_TAB ((COLS - 2 > TabCols * nTab) ? nTab \
: (nTab - 1) / ((nTab * TabCols - 1) / (COLS - 2) + 1) + 1)
#define Currentbuf (CurrentTab->currentBuffer)
#define Firstbuf (CurrentTab->firstBuffer)
global int CurrentKey; global int CurrentKey;
global char *CurrentKeyData; global char *CurrentKeyData;
global char *CurrentCmdData; global char *CurrentCmdData;
+11 -1
View File
@@ -1,4 +1,4 @@
# $Id: funcname.tab,v 1.11 2002/09/05 15:43:21 ukai Exp $ # $Id: funcname.tab,v 1.12 2002/11/05 17:10:05 ukai Exp $
# macro name function name # macro name function name
#---------------------------- #----------------------------
@@@ nulcmd @@@ nulcmd
@@ -10,6 +10,7 @@ BEGIN goLineF
BOOKMARK ldBmark BOOKMARK ldBmark
CENTER_H ctrCsrH CENTER_H ctrCsrH
CENTER_V ctrCsrV CENTER_V ctrCsrV
CLOSE_TAB closeT
COMMAND execCmd COMMAND execCmd
COOKIE cooLst COOKIE cooLst
DEFINE_KEY defKey DEFINE_KEY defKey
@@ -63,6 +64,7 @@ MOVE_RIGHT1 movR1
MOVE_UP movU MOVE_UP movU
MOVE_UP1 movU1 MOVE_UP1 movU1
MSGS msgs MSGS msgs
NEW_TAB newT
NEXT_DOWN nextD NEXT_DOWN nextD
NEXT_LEFT nextL NEXT_LEFT nextL
NEXT_LEFT_UP nextLU NEXT_LEFT_UP nextLU
@@ -71,6 +73,7 @@ NEXT_MARK nextMk
NEXT_PAGE pgFore NEXT_PAGE pgFore
NEXT_RIGHT nextR NEXT_RIGHT nextR
NEXT_RIGHT_DOWN nextRD NEXT_RIGHT_DOWN nextRD
NEXT_TAB nextT
NEXT_UP nextU NEXT_UP nextU
NEXT_WORD movRW NEXT_WORD movRW
NOTHING nulcmd NOTHING nulcmd
@@ -85,6 +88,7 @@ PIPE_SHELL pipesh
PREV_LINK prevA PREV_LINK prevA
PREV_MARK prevMk PREV_MARK prevMk
PREV_PAGE pgBack PREV_PAGE pgBack
PREV_TAB prevT
PREV_WORD movLW PREV_WORD movLW
PRINT svBuf PRINT svBuf
QUIT qquitfm QUIT qquitfm
@@ -114,6 +118,12 @@ SOURCE vwSrc
STOP_IMAGE stopI STOP_IMAGE stopI
SUBMIT submitForm SUBMIT submitForm
SUSPEND susp SUSPEND susp
TAB_GOTO tabURL
TAB_GOTO_RELATIVE tabrURL
TAB_LEFT tabL
TAB_LINK tabA
TAB_MENU tabMn
TAB_RIGHT tabR
UP lup1 UP lup1
VERSION dispVer VERSION dispVer
VIEW vwSrc VIEW vwSrc
+3 -3
View File
@@ -1,4 +1,4 @@
/* $Id: html.c,v 1.14 2002/10/16 18:11:15 ukai Exp $ */ /* $Id: html.c,v 1.15 2002/11/05 17:10:05 ukai Exp $ */
#include "html.h" #include "html.h"
/* Define HTML Tag Infomation Table */ /* Define HTML Tag Infomation Table */
@@ -64,8 +64,8 @@ unsigned char ALST_ISINDEX[] = { ATTR_ACTION, ATTR_PROMPT, ATTR_CORE };
unsigned char ALST_MAP[] = { ATTR_NAME, ATTR_CORE }; unsigned char ALST_MAP[] = { ATTR_NAME, ATTR_CORE };
#define MAXA_MAP MAXA_CORE + 1 #define MAXA_MAP MAXA_CORE + 1
unsigned char ALST_AREA[] = unsigned char ALST_AREA[] =
{ ATTR_HREF, ATTR_ALT, ATTR_SHAPE, ATTR_COORDS, ATTR_CORE }; { ATTR_HREF, ATTR_TARGET, ATTR_ALT, ATTR_SHAPE, ATTR_COORDS, ATTR_CORE };
#define MAXA_AREA MAXA_CORE + 4 #define MAXA_AREA MAXA_CORE + 5
unsigned char ALST_BASE[] = { ATTR_HREF, ATTR_TARGET, ATTR_CORE }; unsigned char ALST_BASE[] = { ATTR_HREF, ATTR_TARGET, ATTR_CORE };
#define MAXA_BASE MAXA_CORE + 2 #define MAXA_BASE MAXA_CORE + 2
unsigned char ALST_BODY[] = { ATTR_BACKGROUND, ATTR_CORE }; unsigned char ALST_BODY[] = { ATTR_BACKGROUND, ATTR_CORE };
+2 -2
View File
@@ -1,4 +1,4 @@
/* $Id: image.c,v 1.11 2002/07/29 15:25:37 ukai Exp $ */ /* $Id: image.c,v 1.12 2002/11/05 17:10:05 ukai Exp $ */
#include "fm.h" #include "fm.h"
#include <sys/types.h> #include <sys/types.h>
@@ -358,7 +358,7 @@ showImageProgress(Buffer *buf)
} }
if (n) { if (n) {
message(Sprintf("%d/%d images loaded", l, n)->ptr, message(Sprintf("%d/%d images loaded", l, n)->ptr,
buf->cursorX + buf->rootX, buf->cursorY); buf->cursorX + buf->rootX, buf->cursorY + buf->rootY);
refresh(); refresh();
} }
} }
+477 -39
View File
@@ -1,4 +1,4 @@
/* $Id: main.c,v 1.117 2002/11/05 15:56:13 ukai Exp $ */ /* $Id: main.c,v 1.118 2002/11/05 17:10:06 ukai Exp $ */
#define MAINPROGRAM #define MAINPROGRAM
#include "fm.h" #include "fm.h"
#include <signal.h> #include <signal.h>
@@ -90,6 +90,10 @@ void set_buffer_environ(Buffer *);
static void _followForm(int); static void _followForm(int);
static void _goLine(char *); static void _goLine(char *);
static void _newT(void);
static void followTab(TabBuffer *tab);
static void moveTab(TabBuffer *t, TabBuffer *t2, int right);
static int check_target = TRUE;
#define PREC_NUM (prec_num ? prec_num : 1) #define PREC_NUM (prec_num ? prec_num : 1)
#define PREC_LIMIT 10000 #define PREC_LIMIT 10000
static int searchKeyNum(void); static int searchKeyNum(void);
@@ -707,8 +711,10 @@ MAIN(int argc, char **argv, char **envp)
sock_init(); sock_init();
#endif #endif
Firstbuf = NULL; FirstTab = NULL;
Currentbuf = NULL; LastTab = NULL;
nTab = 0;
CurrentTab = NULL;
CurrentKey = -1; CurrentKey = -1;
if (BookmarkFile == NULL) if (BookmarkFile == NULL)
BookmarkFile = rcFile(BOOKMARK); BookmarkFile = rcFile(BOOKMARK);
@@ -879,8 +885,11 @@ MAIN(int argc, char **argv, char **envp)
else if (newbuf == NO_BUFFER) else if (newbuf == NO_BUFFER)
continue; continue;
newbuf->search_header = search_header; newbuf->search_header = search_header;
if (Currentbuf == NULL) if (CurrentTab == NULL) {
FirstTab = LastTab = CurrentTab = newTab();
nTab = 1;
Firstbuf = Currentbuf = newbuf; Firstbuf = Currentbuf = newbuf;
}
else { else {
Currentbuf->nextBuffer = newbuf; Currentbuf->nextBuffer = newbuf;
Currentbuf = newbuf; Currentbuf = newbuf;
@@ -914,7 +923,7 @@ MAIN(int argc, char **argv, char **envp)
w3m_exit(0); w3m_exit(0);
} }
if (!Firstbuf || Firstbuf == NO_BUFFER) { if (!FirstTab || !Firstbuf || Firstbuf == NO_BUFFER) {
if (newbuf == NO_BUFFER) { if (newbuf == NO_BUFFER) {
if (fmInitialized) if (fmInitialized)
inputChar("Hit any key to quit w3m:"); inputChar("Hit any key to quit w3m:");
@@ -1313,7 +1322,8 @@ nscroll(int n, int mode)
} }
else { else {
tlnum = Currentbuf->topLine->linenumber; tlnum = Currentbuf->topLine->linenumber;
llnum = Currentbuf->topLine->linenumber + LASTLINE - 1; llnum = Currentbuf->topLine->linenumber + LASTLINE - Currentbuf->rootY
- 1;
#ifdef NEXTPAGE_TOPLINE #ifdef NEXTPAGE_TOPLINE
if (nextpage_topline) if (nextpage_topline)
diff_n = 0; diff_n = 0;
@@ -1336,10 +1346,11 @@ pgFore(void)
{ {
#ifdef VI_PREC_NUM #ifdef VI_PREC_NUM
if (vi_prec_num) if (vi_prec_num)
nscroll(searchKeyNum() * (LASTLINE - 1), B_NORMAL); nscroll(searchKeyNum() * (LASTLINE - Currentbuf->rootY - 1), B_NORMAL);
else else
#endif #endif
nscroll(prec_num ? searchKeyNum() : searchKeyNum() * (LASTLINE - 1), nscroll(prec_num ? searchKeyNum() : searchKeyNum()
* (LASTLINE - Currentbuf->rootY - 1),
prec_num ? B_SCROLL : B_NORMAL); prec_num ? B_SCROLL : B_NORMAL);
} }
@@ -1349,10 +1360,11 @@ pgBack(void)
{ {
#ifdef VI_PREC_NUM #ifdef VI_PREC_NUM
if (vi_prec_num) if (vi_prec_num)
nscroll(-searchKeyNum() * (LASTLINE - 1), B_NORMAL); nscroll(-searchKeyNum() * (LASTLINE - Currentbuf->rootY - 1), B_NORMAL);
else else
#endif #endif
nscroll(-(prec_num ? searchKeyNum() : searchKeyNum() * (LASTLINE - 1)), nscroll(-(prec_num ? searchKeyNum() : searchKeyNum()
* (LASTLINE - Currentbuf->rootY - 1)),
prec_num ? B_SCROLL : B_NORMAL); prec_num ? B_SCROLL : B_NORMAL);
} }
@@ -1377,7 +1389,7 @@ ctrCsrV(void)
int offsety; int offsety;
if (Currentbuf->firstLine == NULL) if (Currentbuf->firstLine == NULL)
return; return;
offsety = LASTLINE / 2 - Currentbuf->cursorY; offsety = (LASTLINE - Currentbuf->rootY) / 2 - Currentbuf->cursorY;
if (offsety != 0) { if (offsety != 0) {
#if 0 #if 0
Currentbuf->currentLine = lineSkip(Currentbuf, Currentbuf->currentLine = lineSkip(Currentbuf,
@@ -1971,7 +1983,7 @@ _movD(int n)
void void
movD(void) movD(void)
{ {
_movD((LASTLINE + 1) / 2); _movD((LASTLINE - Currentbuf->rootY + 1) / 2);
} }
void void
@@ -1995,7 +2007,7 @@ _movU(int n)
void void
movU(void) movU(void)
{ {
_movU((LASTLINE + 1) / 2); _movU((LASTLINE - Currentbuf->rootY + 1) / 2);
} }
void void
@@ -2285,8 +2297,8 @@ _goLine(char *l)
} }
else if (*l == '$') { else if (*l == '$') {
Currentbuf->topLine = Currentbuf->topLine =
lineSkip(Currentbuf, Currentbuf->lastLine, -(LASTLINE + 1) / 2, lineSkip(Currentbuf, Currentbuf->lastLine,
TRUE); -(LASTLINE - Currentbuf->rootY + 1) / 2, TRUE);
Currentbuf->currentLine = Currentbuf->lastLine; Currentbuf->currentLine = Currentbuf->lastLine;
} }
else else
@@ -2441,7 +2453,8 @@ _mark(void)
return; return;
l = Currentbuf->currentLine; l = Currentbuf->currentLine;
l->propBuf[Currentbuf->pos] ^= PE_MARK; l->propBuf[Currentbuf->pos] ^= PE_MARK;
redrawLine(Currentbuf, l, l->linenumber - Currentbuf->topLine->linenumber); redrawLine(Currentbuf, l, l->linenumber - Currentbuf->topLine->linenumber
+ Currentbuf->rootY);
} }
/* Go to next mark */ /* Go to next mark */
@@ -2766,6 +2779,21 @@ followA(void)
if (map) if (map)
url = Sprintf("%s?%d,%d", a->url, x, y)->ptr; url = Sprintf("%s?%d,%d", a->url, x, y)->ptr;
#endif #endif
if (check_target && open_tab_blank && a->target &&
(!strcasecmp(a->target, "_new") || !strcasecmp(a->target, "_blank"))) {
Buffer *buf;
_newT();
buf = Currentbuf;
loadLink(url, a->target, a->referer, NULL);
if (buf != Currentbuf)
delBuffer(buf);
else
deleteTab(CurrentTab);
displayBuffer(Currentbuf, B_NORMAL);
return;
}
loadLink(url, a->target, a->referer, NULL); loadLink(url, a->target, a->referer, NULL);
displayBuffer(Currentbuf, B_NORMAL); displayBuffer(Currentbuf, B_NORMAL);
} }
@@ -3123,7 +3151,7 @@ _followForm(int submit)
if (!formChooseOptionByMenu(fi, if (!formChooseOptionByMenu(fi,
Currentbuf->cursorX - Currentbuf->pos + Currentbuf->cursorX - Currentbuf->pos +
a->start.pos + Currentbuf->rootX, a->start.pos + Currentbuf->rootX,
Currentbuf->cursorY)) Currentbuf->cursorY + Currentbuf->rootY))
break; break;
formUpdateBuffer(a, Currentbuf, fi); formUpdateBuffer(a, Currentbuf, fi);
if (fi->parent->nitems == 1) if (fi->parent->nitems == 1)
@@ -3241,12 +3269,12 @@ drawAnchorCursor0(Buffer *buf, int hseq, int prevhseq, int tline, int eline,
} }
} }
if (active) if (active)
redrawLineRegion(buf, l, l->linenumber - tline, redrawLineRegion(buf, l, l->linenumber - tline + buf->rootY,
an->start.pos, an->end.pos); an->start.pos, an->end.pos);
} }
else if (prevhseq >= 0 && an->hseq == prevhseq) { else if (prevhseq >= 0 && an->hseq == prevhseq) {
if (active) if (active)
redrawLineRegion(buf, l, l->linenumber - tline, redrawLineRegion(buf, l, l->linenumber - tline + buf->rootY,
an->start.pos, an->end.pos); an->start.pos, an->end.pos);
} }
} }
@@ -3271,7 +3299,7 @@ drawAnchorCursor(Buffer *buf)
else else
hseq = -1; hseq = -1;
tline = buf->topLine->linenumber; tline = buf->topLine->linenumber;
eline = tline + LASTLINE; eline = tline + LASTLINE - buf->rootY;
prevhseq = buf->hmarklist->prevhseq; prevhseq = buf->hmarklist->prevhseq;
drawAnchorCursor0(buf, hseq, prevhseq, tline, eline, 1); drawAnchorCursor0(buf, hseq, prevhseq, tline, eline, 1);
@@ -3652,7 +3680,12 @@ backBf(void)
Buffer *buf = Currentbuf->linkBuffer[LB_N_FRAME]; Buffer *buf = Currentbuf->linkBuffer[LB_N_FRAME];
if (!checkBackBuffer(Currentbuf)) { if (!checkBackBuffer(Currentbuf)) {
disp_message("Can't back...", TRUE); if (close_tab_back && nTab >= 1) {
deleteTab(CurrentTab);
displayBuffer(Currentbuf, B_FORCE_REDRAW);
}
else
disp_message("Can't back...", TRUE);
return; return;
} }
@@ -3938,23 +3971,39 @@ void
follow_map(struct parsed_tagarg *arg) follow_map(struct parsed_tagarg *arg)
{ {
#ifdef MENU_MAP #ifdef MENU_MAP
Anchor *a; Anchor *an;
char *url; MapArea *a;
int x; int x, y;
ParsedURL p_url; ParsedURL p_url;
a = retrieveCurrentImg(Currentbuf); an = retrieveCurrentImg(Currentbuf);
x = Currentbuf->cursorX + Currentbuf->rootX; x = Currentbuf->cursorX + Currentbuf->rootX;
url = follow_map_menu(Currentbuf, arg, a, x, Currentbuf->cursorY); y = Currentbuf->cursorY + Currentbuf->rootY;
if (url == NULL || *url == '\0') a = follow_map_menu(Currentbuf, arg, an, x, y);
if (a == NULL || a->url == NULL || *(a->url) == '\0')
return; return;
if (*url == '#') { if (*(a->url) == '#') {
gotoLabel(url + 1); gotoLabel(a->url + 1);
return; return;
} }
parseURL2(url, &p_url, baseURL(Currentbuf)); parseURL2(a->url, &p_url, baseURL(Currentbuf));
pushHashHist(URLHist, parsedURL2Str(&p_url)->ptr); pushHashHist(URLHist, parsedURL2Str(&p_url)->ptr);
cmd_loadURL(url, baseURL(Currentbuf), if (check_target && open_tab_blank && a->target &&
(!strcasecmp(a->target, "_new") || !strcasecmp(a->target, "_blank"))) {
Buffer *buf;
_newT();
buf = Currentbuf;
cmd_loadURL(a->url, baseURL(Currentbuf),
parsedURL2Str(&Currentbuf->currentURL)->ptr);
if (buf != Currentbuf)
delBuffer(buf);
else
deleteTab(CurrentTab);
displayBuffer(Currentbuf, B_NORMAL);
return;
}
cmd_loadURL(a->url, baseURL(Currentbuf),
parsedURL2Str(&Currentbuf->currentURL)->ptr); parsedURL2Str(&Currentbuf->currentURL)->ptr);
#else #else
Buffer *buf; Buffer *buf;
@@ -4629,15 +4678,76 @@ stopI(void)
#ifdef USE_MOUSE #ifdef USE_MOUSE
static TabBuffer *
posTab(int x, int y)
{
TabBuffer *t;
int i, n, col = COLS - 2;
if (col <= 0)
return NULL;
n = x * N_TAB / col + y * N_TAB;
for (t = FirstTab, i = 0; t && i < n; t = t->nextTab, i++)
;
return t;
}
static void static void
process_mouse(int btn, int x, int y) process_mouse(int btn, int x, int y)
{ {
int delta_x, delta_y, i; int delta_x, delta_y, i;
static int press_btn = MOUSE_BTN_RESET, press_x, press_y; static int press_btn = MOUSE_BTN_RESET, press_x, press_y;
TabBuffer *t;
int ny = 0;
if (nTab > 1)
ny = (nTab - 1) / N_TAB + 1;
if (btn == MOUSE_BTN_UP) { if (btn == MOUSE_BTN_UP) {
switch (press_btn) { switch (press_btn) {
case MOUSE_BTN1_DOWN: case MOUSE_BTN1_DOWN:
if (nTab > 1 && y < ny) {
if (press_y == y && press_x == x) {
if (y == 0 && x >= COLS - 2) {
deleteTab(CurrentTab);
displayBuffer(Currentbuf, B_NORMAL);
}
t = posTab(x, y);
if (t)
CurrentTab = t;
displayBuffer(Currentbuf, B_FORCE_REDRAW);
return;
}
else if (press_y < ny) {
moveTab(posTab(press_x, press_y), posTab(x, y),
(press_y == y) ? (press_x < x) : (press_y < y));
return;
}
else if (press_x >= Currentbuf->rootX) {
Buffer *buf = Currentbuf;
int cx = Currentbuf->cursorX, cy = Currentbuf->cursorY;
t = posTab(x, y);
if (t == NULL)
return;
cursorXY(Currentbuf, press_x - Currentbuf->rootX,
press_y - Currentbuf->rootY);
if (Currentbuf->cursorY == press_y - Currentbuf->rootY &&
(Currentbuf->cursorX == press_x - Currentbuf->rootX
#ifdef JP_CHARSET
|| (Currentbuf->currentLine != NULL &&
(Currentbuf->currentLine->propBuf[Currentbuf->pos]
& PC_KANJI1) && Currentbuf->cursorX == press_x
- Currentbuf->rootX - 1)
#endif
)) {
onA();
followTab(t);
}
if (buf == Currentbuf)
cursorXY(Currentbuf, cx, cy);
}
return;
}
if (press_x != x || press_y != y) { if (press_x != x || press_y != y) {
delta_x = x - press_x; delta_x = x - press_x;
delta_y = y - press_y; delta_y = y - press_y;
@@ -4685,7 +4795,7 @@ process_mouse(int btn, int x, int y)
} }
return; return;
} }
if (y == Currentbuf->cursorY && if (y == Currentbuf->cursorY + Currentbuf->rootY &&
(x == Currentbuf->cursorX + Currentbuf->rootX (x == Currentbuf->cursorX + Currentbuf->rootX
#ifdef JP_CHARSET #ifdef JP_CHARSET
|| (Currentbuf->currentLine != NULL && || (Currentbuf->currentLine != NULL &&
@@ -4698,18 +4808,30 @@ process_mouse(int btn, int x, int y)
return; return;
} }
if (x >= Currentbuf->rootX) if (x >= Currentbuf->rootX)
cursorXY(Currentbuf, x - Currentbuf->rootX, y); cursorXY(Currentbuf, x - Currentbuf->rootX,
y - Currentbuf->rootY);
displayBuffer(Currentbuf, B_NORMAL); displayBuffer(Currentbuf, B_NORMAL);
} }
break; break;
case MOUSE_BTN2_DOWN: case MOUSE_BTN2_DOWN:
if (nTab > 1 && y < ny) {
if (press_y == y && press_x == x) {
t = posTab(x, y);
if (t) {
deleteTab(t);
displayBuffer(Currentbuf, B_FORCE_REDRAW);
}
}
return;
}
backBf(); backBf();
break; break;
case MOUSE_BTN3_DOWN: case MOUSE_BTN3_DOWN:
#ifdef USE_MENU #ifdef USE_MENU
if (x >= Currentbuf->rootX) if (x >= Currentbuf->rootX && y > ny)
cursorXY(Currentbuf, x - Currentbuf->rootX, y); cursorXY(Currentbuf, x - Currentbuf->rootX,
y - Currentbuf->rootY);
onA(); onA();
mainMenu(x, y); mainMenu(x, y);
#endif /* USE_MENU */ #endif /* USE_MENU */
@@ -5023,10 +5145,13 @@ deleteFiles()
{ {
Buffer *buf; Buffer *buf;
char *f; char *f;
while (Firstbuf && Firstbuf != NO_BUFFER) {
buf = Firstbuf->nextBuffer; for (CurrentTab = FirstTab; CurrentTab; CurrentTab = CurrentTab->nextTab) {
discardBuffer(Firstbuf); while (Firstbuf && Firstbuf != NO_BUFFER) {
Firstbuf = buf; buf = Firstbuf->nextBuffer;
discardBuffer(Firstbuf);
Firstbuf = buf;
}
} }
while ((f = popText(fileToDelete)) != NULL) while ((f = popText(fileToDelete)) != NULL)
unlink(f); unlink(f);
@@ -5257,3 +5382,316 @@ defKey(void)
setKeymap(allocStr(data, -1), -1, TRUE); setKeymap(allocStr(data, -1), -1, TRUE);
displayBuffer(Currentbuf, B_NORMAL); displayBuffer(Currentbuf, B_NORMAL);
} }
TabBuffer *
newTab(void)
{
TabBuffer *n;
n = New(TabBuffer);
if (n == NULL)
return NULL;
n->nextTab = NULL;
n->currentBuffer = NULL;
n->firstBuffer = NULL;
return n;
}
static void
_newT(void)
{
TabBuffer *tag;
Buffer *buf;
int i;
tag = newTab();
if (! tag)
return;
buf = newBuffer(Currentbuf->width);
copyBuffer(buf, Currentbuf);
buf->nextBuffer = NULL;
for (i = 0; i < MAX_LB; i++)
buf->linkBuffer[i] = NULL;
(*buf->clone)++;
tag->firstBuffer = tag->currentBuffer = buf;
tag->nextTab = CurrentTab->nextTab;
tag->prevTab = CurrentTab;
if (CurrentTab->nextTab)
CurrentTab->nextTab->prevTab = tag;
else
LastTab = tag;
CurrentTab->nextTab = tag;
CurrentTab = tag;
nTab++;
}
void
newT(void)
{
_newT();
displayBuffer(Currentbuf, B_FORCE_REDRAW);
}
TabBuffer *
numTab(int n)
{
TabBuffer *tab;
int i;
if (n == 0)
return CurrentTab;
if (n == 1)
return FirstTab;
if (nTab <= 1)
return NULL;
for (tab = FirstTab, i = 1; tab && i < n; tab = tab->nextTab, i++)
;
return tab;
}
TabBuffer *
deleteTab(TabBuffer *tab)
{
Buffer *buf, *next;
if (nTab <= 1)
return FirstTab;
if (tab->prevTab) {
if (tab->nextTab)
tab->nextTab->prevTab = tab->prevTab;
else
LastTab = tab->prevTab;
tab->prevTab->nextTab = tab->nextTab;
if (tab == CurrentTab)
CurrentTab = tab->prevTab;
}
else { /* tab == FirstTab */
tab->nextTab->prevTab = NULL;
FirstTab = tab->nextTab;
if (tab == CurrentTab)
CurrentTab = tab->nextTab;
}
nTab--;
buf = tab->firstBuffer;
while (buf && buf != NO_BUFFER) {
next = buf->nextBuffer;
discardBuffer(buf);
buf = next;
}
return FirstTab;
}
void
closeT(void)
{
TabBuffer *tab;
if (nTab <= 1)
return;
if (prec_num)
tab = numTab(PREC_NUM);
else
tab = CurrentTab;
if (tab)
deleteTab(tab);
displayBuffer(Currentbuf, B_FORCE_REDRAW);
}
void
nextT(void)
{
int i;
if (nTab <= 1)
return;
for (i = 0; i < PREC_NUM; i++) {
if (CurrentTab->nextTab)
CurrentTab = CurrentTab->nextTab;
else
CurrentTab = FirstTab;
}
displayBuffer(Currentbuf, B_FORCE_REDRAW);
}
void
prevT(void)
{
int i;
if (nTab <= 1)
return;
for (i = 0; i < PREC_NUM; i++) {
if (CurrentTab->prevTab)
CurrentTab = CurrentTab->prevTab;
else
CurrentTab = LastTab;
}
displayBuffer(Currentbuf, B_FORCE_REDRAW);
}
void
followTab(TabBuffer *tab)
{
Buffer *buf;
Anchor *a;
#ifdef USE_IMAGE
a = retrieveCurrentImg(Currentbuf);
if (! (a && a->image && a->image->map))
#endif
a = retrieveCurrentAnchor(Currentbuf);
if (a == NULL)
return;
if (tab == CurrentTab) {
check_target = FALSE;
followA();
check_target = TRUE;
return;
}
_newT();
buf = Currentbuf;
check_target = FALSE;
followA();
check_target = TRUE;
if (tab == NULL) {
if (buf != Currentbuf)
delBuffer(buf);
else
deleteTab(CurrentTab);
}
else if (buf != Currentbuf) {
/* buf <- p <- ... <- Currentbuf = c */
Buffer *c, *p;
c = Currentbuf;
p = prevBuffer(c, buf);
p->nextBuffer = NULL;
Firstbuf = buf;
deleteTab(CurrentTab);
CurrentTab = tab;
for (buf = p; buf; buf = p) {
p = prevBuffer(c, buf);
pushBuffer(buf);
}
}
displayBuffer(Currentbuf, B_FORCE_REDRAW);
}
void
tabA(void)
{
followTab(prec_num ? numTab(PREC_NUM) : NULL);
}
static void
tabURL0(TabBuffer *tab, char *prompt, int relative)
{
Buffer *buf;
if (tab == CurrentTab) {
goURL0(prompt, relative);
return;
}
_newT();
buf = Currentbuf;
goURL0(prompt, relative);
if (tab == NULL) {
if (buf != Currentbuf)
delBuffer(buf);
else
deleteTab(CurrentTab);
}
else if (buf != Currentbuf) {
/* buf <- p <- ... <- Currentbuf = c */
Buffer *c, *p;
c = Currentbuf;
p = prevBuffer(c, buf);
p->nextBuffer = NULL;
Firstbuf = buf;
deleteTab(CurrentTab);
CurrentTab = tab;
for (buf = p; buf; buf = p) {
p = prevBuffer(c, buf);
pushBuffer(buf);
}
}
displayBuffer(Currentbuf, B_FORCE_REDRAW);
}
void
tabURL(void)
{
tabURL0(prec_num ? numTab(PREC_NUM) : NULL,
"Goto URL on new tab: ", FALSE);
}
void
tabrURL(void)
{
tabURL0(prec_num ? numTab(PREC_NUM) : NULL,
"Goto relative URL on new tab: ", TRUE);
}
void
moveTab(TabBuffer *t, TabBuffer *t2, int right)
{
if (!t || !t2 || t == t2)
return;
if (t->prevTab) {
if (t->nextTab)
t->nextTab->prevTab = t->prevTab;
else
LastTab = t->prevTab;
t->prevTab->nextTab = t->nextTab;
}
else {
t->nextTab->prevTab = NULL;
FirstTab = t->nextTab;
}
if (right) {
t->nextTab = t2->nextTab;
t->prevTab = t2;
if (t2->nextTab)
t2->nextTab->prevTab = t;
else
LastTab = t;
t2->nextTab = t;
}
else {
t->prevTab = t2->prevTab;
t->nextTab = t2;
if (t2->prevTab)
t2->prevTab->nextTab = t;
else
FirstTab = t;
t2->prevTab = t;
}
displayBuffer(Currentbuf, B_FORCE_REDRAW);
}
void
tabR(void)
{
TabBuffer *tab;
int i;
for (tab = CurrentTab, i = 0; tab && i < PREC_NUM; tab = tab->nextTab, i++)
;
moveTab(CurrentTab, tab ? tab : LastTab, TRUE);
}
void
tabL(void)
{
TabBuffer *tab;
int i;
for (tab = CurrentTab, i = 0; tab && i < PREC_NUM; tab = tab->prevTab, i++)
;
moveTab(CurrentTab, tab ? tab : FirstTab, FALSE);
}
+5 -4
View File
@@ -1,4 +1,4 @@
/* $Id: map.c,v 1.8 2002/03/15 18:48:55 ukai Exp $ */ /* $Id: map.c,v 1.9 2002/11/05 17:10:07 ukai Exp $ */
/* /*
* client-side image maps * client-side image maps
*/ */
@@ -59,7 +59,7 @@ inMapArea(MapArea * a, int x, int y)
} }
#endif #endif
char * MapArea *
follow_map_menu(Buffer *buf, struct parsed_tagarg *arg, Anchor *a_img, int x, follow_map_menu(Buffer *buf, struct parsed_tagarg *arg, Anchor *a_img, int x,
int y) int y)
{ {
@@ -122,7 +122,7 @@ follow_map_menu(Buffer *buf, struct parsed_tagarg *arg, Anchor *a_img, int x,
if (selected >= 0) { if (selected >= 0) {
for (i = 0, al = ml->area->first; al != NULL; i++, al = al->next) { for (i = 0, al = ml->area->first; al != NULL; i++, al = al->next) {
if (al->ptr && i == selected) if (al->ptr && i == selected)
return ((MapArea *) al->ptr)->url; return (MapArea *) al->ptr;
} }
} }
return NULL; return NULL;
@@ -193,7 +193,7 @@ getMapXY(Buffer *buf, Anchor *a, int *x, int *y)
#endif #endif
MapArea * MapArea *
newMapArea(char *url, char *alt, char *shape, char *coords) newMapArea(char *url, char *target, char *alt, char *shape, char *coords)
{ {
MapArea *a = New(MapArea); MapArea *a = New(MapArea);
#ifdef MENU_MAP #ifdef MENU_MAP
@@ -204,6 +204,7 @@ newMapArea(char *url, char *alt, char *shape, char *coords)
#endif #endif
a->url = url; a->url = url;
a->target = target;
a->alt = alt ? alt : ""; a->alt = alt ? alt : "";
#ifdef MENU_MAP #ifdef MENU_MAP
#ifdef USE_IMAGE #ifdef USE_IMAGE
+156 -6
View File
@@ -1,4 +1,4 @@
/* $Id: menu.c,v 1.15 2002/03/19 16:06:52 ukai Exp $ */ /* $Id: menu.c,v 1.16 2002/11/05 17:10:07 ukai Exp $ */
/* /*
* w3m menu.c * w3m menu.c
*/ */
@@ -276,6 +276,16 @@ static int smDelBuf(char c);
/* --- SelectMenu (END) --- */ /* --- SelectMenu (END) --- */
/* --- SelTabMenu --- */
static Menu SelTabMenu;
static int SelTabV = 0;
static void initSelTabMenu(void);
static void smChTab(void);
static int smDelTab(char c);
/* --- SelTabMenu (END) --- */
/* --- MainMenu --- */ /* --- MainMenu --- */
static Menu MainMenu; static Menu MainMenu;
@@ -284,12 +294,14 @@ static MenuItem MainMenuItem[] = {
/* type label variabel value func popup keys data */ /* type label variabel value func popup keys data */
{MENU_FUNC, "戻る (b)", NULL, 0, backBf, NULL, "b", NULL}, {MENU_FUNC, "戻る (b)", NULL, 0, backBf, NULL, "b", NULL},
{MENU_POPUP, "バッファ選択 (s)", NULL, 0, NULL, &SelectMenu, "s", NULL}, {MENU_POPUP, "バッファ選択 (s)", NULL, 0, NULL, &SelectMenu, "s", NULL},
{MENU_POPUP, "¥¿¥ÖÁªÂò (t)", NULL, 0, NULL, &SelTabMenu, "tT", NULL},
{MENU_FUNC, "ソースを表示 (v)", NULL, 0, vwSrc, NULL, "vV", NULL}, {MENU_FUNC, "ソースを表示 (v)", NULL, 0, vwSrc, NULL, "vV", NULL},
{MENU_FUNC, "ソースを編集 (e)", NULL, 0, editBf, NULL, "eE", NULL}, {MENU_FUNC, "ソースを編集 (e)", NULL, 0, editBf, NULL, "eE", NULL},
{MENU_FUNC, "ソースを保存 (S)", NULL, 0, svSrc, NULL, "S", NULL}, {MENU_FUNC, "ソースを保存 (S)", NULL, 0, svSrc, NULL, "S", NULL},
{MENU_FUNC, "再読み込み (r)", NULL, 0, reload, NULL, "rR", NULL}, {MENU_FUNC, "再読み込み (r)", NULL, 0, reload, NULL, "rR", NULL},
{MENU_NOP, "────────", NULL, 0, nulcmd, NULL, "", NULL}, {MENU_NOP, "────────", NULL, 0, nulcmd, NULL, "", NULL},
{MENU_FUNC, "リンクを表示 (a)", NULL, 0, followA, NULL, "a", NULL}, {MENU_FUNC, "リンクを表示 (a)", NULL, 0, followA, NULL, "a", NULL},
{MENU_FUNC, "¿·¥¿¥Ö¤Çɽ¼¨ (n)", NULL, 0, tabA, NULL, "nN", NULL},
{MENU_FUNC, "リンクを保存 (A)", NULL, 0, svA, NULL, "A", NULL}, {MENU_FUNC, "リンクを保存 (A)", NULL, 0, svA, NULL, "A", NULL},
{MENU_FUNC, "画像を表示 (i)", NULL, 0, followI, NULL, "i", NULL}, {MENU_FUNC, "画像を表示 (i)", NULL, 0, followI, NULL, "i", NULL},
{MENU_FUNC, "画像を保存 (I)", NULL, 0, svI, NULL, "I", NULL}, {MENU_FUNC, "画像を保存 (I)", NULL, 0, svI, NULL, "I", NULL},
@@ -307,12 +319,14 @@ static MenuItem MainMenuItem[] = {
/* type label variable value func popup keys data */ /* type label variable value func popup keys data */
{MENU_FUNC, " Back (b) ", NULL, 0, backBf, NULL, "b", NULL}, {MENU_FUNC, " Back (b) ", NULL, 0, backBf, NULL, "b", NULL},
{MENU_POPUP, " Select Buffer(s) ", NULL, 0, NULL, &SelectMenu, "s", NULL}, {MENU_POPUP, " Select Buffer(s) ", NULL, 0, NULL, &SelectMenu, "s", NULL},
{MENU_POPUP, " Select Tab (t) ", NULL, 0, NULL, &SelTabMenu, "tT", NULL},
{MENU_FUNC, " View Source (v) ", NULL, 0, vwSrc, NULL, "vV", NULL}, {MENU_FUNC, " View Source (v) ", NULL, 0, vwSrc, NULL, "vV", NULL},
{MENU_FUNC, " Edit Source (e) ", NULL, 0, editBf, NULL, "eE", NULL}, {MENU_FUNC, " Edit Source (e) ", NULL, 0, editBf, NULL, "eE", NULL},
{MENU_FUNC, " Save Source (S) ", NULL, 0, svSrc, NULL, "S", NULL}, {MENU_FUNC, " Save Source (S) ", NULL, 0, svSrc, NULL, "S", NULL},
{MENU_FUNC, " Reload (r) ", NULL, 0, reload, NULL, "rR", NULL}, {MENU_FUNC, " Reload (r) ", NULL, 0, reload, NULL, "rR", NULL},
{MENU_NOP, " ---------------- ", NULL, 0, nulcmd, NULL, "", NULL}, {MENU_NOP, " ---------------- ", NULL, 0, nulcmd, NULL, "", NULL},
{MENU_FUNC, " Go Link (a) ", NULL, 0, followA, NULL, "a", NULL}, {MENU_FUNC, " Go Link (a) ", NULL, 0, followA, NULL, "a", NULL},
{MENU_FUNC, " on New Tab (n) ", NULL, 0, tabA, NULL, "nN", NULL},
{MENU_FUNC, " Save Link (A) ", NULL, 0, svA, NULL, "A", NULL}, {MENU_FUNC, " Save Link (A) ", NULL, 0, svA, NULL, "A", NULL},
{MENU_FUNC, " View Image (i) ", NULL, 0, followI, NULL, "i", NULL}, {MENU_FUNC, " View Image (i) ", NULL, 0, followI, NULL, "i", NULL},
{MENU_FUNC, " Save Image (I) ", NULL, 0, svI, NULL, "I", NULL}, {MENU_FUNC, " Save Image (I) ", NULL, 0, svI, NULL, "I", NULL},
@@ -1209,9 +1223,10 @@ void
popupMenu(int x, int y, Menu *menu) popupMenu(int x, int y, Menu *menu)
{ {
initSelectMenu(); initSelectMenu();
initSelTabMenu();
menu->cursorX = Currentbuf->cursorX + Currentbuf->rootX; menu->cursorX = Currentbuf->cursorX + Currentbuf->rootX;
menu->cursorY = Currentbuf->cursorY; menu->cursorY = Currentbuf->cursorY + Currentbuf->rootY;
menu->x = x + FRAME_WIDTH + 1; menu->x = x + FRAME_WIDTH + 1;
menu->y = y + 2; menu->y = y + 2;
@@ -1238,8 +1253,8 @@ mainMn(void)
return; return;
menu = w3mMenuList[n].menu; menu = w3mMenuList[n].menu;
} }
popupMenu(Currentbuf->cursorX + Currentbuf->rootX, Currentbuf->cursorY, popupMenu(Currentbuf->cursorX + Currentbuf->rootX,
menu); Currentbuf->cursorY + Currentbuf->rootY, menu);
} }
/* --- MainMenu (END) --- */ /* --- MainMenu (END) --- */
@@ -1249,7 +1264,8 @@ mainMn(void)
void void
selMn(void) selMn(void)
{ {
popupMenu(Currentbuf->cursorX, Currentbuf->cursorY, &SelectMenu); popupMenu(Currentbuf->cursorX + Currentbuf->rootX,
Currentbuf->cursorY + Currentbuf->rootY, &SelectMenu);
} }
static void static void
@@ -1312,7 +1328,7 @@ initSelectMenu(void)
new_option_menu(&SelectMenu, label, &SelectV, smChBuf); new_option_menu(&SelectMenu, label, &SelectV, smChBuf);
SelectMenu.initial = SelectV; SelectMenu.initial = SelectV;
SelectMenu.cursorX = Currentbuf->cursorX + Currentbuf->rootX; SelectMenu.cursorX = Currentbuf->cursorX + Currentbuf->rootX;
SelectMenu.cursorY = Currentbuf->cursorY; SelectMenu.cursorY = Currentbuf->cursorY + Currentbuf->rootY;
SelectMenu.keymap['D'] = smDelBuf; SelectMenu.keymap['D'] = smDelBuf;
SelectMenu.item[nitem].type = MENU_NOP; SelectMenu.item[nitem].type = MENU_NOP;
} }
@@ -1380,6 +1396,140 @@ smDelBuf(char c)
/* --- SelectMenu (END) --- */ /* --- SelectMenu (END) --- */
/* --- SelTabMenu --- */
void
tabMn(void)
{
popupMenu(Currentbuf->cursorX + Currentbuf->rootX,
Currentbuf->cursorY + Currentbuf->rootY, &SelTabMenu);
}
static void
initSelTabMenu(void)
{
int i, nitem, len = 0, l;
TabBuffer *tab;
Buffer *buf;
Str str;
char **label;
static char *comment = " SPC for select / D for delete tab ";
SelTabV = -1;
for (i = 0, tab = LastTab; tab != NULL; i++, tab = tab->prevTab) {
if (tab == CurrentTab)
SelTabV = i;
}
nitem = i;
label = New_N(char *, nitem + 2);
for (i = 0, tab = LastTab; i < nitem; i++, tab = tab->prevTab) {
buf = tab->currentBuffer;
str = Sprintf("<%s>", buf->buffername);
if (buf->filename != NULL) {
switch (buf->currentURL.scheme) {
case SCM_LOCAL:
case SCM_LOCAL_CGI:
if (strcmp(buf->currentURL.file, "-")) {
Strcat_char(str, ' ');
Strcat_charp(str,
conv_from_system(buf->currentURL.real_file));
}
break;
/* case SCM_UNKNOWN: */
case SCM_MISSING:
break;
default:
Strcat_char(str, ' ');
Strcat(str, parsedURL2Str(&buf->currentURL));
break;
}
}
label[i] = str->ptr;
if (len < str->length)
len = str->length;
}
l = strlen(comment);
if (len < l + 4)
len = l + 4;
if (len > COLS - 2 * FRAME_WIDTH)
len = COLS - 2 * FRAME_WIDTH;
len = (len > 1) ? ((len - l + 1) / 2) : 0;
str = Strnew();
for (i = 0; i < len; i++)
Strcat_char(str, '-');
Strcat_charp(str, comment);
for (i = 0; i < len; i++)
Strcat_char(str, '-');
label[nitem] = str->ptr;
label[nitem + 1] = NULL;
new_option_menu(&SelTabMenu, label, &SelTabV, smChTab);
SelTabMenu.initial = SelTabV;
SelTabMenu.cursorX = Currentbuf->cursorX + Currentbuf->rootX;
SelTabMenu.cursorY = Currentbuf->cursorY + Currentbuf->rootY;
SelTabMenu.keymap['D'] = smDelTab;
SelTabMenu.item[nitem].type = MENU_NOP;
}
static void
smChTab(void)
{
int i;
TabBuffer *tab;
Buffer *buf;
if (SelTabV < 0 || SelTabV >= SelTabMenu.nitem)
return;
for (i = 0, tab = LastTab; i < SelTabV && tab != NULL;
i++, tab = tab->prevTab) ;
CurrentTab = tab;
for (tab = LastTab; tab != NULL; tab = tab->prevTab) {
if (tab == CurrentTab)
continue;
buf = tab->currentBuffer;
#ifdef USE_IMAGE
deleteImage(buf);
#endif
if (clear_buffer)
tmpClearBuffer(buf);
}
}
static int
smDelTab(char c)
{
int i, x, y, mselect;
TabBuffer *tab;
if (CurrentMenu->select < 0 || CurrentMenu->select >= SelTabMenu.nitem)
return (MENU_NOTHING);
for (i = 0, tab = LastTab; i < CurrentMenu->select && tab != NULL;
i++, tab = tab->prevTab) ;
deleteTab(tab);
x = CurrentMenu->x;
y = CurrentMenu->y;
mselect = CurrentMenu->select;
initSelTabMenu();
CurrentMenu->x = x;
CurrentMenu->y = y;
geom_menu(CurrentMenu, x, y, 0);
CurrentMenu->select = (mselect <= CurrentMenu->nitem - 2) ? mselect
: (CurrentMenu->nitem - 2);
displayBuffer(Currentbuf, B_FORCE_REDRAW);
draw_all_menu(CurrentMenu);
select_menu(CurrentMenu, CurrentMenu->select);
return (MENU_NOTHING);
}
/* --- SelectMenu (END) --- */
/* --- OptionMenu --- */ /* --- OptionMenu --- */
void void
+18 -4
View File
@@ -1,4 +1,4 @@
/* $Id: proto.h,v 1.50 2002/11/05 16:03:14 ukai Exp $ */ /* $Id: proto.h,v 1.51 2002/11/05 17:10:07 ukai Exp $ */
/* /*
* This file was automatically generated by version 1.7 of cextract. * This file was automatically generated by version 1.7 of cextract.
* Manual editing not recommended. * Manual editing not recommended.
@@ -119,6 +119,16 @@ extern void setAlarmEvent(int sec, short status, int cmd, void *data);
#endif #endif
extern void reinit(void); extern void reinit(void);
extern void defKey(void); extern void defKey(void);
extern void newT(void);
extern void closeT(void);
extern void nextT(void);
extern void prevT(void);
extern void tabA(void);
extern void tabURL(void);
extern void tabrURL(void);
extern void tabR(void);
extern void tabL(void);
extern int currentLn(Buffer *buf); extern int currentLn(Buffer *buf);
extern void tmpClearBuffer(Buffer *buf); extern void tmpClearBuffer(Buffer *buf);
extern char *filename_extension(char *patch, int is_url); extern char *filename_extension(char *patch, int is_url);
@@ -209,6 +219,8 @@ extern char *inputAnswer(char *prompt);
extern int matchattr(char *p, char *attr, int len, Str *value); extern int matchattr(char *p, char *attr, int len, Str *value);
extern void readHeader(URLFile *uf, Buffer *newBuf, int thru, ParsedURL *pu); extern void readHeader(URLFile *uf, Buffer *newBuf, int thru, ParsedURL *pu);
extern char *checkHeader(Buffer *buf, char *field); extern char *checkHeader(Buffer *buf, char *field);
extern TabBuffer *newTab(void);
extern TabBuffer *deleteTab(TabBuffer *tab);
extern Buffer *newBuffer(int width); extern Buffer *newBuffer(int width);
extern Buffer *nullBuffer(void); extern Buffer *nullBuffer(void);
extern void clearBuffer(Buffer *buf); extern void clearBuffer(Buffer *buf);
@@ -340,15 +352,16 @@ extern void form_write_from_file(FILE * f, char *boundary, char *name,
char *filename, char *file); char *filename, char *file);
extern void follow_map(struct parsed_tagarg *arg); extern void follow_map(struct parsed_tagarg *arg);
#ifdef MENU_MAP #ifdef MENU_MAP
extern char *follow_map_menu(Buffer *buf, struct parsed_tagarg *arg, extern MapArea *follow_map_menu(Buffer *buf, struct parsed_tagarg *arg,
Anchor *a_img, int x, int y); Anchor *a_img, int x, int y);
#else #else
extern Buffer *follow_map_panel(Buffer *buf, struct parsed_tagarg *arg); extern Buffer *follow_map_panel(Buffer *buf, struct parsed_tagarg *arg);
#endif #endif
#ifdef USE_IMAGE #ifdef USE_IMAGE
extern int getMapXY(Buffer *buf, Anchor *a, int *x, int *y); extern int getMapXY(Buffer *buf, Anchor *a, int *x, int *y);
#endif #endif
extern MapArea *newMapArea(char *url, char *alt, char *shape, char *coords); extern MapArea *newMapArea(char *url, char *target, char *alt, char *shape,
char *coords);
extern Buffer *page_info_panel(Buffer *buf); extern Buffer *page_info_panel(Buffer *buf);
extern struct frame_body *newFrame(struct parsed_tag *tag, Buffer *buf); extern struct frame_body *newFrame(struct parsed_tag *tag, Buffer *buf);
extern struct frameset *newFrameSet(struct parsed_tag *tag); extern struct frameset *newFrameSet(struct parsed_tag *tag);
@@ -624,6 +637,7 @@ extern void popupMenu(int x, int y, Menu *menu);
extern void mainMenu(int x, int y); extern void mainMenu(int x, int y);
extern void mainMn(void); extern void mainMn(void);
extern void selMn(void); extern void selMn(void);
extern void tabMn(void);
extern void optionMenu(int x, int y, char **label, int *variable, int initial, extern void optionMenu(int x, int y, char **label, int *variable, int initial,
void (*func) ()); void (*func) ());
extern void initMenu(void); extern void initMenu(void);
+9 -1
View File
@@ -1,4 +1,4 @@
/* $Id: rc.c,v 1.55 2002/11/05 15:56:14 ukai Exp $ */ /* $Id: rc.c,v 1.56 2002/11/05 17:10:07 ukai Exp $ */
/* /*
* Initialization file etc. * Initialization file etc.
*/ */
@@ -65,6 +65,7 @@ static char *config_file = NULL;
#define CMT_FRAME "フレームの自動表示" #define CMT_FRAME "フレームの自動表示"
#define CMT_ARGV_IS_URL "scheme のない引数も URL とみなす" #define CMT_ARGV_IS_URL "scheme のない引数も URL とみなす"
#define CMT_TSELF "targetが未指定の場合に_selfを使用する" #define CMT_TSELF "targetが未指定の場合に_selfを使用する"
#define CMT_OPEN_TAB_BLANK "targetが_blankか_newの場合は新しいタブで開く"
#define CMT_DISPLINK "リンク先の自動表示" #define CMT_DISPLINK "リンク先の自動表示"
#define CMT_DISPLINEINFO "現在の行番号の表示" #define CMT_DISPLINEINFO "現在の行番号の表示"
#define CMT_DISP_IMAGE "インライン画像を表示" #define CMT_DISP_IMAGE "インライン画像を表示"
@@ -102,6 +103,7 @@ static char *config_file = NULL;
#define CMT_PDROOT "/~user で表されるディレクトリ" #define CMT_PDROOT "/~user で表されるディレクトリ"
#define CMT_CGIBIN "/cgi-bin で表されるディレクトリ" #define CMT_CGIBIN "/cgi-bin で表されるディレクトリ"
#define CMT_CONFIRM_QQ "q での終了時に確認する" #define CMT_CONFIRM_QQ "q での終了時に確認する"
#define CMT_CLOSE_TAB_BACK "戻る時にバッファが最後ならタブを閉じる"
#ifdef USE_MARK #ifdef USE_MARK
#define CMT_USE_MARK "マーク機能を有効にする" #define CMT_USE_MARK "マーク機能を有効にする"
#endif #endif
@@ -207,6 +209,7 @@ static char *config_file = NULL;
#define CMT_FRAME "Render frames automatically" #define CMT_FRAME "Render frames automatically"
#define CMT_ARGV_IS_URL "Treat argument without scheme as URL" #define CMT_ARGV_IS_URL "Treat argument without scheme as URL"
#define CMT_TSELF "Use _self as default target" #define CMT_TSELF "Use _self as default target"
#define CMT_OPEN_TAB_BLANK "Open link on new tab if target is _blank or _new"
#define CMT_DISPLINK "Display link URL automatically" #define CMT_DISPLINK "Display link URL automatically"
#define CMT_DISPLINEINFO "Display current line number" #define CMT_DISPLINEINFO "Display current line number"
#define CMT_DISP_IMAGE "Display inline images" #define CMT_DISP_IMAGE "Display inline images"
@@ -244,6 +247,7 @@ static char *config_file = NULL;
#define CMT_PDROOT "Directory corresponding to /~user" #define CMT_PDROOT "Directory corresponding to /~user"
#define CMT_CGIBIN "Directory corresponding to /cgi-bin" #define CMT_CGIBIN "Directory corresponding to /cgi-bin"
#define CMT_CONFIRM_QQ "Confirm when quitting with q" #define CMT_CONFIRM_QQ "Confirm when quitting with q"
#define CMT_CLOSE_TAB_BACK "Close tab if buffer is last when back"
#ifdef USE_MARK #ifdef USE_MARK
#define CMT_USE_MARK "Enable mark operations" #define CMT_USE_MARK "Enable mark operations"
#endif #endif
@@ -463,6 +467,8 @@ struct param_ptr params1[] = {
#endif /* JP_CHARSET */ #endif /* JP_CHARSET */
{"frame", P_CHARINT, PI_ONOFF, (void *)&RenderFrame, CMT_FRAME, NULL}, {"frame", P_CHARINT, PI_ONOFF, (void *)&RenderFrame, CMT_FRAME, NULL},
{"target_self", P_CHARINT, PI_ONOFF, (void *)&TargetSelf, CMT_TSELF, NULL}, {"target_self", P_CHARINT, PI_ONOFF, (void *)&TargetSelf, CMT_TSELF, NULL},
{"open_tab_blank", P_INT, PI_ONOFF, (void *)&open_tab_blank,
CMT_OPEN_TAB_BLANK, NULL},
{"display_link", P_INT, PI_ONOFF, (void *)&displayLink, CMT_DISPLINK, {"display_link", P_INT, PI_ONOFF, (void *)&displayLink, CMT_DISPLINK,
NULL}, NULL},
{"display_lineinfo", P_INT, PI_ONOFF, (void *)&displayLineInfo, {"display_lineinfo", P_INT, PI_ONOFF, (void *)&displayLineInfo,
@@ -551,6 +557,8 @@ struct param_ptr params3[] = {
#endif /* USE_HISTORY */ #endif /* USE_HISTORY */
{"confirm_qq", P_INT, PI_ONOFF, (void *)&confirm_on_quit, CMT_CONFIRM_QQ, {"confirm_qq", P_INT, PI_ONOFF, (void *)&confirm_on_quit, CMT_CONFIRM_QQ,
NULL}, NULL},
{"close_tab_back", P_INT, PI_ONOFF, (void *)&close_tab_back,
CMT_CLOSE_TAB_BACK, NULL},
#ifdef USE_MARK #ifdef USE_MARK
{"mark", P_INT, PI_ONOFF, (void *)&use_mark, CMT_USE_MARK, NULL}, {"mark", P_INT, PI_ONOFF, (void *)&use_mark, CMT_USE_MARK, NULL},
#endif #endif