r3032 rjek - /trunk/netsurf/gtk/gtk_plotters.c
by netsurf@semichrome.net
Author: rjek
Date: Sun Nov 5 13:16:21 2006
New Revision: 3032
URL: http://svn.semichrome.net?rev=3032&view=rev
Log:
Fudge off-by-one bitmap plotting in nsgtk plotters. Will investigate actual cause later.
Modified:
trunk/netsurf/gtk/gtk_plotters.c
Modified: trunk/netsurf/gtk/gtk_plotters.c
URL: http://svn.semichrome.net/trunk/netsurf/gtk/gtk_plotters.c?rev=3032&r1=30...
==============================================================================
--- trunk/netsurf/gtk/gtk_plotters.c (original)
+++ trunk/netsurf/gtk/gtk_plotters.c Sun Nov 5 13:16:21 2006
@@ -268,6 +268,8 @@
if (width == 0 || height == 0)
return true;
+ width++; /* TODO: investigate why this is required */
+
if (gdk_pixbuf_get_width(pixbuf) == width &&
gdk_pixbuf_get_height(pixbuf) == height) {
gdk_draw_pixbuf(current_drawable, current_gc,
16 years, 2 months
r3031 bursa - in /trunk/netsurf/render: box.c box.h box_construct.c box_normalise.c html_redraw.c layout.c
by netsurf@semichrome.net
Author: bursa
Date: Sun Nov 5 12:58:24 2006
New Revision: 3031
URL: http://svn.semichrome.net?rev=3031&view=rev
Log:
More work on lists. Simplify the implementation to a BLOCK for display: list-item, with a marker box on box->list_marker.
Modified:
trunk/netsurf/render/box.c
trunk/netsurf/render/box.h
trunk/netsurf/render/box_construct.c
trunk/netsurf/render/box_normalise.c
trunk/netsurf/render/html_redraw.c
trunk/netsurf/render/layout.c
Modified: trunk/netsurf/render/box.c
URL: http://svn.semichrome.net/trunk/netsurf/render/box.c?rev=3031&r1=3030&r2=...
==============================================================================
--- trunk/netsurf/render/box.c (original)
+++ trunk/netsurf/render/box.c Sun Nov 5 12:58:24 2006
@@ -84,6 +84,7 @@
box->inline_end = NULL;
box->float_children = NULL;
box->next_float = NULL;
+ box->list_marker = NULL;
box->col = NULL;
box->gadget = NULL;
box->usemap = NULL;
@@ -495,10 +496,6 @@
case BOX_FLOAT_RIGHT: fprintf(stderr, "FLOAT_RIGHT "); break;
case BOX_BR: fprintf(stderr, "BR "); break;
case BOX_TEXT: fprintf(stderr, "TEXT "); break;
- case BOX_LIST: fprintf(stderr, "LIST "); break;
- case BOX_LIST_ITEM: fprintf(stderr, "LIST_ITEM "); break;
- case BOX_LIST_MARKER: fprintf(stderr, "LIST_MARKER "); break;
- case BOX_LIST_PRINCIPAL: fprintf(stderr, "LIST_PRINCIPAL "); break;
default: fprintf(stderr, "Unknown box type ");
}
@@ -538,6 +535,13 @@
}
fprintf(stderr, "\n");
+ if (box->list_marker) {
+ for (i = 0; i != depth; i++)
+ fprintf(stderr, " ");
+ fprintf(stderr, "list_marker:\n");
+ box_dump(box->list_marker, depth + 1);
+ }
+
for (c = box->children; c && c->next; c = c->next)
;
if (box->last != c)
Modified: trunk/netsurf/render/box.h
URL: http://svn.semichrome.net/trunk/netsurf/render/box.h?rev=3031&r1=3030&r2=...
==============================================================================
--- trunk/netsurf/render/box.h (original)
+++ trunk/netsurf/render/box.h Sun Nov 5 12:58:24 2006
@@ -60,18 +60,15 @@
* A box tree is "normalized" if the following is satisfied:
* \code
* parent permitted child nodes
- * BLOCK, INLINE_BLOCK BLOCK, INLINE_CONTAINER, TABLE, LIST
+ * BLOCK, INLINE_BLOCK BLOCK, INLINE_CONTAINER, TABLE
* INLINE_CONTAINER INLINE, INLINE_BLOCK, FLOAT_LEFT, FLOAT_RIGHT, BR, TEXT,
* INLINE_END
* INLINE none
* TABLE at least 1 TABLE_ROW_GROUP
* TABLE_ROW_GROUP at least 1 TABLE_ROW
* TABLE_ROW at least 1 TABLE_CELL
- * TABLE_CELL BLOCK, INLINE_CONTAINER, TABLE, LIST (same as BLOCK)
+ * TABLE_CELL BLOCK, INLINE_CONTAINER, TABLE (same as BLOCK)
* FLOAT_(LEFT|RIGHT) exactly 1 BLOCK or TABLE
- * LIST at least 1 LIST_ITEM
- * LIST_ITEM exactly 1 LIST_MARKER and exactly 1 LIST_PRINCIPAL
- * LIST_PRINCIPAL BLOCK, INLINE_CONTAINER, TABLE, LIST (same as BLOCK)
* \endcode
*/
@@ -97,8 +94,7 @@
BOX_TABLE_ROW_GROUP,
BOX_FLOAT_LEFT, BOX_FLOAT_RIGHT,
BOX_INLINE_BLOCK, BOX_BR, BOX_TEXT,
- BOX_INLINE_END,
- BOX_LIST, BOX_LIST_ITEM, BOX_LIST_MARKER, BOX_LIST_PRINCIPAL
+ BOX_INLINE_END
} box_type;
struct rect {
@@ -198,6 +194,9 @@
/** Next sibling float box. */
struct box *next_float;
+ /** List marker box if this is a list-item, or 0. */
+ struct box *list_marker;
+
struct column *col; /**< Array of table column data for TABLE only. */
/** Form control data, or 0 if not a form control. */
Modified: trunk/netsurf/render/box_construct.c
URL: http://svn.semichrome.net/trunk/netsurf/render/box_construct.c?rev=3031&r...
==============================================================================
--- trunk/netsurf/render/box_construct.c (original)
+++ trunk/netsurf/render/box_construct.c Sun Nov 5 12:58:24 2006
@@ -205,7 +205,7 @@
0, /*CSS_DISPLAY_INHERIT,*/
BOX_INLINE, /*CSS_DISPLAY_INLINE,*/
BOX_BLOCK, /*CSS_DISPLAY_BLOCK,*/
- BOX_LIST_ITEM, /*CSS_DISPLAY_LIST_ITEM,*/
+ BOX_BLOCK, /*CSS_DISPLAY_LIST_ITEM,*/
BOX_INLINE, /*CSS_DISPLAY_RUN_IN,*/
BOX_INLINE_BLOCK, /*CSS_DISPLAY_INLINE_BLOCK,*/
BOX_TABLE, /*CSS_DISPLAY_TABLE,*/
@@ -349,10 +349,6 @@
box_free_box(box);
return true;
}
-
- /* if this is a list item, then reset the box type */
- if (style->display == CSS_DISPLAY_LIST_ITEM)
- box->type = BOX_LIST_ITEM;
if (!*inline_container &&
(box->type == BOX_INLINE ||
@@ -398,59 +394,6 @@
&inline_container_c,
href, target, title))
return false;
- } else if (box->type == BOX_LIST_ITEM) {
- /* list item: create marker box and recurse */
- struct box *list_item;
- struct box *marker;
-
- /* create container box */
- list_item = box_create(0, href, target, title, 0, content);
- if (!list_item)
- return false;
- list_item->type = BOX_LIST_ITEM;
-
- /* create marker - effectively a single INLINE */
- /* marker style information is contained in PRINCIPAL box */
- marker = box_create(box->style, href, target, title, 0,
- content);
- if (!marker)
- return false;
- marker->type = BOX_LIST_MARKER;
- marker->clone = 1;
-
- /** \todo marker content (list-style-type)
- * need to traverse up the tree to find containing BOX_LIST,
- * which contains the counter information */
- marker->text = talloc_strdup(content, "1.");
- if (!marker->text)
- return false;
- marker->space = 1;
- marker->length = 2;
-
- if (style->list_style_image.type ==
- CSS_LIST_STYLE_IMAGE_URI) {
- if (!html_fetch_object(content,
- style->list_style_image.uri, marker,
- 0, content->available_width, 1000,
- false))
- return false;
- }
-
- /* make box into principal block for list */
- box->type = BOX_LIST_PRINCIPAL;
-
- box_add_child(parent, list_item);
- box_add_child(list_item, marker);
- box_add_child(list_item, box);
-
- /* and recurse */
- inline_container_c = 0;
- for (c = n->children; convert_children && c; c = c->next) {
- if (!convert_xml_to_box(c, content, style,
- box, &inline_container_c,
- href, target, title))
- return false;
- }
} else {
if (style->float_ == CSS_FLOAT_LEFT ||
style->float_ == CSS_FLOAT_RIGHT) {
@@ -464,6 +407,28 @@
else
parent->type = BOX_FLOAT_RIGHT;
box_add_child(*inline_container, parent);
+ }
+
+ if (style->display == CSS_DISPLAY_LIST_ITEM) {
+ struct box *marker;
+ marker = box_create(style, 0, 0, title, 0, content);
+ if (!marker)
+ return false;
+ marker->type = BOX_BLOCK;
+ /** \todo marker content (list-style-type) */
+ marker->text = "\342\200\242";
+ marker->length = 3;
+ if (style->list_style_image.type ==
+ CSS_LIST_STYLE_IMAGE_URI) {
+ if (!html_fetch_object(content,
+ style->list_style_image.uri,
+ marker,
+ 0, content->available_width,
+ 1000, false))
+ return false;
+ }
+ box->list_marker = marker;
+ marker->parent = box;
}
/* non-inline box: add to tree and recurse */
@@ -610,6 +575,14 @@
* text node, if any */
if (text[0] == ' ' && text[1] == 0) {
if (*inline_container) {
+ if ((*inline_container)->last == 0) {
+ LOG(("empty inline_container %p",
+ *inline_container));
+ while (parent->parent &&
+ parent->parent->parent)
+ parent = parent->parent;
+ box_dump(parent, 0);
+ }
assert((*inline_container)->last != 0);
(*inline_container)->last->space = 1;
}
Modified: trunk/netsurf/render/box_normalise.c
URL: http://svn.semichrome.net/trunk/netsurf/render/box_normalise.c?rev=3031&r...
==============================================================================
--- trunk/netsurf/render/box_normalise.c (original)
+++ trunk/netsurf/render/box_normalise.c Sun Nov 5 12:58:24 2006
@@ -57,21 +57,19 @@
unsigned int col_span, unsigned int row_span,
unsigned int *start_column);
static bool box_normalise_inline_container(struct box *cont, struct content *c);
-static bool box_normalise_list(struct box *cont, struct content *c);
-static bool box_normalise_list_item(struct box *cont, struct content *c);
/**
* Ensure the box tree is correctly nested by adding and removing nodes.
*
- * \param block box of type BLOCK, INLINE_BLOCK, TABLE_CELL or LIST_PRINCIPAL
+ * \param block box of type BLOCK, INLINE_BLOCK, or TABLE_CELL
* \param box_pool pool to allocate new boxes in
* \return true on success, false on memory exhaustion
*
* The tree is modified to satisfy the following:
* \code
* parent permitted child nodes
- * BLOCK, INLINE_BLOCK BLOCK, INLINE_CONTAINER, TABLE, LIST
+ * BLOCK, INLINE_BLOCK BLOCK, INLINE_CONTAINER, TABLE
* INLINE_CONTAINER INLINE, INLINE_BLOCK, FLOAT_LEFT, FLOAT_RIGHT, BR, TEXT
* INLINE, TEXT none
* TABLE at least 1 TABLE_ROW_GROUP
@@ -79,9 +77,6 @@
* TABLE_ROW at least 1 TABLE_CELL
* TABLE_CELL BLOCK, INLINE_CONTAINER, TABLE (same as BLOCK)
* FLOAT_(LEFT|RIGHT) exactly 1 BLOCK or TABLE
- * LIST at least 1 LIST_ITEM
- * LIST_ITEM exactly 1 LIST_MARKER and exactly 1 LIST_PRINCIPAL
- * LIST_PRINCIPAL BLOCK, INLINE_CONTAINER, TABLE, LIST (same as BLOCK)
* \endcode
*/
@@ -90,14 +85,12 @@
struct box *child;
struct box *next_child;
struct box *table;
- struct box *list;
struct css_style *style;
assert(block != 0);
LOG(("block %p, block->type %u", block, block->type));
assert(block->type == BOX_BLOCK || block->type == BOX_INLINE_BLOCK ||
- block->type == BOX_TABLE_CELL ||
- block->type == BOX_LIST_PRINCIPAL);
+ block->type == BOX_TABLE_CELL);
gui_multitask();
for (child = block->children; child != 0; child = next_child) {
@@ -166,48 +159,6 @@
if (!box_normalise_table(table, c))
return false;
break;
- case BOX_LIST:
- if (!box_normalise_list(child, c))
- return false;
- break;
- case BOX_LIST_ITEM:
- /* Insert implied BOX_LIST */
- style = css_duplicate_style(block->style);
- if (!style)
- return false;
- css_cascade(style, &css_blank_style);
- list = box_create(style, 0, 0, 0, 0, c);
- if (!list) {
- css_free_style(style);
- return false;
- }
- list->type = BOX_LIST;
- if (child->prev == 0)
- block->children = list;
- else
- child->prev->next = list;
- list->prev = child->prev;
- while (child != 0 && child->type == BOX_LIST_ITEM) {
- box_add_child(list, child);
- next_child = child->next;
- child->next = 0;
- child = next_child;
- }
- list->last->next = 0;
- list->next = next_child = child;
- if (list->next)
- list->next->prev = list;
- else
- block->last = list;
- list->parent = block;
- if (!box_normalise_list(list, c))
- return false;
- break;
- case BOX_LIST_MARKER:
- case BOX_LIST_PRINCIPAL:
- /* Should be wrapped in BOX_LIST_ITEM */
- assert(0);
- break;
default:
assert(0);
}
@@ -255,8 +206,6 @@
case BOX_TABLE:
case BOX_TABLE_ROW:
case BOX_TABLE_CELL:
- case BOX_LIST:
- case BOX_LIST_ITEM:
/* insert implied table row group */
assert(table->style != NULL);
style = css_duplicate_style(table->style);
@@ -285,9 +234,7 @@
child->type == BOX_INLINE_CONTAINER ||
child->type == BOX_TABLE ||
child->type == BOX_TABLE_ROW ||
- child->type == BOX_TABLE_CELL ||
- child->type == BOX_LIST ||
- child->type == BOX_LIST_ITEM)) {
+ child->type == BOX_TABLE_CELL)) {
box_add_child(row_group, child);
next_child = child->next;
child->next = 0;
@@ -314,11 +261,6 @@
case BOX_TEXT:
/* should have been wrapped in inline
container by convert_xml_to_box() */
- assert(0);
- break;
- case BOX_LIST_MARKER:
- case BOX_LIST_PRINCIPAL:
- /* Should have been wrapped in BOX_LIST_ITEM */
assert(0);
break;
default:
@@ -441,8 +383,6 @@
case BOX_TABLE:
case BOX_TABLE_ROW_GROUP:
case BOX_TABLE_CELL:
- case BOX_LIST:
- case BOX_LIST_ITEM:
/* insert implied table row */
assert(row_group->style != NULL);
style = css_duplicate_style(row_group->style);
@@ -466,9 +406,7 @@
child->type == BOX_INLINE_CONTAINER ||
child->type == BOX_TABLE ||
child->type == BOX_TABLE_ROW_GROUP ||
- child->type == BOX_TABLE_CELL ||
- child->type == BOX_LIST ||
- child->type == BOX_LIST_ITEM)) {
+ child->type == BOX_TABLE_CELL)) {
box_add_child(row, child);
next_child = child->next;
child->next = 0;
@@ -495,11 +433,6 @@
container by convert_xml_to_box() */
assert(0);
break;
- case BOX_LIST_MARKER:
- case BOX_LIST_PRINCIPAL:
- /* should have been wrapped in LIST_ITEM */
- assert(0);
- break;
default:
assert(0);
}
@@ -550,8 +483,6 @@
case BOX_TABLE:
case BOX_TABLE_ROW_GROUP:
case BOX_TABLE_ROW:
- case BOX_LIST:
- case BOX_LIST_ITEM:
/* insert implied table cell */
assert(row->style != NULL);
style = css_duplicate_style(row->style);
@@ -575,9 +506,7 @@
child->type == BOX_INLINE_CONTAINER ||
child->type == BOX_TABLE ||
child->type == BOX_TABLE_ROW_GROUP ||
- child->type == BOX_TABLE_ROW ||
- child->type == BOX_LIST ||
- child->type == BOX_LIST_ITEM)) {
+ child->type == BOX_TABLE_ROW)) {
box_add_child(cell, child);
next_child = child->next;
child->next = 0;
@@ -601,11 +530,6 @@
case BOX_TEXT:
/* should have been wrapped in inline
container by convert_xml_to_box() */
- assert(0);
- break;
- case BOX_LIST_MARKER:
- case BOX_LIST_PRINCIPAL:
- /* should have been wrapped in a BOX_LIST_ITEM */
assert(0);
break;
default:
@@ -751,20 +675,20 @@
/* ok */
assert(child->children != 0);
switch (child->children->type) {
- case BOX_BLOCK:
- if (!box_normalise_block(
- child->children,
- c))
- return false;
- break;
- case BOX_TABLE:
- if (!box_normalise_table(
- child->children,
- c))
- return false;
- break;
- default:
- assert(0);
+ case BOX_BLOCK:
+ if (!box_normalise_block(
+ child->children,
+ c))
+ return false;
+ break;
+ case BOX_TABLE:
+ if (!box_normalise_table(
+ child->children,
+ c))
+ return false;
+ break;
+ default:
+ assert(0);
}
if (child->children == 0) {
/* the child has destroyed itself: remove float */
@@ -783,10 +707,6 @@
case BOX_TABLE_ROW_GROUP:
case BOX_TABLE_ROW:
case BOX_TABLE_CELL:
- case BOX_LIST:
- case BOX_LIST_ITEM:
- case BOX_LIST_MARKER:
- case BOX_LIST_PRINCIPAL:
default:
assert(0);
}
@@ -795,59 +715,3 @@
return true;
}
-
-
-bool box_normalise_list(struct box *cont, struct content *c)
-{
- struct box *child;
- struct box *next_child;
-
- assert(cont != 0);
- assert(cont->type == BOX_LIST);
-
- for (child = cont->children; child; child = next_child) {
- next_child = child->next;
- switch (child->type) {
- case BOX_LIST_ITEM:
- /* ok */
- if (!box_normalise_list_item(child, c))
- return false;
- break;
- case BOX_LIST_MARKER:
- case BOX_LIST_PRINCIPAL:
- /** \todo imply LIST_ITEM here? */
- default:
- assert(0);
- }
- }
-
- return true;
-}
-
-
-bool box_normalise_list_item(struct box *cont, struct content *c)
-{
- struct box *child;
- struct box *next_child;
-
- assert(cont != 0);
- assert(cont->type == BOX_LIST_ITEM);
-
- for (child = cont->children; child; child = next_child) {
- next_child = child->next;
- switch (child->type) {
- case BOX_LIST_MARKER:
- /* ok */
- break;
- case BOX_LIST_PRINCIPAL:
- /* ok */
- if (!box_normalise_block(child, c))
- return false;
- break;
- default:
- assert(0);
- }
- }
-
- return true;
-}
Modified: trunk/netsurf/render/html_redraw.c
URL: http://svn.semichrome.net/trunk/netsurf/render/html_redraw.c?rev=3031&r1=...
==============================================================================
--- trunk/netsurf/render/html_redraw.c (original)
+++ trunk/netsurf/render/html_redraw.c Sun Nov 5 12:58:24 2006
@@ -332,6 +332,15 @@
current_background_color))
return false;
}
+
+ /* list marker */
+ if (box->list_marker)
+ if (!html_redraw_box(box->list_marker,
+ x_parent + box->x - box->scroll_x,
+ y_parent + box->y - box->scroll_y,
+ clip_x0, clip_y0, clip_x1, clip_y1,
+ scale, current_background_color))
+ return false;
/* scrollbars */
if (box->style && box->type != BOX_BR && box->type != BOX_INLINE &&
Modified: trunk/netsurf/render/layout.c
URL: http://svn.semichrome.net/trunk/netsurf/render/layout.c?rev=3031&r1=3030&...
==============================================================================
--- trunk/netsurf/render/layout.c (original)
+++ trunk/netsurf/render/layout.c Sun Nov 5 12:58:24 2006
@@ -48,7 +48,6 @@
static void layout_minmax_block(struct box *block);
static bool layout_block_object(struct box *block);
static void layout_block_find_dimensions(int available_width, struct box *box);
-static void layout_list_find_dimensions(int available_width, struct box *box);
static int layout_solve_width(int available_width, int width,
int margin[4], int padding[4], int border[4]);
static void layout_float_find_dimensions(int available_width,
@@ -60,9 +59,6 @@
static int layout_clear(struct box *fl, css_clear clear);
static void find_sides(struct box *fl, int y0, int y1,
int *x0, int *x1, struct box **left, struct box **right);
-static void layout_minmax_list(struct box *box);
-static void layout_minmax_list_item(struct box *box);
-static bool layout_list(struct box *box, struct content *content);
static void layout_minmax_inline_container(struct box *inline_container);
static int line_height(struct css_style *style);
static bool layout_line(struct box *first, int *width, int *y,
@@ -80,6 +76,7 @@
static void layout_move_children(struct box *box, int x, int y);
static void calculate_mbp_width(struct css_style *style, unsigned int side,
int *fixed, float *frac);
+static void layout_lists(struct box *box);
static void layout_position_relative(struct box *root);
static void layout_compute_relative_offset(struct box *box, int *x, int *y);
static bool layout_position_absolute(struct box *box,
@@ -141,6 +138,7 @@
doc->children->margin[BOTTOM]);
}
+ layout_lists(doc);
layout_position_absolute(doc, doc, 0, 0, content);
layout_position_relative(doc);
@@ -153,7 +151,7 @@
/**
* Layout a block formatting context.
*
- * \param block BLOCK, INLINE_BLOCK, TABLE_CELL or LIST_PRINCIPAL to layout
+ * \param block BLOCK, INLINE_BLOCK, or TABLE_CELL to layout
* \param content memory pool for any new boxes
* \return true on success, false on memory exhaustion
*
@@ -172,8 +170,9 @@
assert(block->type == BOX_BLOCK ||
block->type == BOX_INLINE_BLOCK ||
- block->type == BOX_TABLE_CELL ||
- block->type == BOX_LIST_PRINCIPAL);
+ block->type == BOX_TABLE_CELL);
+ assert(block->width != UNKNOWN_WIDTH);
+ assert(block->width != AUTO);
gui_multitask();
@@ -215,8 +214,7 @@
* to each in the order shown. */
while (box) {
assert(box->type == BOX_BLOCK || box->type == BOX_TABLE ||
- box->type == BOX_INLINE_CONTAINER ||
- box->type == BOX_LIST);
+ box->type == BOX_INLINE_CONTAINER);
assert(margin_box);
/* Tables are laid out before being positioned, because the
@@ -241,8 +239,7 @@
return false;
layout_solve_width(box->parent->width, box->width,
box->margin, box->padding, box->border);
- } else if (box->type == BOX_LIST)
- layout_list_find_dimensions(box->parent->width, box);
+ }
/* Position box: horizontal. */
box->x = box->parent->padding[LEFT] + box->margin[LEFT] +
@@ -315,9 +312,6 @@
cx = x0;
box->y += y - cy;
cy = y;
- } else if (box->type == BOX_LIST) {
- if (!layout_list(box, content))
- return false;
}
/* Advance to next box. */
@@ -396,7 +390,7 @@
/**
* Calculate minimum and maximum width of a block.
*
- * \param block box of type BLOCK, INLINE_BLOCK, TABLE_CELL, or LIST_PRINCIPAL
+ * \param block box of type BLOCK, INLINE_BLOCK, or TABLE_CELL
* \post block->min_width and block->max_width filled in,
* 0 <= block->min_width <= block->max_width
*/
@@ -410,8 +404,7 @@
assert(block->type == BOX_BLOCK ||
block->type == BOX_INLINE_BLOCK ||
- block->type == BOX_TABLE_CELL ||
- block->type == BOX_LIST_PRINCIPAL);
+ block->type == BOX_TABLE_CELL);
/* check if the widths have already been calculated */
if (block->max_width != UNKNOWN_MAX_WIDTH)
@@ -437,9 +430,6 @@
break;
case BOX_TABLE:
layout_minmax_table(child);
- break;
- case BOX_LIST:
- layout_minmax_list(child);
break;
default:
assert(0);
@@ -575,64 +565,6 @@
margin[BOTTOM] = 0;
}
-
-/**
- * Compute dimensions of box, margins, paddings, and borders for a list.
- *
- * Similar to layout_block_find_dimensions()
- */
-
-void layout_list_find_dimensions(int available_width, struct box *box)
-{
- int width, height;
- int *margin = box->margin;
- int *padding = box->padding;
- int *border = box->border;
- struct css_style *style = box->style;
- struct box *c;
-
- layout_find_dimensions(available_width, style,
- &width, &height, margin, padding, border);
-
- for (c = box->children; c; c = c->next) {
- struct box *marker, *principal;
-
- marker = c->children;
- principal = marker->next;
-
- /** \todo handle marker */
- marker->width = marker->height = 0;
-
- layout_block_find_dimensions(available_width, principal);
-
- if (width < principal->x + principal->width +
- principal->padding[RIGHT] +
- principal->border[RIGHT] +
- principal->margin[RIGHT])
- width = principal->x + principal->width +
- principal->padding[RIGHT] +
- principal->border[RIGHT] +
- principal->margin[RIGHT];
-
- if (height < principal->y + principal->height +
- principal->padding[BOTTOM] +
- principal->border[BOTTOM] +
- principal->margin[BOTTOM])
- height = principal->y + principal->height +
- principal->padding[BOTTOM] +
- principal->border[BOTTOM] +
- principal->margin[BOTTOM];
- }
-
- box->width = layout_solve_width(available_width, width, margin,
- padding, border);
- box->height = height;
-
- if (margin[TOP] == AUTO)
- margin[TOP] = 0;
- if (margin[BOTTOM] == AUTO)
- margin[BOTTOM] = 0;
-}
/**
* Solve the width constraint as given in CSS 2.1 section 10.3.3.
@@ -886,127 +818,6 @@
}
}
LOG(("x0 %i, x1 %i, left %p, right %p", *x0, *x1, *left, *right));
-}
-
-
-/**
- * Calculate minimum and maximum widths of a list
- */
-
-void layout_minmax_list(struct box *box)
-{
- int min = 0, max = 0;
- struct box *c;
-
- assert(box->type == BOX_LIST);
-
- /* check if we've already calculated the width */
- if (box->max_width != UNKNOWN_MAX_WIDTH)
- return;
-
- for (c = box->children; c; c = c->next) {
- layout_minmax_list_item(c);
- if (min < c->min_width)
- min = c->min_width;
- if (max < c->max_width)
- max = c->max_width;
- }
-
- box->min_width = min;
- box->max_width = max;
-}
-
-
-/**
- * Calculate minimum and maximum widths of a list item
- */
-
-void layout_minmax_list_item(struct box *box)
-{
- struct box *marker, *principal;
-
- assert(box->type == BOX_LIST_ITEM);
-
- /* check if we've already calculated the width */
- if (box->max_width != UNKNOWN_MAX_WIDTH)
- return;
-
- marker = box->children;
- principal = marker->next;
-
- layout_minmax_block(principal);
-
- /** \todo what on earth are we expected to do with the marker?
- * AFAICS, none of Opera, Firefox nor Konqueror support
- * display: list-item with list-style-position: outside
- * In Opera/Firefox's case, they don't appear to bother to
- * generate the marker box (probably following the "optional"
- * wording of the spec - 12.5). Konqueror turns it into
- * list-style-position: inside. */
- marker->min_width = marker->max_width = 0;
-
- box->min_width = principal->min_width + marker->min_width;
- box->max_width = principal->max_width + marker->max_width;
-}
-
-
-/**
- * Layout a list
- *
- * \param box list box
- * \param content memory pool for any new boxes
- * \return true on success, false on memory exhaustion
- */
-
-bool layout_list(struct box *box, struct content *content)
-{
- struct box *c;
- int cy = 0;
-
- assert(box->type == BOX_LIST);
-
- for (c = box->children; c; c = c->next) {
- struct box *marker, *principal;
-
- assert(c->type == BOX_LIST_ITEM);
-
- marker = c->children;
- principal = marker->next;
-
- c->x = 0;
- c->y = cy;
-
- /** \todo handle marker */
- marker->x = marker->y = 0;
-
- principal->x = 0;
- principal->y = 0;
- /* manipulate principal box's parent pointer so
- * layout_block_context has a parent style to play with */
- /** \todo is this sane? */
- principal->parent = box;
- layout_block_context(principal, content);
- principal->parent = c;
-
- if (c->width == UNKNOWN_WIDTH)
- c->width = principal->x + principal->width +
- principal->padding[RIGHT] +
- principal->border[RIGHT] +
- principal->margin[RIGHT];
-
-// if (c->height == AUTO)
- c->height = principal->y + principal->height +
- principal->padding[BOTTOM] +
- principal->border[BOTTOM] +
- principal->margin[BOTTOM];
-
- cy += c->height;
- }
-
-// if (box->height == AUTO)
- box->height = cy - box->padding[TOP];
-
- return true;
}
@@ -1885,6 +1696,8 @@
bool layout_float(struct box *b, int width, struct content *content)
{
+ assert(b->type == BOX_TABLE || b->type == BOX_BLOCK ||
+ b->type == BOX_INLINE_BLOCK);
layout_float_find_dimensions(width, b->style, b);
if (b->type == BOX_TABLE) {
if (!layout_table(b, width, content))
@@ -2566,6 +2379,30 @@
*fixed += css_len2px(&style->padding[side].value.length, style);
else if (style->padding[side].padding == CSS_PADDING_PERCENT)
*frac += style->padding[side].value.percent * 0.01;
+}
+
+
+/**
+ * Layout list markers.
+ */
+
+void layout_lists(struct box *box)
+{
+ struct box *child;
+ struct box *marker;
+
+ for (child = box->children; child; child = child->next) {
+ if (child->list_marker) {
+ marker = child->list_marker;
+ if (marker->width == UNKNOWN_WIDTH)
+ nsfont_width(marker->style, marker->text,
+ marker->length, &marker->width);
+ marker->x = -marker->width;
+ marker->y = 0;
+ marker->height = line_height(marker->style);
+ }
+ layout_lists(child);
+ }
}
@@ -3199,4 +3036,18 @@
if (box->descendant_y1 < child->y + child->descendant_y1)
box->descendant_y1 = child->y + child->descendant_y1;
}
+
+ if (box->list_marker) {
+ child = box->list_marker;
+ layout_calculate_descendant_bboxes(child);
+
+ if (child->x + child->descendant_x0 < box->descendant_x0)
+ box->descendant_x0 = child->x + child->descendant_x0;
+ if (box->descendant_x1 < child->x + child->descendant_x1)
+ box->descendant_x1 = child->x + child->descendant_x1;
+ if (child->y + child->descendant_y0 < box->descendant_y0)
+ box->descendant_y0 = child->y + child->descendant_y0;
+ if (box->descendant_y1 < child->y + child->descendant_y1)
+ box->descendant_y1 = child->y + child->descendant_y1;
+ }
}
16 years, 2 months
r3030 rjek - in /trunk/netsurf/gtk: gtk_gui.c gtk_gui.h gtk_window.c res/netsurf.glade
by netsurf@semichrome.net
Author: rjek
Date: Sat Nov 4 23:38:18 2006
New Revision: 3030
URL: http://svn.semichrome.net?rev=3030&view=rev
Log:
Finish GTK about box
Modified:
trunk/netsurf/gtk/gtk_gui.c
trunk/netsurf/gtk/gtk_gui.h
trunk/netsurf/gtk/gtk_window.c
trunk/netsurf/gtk/res/netsurf.glade
Modified: trunk/netsurf/gtk/gtk_gui.c
URL: http://svn.semichrome.net/trunk/netsurf/gtk/gtk_gui.c?rev=3030&r1=3029&r2...
==============================================================================
--- trunk/netsurf/gtk/gtk_gui.c (original)
+++ trunk/netsurf/gtk/gtk_gui.c Sat Nov 4 23:38:18 2006
@@ -55,7 +55,11 @@
struct gui_window *search_current_window = 0;
+GtkWindow *wndAbout;
+
GladeXML *gladeWindows;
+GtkWindow *wndTooltip;
+GtkLabel *labelTooltip;
/**
* Locate a shared resource file by searching known places in order.
@@ -152,6 +156,9 @@
if (gladeWindows == NULL)
die("Unable to load Glade window definitions.\n");
glade_xml_signal_autoconnect(gladeWindows);
+
+ wndTooltip = glade_xml_get_widget(gladeWindows, "wndTooltip");
+ labelTooltip = glade_xml_get_widget(gladeWindows, "tooltip");
nsgtk_completion_init();
@@ -212,6 +219,13 @@
urldb_load(option_url_file);
urldb_load_cookies(option_cookie_file);
+ wndAbout = GTK_WINDOW(glade_xml_get_widget(gladeWindows, "wndAbout"));
+ gtk_label_set_text(GTK_LABEL(
+ glade_xml_get_widget(gladeWindows, "labelVersion")),
+ netsurf_version);
+ gtk_image_set_from_file(GTK_IMAGE(
+ glade_xml_get_widget(gladeWindows, "imageLogo")),
+ find_resource(buf, "netsurf-logo.png", "netsurf-logo.png"));
nsgtk_history_init();
}
@@ -328,6 +342,17 @@
void gui_create_form_select_menu(struct browser_window *bw,
struct form_control *control)
{
+
+ int i;
+ struct form_option *option;
+
+ LOG(("Trying to open select menu..."));
+
+ for (i = 0, option = control->data.select.items; option;
+ i++, option = option->next) {
+ LOG(("Option: %s", option->text));
+ }
+
}
void gui_window_save_as_link(struct gui_window *g, struct content *c)
Modified: trunk/netsurf/gtk/gtk_gui.h
URL: http://svn.semichrome.net/trunk/netsurf/gtk/gtk_gui.h?rev=3030&r1=3029&r2...
==============================================================================
--- trunk/netsurf/gtk/gtk_gui.h (original)
+++ trunk/netsurf/gtk/gtk_gui.h Sat Nov 4 23:38:18 2006
@@ -14,3 +14,7 @@
extern char *glade_file_location;
extern char *options_file_location;
+extern GtkWindow *wndAbout;
+
+extern GtkWindow *wndTooltip;
+extern GtkLabel *labelTooltip;
Modified: trunk/netsurf/gtk/gtk_window.c
URL: http://svn.semichrome.net/trunk/netsurf/gtk/gtk_window.c?rev=3030&r1=3029...
==============================================================================
--- trunk/netsurf/gtk/gtk_window.c (original)
+++ trunk/netsurf/gtk/gtk_window.c Sat Nov 4 23:38:18 2006
@@ -646,6 +646,8 @@
MENUHANDLER(about)
{
+ gtk_widget_show(GTK_WIDGET(wndAbout));
+ gdk_window_raise(GDK_WINDOW(wndAbout));
return TRUE;
}
@@ -676,6 +678,31 @@
gboolean nsgtk_history_motion_notify_event(GtkWidget *widget,
GdkEventMotion *event, gpointer g)
{
+ /* if we're hovering over a history item, popup our tooltip bodge
+ * describing the page.
+ */
+ struct gtk_history_window *gw = g;
+ const char *url;
+ int winx, winy;
+
+// if (!option_history_tooltip)
+// return TRUE;
+
+ url = history_position_url(gw->g->bw->history, event->x, event->y);
+ if (url == NULL) {
+ gtk_widget_hide(wndTooltip);
+ return TRUE;
+ }
+
+ gtk_label_set_text(labelTooltip, url);
+ gtk_window_get_position(gw->g->window, &winx, &winy);
+
+ LOG(("winx = %d, winy = %d, event->x = %d, event->y = %d",
+ winx, winy, event->x, event->y));
+
+ gtk_widget_show(GTK_WIDGET(wndTooltip));
+ gtk_window_move(wndTooltip, event->x + winx, event->y + winy);
+
return TRUE;
}
Modified: trunk/netsurf/gtk/res/netsurf.glade
URL: http://svn.semichrome.net/trunk/netsurf/gtk/res/netsurf.glade?rev=3030&r1...
==============================================================================
--- trunk/netsurf/gtk/res/netsurf.glade (original)
+++ trunk/netsurf/gtk/res/netsurf.glade Sat Nov 4 23:38:18 2006
@@ -824,7 +824,6 @@
<property name="visible">True</property>
<property name="label">gtk-about</property>
<property name="use_stock">True</property>
- <signal name="activate" handler="gtk_widget_show" object="wndAbout" last_modification_time="Sat, 04 Nov 2006 22:03:25 GMT"/>
</widget>
</child>
</widget>
@@ -4693,266 +4692,219 @@
<widget class="GtkWindow" id="wndAbout">
<property name="title" translatable="yes">About NetSurf</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
- <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="window_position">GTK_WIN_POS_CENTER</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="focus_on_map">True</property>
<property name="urgency_hint">False</property>
- <signal name="close" handler="gtk_widget_hide" object="wndAbout" last_modification_time="Sat, 04 Nov 2006 22:04:02 GMT"/>
-
- <child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox4">
+ <signal name="delete_event" handler="gtk_widget_hide" last_modification_time="Sat, 04 Nov 2006 23:30:38 GMT"/>
+
+ <child>
+ <widget class="GtkVBox" id="vbox31">
<property name="border_width">5</property>
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
- <child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area4">
+ <child>
+ <widget class="GtkImage" id="imageLogo">
<property name="visible">True</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
-
- <child>
- <widget class="GtkButton" id="closebutton1">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-close</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal name="clicked" handler="gtk_widget_hide" object="wndAbout" last_modification_time="Sat, 04 Nov 2006 22:02:42 GMT"/>
- </widget>
- </child>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">GTK_PACK_END</property>
+ <property name="fill">False</property>
</packing>
</child>
<child>
- <widget class="GtkVBox" id="vbox30">
- <property name="border_width">6</property>
+ <widget class="GtkLabel" id="labelVersion">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
+ <property name="label" translatable="yes">Version Number</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkNotebook" id="notebook4">
+ <property name="border_width">4</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="show_tabs">True</property>
+ <property name="show_border">True</property>
+ <property name="tab_pos">GTK_POS_TOP</property>
+ <property name="scrollable">False</property>
+ <property name="enable_popup">False</property>
<child>
- <widget class="GtkHBox" id="hbox26">
+ <widget class="GtkScrolledWindow" id="scrolledwindow6">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child>
- <widget class="GtkImage" id="image482">
- <property name="visible">True</property>
- <property name="pixbuf">netsurf-logo.png</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">6</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="labelVersion">
+ <widget class="GtkTextView" id="textview5">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes"><b>Test Version</b></property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">True</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.660000026226</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
+ <property name="editable">False</property>
+ <property name="overwrite">False</property>
+ <property name="accepts_tab">False</property>
+ <property name="justification">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap_mode">GTK_WRAP_WORD</property>
+ <property name="cursor_visible">False</property>
+ <property name="pixels_above_lines">0</property>
+ <property name="pixels_below_lines">0</property>
+ <property name="pixels_inside_wrap">0</property>
+ <property name="left_margin">0</property>
+ <property name="right_margin">0</property>
+ <property name="indent">0</property>
+ <property name="text" translatable="yes">Kevin Bagust, John M Bell, James Bursa, Matthew Hambley, Rob Jackson, Rob Kendrick, Jeffrey Lee, Adrian Lees, Phil Mellor, Philip Pemberton, Daniel Silverstone, Andrew Timmins, John Tytgat, and Richard Wilson.</property>
</widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">False</property>
- </packing>
</child>
</widget>
<packing>
- <property name="padding">4</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
</packing>
</child>
<child>
- <widget class="GtkNotebook" id="notebook3">
+ <widget class="GtkLabel" id="label123">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Written by</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow7">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="show_tabs">True</property>
- <property name="show_border">True</property>
- <property name="tab_pos">GTK_POS_TOP</property>
- <property name="scrollable">False</property>
- <property name="enable_popup">False</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child>
- <widget class="GtkScrolledWindow" id="scrolledwindow3">
+ <widget class="GtkTextView" id="textview6">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
- <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
- <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
- <child>
- <widget class="GtkTextView" id="textview2">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">False</property>
- <property name="overwrite">False</property>
- <property name="accepts_tab">False</property>
- <property name="justification">GTK_JUSTIFY_LEFT</property>
- <property name="wrap_mode">GTK_WRAP_WORD</property>
- <property name="cursor_visible">False</property>
- <property name="pixels_above_lines">0</property>
- <property name="pixels_below_lines">0</property>
- <property name="pixels_inside_wrap">0</property>
- <property name="left_margin">0</property>
- <property name="right_margin">0</property>
- <property name="indent">0</property>
- <property name="text" translatable="yes">Kevin Bagust, John M Bell, James Bursa, Matthew Hambley, Rob Jackson, Rob Kendrick, Jeffrey Lee, Adrian Lees, Phil Mellor, Philip Pemberton, Daniel Silverstone, Andrew Timmins, John Tytgat, and Richard Wilson.</property>
- </widget>
- </child>
+ <property name="editable">False</property>
+ <property name="overwrite">False</property>
+ <property name="accepts_tab">False</property>
+ <property name="justification">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap_mode">GTK_WRAP_WORD</property>
+ <property name="cursor_visible">False</property>
+ <property name="pixels_above_lines">0</property>
+ <property name="pixels_below_lines">0</property>
+ <property name="pixels_inside_wrap">0</property>
+ <property name="left_margin">0</property>
+ <property name="right_margin">0</property>
+ <property name="indent">0</property>
+ <property name="text" translatable="yes">Sebastian Barthel, Bruno D'Arcangeli, Michael Drake, Andrew Duffell, Richard Hallas, Gerard van Katwijk, Jérôme Mathevet, and Simon Voortman.</property>
</widget>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
</child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label124">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Graphics/Translations by</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow8">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child>
- <widget class="GtkLabel" id="label120">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Written by</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwindow4">
+ <widget class="GtkTextView" id="textview7">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
- <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
- <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
- <child>
- <widget class="GtkTextView" id="textview3">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">False</property>
- <property name="overwrite">False</property>
- <property name="accepts_tab">False</property>
- <property name="justification">GTK_JUSTIFY_LEFT</property>
- <property name="wrap_mode">GTK_WRAP_WORD</property>
- <property name="cursor_visible">False</property>
- <property name="pixels_above_lines">0</property>
- <property name="pixels_below_lines">0</property>
- <property name="pixels_inside_wrap">0</property>
- <property name="left_margin">0</property>
- <property name="right_margin">0</property>
- <property name="indent">0</property>
- <property name="text" translatable="yes">Sebastian Barthel, Bruno D'Arcangeli, Michael Drake, Andrew Duffell, Richard Hallas, Gerard van Katwijk, Jérôme Mathevet, and Simon Voortman.</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label121">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Graphics/Translations by</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwindow5">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
- <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
- <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
- <child>
- <widget class="GtkTextView" id="textview4">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">False</property>
- <property name="overwrite">False</property>
- <property name="accepts_tab">False</property>
- <property name="justification">GTK_JUSTIFY_LEFT</property>
- <property name="wrap_mode">GTK_WRAP_NONE</property>
- <property name="cursor_visible">False</property>
- <property name="pixels_above_lines">0</property>
- <property name="pixels_below_lines">0</property>
- <property name="pixels_inside_wrap">0</property>
- <property name="left_margin">0</property>
- <property name="right_margin">0</property>
- <property name="indent">0</property>
- <property name="text" translatable="yes"> GNU GENERAL PUBLIC LICENSE
+ <property name="editable">False</property>
+ <property name="overwrite">False</property>
+ <property name="accepts_tab">False</property>
+ <property name="justification">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap_mode">GTK_WRAP_NONE</property>
+ <property name="cursor_visible">False</property>
+ <property name="pixels_above_lines">0</property>
+ <property name="pixels_below_lines">0</property>
+ <property name="pixels_inside_wrap">0</property>
+ <property name="left_margin">0</property>
+ <property name="right_margin">0</property>
+ <property name="indent">0</property>
+ <property name="text" translatable="yes"> GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
@@ -5232,42 +5184,35 @@
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS</property>
- </widget>
- </child>
</widget>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label122">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Licence</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- </packing>
</child>
</widget>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label125">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Licence</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
</packing>
</child>
</widget>
@@ -5277,6 +5222,95 @@
<property name="fill">True</property>
</packing>
</child>
+
+ <child>
+ <widget class="GtkHButtonBox" id="hbuttonbox1">
+ <property name="border_width">6</property>
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkButton" id="button10">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <signal name="clicked" handler="gtk_widget_hide" object="wndAbout" last_modification_time="Sat, 04 Nov 2006 23:29:37 GMT"/>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment31">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox27">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child>
+ <widget class="GtkImage" id="image484">
+ <property name="visible">True</property>
+ <property name="stock">gtk-close</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label127">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Close</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
</widget>
</child>
</widget>
16 years, 2 months
r3029 rjek - in /trunk/netsurf/gtk/res: netsurf-logo.png netsurf.glade
by netsurf@semichrome.net
Author: rjek
Date: Sat Nov 4 22:10:13 2006
New Revision: 3029
URL: http://svn.semichrome.net?rev=3029&view=rev
Log:
Beginnings of a GNOME-compliant about box for nsgtk
Added:
trunk/netsurf/gtk/res/netsurf-logo.png (with props)
Modified:
trunk/netsurf/gtk/res/netsurf.glade
Added: trunk/netsurf/gtk/res/netsurf-logo.png
URL: http://svn.semichrome.net/trunk/netsurf/gtk/res/netsurf-logo.png?rev=3029...
==============================================================================
Binary file - no diff available.
Propchange: trunk/netsurf/gtk/res/netsurf-logo.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: trunk/netsurf/gtk/res/netsurf.glade
URL: http://svn.semichrome.net/trunk/netsurf/gtk/res/netsurf.glade?rev=3029&r1...
==============================================================================
--- trunk/netsurf/gtk/res/netsurf.glade (original)
+++ trunk/netsurf/gtk/res/netsurf.glade Sat Nov 4 22:10:13 2006
@@ -824,6 +824,7 @@
<property name="visible">True</property>
<property name="label">gtk-about</property>
<property name="use_stock">True</property>
+ <signal name="activate" handler="gtk_widget_show" object="wndAbout" last_modification_time="Sat, 04 Nov 2006 22:03:25 GMT"/>
</widget>
</child>
</widget>
@@ -4689,4 +4690,595 @@
</child>
</widget>
+<widget class="GtkWindow" id="wndAbout">
+ <property name="title" translatable="yes">About NetSurf</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <signal name="close" handler="gtk_widget_hide" object="wndAbout" last_modification_time="Sat, 04 Nov 2006 22:04:02 GMT"/>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox4">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area4">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="closebutton1">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <signal name="clicked" handler="gtk_widget_hide" object="wndAbout" last_modification_time="Sat, 04 Nov 2006 22:02:42 GMT"/>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox30">
+ <property name="border_width">6</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox26">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkImage" id="image482">
+ <property name="visible">True</property>
+ <property name="pixbuf">netsurf-logo.png</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">6</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="labelVersion">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes"><b>Test Version</b></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.660000026226</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">4</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkNotebook" id="notebook3">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="show_tabs">True</property>
+ <property name="show_border">True</property>
+ <property name="tab_pos">GTK_POS_TOP</property>
+ <property name="scrollable">False</property>
+ <property name="enable_popup">False</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow3">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTextView" id="textview2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
+ <property name="overwrite">False</property>
+ <property name="accepts_tab">False</property>
+ <property name="justification">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap_mode">GTK_WRAP_WORD</property>
+ <property name="cursor_visible">False</property>
+ <property name="pixels_above_lines">0</property>
+ <property name="pixels_below_lines">0</property>
+ <property name="pixels_inside_wrap">0</property>
+ <property name="left_margin">0</property>
+ <property name="right_margin">0</property>
+ <property name="indent">0</property>
+ <property name="text" translatable="yes">Kevin Bagust, John M Bell, James Bursa, Matthew Hambley, Rob Jackson, Rob Kendrick, Jeffrey Lee, Adrian Lees, Phil Mellor, Philip Pemberton, Daniel Silverstone, Andrew Timmins, John Tytgat, and Richard Wilson.</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label120">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Written by</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow4">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTextView" id="textview3">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
+ <property name="overwrite">False</property>
+ <property name="accepts_tab">False</property>
+ <property name="justification">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap_mode">GTK_WRAP_WORD</property>
+ <property name="cursor_visible">False</property>
+ <property name="pixels_above_lines">0</property>
+ <property name="pixels_below_lines">0</property>
+ <property name="pixels_inside_wrap">0</property>
+ <property name="left_margin">0</property>
+ <property name="right_margin">0</property>
+ <property name="indent">0</property>
+ <property name="text" translatable="yes">Sebastian Barthel, Bruno D'Arcangeli, Michael Drake, Andrew Duffell, Richard Hallas, Gerard van Katwijk, Jérôme Mathevet, and Simon Voortman.</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label121">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Graphics/Translations by</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow5">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTextView" id="textview4">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
+ <property name="overwrite">False</property>
+ <property name="accepts_tab">False</property>
+ <property name="justification">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap_mode">GTK_WRAP_NONE</property>
+ <property name="cursor_visible">False</property>
+ <property name="pixels_above_lines">0</property>
+ <property name="pixels_below_lines">0</property>
+ <property name="pixels_inside_wrap">0</property>
+ <property name="left_margin">0</property>
+ <property name="right_margin">0</property>
+ <property name="indent">0</property>
+ <property name="text" translatable="yes"> GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label122">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Licence</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
</glade-interface>
16 years, 2 months
r3028 jmb - in /trunk/netsurf/render: box.c box.h box_construct.c box_normalise.c layout.c
by netsurf@semichrome.net
Author: jmb
Date: Sat Nov 4 19:53:22 2006
New Revision: 3028
URL: http://svn.semichrome.net?rev=3028&view=rev
Log:
Initial work for display: list-item support
Modified:
trunk/netsurf/render/box.c
trunk/netsurf/render/box.h
trunk/netsurf/render/box_construct.c
trunk/netsurf/render/box_normalise.c
trunk/netsurf/render/layout.c
Modified: trunk/netsurf/render/box.c
URL: http://svn.semichrome.net/trunk/netsurf/render/box.c?rev=3028&r1=3027&r2=...
==============================================================================
--- trunk/netsurf/render/box.c (original)
+++ trunk/netsurf/render/box.c Sat Nov 4 19:53:22 2006
@@ -495,6 +495,10 @@
case BOX_FLOAT_RIGHT: fprintf(stderr, "FLOAT_RIGHT "); break;
case BOX_BR: fprintf(stderr, "BR "); break;
case BOX_TEXT: fprintf(stderr, "TEXT "); break;
+ case BOX_LIST: fprintf(stderr, "LIST "); break;
+ case BOX_LIST_ITEM: fprintf(stderr, "LIST_ITEM "); break;
+ case BOX_LIST_MARKER: fprintf(stderr, "LIST_MARKER "); break;
+ case BOX_LIST_PRINCIPAL: fprintf(stderr, "LIST_PRINCIPAL "); break;
default: fprintf(stderr, "Unknown box type ");
}
Modified: trunk/netsurf/render/box.h
URL: http://svn.semichrome.net/trunk/netsurf/render/box.h?rev=3028&r1=3027&r2=...
==============================================================================
--- trunk/netsurf/render/box.h (original)
+++ trunk/netsurf/render/box.h Sat Nov 4 19:53:22 2006
@@ -60,15 +60,19 @@
* A box tree is "normalized" if the following is satisfied:
* \code
* parent permitted child nodes
- * BLOCK, INLINE_BLOCK BLOCK, INLINE_CONTAINER, TABLE
+ * BLOCK, INLINE_BLOCK BLOCK, INLINE_CONTAINER, TABLE, LIST
* INLINE_CONTAINER INLINE, INLINE_BLOCK, FLOAT_LEFT, FLOAT_RIGHT, BR, TEXT,
* INLINE_END
* INLINE none
* TABLE at least 1 TABLE_ROW_GROUP
* TABLE_ROW_GROUP at least 1 TABLE_ROW
* TABLE_ROW at least 1 TABLE_CELL
- * TABLE_CELL BLOCK, INLINE_CONTAINER, TABLE (same as BLOCK)
- * FLOAT_(LEFT|RIGHT) exactly 1 BLOCK or TABLE \endcode
+ * TABLE_CELL BLOCK, INLINE_CONTAINER, TABLE, LIST (same as BLOCK)
+ * FLOAT_(LEFT|RIGHT) exactly 1 BLOCK or TABLE
+ * LIST at least 1 LIST_ITEM
+ * LIST_ITEM exactly 1 LIST_MARKER and exactly 1 LIST_PRINCIPAL
+ * LIST_PRINCIPAL BLOCK, INLINE_CONTAINER, TABLE, LIST (same as BLOCK)
+ * \endcode
*/
#ifndef _NETSURF_RENDER_BOX_H_
@@ -93,7 +97,8 @@
BOX_TABLE_ROW_GROUP,
BOX_FLOAT_LEFT, BOX_FLOAT_RIGHT,
BOX_INLINE_BLOCK, BOX_BR, BOX_TEXT,
- BOX_INLINE_END
+ BOX_INLINE_END,
+ BOX_LIST, BOX_LIST_ITEM, BOX_LIST_MARKER, BOX_LIST_PRINCIPAL
} box_type;
struct rect {
Modified: trunk/netsurf/render/box_construct.c
URL: http://svn.semichrome.net/trunk/netsurf/render/box_construct.c?rev=3028&r...
==============================================================================
--- trunk/netsurf/render/box_construct.c (original)
+++ trunk/netsurf/render/box_construct.c Sat Nov 4 19:53:22 2006
@@ -205,7 +205,7 @@
0, /*CSS_DISPLAY_INHERIT,*/
BOX_INLINE, /*CSS_DISPLAY_INLINE,*/
BOX_BLOCK, /*CSS_DISPLAY_BLOCK,*/
- BOX_BLOCK, /*CSS_DISPLAY_LIST_ITEM,*/
+ BOX_LIST_ITEM, /*CSS_DISPLAY_LIST_ITEM,*/
BOX_INLINE, /*CSS_DISPLAY_RUN_IN,*/
BOX_INLINE_BLOCK, /*CSS_DISPLAY_INLINE_BLOCK,*/
BOX_TABLE, /*CSS_DISPLAY_TABLE,*/
@@ -349,6 +349,10 @@
box_free_box(box);
return true;
}
+
+ /* if this is a list item, then reset the box type */
+ if (style->display == CSS_DISPLAY_LIST_ITEM)
+ box->type = BOX_LIST_ITEM;
if (!*inline_container &&
(box->type == BOX_INLINE ||
@@ -394,6 +398,59 @@
&inline_container_c,
href, target, title))
return false;
+ } else if (box->type == BOX_LIST_ITEM) {
+ /* list item: create marker box and recurse */
+ struct box *list_item;
+ struct box *marker;
+
+ /* create container box */
+ list_item = box_create(0, href, target, title, 0, content);
+ if (!list_item)
+ return false;
+ list_item->type = BOX_LIST_ITEM;
+
+ /* create marker - effectively a single INLINE */
+ /* marker style information is contained in PRINCIPAL box */
+ marker = box_create(box->style, href, target, title, 0,
+ content);
+ if (!marker)
+ return false;
+ marker->type = BOX_LIST_MARKER;
+ marker->clone = 1;
+
+ /** \todo marker content (list-style-type)
+ * need to traverse up the tree to find containing BOX_LIST,
+ * which contains the counter information */
+ marker->text = talloc_strdup(content, "1.");
+ if (!marker->text)
+ return false;
+ marker->space = 1;
+ marker->length = 2;
+
+ if (style->list_style_image.type ==
+ CSS_LIST_STYLE_IMAGE_URI) {
+ if (!html_fetch_object(content,
+ style->list_style_image.uri, marker,
+ 0, content->available_width, 1000,
+ false))
+ return false;
+ }
+
+ /* make box into principal block for list */
+ box->type = BOX_LIST_PRINCIPAL;
+
+ box_add_child(parent, list_item);
+ box_add_child(list_item, marker);
+ box_add_child(list_item, box);
+
+ /* and recurse */
+ inline_container_c = 0;
+ for (c = n->children; convert_children && c; c = c->next) {
+ if (!convert_xml_to_box(c, content, style,
+ box, &inline_container_c,
+ href, target, title))
+ return false;
+ }
} else {
if (style->float_ == CSS_FLOAT_LEFT ||
style->float_ == CSS_FLOAT_RIGHT) {
Modified: trunk/netsurf/render/box_normalise.c
URL: http://svn.semichrome.net/trunk/netsurf/render/box_normalise.c?rev=3028&r...
==============================================================================
--- trunk/netsurf/render/box_normalise.c (original)
+++ trunk/netsurf/render/box_normalise.c Sat Nov 4 19:53:22 2006
@@ -57,26 +57,32 @@
unsigned int col_span, unsigned int row_span,
unsigned int *start_column);
static bool box_normalise_inline_container(struct box *cont, struct content *c);
+static bool box_normalise_list(struct box *cont, struct content *c);
+static bool box_normalise_list_item(struct box *cont, struct content *c);
/**
* Ensure the box tree is correctly nested by adding and removing nodes.
*
- * \param block box of type BLOCK, INLINE_BLOCK, or TABLE_CELL
+ * \param block box of type BLOCK, INLINE_BLOCK, TABLE_CELL or LIST_PRINCIPAL
* \param box_pool pool to allocate new boxes in
* \return true on success, false on memory exhaustion
*
* The tree is modified to satisfy the following:
* \code
* parent permitted child nodes
- * BLOCK, INLINE_BLOCK BLOCK, INLINE_CONTAINER, TABLE
+ * BLOCK, INLINE_BLOCK BLOCK, INLINE_CONTAINER, TABLE, LIST
* INLINE_CONTAINER INLINE, INLINE_BLOCK, FLOAT_LEFT, FLOAT_RIGHT, BR, TEXT
* INLINE, TEXT none
* TABLE at least 1 TABLE_ROW_GROUP
* TABLE_ROW_GROUP at least 1 TABLE_ROW
* TABLE_ROW at least 1 TABLE_CELL
* TABLE_CELL BLOCK, INLINE_CONTAINER, TABLE (same as BLOCK)
- * FLOAT_(LEFT|RIGHT) exactly 1 BLOCK or TABLE \endcode
+ * FLOAT_(LEFT|RIGHT) exactly 1 BLOCK or TABLE
+ * LIST at least 1 LIST_ITEM
+ * LIST_ITEM exactly 1 LIST_MARKER and exactly 1 LIST_PRINCIPAL
+ * LIST_PRINCIPAL BLOCK, INLINE_CONTAINER, TABLE, LIST (same as BLOCK)
+ * \endcode
*/
bool box_normalise_block(struct box *block, struct content *c)
@@ -84,12 +90,14 @@
struct box *child;
struct box *next_child;
struct box *table;
+ struct box *list;
struct css_style *style;
assert(block != 0);
LOG(("block %p, block->type %u", block, block->type));
assert(block->type == BOX_BLOCK || block->type == BOX_INLINE_BLOCK ||
- block->type == BOX_TABLE_CELL);
+ block->type == BOX_TABLE_CELL ||
+ block->type == BOX_LIST_PRINCIPAL);
gui_multitask();
for (child = block->children; child != 0; child = next_child) {
@@ -158,6 +166,48 @@
if (!box_normalise_table(table, c))
return false;
break;
+ case BOX_LIST:
+ if (!box_normalise_list(child, c))
+ return false;
+ break;
+ case BOX_LIST_ITEM:
+ /* Insert implied BOX_LIST */
+ style = css_duplicate_style(block->style);
+ if (!style)
+ return false;
+ css_cascade(style, &css_blank_style);
+ list = box_create(style, 0, 0, 0, 0, c);
+ if (!list) {
+ css_free_style(style);
+ return false;
+ }
+ list->type = BOX_LIST;
+ if (child->prev == 0)
+ block->children = list;
+ else
+ child->prev->next = list;
+ list->prev = child->prev;
+ while (child != 0 && child->type == BOX_LIST_ITEM) {
+ box_add_child(list, child);
+ next_child = child->next;
+ child->next = 0;
+ child = next_child;
+ }
+ list->last->next = 0;
+ list->next = next_child = child;
+ if (list->next)
+ list->next->prev = list;
+ else
+ block->last = list;
+ list->parent = block;
+ if (!box_normalise_list(list, c))
+ return false;
+ break;
+ case BOX_LIST_MARKER:
+ case BOX_LIST_PRINCIPAL:
+ /* Should be wrapped in BOX_LIST_ITEM */
+ assert(0);
+ break;
default:
assert(0);
}
@@ -205,6 +255,8 @@
case BOX_TABLE:
case BOX_TABLE_ROW:
case BOX_TABLE_CELL:
+ case BOX_LIST:
+ case BOX_LIST_ITEM:
/* insert implied table row group */
assert(table->style != NULL);
style = css_duplicate_style(table->style);
@@ -233,12 +285,15 @@
child->type == BOX_INLINE_CONTAINER ||
child->type == BOX_TABLE ||
child->type == BOX_TABLE_ROW ||
- child->type == BOX_TABLE_CELL)) {
+ child->type == BOX_TABLE_CELL ||
+ child->type == BOX_LIST ||
+ child->type == BOX_LIST_ITEM)) {
box_add_child(row_group, child);
next_child = child->next;
child->next = 0;
child = next_child;
}
+ assert(row_group->last != NULL);
row_group->last->next = 0;
row_group->next = next_child = child;
if (row_group->next)
@@ -259,6 +314,11 @@
case BOX_TEXT:
/* should have been wrapped in inline
container by convert_xml_to_box() */
+ assert(0);
+ break;
+ case BOX_LIST_MARKER:
+ case BOX_LIST_PRINCIPAL:
+ /* Should have been wrapped in BOX_LIST_ITEM */
assert(0);
break;
default:
@@ -381,6 +441,8 @@
case BOX_TABLE:
case BOX_TABLE_ROW_GROUP:
case BOX_TABLE_CELL:
+ case BOX_LIST:
+ case BOX_LIST_ITEM:
/* insert implied table row */
assert(row_group->style != NULL);
style = css_duplicate_style(row_group->style);
@@ -404,12 +466,15 @@
child->type == BOX_INLINE_CONTAINER ||
child->type == BOX_TABLE ||
child->type == BOX_TABLE_ROW_GROUP ||
- child->type == BOX_TABLE_CELL)) {
+ child->type == BOX_TABLE_CELL ||
+ child->type == BOX_LIST ||
+ child->type == BOX_LIST_ITEM)) {
box_add_child(row, child);
next_child = child->next;
child->next = 0;
child = next_child;
}
+ assert(row->last != NULL);
row->last->next = 0;
row->next = next_child = child;
if (row->next)
@@ -430,6 +495,11 @@
container by convert_xml_to_box() */
assert(0);
break;
+ case BOX_LIST_MARKER:
+ case BOX_LIST_PRINCIPAL:
+ /* should have been wrapped in LIST_ITEM */
+ assert(0);
+ break;
default:
assert(0);
}
@@ -480,6 +550,8 @@
case BOX_TABLE:
case BOX_TABLE_ROW_GROUP:
case BOX_TABLE_ROW:
+ case BOX_LIST:
+ case BOX_LIST_ITEM:
/* insert implied table cell */
assert(row->style != NULL);
style = css_duplicate_style(row->style);
@@ -503,12 +575,15 @@
child->type == BOX_INLINE_CONTAINER ||
child->type == BOX_TABLE ||
child->type == BOX_TABLE_ROW_GROUP ||
- child->type == BOX_TABLE_ROW)) {
+ child->type == BOX_TABLE_ROW ||
+ child->type == BOX_LIST ||
+ child->type == BOX_LIST_ITEM)) {
box_add_child(cell, child);
next_child = child->next;
child->next = 0;
child = next_child;
}
+ assert(cell->last != NULL);
cell->last->next = 0;
cell->next = next_child = child;
if (cell->next)
@@ -526,6 +601,11 @@
case BOX_TEXT:
/* should have been wrapped in inline
container by convert_xml_to_box() */
+ assert(0);
+ break;
+ case BOX_LIST_MARKER:
+ case BOX_LIST_PRINCIPAL:
+ /* should have been wrapped in a BOX_LIST_ITEM */
assert(0);
break;
default:
@@ -703,6 +783,10 @@
case BOX_TABLE_ROW_GROUP:
case BOX_TABLE_ROW:
case BOX_TABLE_CELL:
+ case BOX_LIST:
+ case BOX_LIST_ITEM:
+ case BOX_LIST_MARKER:
+ case BOX_LIST_PRINCIPAL:
default:
assert(0);
}
@@ -712,3 +796,58 @@
return true;
}
+
+bool box_normalise_list(struct box *cont, struct content *c)
+{
+ struct box *child;
+ struct box *next_child;
+
+ assert(cont != 0);
+ assert(cont->type == BOX_LIST);
+
+ for (child = cont->children; child; child = next_child) {
+ next_child = child->next;
+ switch (child->type) {
+ case BOX_LIST_ITEM:
+ /* ok */
+ if (!box_normalise_list_item(child, c))
+ return false;
+ break;
+ case BOX_LIST_MARKER:
+ case BOX_LIST_PRINCIPAL:
+ /** \todo imply LIST_ITEM here? */
+ default:
+ assert(0);
+ }
+ }
+
+ return true;
+}
+
+
+bool box_normalise_list_item(struct box *cont, struct content *c)
+{
+ struct box *child;
+ struct box *next_child;
+
+ assert(cont != 0);
+ assert(cont->type == BOX_LIST_ITEM);
+
+ for (child = cont->children; child; child = next_child) {
+ next_child = child->next;
+ switch (child->type) {
+ case BOX_LIST_MARKER:
+ /* ok */
+ break;
+ case BOX_LIST_PRINCIPAL:
+ /* ok */
+ if (!box_normalise_block(child, c))
+ return false;
+ break;
+ default:
+ assert(0);
+ }
+ }
+
+ return true;
+}
Modified: trunk/netsurf/render/layout.c
URL: http://svn.semichrome.net/trunk/netsurf/render/layout.c?rev=3028&r1=3027&...
==============================================================================
--- trunk/netsurf/render/layout.c (original)
+++ trunk/netsurf/render/layout.c Sat Nov 4 19:53:22 2006
@@ -48,6 +48,7 @@
static void layout_minmax_block(struct box *block);
static bool layout_block_object(struct box *block);
static void layout_block_find_dimensions(int available_width, struct box *box);
+static void layout_list_find_dimensions(int available_width, struct box *box);
static int layout_solve_width(int available_width, int width,
int margin[4], int padding[4], int border[4]);
static void layout_float_find_dimensions(int available_width,
@@ -59,6 +60,9 @@
static int layout_clear(struct box *fl, css_clear clear);
static void find_sides(struct box *fl, int y0, int y1,
int *x0, int *x1, struct box **left, struct box **right);
+static void layout_minmax_list(struct box *box);
+static void layout_minmax_list_item(struct box *box);
+static bool layout_list(struct box *box, struct content *content);
static void layout_minmax_inline_container(struct box *inline_container);
static int line_height(struct css_style *style);
static bool layout_line(struct box *first, int *width, int *y,
@@ -149,7 +153,7 @@
/**
* Layout a block formatting context.
*
- * \param block BLOCK, INLINE_BLOCK, or TABLE_CELL to layout
+ * \param block BLOCK, INLINE_BLOCK, TABLE_CELL or LIST_PRINCIPAL to layout
* \param content memory pool for any new boxes
* \return true on success, false on memory exhaustion
*
@@ -168,7 +172,8 @@
assert(block->type == BOX_BLOCK ||
block->type == BOX_INLINE_BLOCK ||
- block->type == BOX_TABLE_CELL);
+ block->type == BOX_TABLE_CELL ||
+ block->type == BOX_LIST_PRINCIPAL);
gui_multitask();
@@ -210,7 +215,8 @@
* to each in the order shown. */
while (box) {
assert(box->type == BOX_BLOCK || box->type == BOX_TABLE ||
- box->type == BOX_INLINE_CONTAINER);
+ box->type == BOX_INLINE_CONTAINER ||
+ box->type == BOX_LIST);
assert(margin_box);
/* Tables are laid out before being positioned, because the
@@ -235,7 +241,8 @@
return false;
layout_solve_width(box->parent->width, box->width,
box->margin, box->padding, box->border);
- }
+ } else if (box->type == BOX_LIST)
+ layout_list_find_dimensions(box->parent->width, box);
/* Position box: horizontal. */
box->x = box->parent->padding[LEFT] + box->margin[LEFT] +
@@ -308,6 +315,9 @@
cx = x0;
box->y += y - cy;
cy = y;
+ } else if (box->type == BOX_LIST) {
+ if (!layout_list(box, content))
+ return false;
}
/* Advance to next box. */
@@ -386,7 +396,7 @@
/**
* Calculate minimum and maximum width of a block.
*
- * \param block box of type BLOCK, INLINE_BLOCK, or TABLE_CELL
+ * \param block box of type BLOCK, INLINE_BLOCK, TABLE_CELL, or LIST_PRINCIPAL
* \post block->min_width and block->max_width filled in,
* 0 <= block->min_width <= block->max_width
*/
@@ -400,7 +410,8 @@
assert(block->type == BOX_BLOCK ||
block->type == BOX_INLINE_BLOCK ||
- block->type == BOX_TABLE_CELL);
+ block->type == BOX_TABLE_CELL ||
+ block->type == BOX_LIST_PRINCIPAL);
/* check if the widths have already been calculated */
if (block->max_width != UNKNOWN_MAX_WIDTH)
@@ -426,6 +437,9 @@
break;
case BOX_TABLE:
layout_minmax_table(child);
+ break;
+ case BOX_LIST:
+ layout_minmax_list(child);
break;
default:
assert(0);
@@ -561,6 +575,64 @@
margin[BOTTOM] = 0;
}
+
+/**
+ * Compute dimensions of box, margins, paddings, and borders for a list.
+ *
+ * Similar to layout_block_find_dimensions()
+ */
+
+void layout_list_find_dimensions(int available_width, struct box *box)
+{
+ int width, height;
+ int *margin = box->margin;
+ int *padding = box->padding;
+ int *border = box->border;
+ struct css_style *style = box->style;
+ struct box *c;
+
+ layout_find_dimensions(available_width, style,
+ &width, &height, margin, padding, border);
+
+ for (c = box->children; c; c = c->next) {
+ struct box *marker, *principal;
+
+ marker = c->children;
+ principal = marker->next;
+
+ /** \todo handle marker */
+ marker->width = marker->height = 0;
+
+ layout_block_find_dimensions(available_width, principal);
+
+ if (width < principal->x + principal->width +
+ principal->padding[RIGHT] +
+ principal->border[RIGHT] +
+ principal->margin[RIGHT])
+ width = principal->x + principal->width +
+ principal->padding[RIGHT] +
+ principal->border[RIGHT] +
+ principal->margin[RIGHT];
+
+ if (height < principal->y + principal->height +
+ principal->padding[BOTTOM] +
+ principal->border[BOTTOM] +
+ principal->margin[BOTTOM])
+ height = principal->y + principal->height +
+ principal->padding[BOTTOM] +
+ principal->border[BOTTOM] +
+ principal->margin[BOTTOM];
+ }
+
+ box->width = layout_solve_width(available_width, width, margin,
+ padding, border);
+ box->height = height;
+
+ if (margin[TOP] == AUTO)
+ margin[TOP] = 0;
+ if (margin[BOTTOM] == AUTO)
+ margin[BOTTOM] = 0;
+}
/**
* Solve the width constraint as given in CSS 2.1 section 10.3.3.
@@ -814,6 +886,127 @@
}
}
LOG(("x0 %i, x1 %i, left %p, right %p", *x0, *x1, *left, *right));
+}
+
+
+/**
+ * Calculate minimum and maximum widths of a list
+ */
+
+void layout_minmax_list(struct box *box)
+{
+ int min = 0, max = 0;
+ struct box *c;
+
+ assert(box->type == BOX_LIST);
+
+ /* check if we've already calculated the width */
+ if (box->max_width != UNKNOWN_MAX_WIDTH)
+ return;
+
+ for (c = box->children; c; c = c->next) {
+ layout_minmax_list_item(c);
+ if (min < c->min_width)
+ min = c->min_width;
+ if (max < c->max_width)
+ max = c->max_width;
+ }
+
+ box->min_width = min;
+ box->max_width = max;
+}
+
+
+/**
+ * Calculate minimum and maximum widths of a list item
+ */
+
+void layout_minmax_list_item(struct box *box)
+{
+ struct box *marker, *principal;
+
+ assert(box->type == BOX_LIST_ITEM);
+
+ /* check if we've already calculated the width */
+ if (box->max_width != UNKNOWN_MAX_WIDTH)
+ return;
+
+ marker = box->children;
+ principal = marker->next;
+
+ layout_minmax_block(principal);
+
+ /** \todo what on earth are we expected to do with the marker?
+ * AFAICS, none of Opera, Firefox nor Konqueror support
+ * display: list-item with list-style-position: outside
+ * In Opera/Firefox's case, they don't appear to bother to
+ * generate the marker box (probably following the "optional"
+ * wording of the spec - 12.5). Konqueror turns it into
+ * list-style-position: inside. */
+ marker->min_width = marker->max_width = 0;
+
+ box->min_width = principal->min_width + marker->min_width;
+ box->max_width = principal->max_width + marker->max_width;
+}
+
+
+/**
+ * Layout a list
+ *
+ * \param box list box
+ * \param content memory pool for any new boxes
+ * \return true on success, false on memory exhaustion
+ */
+
+bool layout_list(struct box *box, struct content *content)
+{
+ struct box *c;
+ int cy = 0;
+
+ assert(box->type == BOX_LIST);
+
+ for (c = box->children; c; c = c->next) {
+ struct box *marker, *principal;
+
+ assert(c->type == BOX_LIST_ITEM);
+
+ marker = c->children;
+ principal = marker->next;
+
+ c->x = 0;
+ c->y = cy;
+
+ /** \todo handle marker */
+ marker->x = marker->y = 0;
+
+ principal->x = 0;
+ principal->y = 0;
+ /* manipulate principal box's parent pointer so
+ * layout_block_context has a parent style to play with */
+ /** \todo is this sane? */
+ principal->parent = box;
+ layout_block_context(principal, content);
+ principal->parent = c;
+
+ if (c->width == UNKNOWN_WIDTH)
+ c->width = principal->x + principal->width +
+ principal->padding[RIGHT] +
+ principal->border[RIGHT] +
+ principal->margin[RIGHT];
+
+// if (c->height == AUTO)
+ c->height = principal->y + principal->height +
+ principal->padding[BOTTOM] +
+ principal->border[BOTTOM] +
+ principal->margin[BOTTOM];
+
+ cy += c->height;
+ }
+
+// if (box->height == AUTO)
+ box->height = cy - box->padding[TOP];
+
+ return true;
}
16 years, 2 months
r3026 bursa - in /trunk/netsurf: Docs/02-layout render/box_construct.c render/layout.c
by netsurf@semichrome.net
Author: bursa
Date: Sat Nov 4 19:17:11 2006
New Revision: 3026
URL: http://svn.semichrome.net?rev=3026&view=rev
Log:
Implement absolute positioned inlines.
Modified:
trunk/netsurf/Docs/02-layout
trunk/netsurf/render/box_construct.c
trunk/netsurf/render/layout.c
Modified: trunk/netsurf/Docs/02-layout
URL: http://svn.semichrome.net/trunk/netsurf/Docs/02-layout?rev=3026&r1=3025&r...
==============================================================================
--- trunk/netsurf/Docs/02-layout (original)
+++ trunk/netsurf/Docs/02-layout Sat Nov 4 19:17:11 2006
@@ -29,3 +29,19 @@
parent node.
The box tree can then be rendered using each node's coordinates.
+
+Absolute positioning
+--------------------
+Absolutely positioned boxes are constructed in the box tree in the same place as
+if they were not absolutely positioned. Inline boxes are created as
+INLINE_BLOCK, tables as TABLE, and other boxes as BLOCK (see
+box_solve_display()).
+
+During layout, absolutely positioned boxes in block context (BLOCK or TABLE) are
+given a position in layout_block_context(), but treated as having no height. In
+inline context (INLINE_BLOCK), they are given a position in layout_line(), but
+treated as having no width or height. This is done to determine the static
+position.
+
+An additional pass after main layout positions and layouts all absolutely
+positioned boxes (see layout_position_absolute()).
Modified: trunk/netsurf/render/box_construct.c
URL: http://svn.semichrome.net/trunk/netsurf/render/box_construct.c?rev=3026&r...
==============================================================================
--- trunk/netsurf/render/box_construct.c (original)
+++ trunk/netsurf/render/box_construct.c Sat Nov 4 19:17:11 2006
@@ -971,6 +971,19 @@
else /* 5. */
return;
+ /* Special case for absolute positioning: make absolute inlines into
+ * inline block so that the boxes are constructed in an inline container
+ * as if they were not absolutely positioned. Layout expects and
+ * handles this. */
+ if ((style->position == CSS_POSITION_ABSOLUTE ||
+ style->position == CSS_POSITION_FIXED) &&
+ (style->display == CSS_DISPLAY_INLINE ||
+ style->display == CSS_DISPLAY_INLINE_BLOCK ||
+ style->display == CSS_DISPLAY_INLINE_TABLE)) {
+ style->display = CSS_DISPLAY_INLINE_BLOCK;
+ return;
+ }
+
/* map specified value to computed value using table given in 9.7 */
if (style->display == CSS_DISPLAY_INLINE_TABLE)
style->display = CSS_DISPLAY_TABLE;
Modified: trunk/netsurf/render/layout.c
URL: http://svn.semichrome.net/trunk/netsurf/render/layout.c?rev=3026&r1=3025&...
==============================================================================
--- trunk/netsurf/render/layout.c (original)
+++ trunk/netsurf/render/layout.c Sat Nov 4 19:17:11 2006
@@ -1017,6 +1017,10 @@
if (b->type == BOX_FLOAT_LEFT || b->type == BOX_FLOAT_RIGHT)
continue;
+ if (b->type == BOX_INLINE_BLOCK &&
+ (b->style->position == CSS_POSITION_ABSOLUTE ||
+ b->style->position == CSS_POSITION_FIXED))
+ continue;
x += space_after;
@@ -1191,7 +1195,13 @@
LOG(("x0 %i, x1 %i, x1 - x0 %i", x0, x1, x1 - x0));
for (x = x_previous = 0, b = first; x <= x1 - x0 && b; b = b->next) {
LOG(("pass 2: b %p, x %i", b, x));
- if (b->type == BOX_INLINE || b->type == BOX_INLINE_BLOCK ||
+ if (b->type == BOX_INLINE_BLOCK &&
+ (b->style->position == CSS_POSITION_ABSOLUTE ||
+ b->style->position == CSS_POSITION_FIXED)) {
+ b->x = x + space_after;
+
+ } else if (b->type == BOX_INLINE ||
+ b->type == BOX_INLINE_BLOCK ||
b->type == BOX_TEXT ||
b->type == BOX_INLINE_END) {
assert(b->width != UNKNOWN_WIDTH);
@@ -1442,6 +1452,10 @@
d->x += x0;
d->y = *y - d->padding[TOP];
}
+ if (d->type == BOX_INLINE_BLOCK &&
+ (d->style->position == CSS_POSITION_ABSOLUTE ||
+ d->style->position == CSS_POSITION_FIXED))
+ continue;
if ((d->type == BOX_INLINE && (d->object || d->gadget)) ||
d->type == BOX_INLINE_BLOCK) {
h = d->border[TOP] + d->padding[TOP] + d->height +
@@ -2468,10 +2482,13 @@
/**
- * Layout absolutely positioned boxes in a block context.
+ * Recursively layout and position absolutely positioned boxes.
*
- * \param block box to layout children of
- * \param content memory pool for any new boxes
+ * \param box tree of boxes to layout
+ * \param containing_block current containing block
+ * \param cx position of box relative to containing_block
+ * \param cy position of box relative to containing_block
+ * \param content memory pool for any new boxes
* \return true on success, false on memory exhaustion
*/
@@ -2483,7 +2500,8 @@
struct box *c;
for (c = box->children; c; c = c->next) {
- if ((c->type == BOX_BLOCK || c->type == BOX_TABLE) &&
+ if ((c->type == BOX_BLOCK || c->type == BOX_TABLE ||
+ c->type == BOX_INLINE_BLOCK) &&
(c->style->position == CSS_POSITION_ABSOLUTE ||
c->style->position == CSS_POSITION_FIXED)) {
if (!layout_absolute(c, containing_block,
@@ -2509,8 +2527,11 @@
/**
* Layout and position an absolutely positioned box.
*
- * \param block box to layout and position
- * \param content memory pool for any new boxes
+ * \param box absolute box to layout and position
+ * \param containing_block containing block
+ * \param cx position of box relative to containing_block
+ * \param cy position of box relative to containing_block
+ * \param content memory pool for any new boxes
* \return true on success, false on memory exhaustion
*/
@@ -2527,7 +2548,8 @@
int available_width = containing_block->width;
int space;
- assert(box->type == BOX_BLOCK || box->type == BOX_TABLE);
+ assert(box->type == BOX_BLOCK || box->type == BOX_TABLE ||
+ box->type == BOX_INLINE_BLOCK);
/* The static position is where the box would be if it was not
* absolutely positioned. The x and y are filled in by
@@ -2689,7 +2711,8 @@
box->width = width;
box->height = height;
- if (box->type == BOX_BLOCK || box->object) {
+ if (box->type == BOX_BLOCK || box->type == BOX_INLINE_BLOCK ||
+ box->object) {
if (!layout_block_context(box, content))
return false;
} else if (box->type == BOX_TABLE) {
16 years, 2 months
r3025 jmb - /trunk/netsurf/riscos/query.c
by netsurf@semichrome.net
Author: jmb
Date: Sat Nov 4 12:38:24 2006
New Revision: 3025
URL: http://svn.semichrome.net?rev=3025&view=rev
Log:
Convert query button text to local encoding correctly
Modified:
trunk/netsurf/riscos/query.c
Modified: trunk/netsurf/riscos/query.c
URL: http://svn.semichrome.net/trunk/netsurf/riscos/query.c?rev=3025&r1=3024&r...
==============================================================================
--- trunk/netsurf/riscos/query.c (original)
+++ trunk/netsurf/riscos/query.c Sat Nov 4 12:38:24 2006
@@ -15,6 +15,7 @@
#include "netsurf/riscos/wimp_event.h"
#include "netsurf/utils/log.h"
#include "netsurf/utils/messages.h"
+#include "netsurf/utils/utf8.h"
#include "netsurf/utils/utils.h"
#define ICON_QUERY_MESSAGE 0
@@ -103,6 +104,8 @@
int width;
int len;
int x;
+ char *local_text = NULL;
+ utf8_convert_ret err;
qw = malloc(sizeof(struct gui_query_window));
if (!qw) {
@@ -122,10 +125,22 @@
if (!no) no = messages_get("No");
/* set the text of the 'Yes' button and size accordingly */
+ err = utf8_to_local_encoding(yes, 0, &local_text);
+ if (err != UTF8_CONVERT_OK) {
+ assert(err != UTF8_CONVERT_BADENC);
+ LOG(("utf8_to_local_encoding_failed"));
+ local_text = NULL;
+ }
+
icn = &query_template->icons[ICON_QUERY_YES];
- len = strnlen(yes, icn->data.indirected_text.size - 1);
- memcpy(icn->data.indirected_text.text, yes, len);
+ len = strnlen(local_text ? local_text : yes,
+ icn->data.indirected_text.size - 1);
+ memcpy(icn->data.indirected_text.text,
+ local_text ? local_text: yes, len);
icn->data.indirected_text.text[len] = '\0';
+
+ free(local_text);
+ local_text = NULL;
error = xwimptextop_string_width(icn->data.indirected_text.text, len, &width);
if (error) {
@@ -140,10 +155,22 @@
icn->extent.x0 = x = icn->extent.x1 - width;
/* set the text of the 'No' button and size accordingly */
+ err = utf8_to_local_encoding(no, 0, &local_text);
+ if (err != UTF8_CONVERT_OK) {
+ assert(err != UTF8_CONVERT_BADENC);
+ LOG(("utf8_to_local_encoding_failed"));
+ local_text = NULL;
+ }
+
icn = &query_template->icons[ICON_QUERY_NO];
- len = strnlen(no, icn->data.indirected_text.size - 1);
- memcpy(icn->data.indirected_text.text, no, len);
+ len = strnlen(local_text ? local_text : no,
+ icn->data.indirected_text.size - 1);
+ memcpy(icn->data.indirected_text.text,
+ local_text ? local_text : no, len);
icn->data.indirected_text.text[len] = '\0';
+
+ free(local_text);
+ local_text = NULL;
if (!query_no_width) query_no_width = icn->extent.x1 - icn->extent.x0;
icn->extent.x1 = x - 16;
16 years, 2 months
r3024 tlsa - in /trunk/netsurfweb: builds/top.de index.de themes/index.de
by netsurf@semichrome.net
Author: tlsa
Date: Fri Nov 3 15:52:27 2006
New Revision: 3024
URL: http://svn.semichrome.net?rev=3024&view=rev
Log:
Updated German web site translation. Thanks to Sebastian Barthel.
Modified:
trunk/netsurfweb/builds/top.de
trunk/netsurfweb/index.de
trunk/netsurfweb/themes/index.de
Modified: trunk/netsurfweb/builds/top.de
URL: http://svn.semichrome.net/trunk/netsurfweb/builds/top.de?rev=3024&r1=3023...
==============================================================================
--- trunk/netsurfweb/builds/top.de (original)
+++ trunk/netsurfweb/builds/top.de Fri Nov 3 15:52:27 2006
@@ -51,12 +51,12 @@
<li><a href="http://sudden.recoil.org/others/"
class="highlight">AcornURI</a>.</li>
<li><a href="/iconv/"
- class="highlight">Iconv</a>. (Be sure to follow the complete installation instructions for Iconv.)</li>
+ class="highlight">Iconv</a>. (Bitte die Installationsanleitung beachten.)</li>
<li><a href="http://www.tinct.net/tinct.asp"
class="highlight">Tinct</a>.</li>
</ul>
-<p><strong>Optional:</strong> download and install the <a href="http://www.beebware.com/software/mappings/">MimeMap datafile</a> if you don't already have one and NetSurf complains.</p>
+<p><strong>Optional:</strong> Eine <a href="http://www.beebware.com/software/mappings/">MimeMap Datei</a> sollte installiert werden, wenn noch keine auf dem Rechner vorhanden ist und Netsurf dies meldet.</p>
<!-- <p><strong>Optional:</strong> download and install the <a href="nsfonts.zip">fonts (360k)</a> to get improved font-family and font-variant support.</p> -->
Modified: trunk/netsurfweb/index.de
URL: http://svn.semichrome.net/trunk/netsurfweb/index.de?rev=3024&r1=3023&r2=3...
==============================================================================
--- trunk/netsurfweb/index.de (original)
+++ trunk/netsurfweb/index.de Fri Nov 3 15:52:27 2006
@@ -23,7 +23,7 @@
<h2>News</h2>
<p>Die aktuellen News können auf der <a href="index.en">englischen</a> NetSurf Homepage gelesen werden. Ältere News sind im <a href="archive">News-Archiv</a> zu finden.</p>
-<h2 id="Awards">Preise</h2>
+<h2 id="Awards">Auszeichnungen</h2>
<div class="award">
<a href="http://www.drobe.co.uk/riscos/artifact1517.html"><img src="webimages/da2005.jpg" alt=""></a>
Modified: trunk/netsurfweb/themes/index.de
URL: http://svn.semichrome.net/trunk/netsurfweb/themes/index.de?rev=3024&r1=30...
==============================================================================
--- trunk/netsurfweb/themes/index.de (original)
+++ trunk/netsurfweb/themes/index.de Fri Nov 3 15:52:27 2006
@@ -19,31 +19,31 @@
<h2 class="themename">Aquatic</h2>
<p class="themeimage"><img src="Aquatici.png" alt=""></p>
-<p class="themeauthor">Author: Matt Aubury (Port: <a href="http://www.richardspencer.freeuk.com/">Richard Spencer</a>)</p>
+<p class="themeauthor">Autor: Matt Aubury (Umsetzung: <a href="http://www.richardspencer.freeuk.com/">Richard Spencer</a>)</p>
<p class="themeinstall"><a href="Aquatic">Thema installieren...</a></p>
<h2 class="themename">IYONIX</h2>
<p class="themeimage"><img src="Iyonixi.png" alt=""></p>
-<p class="themeauthor">Author: <a href="http://hallas.net/">Richard G. Hallas</a></p>
+<p class="themeauthor">Autor: <a href="http://hallas.net/">Richard G. Hallas</a></p>
<p class="themeinstall"><a href="Iyonix">Thema installieren...</a></p>
<h2 class="themename">Qute</h2>
<p class="themeimage"><img src="Qutei.png" alt=""></p>
-<p class="themeauthor">Author: <a href="http://quadrone.org/">Arvid Axelsson</a> (Port: <a href="http://www.quantumsoft.co.uk/">Stuart Halliday</a>)</p>
+<p class="themeauthor">Autor: <a href="http://quadrone.org/">Arvid Axelsson</a> (Umsetzung: <a href="http://www.quantumsoft.co.uk/">Stuart Halliday</a>)</p>
<p class="themeinstall"><a href="Qute">Thema installieren...</a></p>
<h2 class="themename">Remembrance</h2>
<p class="themeimage"><img src="Remembrancei.png" alt=""></p>
-<p class="themeauthor">Author: Matt Aubury (Port: <a href="http://www.richardspencer.freeuk.com/">Richard Spencer</a>)</p>
+<p class="themeauthor">Autor: Matt Aubury (Umsetzung: <a href="http://www.richardspencer.freeuk.com/">Richard Spencer</a>)</p>
<p class="themeinstall"><a href="Remembrance">Thema installieren...</a></p>
<h2 class="themename">RISC OS 5</h2>
<p class="themeimage"><img src="RO5i.png" alt=""></p>
-<p class="themeauthor">Author: <a href="http://hallas.net/">Richard G. Hallas</a></p>
+<p class="themeauthor">Autor: <a href="http://hallas.net/">Richard G. Hallas</a></p>
<p class="themeinstall"><a href="RO5">Thema installieren...</a></p>
<div class="footer">
16 years, 2 months
r3023 tlsa - in /trunk/netsurf/!NetSurf/Resources: de/Messages en/Messages
by netsurf@semichrome.net
Author: tlsa
Date: Fri Nov 3 15:46:04 2006
New Revision: 3023
URL: http://svn.semichrome.net?rev=3023&view=rev
Log:
Updated German messages by Sebastian Barthel.
Modified:
trunk/netsurf/!NetSurf/Resources/de/Messages
trunk/netsurf/!NetSurf/Resources/en/Messages
Modified: trunk/netsurf/!NetSurf/Resources/de/Messages
URL: http://svn.semichrome.net/trunk/netsurf/%21NetSurf/Resources/de/Messages?...
==============================================================================
--- trunk/netsurf/!NetSurf/Resources/de/Messages (original)
+++ trunk/netsurf/!NetSurf/Resources/de/Messages Fri Nov 3 15:46:04 2006
@@ -458,7 +458,7 @@
# Fetch warning/error messages - displayed in status bar
#
-BadRedirect:Falsche URL für Redirect
+BadRedirect:Falsche URL für Redirect
FetchFailed:Kann Dokument nicht fetchen
NotCSS:Warnung: Stylesheet ist kein CSS
BadObject:Warnung: falscher Objekttyp
@@ -570,7 +570,7 @@
HelpIconMenu2-0:Erlaubt die Eingabe einer Web-Adresse.
HelpIconMenu2-1:Klicken mit AUSWAHL öffnet die Hotlist.
HelpIconMenu2-2:Klicken mit AUSWAHL öffnet das Fenster mit der globalen History.
-HelpIconMenu2-3:\Sopen the cookie management \w.
+HelpIconMenu2-3:Klicken mit AUSWAHL öffnet die Cookie Verwaltung.
HelpIconMenu3:Ãffnet einen Dialog mit Einstellungen für NetSurf.
HelpIconMenu4:Beendet das Programm.|MAlle Browserfenster werden geschlossen. Downloads werden abgebrochen.
@@ -602,7 +602,7 @@
HelpBrowserMenu2-0:Ãffnet die Homepage im aktuellen Fenster.
HelpBrowserMenu2-1:Schaltet zurück zur vorher dargestellten Seite.|MDie Seite wird dabei nicht aktualisiert.
HelpBrowserMenu2-2:Schaltet zur nächsten Seite in der lokalen History Liste.|MDie Seite wird dabei nicht aktualisiert.
-HelpBrowserMenu2-3:\Straverse up one level in the directory tree.
+HelpBrowserMenu2-3:Wechselt in das übergeordnete Verzeichnis in der Hierarchie des Verzeichnisbaumes.
HelpBrowserMenu2-4:Lädt die aktuelle Seite erneut.|MDie Seite wird aktualisiert. Ãltere Informationen zu dieser Seite, die noch im lokalen Zwischenpuffer gespeichert sind, werden dabei überschrieben.
HelpBrowserMenu2-5:Unterbricht den Ladevorgang und alle anderen Prozesse im aktuellen Browserfenster.
HelpBrowserMenu3:Untermenü Anzeige.|MFestlegen der Darstellungsparameter für das Browserfenster.
@@ -616,7 +616,7 @@
HelpBrowserMenu3-2-1:Schaltet die Adressleiste am oberen Fensterrand ein/aus.
HelpBrowserMenu3-2-2:Schaltet die Ladeaktivitätsanzeige am oberen Fensterrand ein/aus.|MDie Länge der Adressleiste wird angepaÃt.
HelpBrowserMenu3-2-3:Schaltet die Statusanzeige am unteren Fensterrand ein/aus.|MDie Länge des horizontalen Schiebebalkens wird angepaÃt.
-HelpBrowserMenu3-2-4:\Stoggle toolbar edit mode.
+HelpBrowserMenu3-2-4:Schaltet in den Modus zur Bearbeitung der Iconleiste am oberen Fensterrand.
HelpBrowserMenu3-3:Einstellungen zur Berechnung der Seitendarstellung.
HelpBrowserMenu3-3-0:Schaltet das Puffern von Objekten ein/aus.|MNachzuzeichnende Objekte, z.B. Bildanimationen oder Textbereiche, werden zwischengespeichert um Flackern zu vermeiden.
HelpBrowserMenu3-3-1:Schaltet das Puffern der gesamten Seitenberechnung ein/aus.|MDie komplette Seite wird nach Berechnung und Aufbau zwischengespeichert. Das ist vorteilhaft bei groÃen Hintergrundbildern und vielen sich überschneidenden Seitenelementen.
@@ -779,139 +779,139 @@
HelpConfigure9:Themenauswahl
HelpConfigure10:Sicherheitseinstellungen und Privatsphäre
-HelpCacheConfig:\Tcache configuration \w.
-HelpCacheConfig3:\Tamount of memory to be used for caching content.
-HelpCacheConfig4:\Sreduce the amount of memory.
-HelpCacheConfig5:\Sincrease the amount of memory.
-HelpCacheConfig10:\Tlength of time items are kept in the cache.
-HelpCacheConfig11:\Sreduce the cache duration.
-HelpCacheConfig12:\Sincrease the cache duration.
-HelpCacheConfig14:\Sdelete any redundant files from NetSurf's disc cache.
-HelpCacheConfig15:\Sreset the Cache options back to their default values.
-HelpCacheConfig16:\Sclose this \w without saving changes.|M\Areturn the cache options to the last saved configuration.
-HelpCacheConfig17:\Ssave these settings and close the \w.|M\Asave these settings without closing the \w.
-
-HelpConnectConfig:\Tconnection configuration \w
-HelpConnectConfig3:\Tcurrently selected proxy type.|MUse the menu to select a proxy type.
-HelpConnectConfig4:\Sselect a proxy type.
-HelpConnectConfig6:You can enter the proxy's host name here.
-HelpConnectConfig8:You can enter the proxy's port number here.
-HelpConnectConfig10:You can enter a username for proxies that require authentication here.
-HelpConnectConfig12:You can enter a password for proxies that require authentication here.
-HelpConnectConfig16:\Tmaximum number of simultanious fetches that NetSurf will perform.
-HelpConnectConfig17:\Sreduce the maximum number of simultanious fetches.
-HelpConnectConfig18:\Sincrease the maximum number of simultanious fetches.
-HelpConnectConfig20:\Tmaximum number of simultanious fetches that NetSurf will perform per host.
-HelpConnectConfig21:\Sreduce the maximum number of simultanious fetches per host.
-HelpConnectConfig22:\Sincrease the maximum number of simultanious fetches per host.
-HelpConnectConfig24:\Tmaximum number of persistent connections.
-HelpConnectConfig25:\Sreduce the maximum number of persistent connections.
-HelpConnectConfig26:\Sincrease the maximum number of persistent connections.
-HelpConnectConfig27:\Sreset the Connection options back to their default values.
-HelpConnectConfig28:\Sclose this \w without saving changes.|M\Areturn the cache options to the last saved configuration.
-HelpConnectConfig29:\Ssave these settings and close the \w.|M\Asave these settings without closing the \w.
-
-HelpContentConfig:\Tcontent configuration \w
-HelpContentConfig2:This indicates whether NetSurf will atempt to block advertisements on web pages|MIn rare circumstances, this option may cause valid content to be blocked too.
-HelpContentConfig3:This indicates whether NetSurf will stop web sites from automatically opening new windows on your desktop.
-HelpContentConfig4:This indicates whether NetSurf will allow external plug-ins to handle additional types of content, such as Flash.
-HelpContentConfig7:This indicates whether NetSurf will allow links to open in new windows.
-HelpContentConfig8:\Sreset the Content options back to their default values.
-HelpContentConfig9:\Sclose this \w without saving changes.|M\Areturn the cache options to the last saved configuration.
-HelpContentConfig10:\Ssave these settings and close the \w.|M\Asave these settings without closing the \w.
-
-HelpFontConfig:\font configuration \w
-HelpFontConfig3:\Tcurrently selected sans-serif font.|MNetSurf will use this font wherever a web page specifies a sans-serif typeface.
-HelpFontConfig4:\Sselect a sans-serif font.
-HelpFontConfig6:\Tcurrently selected serif font.|MNetSurf will use this font wherever a web page specifies a serif typeface.
-HelpFontConfig7:\Sselect a sans-serif font.
-HelpFontConfig9:\Tcurrently selected monospace font.|MNetSurf will use this font wherever a web page specifies a monospace typeface.
-HelpFontConfig10:\Sselect a monospace font.
-HelpFontConfig12:\Tcurrently selected cursive font.|MNetSurf will use this font wherever a web page specifies a cursive typeface.
-HelpFontConfig13:\Sselect a cursive font.
-HelpFontConfig15:\Tcurrently selected fantasy font.|MNetSurf will use this font wherever a web page specifies a fantasy typeface.
-HelpFontConfig16:\Sselect a fantasy font.
-HelpFontConfig18:\Tcurrently selected font family.|MNetSurf will use this wherever a web page does not specify a typeface.
-HelpFontConfig19:\Sselect a default font family.
-HelpFontConfig23:You can enter a default font size here.|MNetSurf will use this wherever a web page does not specify a font size of its own.
-HelpFontConfig24:\Sreduce the default font size.
-HelpFontConfig25:\Sincrease the default font size.
-HelpFontConfig28:You can enter a minimum font size here.|MNetSurf will not allow web pages to display smaller text than this.
-HelpFontConfig29:\Sreduce the minimum font size.
-HelpFontConfig30:\Sincrease the minimum font size.
-HelpFontConfig32:\Sreset the Font options back to their default values.
-HelpFontConfig33:\Sclose this \w without saving changes.|M\Areturn the cache options to the last saved configuration.
-HelpFontConfig34:\Ssave these settings and close the \w.|M\Asave these settings without closing the \w.
-
-HelpHomeConfig:\Thome page configuration \w
-HelpHomeConfig3:You can enter a default home page address here.
-HelpHomeConfig4:\Sselect a recently typed URL.|MThese addresses have recently been typed into a NetSurf browser \w's URL bar.
-HelpHomeConfig5:This indicates whether NetSurf will open a browser \w on start-up.
-HelpHomeConfig6:\Sreset the Home page options back to their default values.
-HelpHomeConfig7:\Sclose this \w without saving changes.|M\Areturn the cache options to the last saved configuration.
-HelpHomeConfig8:\Ssave these settings and close the \w.|M\Asave these settings without closing the \w.
-
-HelpImageConfig:\Timage configuration \w
-HelpImageConfig3:\Tcurrently selected foreground image quality.
-HelpImageConfig4:\Sselect a foreground image quality setting.|MError diffused provides the highest quality.
-HelpImageConfig6:\Tcurrently selected background image quality.
-HelpImageConfig7:\Sselect a background image quality setting.|MError diffused provides the highest quality.
-HelpImageConfig8:\Timage quality preview image.|MThe optimum results are achived with both foreground and background image quality set to error diffused.|MThe user guide provides more information on the implications of these options.
-HelpImageConfig12:You can enter the minimum time between animation frames here.|MA very low setting can cause your computer to slow down when rapid animations are displayed and is not suitable for slow computers.
-HelpImageConfig13:\Sreduce the minimum time between animation frames.
-HelpImageConfig14:\Sincrease the minimum time between animation frames.
-HelpImageConfig16:This indicates whether NetSurf will disable animations on web pages.|MWhen animations are disabled, NetSurf will show the first frame as a static image.
-HelpImageConfig17:\Sreset the Image options back to their default values.
-HelpImageConfig18:\Sclose this \w without saving changes.|M\Areturn the cache options to the last saved configuration.
-HelpImageConfig19:\Ssave these settings and close the \w.|M\Asave these settings without closing the \w.
-
-HelpInterfaceConfig:\Tinterface configuration \w
-HelpInterfaceConfig2:This indicates whether NetSurf will strip file extensions when saving files to disc.
-HelpInterfaceConfig3:This indicates whether NetSurf will ask for confirmation before overwriting files of the same name.
-HelpInterfaceConfig6:This indicates whether NetSurf's URL suggestion feature is enabled.|MURL suggestion shows options for completing URLs as you type into NetSurf's URL bar.
-HelpInterfaceConfig7:This indicates whether the URL for the item under the pointer in NetSurf's local history \w will be displayed.
-HelpInterfaceConfig10:This indicates whether NetSurf will use a thumbnail when iconising windows to the Pinboard.
-HelpInterfaceConfig11:\Sreset the Interface options back to their default values.
-HelpInterfaceConfig12:\Sclose this \w without saving changes.|M\Areturn the cache options to the last saved configuration.
-HelpInterfaceConfig13:\Ssave these settings and close the \w.|M\Asave these settings without closing the \w.
-
-HelpLanguageConfig:\Tlanguage configuration \w
-HelpLanguageConfig3:\Tcurrently selected interface language.|MThe interface language is the language used for NetSurf's messages and dialogue boxes.
-HelpLanguageConfig4:\Sselect an interface language.
-HelpLanguageConfig6:\Tcurrently selected web page language.|MIf a web site provides a choice of languages, NetSurf will request the page in your preferred language.
-HelpLanguageConfig7:\Sselect a preferred web page language.
-HelpLanguageConfig8:\Sreset the Language options back to their default values.
-HelpLanguageConfig9:\Sclose this \w without saving changes.|M\Areturn the cache options to the last saved configuration.
-HelpLanguageConfig10:\Ssave these settings and close the \w.|M\Asave these settings without closing the \w.
-
-HelpMemoryConfig:\Tmemory configuration \w
-HelpMemoryConfig3:You can enter the maximum amount of memory NetSurf will use for storing uncompressed images here.
-HelpMemoryConfig4:\Sreduce the amount of memory used for storing uncompressed images.
-HelpMemoryConfig5:\Sincrease the amount of memory used for storing uncompressed images.
-HelpMemoryConfig7:This indicates whether NetSurf will try to make an intelligent guess at the most suitable amount of memory to use for storing uncompressed images.
-HelpMemoryConfig9:You can enter the maximum amount of memory NetSurf will use for storing compressed images here.
-HelpMemoryConfig10:\Sreduce the amount of memory used for storing compressed images.
-HelpMemoryConfig11:\Sincrease the amount of memory used for storing compressed images.
-HelpMemoryConfig13:This indicates whether NetSurf will try to make an intelligent guess at the most suitable amount of memory to use for storing uncompressed images.
-HelpMemoryConfig14:\Sreset the Memory options back to their default values.
-HelpMemoryConfig15:\Sclose this \w without saving changes.|M\Areturn the cache options to the last saved configuration.
-HelpMemoryConfig16:\Ssave these settings and close the \w.|M\Asave these settings without closing the \w.
-
-HelpSecurityConfig:\Tsecurity configuration \w
-HelpSecurityConfig2:This indicates whether NetSurf will send site referral information to web servers.|MWhen this is enabled NetSurf will tell the web server of a new page the address of the site you came from, after following a link.
-HelpSecurityConfig6:You can enter the length of time that items are stored in global history here.
-HelpSecurityConfig7:\Sreduce the global history duration.
-HelpSecurityConfig8:\Sincrease the global history duration.
-HelpSecurityConfig10:\Sreset the Security options back to their default values.
-HelpSecurityConfig11:\Sclose this \w without saving changes.|M\Areturn the cache options to the last saved configuration.
-HelpSecurityConfig12:\Ssave these settings and close the \w.|M\Asave these settings without closing the \w.
-
-HelpThemeConfig:Dies ist die Themen-Konfiguration.
-HelpThemeConfig2:\Sreset the Theme options back to their default values.
-HelpThemeConfig3:\Sclose this \w without saving changes.|M\Areturn the cache options to the last saved configuration.
-HelpThemeConfig4:\Ssave these settings and close the \w.|M\Asave these settings without closing the \w.
-
-HelpThemePConfig:Dieser Dialog zeigt die verfügbaren Themen.|MDas ausgewählte Thema wird bei der Anzeige von Browserfenster, Hotlist und History eingesetzt.
+HelpCacheConfig:Das ist das Fenster der Cache-Konfiguration.
+HelpCacheConfig3:SpeichergröÃe, die verwendet wird um Inhalte zwischenzuspeichern.
+HelpCacheConfig4:Klicken mit AUSWAHL verringert die GröÃe des Cachespeichers.
+HelpCacheConfig5:Klicken mit AUSWAHL vergröÃert die GröÃe des Cachespeichers.
+HelpCacheConfig10:Zeitdauer für die Objekte im Cache gespeichert bleiben.
+HelpCacheConfig11:Klicken mit AUSWAHL verringert die Zeitdauer.
+HelpCacheConfig12:Klicken mit AUSWAHL vergröÃert die Zeitdauer.
+HelpCacheConfig14:Löscht alle mehrfach vorhandenen Objekte aus dem Cache.
+HelpCacheConfig15:Stellt die Standardeinstellungen wieder her.
+HelpCacheConfig16:Klicken mit AUSWAHL schlieÃt das Fenster ohne die Ãnderungen zu speichern.|MKlicken mit SPEZIAL stellt die zuletzt abgespeicherten Einstellungen wieder her.
+HelpCacheConfig17:Klicken mit AUSWAHL speichert die Einstellungen und schlieÃt das Fenster.|MKlicken mit SPEZIAL speichert die Einstellungen ohne das Fenster zu schlieÃen.
+
+HelpConnectConfig:Das ist das Fenster zur Einstellung der Parameter für die Netzanbindung.
+HelpConnectConfig3:Aktuell gewählter Proxytyp.|MMit dem Menü kann ein anderer Typ eingestellt werden.
+HelpConnectConfig4:Klicken mit AUSWAHL um einen anderen Proxytyp auszuwählen.
+HelpConnectConfig6:Hier kann der Hostname des Proxys eingegeben werden.
+HelpConnectConfig8:Hier kann die zugehörige Portnummer eingestellt werden.
+HelpConnectConfig10:Hier kann ein Username eingegeben werden, wenn der Proxy das erfordert.
+HelpConnectConfig12:Hier kann das zum Usernamen gehörige Passwort eingegeben werden.
+HelpConnectConfig16:Das ist die Maximalzahl simultaner Fetches, die NetSurf verwenden soll.
+HelpConnectConfig17:Klicken mit AUSWAHL verringert die Maximalzahl simultaner Fetches.
+HelpConnectConfig18:Klicken mit AUSWAHL vergröÃert die Maximalzahl simultaner Fetches.
+HelpConnectConfig20:Das ist die Maximalzahl simultaner Fetches, die je Host von NetSurf verwendet werden.
+HelpConnectConfig21:Klicken mit AUSWAHL verringert die Maximalzahl simultaner Fetches je Host.
+HelpConnectConfig22:Klicken mit AUSWAHL vergröÃert die Maximalzahl simultaner Fetches je Host.
+HelpConnectConfig24:Das ist die Maximalzahl aufrechtzuerhaltender Verbindungen.
+HelpConnectConfig25:Klicken mit AUSWAHL verringert die Maximalzahl offengehaltener Verbindungen.
+HelpConnectConfig26:Klicken mit AUSWAHL vergröÃert die Maximalzahl offengehaltener Verbindungen.
+HelpConnectConfig27:Stellt die Standardeinstellungen wieder her.
+HelpConnectConfig28:Klicken mit AUSWAHL schlieÃt das Fenster ohne die Ãnderungen zu speichern.|MKlicken mit SPEZIAL stellt die zuletzt abgespeicherten Einstellungen wieder her.
+HelpConnectConfig29:Klicken mit AUSWAHL speichert die Einstellungen und schlieÃt das Fenster.|MKlicken mit SPEZIAL speichert die Einstellungen ohne das Fenster zu schlieÃen.
+
+HelpContentConfig:Fenster zur Einstellung des Browserverhaltens bei bestimmten Seiteninhalten
+HelpContentConfig2:Stellt ein, ob NetSurf versuchen soll, die auf Webseiten eingeblendete Werbung automatisch zu unterdrücken.|MIn seltenen Fällen wird dadurch jedoch auch 'echter' Seiteninhalt geblockt.
+HelpContentConfig3:Stellt ein, ob NetSurf das automatische Ãffnen neuer Fenster auf dem Desktop unterbinden soll.
+HelpContentConfig4:Stellt ein, ob externe Pluginroutinen genutzt werden dürfen, um Zusatzinhalte darzustellen (z.B. Flash).
+HelpContentConfig7:Stellt ein, ob NetSurf erlaubt, daà Links beim Aufruf neue Browserfenster öffnen dürfen.
+HelpContentConfig8:Stellt die Standardeinstellungen wieder her.
+HelpContentConfig9:Klicken mit AUSWAHL schlieÃt das Fenster ohne die Ãnderungen zu speichern.|MKlicken mit SPEZIAL stellt die zuletzt abgespeicherten Einstellungen wieder her.
+HelpContentConfig10:Klicken mit AUSWAHL speichert die Einstellungen und schlieÃt das Fenster.|MKlicken mit SPEZIAL speichert die Einstellungen ohne das Fenster zu schlieÃen.
+
+HelpFontConfig:Konfigurationsfenster zur Einstellung der verwendeten Schriftarten
+HelpFontConfig3:Das ist die aktuell gewählte Schriftart für Sans-serif.|MNetSurf wird diese Schriftart überall dort verwenden, wo von der Webseite ein Schriftbild in Sans-serif vorgegeben wird.
+HelpFontConfig4:Klicken mit AUSWAHL, um eine Schriftart auszuwählen.
+HelpFontConfig6:Das ist die aktuell gewählte Schriftart für Serif.|MNetSurf wird diese Schriftart überall dort verwenden, wo von der Webseite ein Schriftbild in Serif vorgegeben wird.
+HelpFontConfig7:Klicken mit AUSWAHL, um eine Schriftart auszuwählen.
+HelpFontConfig9:Das ist die aktuell gewählte Schriftart für Monospace.|MNetSurf wird diese Schriftart überall dort verwenden, wo von der Webseite ein Schriftbild in Monospace vorgegeben wird.
+HelpFontConfig10:Klicken mit AUSWAHL, um eine Schriftart auszuwählen.
+HelpFontConfig12:Das ist die aktuell gewählte Schriftart für Kursiv.|MNetSurf wird diese Schriftart überall dort verwenden, wo von der Webseite ein Schriftbild in Kursiv vorgegeben wird.
+HelpFontConfig13:Klicken mit AUSWAHL, um eine Schriftart auszuwählen.
+HelpFontConfig15:Das ist die aktuell gewählte Schriftart für Fantasy.|MNetSurf wird diese Schriftart überall dort verwenden, wo von der Webseite ein Schriftbild in Fantasy vorgegeben wird.
+HelpFontConfig16:Klicken mit AUSWAHL, um eine Schriftart auszuwählen.
+HelpFontConfig18:Das ist die aktuell gewählte Schriftart für die Standardtextanzeige.|MNetSurf wird diese Schriftart überall dort verwenden, wo von der Webseite KEIN bestimmtes Schriftbild vorgegeben wird.
+HelpFontConfig19:Klicken mit AUSWAHL, um eine Schriftart auszuwählen.
+HelpFontConfig23:Hier kann eine StandarfontgröÃe gewählt werden.|MNetSurf wird diese GröÃe immer dann verwenden, wenn von der Webseite keine eigene SchriftgröÃe eingestellt wird.
+HelpFontConfig24:Klicken mit AUSWAHL verkleinert die StandardfontgröÃe.
+HelpFontConfig25:Klicken mit AUSWAHL vergröÃert die StandardfontgröÃe.
+HelpFontConfig28:Hier kann eine minimale SchriftgröÃe eingestellt werden.|MNetSurf wird keine Darstellung von noch kleineren Schriften zulassen.
+HelpFontConfig29:Klicken mit AUSWAHL verkleinert die minimal zugelassene SchriftgröÃe.
+HelpFontConfig30:Klicken mit AUSWAHL vergröÃert die minimal zugelassene SchriftgröÃe.
+HelpFontConfig32:Stellt die Standardeinstellungen wieder her.
+HelpFontConfig33:Klicken mit AUSWAHL schlieÃt das Fenster ohne die Ãnderungen zu speichern.|MKlicken mit SPEZIAL stellt die zuletzt abgespeicherten Einstellungen wieder her.
+HelpFontConfig34:Klicken mit AUSWAHL speichert die Einstellungen und schlieÃt das Fenster.|MKlicken mit SPEZIAL speichert die Einstellungen ohne das Fenster zu schlieÃen.
+
+HelpHomeConfig:Homepage Konfiguration
+HelpHomeConfig3:Hier kann die Webadresse der Homepage eingegeben werden.
+HelpHomeConfig4:Klicken mit AUSWAHL zur schnellen Auswahl einer Adresse.|MDie angezeigten Adressen wurden in letzter Zeit in die Adressleiste eines Browserfensters eingegeben.
+HelpHomeConfig5:Stellt ein, ob NetSurf beim Starten automatisch ein Browserfenster öffnet.
+HelpHomeConfig6:Stellt die Standardeinstellungen wieder her.
+HelpHomeConfig7:Klicken mit AUSWAHL schlieÃt das Fenster ohne die Ãnderungen zu speichern.|MKlicken mit SPEZIAL stellt die zuletzt abgespeicherten Einstellungen wieder her.
+HelpHomeConfig8:Klicken mit AUSWAHL speichert die Einstellungen und schlieÃt das Fenster.|MKlicken mit SPEZIAL speichert die Einstellungen ohne das Fenster zu schlieÃen.
+
+HelpImageConfig:Das ist das Fenster zur Konfiguration der Bilddarstellungsoptionen.
+HelpImageConfig3:Das ist die aktuell gewählte Qualität für die Darstellung der Vordergrundbilder.
+HelpImageConfig4:Klicken mit AUSWAHL zur Wahl der Anzeigequalität für Vordergrundbilder.|MError-Diffusion bietet die beste Qualität.
+HelpImageConfig6:Das ist die aktuell gewählte Qualität für die Darstellung der Hintergrundbilder.
+HelpImageConfig7:Klicken mit AUSWAHL zur Wahl der Anzeigequalität für Hintergrundbilder.|MError-Diffusion bietet die beste Qualität.
+HelpImageConfig8:Das ist das Vorschaubild.|MDie qualitativ besten Anzeigeresultate werden erzielt, wenn Vorder- und Hintergrundbilder per Error-Diffusion dargestellt werden.|MGenauere Informationen gibt es in der Dokumentation.
+HelpImageConfig12:Hier kann die minimale Zeitverzögerung zwischen den Frames einer Animation vorgegeben werden.|MSehr niedrige Werte können bei raschen Animationen hohe Rechenleistungen erfordern und sind darum nicht geeignet für langsamere Computer.
+HelpImageConfig13:Klicken mit AUSWAHL verkleinert die minimale Wartezeit zwischen aufeinanderfolgenden Einzelbildern einer Animation.
+HelpImageConfig14:Klicken mit AUSWAHL vergröÃert die minimale Wartezeit zwischen aufeinanderfolgenden Einzelbildern einer Animation.
+HelpImageConfig16:Erlaubt das Abschalten der Animationsdarstellung auf Webseiten.|MSind die Animationen abgeschaltet, wird von NetSurf lediglich das erste Einzelbild der Animationsfolge als einfaches Bild angezeigt.
+HelpImageConfig17:Stellt die Bildoptionen zurück auf die Standardwerte.
+HelpImageConfig18:Klicken mit AUSWAHL schlieÃt das Fenster ohne die Ãnderungen zu speichern.|MKlicken mit SPEZIAL stellt die zuletzt abgespeicherten Einstellungen wieder her.
+HelpImageConfig19:Klicken mit AUSWAHL speichert die Einstellungen und schlieÃt das Fenster.|MKlicken mit SPEZIAL speichert die Einstellungen ohne das Fenster zu schlieÃen.
+
+HelpInterfaceConfig:Fenster zur Einstellung des Programmverhaltens in ausgewählten Situationen
+HelpInterfaceConfig2:Beim Abspeichern von Dateien auf einen Datenträger werden die Dateinamenserweiterungen (Extensions) aus dem Dateinamen entfernt.
+HelpInterfaceConfig3:Beim Abspeichern wird vor dem Ãberschreiben namensgleicher Dateien von NetSurf nachgefragt, ob dies so erfolgen soll.
+HelpInterfaceConfig6:Feature zum automatischen Vorschlagen von URL Adressen bei deren Eingabe.|MDiese Funktion zeigt bei der Eingabe von Webadressen in die Adressleiste mögliche sinnvolle Adressvorschläge während des Eintippens an.
+HelpInterfaceConfig7:In der lokalen History werden die Adressen der besuchten Webseiten schwebend über den zugehörigen Bildern eingeblendet.
+HelpInterfaceConfig10:Beim verkleinernden Ablegen eines Browserfensters auf dem Desktophintergrund (Iconisieren) wird von NetSurf ein fensterspezifisches Icon erzeugt, welches den aktuellen Seiteninhalt wiedergibt.
+HelpInterfaceConfig11:Stellt die Standardeinstellungen wieder her.
+HelpInterfaceConfig12:Klicken mit AUSWAHL schlieÃt das Fenster ohne die Ãnderungen zu speichern.|MKlicken mit SPEZIAL stellt die zuletzt abgespeicherten Einstellungen wieder her.
+HelpInterfaceConfig13:Klicken mit AUSWAHL speichert die Einstellungen und schlieÃt das Fenster.|MKlicken mit SPEZIAL speichert die Einstellungen ohne das Fenster zu schlieÃen.
+
+HelpLanguageConfig:Konfigurationsfenster für die Spracheinstellungen
+HelpLanguageConfig3:Das ist die aktuell eingestellte Sprache für die Bedienoberfläche.|MDiese Sprache wird genutzt, um NetSurf's Meldungen und die Texte der Dialogboxen und Menüs darzustellen.
+HelpLanguageConfig4:Klicken mit AUSWAHL zum Auswählen einer Oberflächensprache.
+HelpLanguageConfig6:Das ist die aktuelle Sprache zur Anzeige auf Webseiten.|MWenn eine Webseite die Darstellung in verschiedenen Sprachen anbietet, wird NetSurf die Webseite in der hier eingestellten bevorzugten Sprache abrufen.
+HelpLanguageConfig7:Klicken mit AUSWAHL zum Auswählen einer Webseitensprache.
+HelpLanguageConfig8:Stellt die Standardeinstellungen wieder her.
+HelpLanguageConfig9:Klicken mit AUSWAHL schlieÃt das Fenster ohne die Ãnderungen zu speichern.|MKlicken mit SPEZIAL stellt die zuletzt abgespeicherten Einstellungen wieder her.
+HelpLanguageConfig10:Klicken mit AUSWAHL speichert die Einstellungen und schlieÃt das Fenster.|MKlicken mit SPEZIAL speichert die Einstellungen ohne das Fenster zu schlieÃen.
+
+HelpMemoryConfig:Fenster zur Konfiguration des nutzbaren Arbeitsspeichers
+HelpMemoryConfig3:Hier kann die MaximalgröÃe des von NetSurf für nichtkomprimierte Bilder genutzten Speichers angegeben werden.
+HelpMemoryConfig4:Klicken mit AUSWAHL verkleinert den Arbeitsspeicher zum Ablegen nichtkomprimierter Bilder.
+HelpMemoryConfig5:Klicken mit AUSWAHL vergröÃert den Arbeitsspeicher zum Ablegen nichtkomprimierter Bilder.
+HelpMemoryConfig7:NetSurf nimmt eine automatische intelligente Abschätzung der notwendigen GröÃe des Arbeitsspeichers zum Ablegen nichtkomprimierter Bilddaten vor.
+HelpMemoryConfig9:Hier kann die MaximalgröÃe des von NetSurf für komprimierte Bilder genutzten Speichers angegeben werden.
+HelpMemoryConfig10:Klicken mit AUSWAHL verkleinert den Arbeitsspeicher zum Ablegen komprimierter Bilder.
+HelpMemoryConfig11:Klicken mit AUSWAHL vergröÃert den Arbeitsspeicher zum Ablegen komprimierter Bilder.
+HelpMemoryConfig13:NetSurf nimmt eine automatische intelligente Abschätzung der notwendigen GröÃe des Arbeitsspeichers zum Ablegen komprimierter Bilddaten vor.
+HelpMemoryConfig14:Stellt die Standardeinstellungen wieder her.
+HelpMemoryConfig15:Klicken mit AUSWAHL schlieÃt das Fenster ohne die Ãnderungen zu speichern.|MKlicken mit SPEZIAL stellt die zuletzt abgespeicherten Einstellungen wieder her.
+HelpMemoryConfig16:Klicken mit AUSWAHL speichert die Einstellungen und schlieÃt das Fenster.|MKlicken mit SPEZIAL speichert die Einstellungen ohne das Fenster zu schlieÃen.
+
+HelpSecurityConfig:Fenster zur Konfiguration der Sicherheitseinstellungen
+HelpSecurityConfig2:NetSurf sendet Seitenreferenzinformationen an Webserver.|MIst diese Option gewählt, schickt NetSurf an den Server einer neuen Webseite die Adresse der Seite von der aus die aktuelle über einen Link aufgerufen wurde.
+HelpSecurityConfig6:Hier kann die Zeitdauer in Tagen angegeben werden, bis zu deren Ablauf Objekte in der globalen History gespeichert bleiben.
+HelpSecurityConfig7:Klicken mit AUSWAHL verkürzt die Aufbewahrungszeit von Seiten in der globalen History.
+HelpSecurityConfig8:Klicken mit AUSWAHL verlängert die Aufbewahrungszeit von Seiten in der globalen History.
+HelpSecurityConfig10:Stellt die Standardeinstellungen wieder her.
+HelpSecurityConfig11:Klicken mit AUSWAHL schlieÃt das Fenster ohne die Ãnderungen zu speichern.|MKlicken mit SPEZIAL stellt die zuletzt abgespeicherten Einstellungen wieder her.
+HelpSecurityConfig12:Klicken mit AUSWAHL speichert die Einstellungen und schlieÃt das Fenster.|MKlicken mit SPEZIAL speichert die Einstellungen ohne das Fenster zu schlieÃen.
+
+HelpThemeConfig:Fenster zur Auswahl des Anzeigethemas
+HelpThemeConfig2:Stellt die Standardeinstellungen wieder her.
+HelpThemeConfig3:Klicken mit AUSWAHL schlieÃt das Fenster ohne die Ãnderungen zu speichern.|MKlicken mit SPEZIAL stellt die zuletzt abgespeicherten Einstellungen wieder her.
+HelpThemeConfig4:Klicken mit AUSWAHL speichert die Einstellungen und schlieÃt das Fenster.|MKlicken mit SPEZIAL speichert die Einstellungen ohne das Fenster zu schlieÃen.
+
+HelpThemePConfig:Dieser Dialog zeigt die verfügbaren Themen.|MDas ausgewählte Thema wird bei der Anzeige von Browserfenster, Cookieverwaltung, Hotlist und History eingesetzt.
# Configuration tokens
Modified: trunk/netsurf/!NetSurf/Resources/en/Messages
URL: http://svn.semichrome.net/trunk/netsurf/%21NetSurf/Resources/en/Messages?...
==============================================================================
--- trunk/netsurf/!NetSurf/Resources/en/Messages (original)
+++ trunk/netsurf/!NetSurf/Resources/en/Messages Fri Nov 3 15:46:04 2006
@@ -911,7 +911,7 @@
HelpThemeConfig3:\Sclose this \w without saving changes.|M\Areturn the theme options to the last saved configuration.
HelpThemeConfig4:\Ssave these settings and close the \w.|M\Asave these settings without closing the \w.
-HelpThemePConfig:This pane shows the available themes.|MThe selected icon theme is used for NetSurf browser \ws, the hotlist and global history.
+HelpThemePConfig:This pane shows the available themes.|MThe selected icon theme is used for NetSurf browser \ws, the hotlist, global history and cookie management.
# Configuration tokens
16 years, 2 months