[w3m-dev 03501] link tag support
* buffer.c (reshapeBuffer): initialize formlist, linklist, maplist, hmarklist, imarklist * file.c (addLink): added (HTMLlineproc2body): add HTML_LINK (loadHTMLstream): use HTMLlineproc0 not in R_ST_NORMAL (reloadBuffer): initialize linklist, maplist, hmarklist, imarklist * fm.h (LINK_TYPE_NONE): added (LINK_TYPE_REL): added (LINK_TYPE_REV): added (LinkList): added (Buffer): add linklist * html.c (ALST_LINK): added (TagMAP): add link (AtrMAP): add rel, rev, title * html.h (HTML_LINK): added (ATTR_REL): added (ATTR_REV): added (ATTR_TITLE): added * map.c (append_map_info): anchor (append_link_info): added (page_info_panel): append_link_info * menu.c (LinkMenu): added (linkV): added (initLinkMenu): added (lmGoURL): added (popupMenu): initLinkMenu() (initMenu): w3mMenuList new 4 add "Link" * tagtable.tab (link): added From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
This commit is contained in:
@@ -1,3 +1,42 @@
|
|||||||
|
2002-12-03 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
|
||||||
|
|
||||||
|
* [w3m-dev 03501] link tag support
|
||||||
|
* buffer.c (reshapeBuffer): initialize formlist, linklist,
|
||||||
|
maplist, hmarklist, imarklist
|
||||||
|
* file.c (addLink): added
|
||||||
|
(HTMLlineproc2body): add HTML_LINK
|
||||||
|
(loadHTMLstream): use HTMLlineproc0 not in R_ST_NORMAL
|
||||||
|
(reloadBuffer): initialize linklist, maplist,
|
||||||
|
hmarklist, imarklist
|
||||||
|
* fm.h (LINK_TYPE_NONE): added
|
||||||
|
(LINK_TYPE_REL): added
|
||||||
|
(LINK_TYPE_REV): added
|
||||||
|
(LinkList): added
|
||||||
|
(Buffer): add linklist
|
||||||
|
* html.c (ALST_LINK): added
|
||||||
|
(TagMAP): add link
|
||||||
|
(AtrMAP): add rel, rev, title
|
||||||
|
* html.h (HTML_LINK): added
|
||||||
|
(ATTR_REL): added
|
||||||
|
(ATTR_REV): added
|
||||||
|
(ATTR_TITLE): added
|
||||||
|
* map.c (append_map_info): anchor
|
||||||
|
(append_link_info): added
|
||||||
|
(page_info_panel): append_link_info
|
||||||
|
* menu.c (LinkMenu): added
|
||||||
|
(linkV): added
|
||||||
|
(initLinkMenu): added
|
||||||
|
(lmGoURL): added
|
||||||
|
(popupMenu): initLinkMenu()
|
||||||
|
(initMenu): w3mMenuList new 4
|
||||||
|
add "Link"
|
||||||
|
* tagtable.tab (link): added
|
||||||
|
|
||||||
|
2002-11-29 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
|
||||||
|
|
||||||
|
* [w3m bug] internal tag
|
||||||
|
* display.c (loadHTMLstream): HTMLlineproc0 internal
|
||||||
|
|
||||||
2002-11-29 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
|
2002-11-29 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
|
||||||
|
|
||||||
* [w3m-dev 03498] Re: parse <!-- ... --> in <script>
|
* [w3m-dev 03498] Re: parse <!-- ... --> in <script>
|
||||||
@@ -5248,4 +5287,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.571 2002/11/28 16:00:33 ukai Exp $
|
$Id: ChangeLog,v 1.572 2002/12/02 17:27:34 ukai Exp $
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: buffer.c,v 1.15 2002/11/15 15:51:23 ukai Exp $ */
|
/* $Id: buffer.c,v 1.16 2002/12/02 17:27:36 ukai Exp $ */
|
||||||
#include "fm.h"
|
#include "fm.h"
|
||||||
|
|
||||||
#ifdef USE_MOUSE
|
#ifdef USE_MOUSE
|
||||||
@@ -517,6 +517,13 @@ reshapeBuffer(Buffer *buf)
|
|||||||
buf->name = NULL;
|
buf->name = NULL;
|
||||||
buf->img = NULL;
|
buf->img = NULL;
|
||||||
buf->formitem = NULL;
|
buf->formitem = NULL;
|
||||||
|
buf->formlist = NULL;
|
||||||
|
buf->linklist = NULL;
|
||||||
|
buf->maplist = NULL;
|
||||||
|
if (buf->hmarklist)
|
||||||
|
buf->hmarklist->nmark = 0;
|
||||||
|
if (buf->imarklist)
|
||||||
|
buf->imarklist->nmark = 0;
|
||||||
buf->width = INIT_BUFFER_WIDTH;
|
buf->width = INIT_BUFFER_WIDTH;
|
||||||
|
|
||||||
#ifdef JP_CHARSET
|
#ifdef JP_CHARSET
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: file.c,v 1.135 2002/11/28 16:00:33 ukai Exp $ */
|
/* $Id: file.c,v 1.136 2002/12/02 17:27:36 ukai Exp $ */
|
||||||
#include "fm.h"
|
#include "fm.h"
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include "myctype.h"
|
#include "myctype.h"
|
||||||
@@ -40,6 +40,7 @@ static void addnewline(Buffer *buf, char *line, Lineprop *prop,
|
|||||||
Linecolor *color,
|
Linecolor *color,
|
||||||
#endif
|
#endif
|
||||||
int pos, int nlines);
|
int pos, int nlines);
|
||||||
|
static void addLink(Buffer *buf, struct parsed_tag *tag);
|
||||||
|
|
||||||
static Lineprop propBuffer[LINELEN];
|
static Lineprop propBuffer[LINELEN];
|
||||||
#ifdef USE_ANSI_COLOR
|
#ifdef USE_ANSI_COLOR
|
||||||
@@ -4941,6 +4942,11 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)
|
|||||||
a_href = NULL;
|
a_href = NULL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case HTML_LINK:
|
||||||
|
addLink(buf, tag);
|
||||||
|
break;
|
||||||
|
|
||||||
case HTML_IMG_ALT:
|
case HTML_IMG_ALT:
|
||||||
if (parsedtag_get_value(tag, ATTR_SRC, &p)) {
|
if (parsedtag_get_value(tag, ATTR_SRC, &p)) {
|
||||||
#ifdef USE_IMAGE
|
#ifdef USE_IMAGE
|
||||||
@@ -5302,6 +5308,49 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
addLink(Buffer *buf, struct parsed_tag *tag)
|
||||||
|
{
|
||||||
|
struct parsed_tag *t;
|
||||||
|
char *href = NULL, *title = NULL, *ctype = NULL, *rel = NULL, *rev = NULL;
|
||||||
|
char type = LINK_TYPE_NONE;
|
||||||
|
LinkList *l;
|
||||||
|
|
||||||
|
parsedtag_get_value(tag, ATTR_HREF, &href);
|
||||||
|
if (href)
|
||||||
|
href = url_quote_conv(remove_space(href), buf->document_code);
|
||||||
|
parsedtag_get_value(tag, ATTR_TITLE, &title);
|
||||||
|
parsedtag_get_value(tag, ATTR_TYPE, &ctype);
|
||||||
|
parsedtag_get_value(tag, ATTR_REL, &rel);
|
||||||
|
if (rel != NULL) {
|
||||||
|
/* forward link type */
|
||||||
|
type = LINK_TYPE_REL;
|
||||||
|
if (title == NULL)
|
||||||
|
title = rel;
|
||||||
|
}
|
||||||
|
parsedtag_get_value(tag, ATTR_REV, &rev);
|
||||||
|
if (rev != NULL) {
|
||||||
|
/* reverse link type */
|
||||||
|
type = LINK_TYPE_REV;
|
||||||
|
if (title == NULL)
|
||||||
|
title = rev;
|
||||||
|
}
|
||||||
|
|
||||||
|
l = New(LinkList);
|
||||||
|
l->url = href;
|
||||||
|
l->title = title;
|
||||||
|
l->ctype = ctype;
|
||||||
|
l->type = type;
|
||||||
|
l->next = NULL;
|
||||||
|
if (buf->linklist) {
|
||||||
|
LinkList *i;
|
||||||
|
for (i = buf->linklist; i->next; i = i->next) ;
|
||||||
|
i->next = l;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
buf->linklist = l;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
HTMLlineproc2(Buffer *buf, TextLineList *tl)
|
HTMLlineproc2(Buffer *buf, TextLineList *tl)
|
||||||
{
|
{
|
||||||
@@ -6300,7 +6349,7 @@ loadHTMLstream(URLFile *f, Buffer *newBuf, FILE * src, int internal)
|
|||||||
HTMLlineproc0(lineBuf2->ptr, &htmlenv1, internal);
|
HTMLlineproc0(lineBuf2->ptr, &htmlenv1, internal);
|
||||||
}
|
}
|
||||||
if (obuf.status != R_ST_NORMAL)
|
if (obuf.status != R_ST_NORMAL)
|
||||||
HTMLlineproc1(correct_irrtag(obuf.status)->ptr, &htmlenv1);
|
HTMLlineproc0(correct_irrtag(obuf.status)->ptr, &htmlenv1, internal);
|
||||||
obuf.status = R_ST_NORMAL;
|
obuf.status = R_ST_NORMAL;
|
||||||
completeHTMLstream(&htmlenv1, &obuf);
|
completeHTMLstream(&htmlenv1, &obuf);
|
||||||
flushline(&htmlenv1, &obuf, 0, 2, htmlenv1.limit);
|
flushline(&htmlenv1, &obuf, 0, 2, htmlenv1.limit);
|
||||||
@@ -7674,6 +7723,12 @@ reloadBuffer(Buffer *buf)
|
|||||||
buf->name = NULL;
|
buf->name = NULL;
|
||||||
buf->img = NULL;
|
buf->img = NULL;
|
||||||
buf->formitem = NULL;
|
buf->formitem = NULL;
|
||||||
|
buf->linklist = NULL;
|
||||||
|
buf->maplist = NULL;
|
||||||
|
if (buf->hmarklist)
|
||||||
|
buf->hmarklist->nmark = 0;
|
||||||
|
if (buf->imarklist)
|
||||||
|
buf->imarklist->nmark = 0;
|
||||||
if (!strcasecmp(buf->type, "text/html"))
|
if (!strcasecmp(buf->type, "text/html"))
|
||||||
loadHTMLBuffer(&uf, buf);
|
loadHTMLBuffer(&uf, buf);
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: fm.h,v 1.89 2002/11/26 18:03:26 ukai Exp $ */
|
/* $Id: fm.h,v 1.90 2002/12/02 17:27:37 ukai Exp $ */
|
||||||
/*
|
/*
|
||||||
* w3m: WWW wo Miru utility
|
* w3m: WWW wo Miru utility
|
||||||
*
|
*
|
||||||
@@ -384,6 +384,17 @@ typedef struct {
|
|||||||
int prevhseq;
|
int prevhseq;
|
||||||
} HmarkerList;
|
} HmarkerList;
|
||||||
|
|
||||||
|
#define LINK_TYPE_NONE 0
|
||||||
|
#define LINK_TYPE_REL 1
|
||||||
|
#define LINK_TYPE_REV 2
|
||||||
|
typedef struct _LinkList {
|
||||||
|
char *url;
|
||||||
|
char *title; /* Next, Contents, ... */
|
||||||
|
char *ctype; /* Content-Type */
|
||||||
|
char type; /* Rel, Rev */
|
||||||
|
struct _LinkList *next;
|
||||||
|
} LinkList;
|
||||||
|
|
||||||
typedef struct _Buffer {
|
typedef struct _Buffer {
|
||||||
char *filename;
|
char *filename;
|
||||||
char *buffername;
|
char *buffername;
|
||||||
@@ -413,6 +424,7 @@ typedef struct _Buffer {
|
|||||||
AnchorList *name;
|
AnchorList *name;
|
||||||
AnchorList *img;
|
AnchorList *img;
|
||||||
AnchorList *formitem;
|
AnchorList *formitem;
|
||||||
|
LinkList *linklist;
|
||||||
FormList *formlist;
|
FormList *formlist;
|
||||||
MapList *maplist;
|
MapList *maplist;
|
||||||
HmarkerList *hmarklist;
|
HmarkerList *hmarklist;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: html.c,v 1.15 2002/11/05 17:10:05 ukai Exp $ */
|
/* $Id: html.c,v 1.16 2002/12/02 17:27:38 ukai Exp $ */
|
||||||
#include "html.h"
|
#include "html.h"
|
||||||
|
|
||||||
/* Define HTML Tag Infomation Table */
|
/* Define HTML Tag Infomation Table */
|
||||||
@@ -18,6 +18,9 @@ unsigned char ALST_LI[] = { ATTR_TYPE, ATTR_VALUE, ATTR_CORE };
|
|||||||
#define MAXA_LI MAXA_CORE + 2
|
#define MAXA_LI MAXA_CORE + 2
|
||||||
unsigned char ALST_HR[] = { ATTR_WIDTH, ATTR_ALIGN, ATTR_CORE };
|
unsigned char ALST_HR[] = { ATTR_WIDTH, ATTR_ALIGN, ATTR_CORE };
|
||||||
#define MAXA_HR MAXA_CORE + 2
|
#define MAXA_HR MAXA_CORE + 2
|
||||||
|
unsigned char ALST_LINK[] = { ATTR_HREF, ATTR_HSEQ, ATTR_REL, ATTR_REV,
|
||||||
|
ATTR_TITLE, ATTR_TYPE, ATTR_CORE };
|
||||||
|
#define MAXA_LINK MAXA_CORE + sizeof ALST_LINK/sizeof ALST_LINK[0] - 1
|
||||||
unsigned char ALST_DL[] = { ATTR_COMPACT, ATTR_CORE };
|
unsigned char ALST_DL[] = { ATTR_COMPACT, ATTR_CORE };
|
||||||
#define MAXA_DL MAXA_CORE + 1
|
#define MAXA_DL MAXA_CORE + 1
|
||||||
unsigned char ALST_PRE[] = { ATTR_FOR_TABLE, ATTR_CORE };
|
unsigned char ALST_PRE[] = { ATTR_FOR_TABLE, ATTR_CORE };
|
||||||
@@ -220,7 +223,7 @@ TagInfo TagMAP[MAX_HTMLTAG] = {
|
|||||||
{"/sup", NULL, 0, 0}, /* 101 HTML_N_SUP */
|
{"/sup", NULL, 0, 0}, /* 101 HTML_N_SUP */
|
||||||
{"sub", NULL, 0, 0}, /* 102 HTML_SUB */
|
{"sub", NULL, 0, 0}, /* 102 HTML_SUB */
|
||||||
{"/sub", NULL, 0, 0}, /* 103 HTML_N_SUB */
|
{"/sub", NULL, 0, 0}, /* 103 HTML_N_SUB */
|
||||||
{NULL, NULL, 0, 0}, /* 104 Undefined */
|
{"link", ALST_LINK, MAXA_LINK, 0}, /* 104 HTML_LINK */
|
||||||
{NULL, NULL, 0, 0}, /* 105 Undefined */
|
{NULL, NULL, 0, 0}, /* 105 Undefined */
|
||||||
|
|
||||||
/* pseudo tag */
|
/* pseudo tag */
|
||||||
@@ -296,24 +299,23 @@ TagAttrInfo AttrMAP[MAX_TAGATTR] = {
|
|||||||
{"shape", VTYPE_STR, 0}, /* 44 ATTR_SHAPE */
|
{"shape", VTYPE_STR, 0}, /* 44 ATTR_SHAPE */
|
||||||
{"coords", VTYPE_STR, 0}, /* 45 ATTR_COORDS */
|
{"coords", VTYPE_STR, 0}, /* 45 ATTR_COORDS */
|
||||||
{"ismap", VTYPE_NONE, 0}, /* 46 ATTR_ISMAP */
|
{"ismap", VTYPE_NONE, 0}, /* 46 ATTR_ISMAP */
|
||||||
|
{"rel", VTYPE_STR, 0}, /* 47 ATTR_REL */
|
||||||
{NULL, VTYPE_NONE, 0}, /* 47 Undefined */
|
{"rev", VTYPE_STR, 0}, /* 48 ATTR_REV */
|
||||||
{NULL, VTYPE_NONE, 0}, /* 48 Undefined */
|
{"title", VTYPE_STR, 0}, /* 49 ATTR_TITLE */
|
||||||
|
|
||||||
/* Internal attribute */
|
/* Internal attribute */
|
||||||
{"xoffset", VTYPE_NUMBER, AFLG_INT}, /* 49 ATTR_XOFFSET */
|
{"xoffset", VTYPE_NUMBER, AFLG_INT}, /* 50 ATTR_XOFFSET */
|
||||||
{"yoffset", VTYPE_NUMBER, AFLG_INT}, /* 50 ATTR_YOFFSET */
|
{"yoffset", VTYPE_NUMBER, AFLG_INT}, /* 51 ATTR_YOFFSET */
|
||||||
{"top_margin", VTYPE_NUMBER, AFLG_INT}, /* 51 ATTR_TOP_MARGIN, */
|
{"top_margin", VTYPE_NUMBER, AFLG_INT}, /* 52 ATTR_TOP_MARGIN, */
|
||||||
{"bottom_margin", VTYPE_NUMBER, AFLG_INT}, /* 52 ATTR_BOTTOM_MARGIN, */
|
{"bottom_margin", VTYPE_NUMBER, AFLG_INT}, /* 53 ATTR_BOTTOM_MARGIN, */
|
||||||
{"tid", VTYPE_NUMBER, AFLG_INT}, /* 53 ATTR_TID */
|
{"tid", VTYPE_NUMBER, AFLG_INT}, /* 54 ATTR_TID */
|
||||||
{"fid", VTYPE_NUMBER, AFLG_INT}, /* 54 ATTR_FID */
|
{"fid", VTYPE_NUMBER, AFLG_INT}, /* 55 ATTR_FID */
|
||||||
{"for_table", VTYPE_NONE, AFLG_INT}, /* 55 ATTR_FOR_TABLE */
|
{"for_table", VTYPE_NONE, AFLG_INT}, /* 56 ATTR_FOR_TABLE */
|
||||||
{"framename", VTYPE_STR, AFLG_INT}, /* 56 ATTR_FRAMENAME */
|
{"framename", VTYPE_STR, AFLG_INT}, /* 57 ATTR_FRAMENAME */
|
||||||
{"hborder", VTYPE_NONE, 0}, /* 57 ATTR_HBORDER */
|
{"hborder", VTYPE_NONE, 0}, /* 58 ATTR_HBORDER */
|
||||||
{"hseq", VTYPE_NUMBER, AFLG_INT}, /* 58 ATTR_HSEQ */
|
{"hseq", VTYPE_NUMBER, AFLG_INT}, /* 59 ATTR_HSEQ */
|
||||||
{"no_effect", VTYPE_NONE, AFLG_INT}, /* 59 ATTR_NO_EFFECT */
|
{"no_effect", VTYPE_NONE, AFLG_INT}, /* 60 ATTR_NO_EFFECT */
|
||||||
{"referer", VTYPE_STR, AFLG_INT}, /* 60 ATTR_REFERER */
|
{"referer", VTYPE_STR, AFLG_INT}, /* 61 ATTR_REFERER */
|
||||||
{"selectnumber", VTYPE_NUMBER, AFLG_INT}, /* 61 ATTR_SELECTNUMBER */
|
{"selectnumber", VTYPE_NUMBER, AFLG_INT}, /* 62 ATTR_SELECTNUMBER */
|
||||||
{"textareanumber", VTYPE_NUMBER, AFLG_INT}, /* 62 ATTR_TEXTAREANUMBER */
|
{"textareanumber", VTYPE_NUMBER, AFLG_INT}, /* 63 ATTR_TEXTAREANUMBER */
|
||||||
{"title", VTYPE_STR, AFLG_INT}, /* 63 ATTR_TITLE */
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: html.h,v 1.10 2002/11/15 15:19:45 ukai Exp $ */
|
/* $Id: html.h,v 1.11 2002/12/02 17:27:39 ukai Exp $ */
|
||||||
#ifndef _HTML_H
|
#ifndef _HTML_H
|
||||||
#define _HTML_H
|
#define _HTML_H
|
||||||
#ifdef USE_SSL
|
#ifdef USE_SSL
|
||||||
@@ -190,6 +190,7 @@ typedef struct {
|
|||||||
#define HTML_N_SUP 101
|
#define HTML_N_SUP 101
|
||||||
#define HTML_SUB 102
|
#define HTML_SUB 102
|
||||||
#define HTML_N_SUB 103
|
#define HTML_N_SUB 103
|
||||||
|
#define HTML_LINK 104
|
||||||
|
|
||||||
/* pseudo tag */
|
/* pseudo tag */
|
||||||
#define HTML_INTERNAL 106
|
#define HTML_INTERNAL 106
|
||||||
@@ -266,23 +267,25 @@ typedef struct {
|
|||||||
#define ATTR_SHAPE 44
|
#define ATTR_SHAPE 44
|
||||||
#define ATTR_COORDS 45
|
#define ATTR_COORDS 45
|
||||||
#define ATTR_ISMAP 46
|
#define ATTR_ISMAP 46
|
||||||
|
#define ATTR_REL 47
|
||||||
|
#define ATTR_REV 48
|
||||||
|
#define ATTR_TITLE 49
|
||||||
|
|
||||||
/* Internal attribute */
|
/* Internal attribute */
|
||||||
#define ATTR_XOFFSET 49
|
#define ATTR_XOFFSET 50
|
||||||
#define ATTR_YOFFSET 50
|
#define ATTR_YOFFSET 51
|
||||||
#define ATTR_TOP_MARGIN 51
|
#define ATTR_TOP_MARGIN 52
|
||||||
#define ATTR_BOTTOM_MARGIN 52
|
#define ATTR_BOTTOM_MARGIN 53
|
||||||
#define ATTR_TID 53
|
#define ATTR_TID 54
|
||||||
#define ATTR_FID 54
|
#define ATTR_FID 55
|
||||||
#define ATTR_FOR_TABLE 55
|
#define ATTR_FOR_TABLE 56
|
||||||
#define ATTR_FRAMENAME 56
|
#define ATTR_FRAMENAME 57
|
||||||
#define ATTR_HBORDER 57
|
#define ATTR_HBORDER 58
|
||||||
#define ATTR_HSEQ 58
|
#define ATTR_HSEQ 59
|
||||||
#define ATTR_NO_EFFECT 59
|
#define ATTR_NO_EFFECT 60
|
||||||
#define ATTR_REFERER 60
|
#define ATTR_REFERER 61
|
||||||
#define ATTR_SELECTNUMBER 61
|
#define ATTR_SELECTNUMBER 62
|
||||||
#define ATTR_TEXTAREANUMBER 62
|
#define ATTR_TEXTAREANUMBER 63
|
||||||
#define ATTR_TITLE 63
|
|
||||||
|
|
||||||
#define MAX_TAGATTR 64
|
#define MAX_TAGATTR 64
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: map.c,v 1.16 2002/11/25 17:10:52 ukai Exp $ */
|
/* $Id: map.c,v 1.17 2002/12/02 17:27:39 ukai Exp $ */
|
||||||
/*
|
/*
|
||||||
* client-side image maps
|
* client-side image maps
|
||||||
*/
|
*/
|
||||||
@@ -408,13 +408,49 @@ append_map_info(Buffer *buf, Str tmp, FormItemList *fi)
|
|||||||
continue;
|
continue;
|
||||||
parseURL2(a->url, &pu, baseURL(buf));
|
parseURL2(a->url, &pu, baseURL(buf));
|
||||||
url = html_quote(parsedURL2Str(&pu)->ptr);
|
url = html_quote(parsedURL2Str(&pu)->ptr);
|
||||||
Strcat_m_charp(tmp, "<tr><td> <td>",
|
Strcat_m_charp(tmp, "<tr><td> <td><a href=\"", url, "\">",
|
||||||
html_quote(a->alt), "<td><a href=\"", url, "\">", url,
|
html_quote(a->alt), "</a><td>", html_quote(a->url),
|
||||||
"</a>\n", NULL);
|
"\n", NULL);
|
||||||
}
|
}
|
||||||
Strcat_charp(tmp, "</table>");
|
Strcat_charp(tmp, "</table>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* append links */
|
||||||
|
static void
|
||||||
|
append_link_info(Buffer *buf, Str html, LinkList *link)
|
||||||
|
{
|
||||||
|
LinkList *l;
|
||||||
|
ParsedURL pu;
|
||||||
|
char *url;
|
||||||
|
|
||||||
|
if (!link)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Strcat_charp(html, "<hr width=50%><h1>Link information</h1>");
|
||||||
|
Strcat_charp(html, "<TABLE>\n");
|
||||||
|
for (l = link; l; l = l->next) {
|
||||||
|
if (l->url) {
|
||||||
|
parseURL2(l->url, &pu, baseURL(buf));
|
||||||
|
url = html_quote(parsedURL2Str(&pu)->ptr);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
url = "(empty)";
|
||||||
|
Strcat_m_charp(html, "<TR><TD><A HREF=\"", url, "\">",
|
||||||
|
l->title ? html_quote(l->title) : "(empty)", "</A><TD>",
|
||||||
|
NULL);
|
||||||
|
if (l->type == LINK_TYPE_REL)
|
||||||
|
Strcat_charp(html, "[Rel]");
|
||||||
|
else if (l->type == LINK_TYPE_REV)
|
||||||
|
Strcat_charp(html, "[Rev]");
|
||||||
|
Strcat_m_charp(html, "<TD>", l->url ? html_quote(l->url) : "(empty)",
|
||||||
|
NULL);
|
||||||
|
if (l->ctype)
|
||||||
|
Strcat_m_charp(html, " (", html_quote(l->ctype), ")", NULL);
|
||||||
|
Strcat_charp(html, "\n");
|
||||||
|
}
|
||||||
|
Strcat_charp(html, "</TABLE>\n");
|
||||||
|
}
|
||||||
|
|
||||||
/* append frame URL */
|
/* append frame URL */
|
||||||
static void
|
static void
|
||||||
append_frame_info(Buffer *buf, Str html, struct frameset *set, int level)
|
append_frame_info(Buffer *buf, Str html, struct frameset *set, int level)
|
||||||
@@ -539,6 +575,9 @@ page_info_panel(Buffer *buf)
|
|||||||
append_map_info(buf, tmp, fi->parent->item);
|
append_map_info(buf, tmp, fi->parent->item);
|
||||||
}
|
}
|
||||||
Strcat_charp(tmp, "</table>\n");
|
Strcat_charp(tmp, "</table>\n");
|
||||||
|
|
||||||
|
append_link_info(buf, tmp, buf->linklist);
|
||||||
|
|
||||||
if (buf->document_header != NULL) {
|
if (buf->document_header != NULL) {
|
||||||
Strcat_charp(tmp, "<hr width=50%>\n");
|
Strcat_charp(tmp, "<hr width=50%>\n");
|
||||||
Strcat_charp(tmp, "<h1>Header information</h1>\n");
|
Strcat_charp(tmp, "<h1>Header information</h1>\n");
|
||||||
@@ -547,6 +586,7 @@ page_info_panel(Buffer *buf)
|
|||||||
Strcat_charp(tmp, "<br>");
|
Strcat_charp(tmp, "<br>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buf->frameset != NULL)
|
if (buf->frameset != NULL)
|
||||||
f_set = buf->frameset;
|
f_set = buf->frameset;
|
||||||
else if (buf->bufferprop & BP_FRAME &&
|
else if (buf->bufferprop & BP_FRAME &&
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: menu.c,v 1.22 2002/11/27 16:29:14 ukai Exp $ */
|
/* $Id: menu.c,v 1.23 2002/12/02 17:27:41 ukai Exp $ */
|
||||||
/*
|
/*
|
||||||
* w3m menu.c
|
* w3m menu.c
|
||||||
*/
|
*/
|
||||||
@@ -288,6 +288,11 @@ static int smDelTab(char c);
|
|||||||
|
|
||||||
/* --- SelTabMenu (END) --- */
|
/* --- SelTabMenu (END) --- */
|
||||||
|
|
||||||
|
static Menu LinkMenu;
|
||||||
|
static int LinkV = 0;
|
||||||
|
static void initLinkMenu(void);
|
||||||
|
static void lmGoURL(void);
|
||||||
|
|
||||||
/* --- MainMenu --- */
|
/* --- MainMenu --- */
|
||||||
|
|
||||||
static Menu MainMenu;
|
static Menu MainMenu;
|
||||||
@@ -1313,6 +1318,7 @@ popupMenu(int x, int y, Menu *menu)
|
|||||||
{
|
{
|
||||||
initSelectMenu();
|
initSelectMenu();
|
||||||
initSelTabMenu();
|
initSelTabMenu();
|
||||||
|
initLinkMenu();
|
||||||
|
|
||||||
menu->cursorX = Currentbuf->cursorX + Currentbuf->rootX;
|
menu->cursorX = Currentbuf->cursorX + Currentbuf->rootX;
|
||||||
menu->cursorY = Currentbuf->cursorY + Currentbuf->rootY;
|
menu->cursorY = Currentbuf->cursorY + Currentbuf->rootY;
|
||||||
@@ -1642,6 +1648,69 @@ smDelTab(char c)
|
|||||||
|
|
||||||
/* --- SelectMenu (END) --- */
|
/* --- SelectMenu (END) --- */
|
||||||
|
|
||||||
|
/* --- LinkMenu --- */
|
||||||
|
|
||||||
|
static void
|
||||||
|
initLinkMenu(void)
|
||||||
|
{
|
||||||
|
LinkList *l;
|
||||||
|
int i, nitem, len = 0;
|
||||||
|
char **label;
|
||||||
|
Str str;
|
||||||
|
|
||||||
|
if (!Currentbuf->linklist) {
|
||||||
|
LinkMenu.item = NULL;
|
||||||
|
LinkMenu.nitem = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (i = 0, l = Currentbuf->linklist; l; i++, l = l->next) ;
|
||||||
|
nitem = i;
|
||||||
|
|
||||||
|
label = New_N(char *, nitem + 1);
|
||||||
|
for (i = 0, l = Currentbuf->linklist; l; i++, l = l->next) {
|
||||||
|
str = Strnew_charp(l->title ? l->title : "(empty)");
|
||||||
|
if (l->type == LINK_TYPE_REL)
|
||||||
|
Strcat_charp(str, " [Rel] ");
|
||||||
|
else if (l->type == LINK_TYPE_REV)
|
||||||
|
Strcat_charp(str, " [Rev] ");
|
||||||
|
else
|
||||||
|
Strcat_charp(str, " ");
|
||||||
|
Strcat_charp(str, l->url ? l->url : "");
|
||||||
|
label[i] = str->ptr;
|
||||||
|
if (len < str->length)
|
||||||
|
len = str->length;
|
||||||
|
}
|
||||||
|
label[nitem + 1] = NULL;
|
||||||
|
LinkV = 0;
|
||||||
|
|
||||||
|
new_option_menu(&LinkMenu, label, &LinkV, lmGoURL);
|
||||||
|
LinkMenu.initial = LinkV;
|
||||||
|
LinkMenu.cursorX = Currentbuf->cursorX + Currentbuf->rootX;
|
||||||
|
LinkMenu.cursorY = Currentbuf->cursorY + Currentbuf->rootY;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
lmGoURL(void)
|
||||||
|
{
|
||||||
|
LinkList *l;
|
||||||
|
int i;
|
||||||
|
ParsedURL pu;
|
||||||
|
|
||||||
|
for (i = 0, l = Currentbuf->linklist; l; i++, l = l->next) {
|
||||||
|
if (i == LinkV)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (l == NULL || l->url == NULL)
|
||||||
|
return;
|
||||||
|
CurrentKey = -1;
|
||||||
|
CurrentKeyData = NULL;
|
||||||
|
CurrentCmdData = l->url;
|
||||||
|
gorURL();
|
||||||
|
CurrentCmdData = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- LinkMenu (END) --- */
|
||||||
|
|
||||||
/* --- OptionMenu --- */
|
/* --- OptionMenu --- */
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1674,7 +1743,7 @@ initMenu(void)
|
|||||||
MenuItem *item = NULL;
|
MenuItem *item = NULL;
|
||||||
MenuList *list;
|
MenuList *list;
|
||||||
|
|
||||||
w3mMenuList = New_N(MenuList, 3);
|
w3mMenuList = New_N(MenuList, 4);
|
||||||
w3mMenuList[0].id = "Main";
|
w3mMenuList[0].id = "Main";
|
||||||
w3mMenuList[0].menu = &MainMenu;
|
w3mMenuList[0].menu = &MainMenu;
|
||||||
w3mMenuList[0].item = MainMenuItem;
|
w3mMenuList[0].item = MainMenuItem;
|
||||||
@@ -1684,7 +1753,10 @@ initMenu(void)
|
|||||||
w3mMenuList[2].id = "SelectTab";
|
w3mMenuList[2].id = "SelectTab";
|
||||||
w3mMenuList[2].menu = &SelTabMenu;
|
w3mMenuList[2].menu = &SelTabMenu;
|
||||||
w3mMenuList[2].item = NULL;
|
w3mMenuList[2].item = NULL;
|
||||||
w3mMenuList[3].id = NULL;
|
w3mMenuList[3].id = "Link";
|
||||||
|
w3mMenuList[3].menu = &LinkMenu;
|
||||||
|
w3mMenuList[3].item = NULL;
|
||||||
|
w3mMenuList[4].id = NULL;
|
||||||
|
|
||||||
if ((mf = fopen(rcFile(MENU_FILE), "rt")) == NULL)
|
if ((mf = fopen(rcFile(MENU_FILE), "rt")) == NULL)
|
||||||
goto create_menu;
|
goto create_menu;
|
||||||
|
|||||||
@@ -117,6 +117,7 @@ style HTML_STYLE
|
|||||||
wbr HTML_WBR
|
wbr HTML_WBR
|
||||||
head HTML_HEAD
|
head HTML_HEAD
|
||||||
/head HTML_N_HEAD
|
/head HTML_N_HEAD
|
||||||
|
link HTML_LINK
|
||||||
body HTML_BODY
|
body HTML_BODY
|
||||||
/body HTML_N_BODY
|
/body HTML_N_BODY
|
||||||
html HTML_BODY
|
html HTML_BODY
|
||||||
|
|||||||
Reference in New Issue
Block a user