Interface Guidelines: migrate to docs/, use DocBookCSS.

DocBookCSS is a mostly-pure-CSS2 implementation of the DocBook standard.
Unlike DocBookXSL which relies on transforming the XML, it utilizes the
XML-styling features of modern web browsers to display the DocBook.

Its appearance still is a long way from the Haiku Book and Userguide, but
it looks (mostly) the same as the old DocBookXSL so we can stop using that.
Eventually we just need to make DocBookCSS use our styling.
This commit is contained in:
Augustin Cavalier
2015-02-12 17:08:04 -05:00
parent 644fa5a938
commit 7d6915b4d0
15 changed files with 974 additions and 95 deletions
-8
View File
@@ -255,11 +255,3 @@ For emulated hardware you should build disk image (see above). How to setup
this image depends on your emulater. If you use QEMU, you can usually just
provide the path to the image as command line argument to the "qemu"
executable.
Docbook documentation
=====================
Our documentation can be found in 'src/documentation/'. You can build it by
running 'jam' in that folder. The results will be stored in the 'generated/'
folder.
-39
View File
@@ -31,42 +31,3 @@ rule Man2Docs
Man2Doc $(target) : $(source) ;
}
}
rule Doc2HTML
{
local source = [ FGristFiles $(1) ] ;
local target = [ FGristFiles $(2) ] ;
local xslsheet = $(3) ;
local basedir = [ FDirName $(HAIKU_DOCUMENTATION_DIR) $(4) ] ;
local paths = $(5) ;
local options = $(6) ;
if ! $(target) {
target = $(1:S=.html) ;
}
SEARCH on $(source) = $(SEARCH_SOURCE) ;
MakeLocate $(target) : $(basedir) ;
if $(2) {
XSLBASEDIR on $(target) = -stringparam base.dir \"$(basedir)/\" ;
}
XSLSHEET on $(target) = $(xslsheet) ;
XSLOPTIONS on $(target) = $(options) ;
if $(2) = "" {
XSLOUTPUT on $(target) = "-o "\"$(target:D=$(basedir))\" ;
}
XSLCATALOGS on $(target) = \" [ FDirName $(HAIKU_TOP) src documentation docbook-dtd catalog.xml ] [ FDirName $(HAIKU_TOP) src documentation docbook-xsl catalog.xml ] \" ;
Depends $(target) : $(source) <build>xsltproc ;
LocalDepends doc_files : $(target) ;
XSLPROCPATHS on $(target) = -path \" $(paths:J=\ ) \" ;
Doc2HTML1 $(target) : <build>xsltproc $(source) ;
LocalClean clean : $(target) ;
}
actions Doc2HTML1
{
$(2[1]) --catalogs $(XSLCATALOGS) -xinclude $(XSLPROCPATHS) $(XSLBASEDIR) $(XSLOPTIONS) $(XSLOUTPUT) $(XSLSHEET) $(2[2-])
}
@@ -0,0 +1,28 @@
Copyright (c) 2004 David Holroyd, and contributors.
Permission to use, copy, modify and distribute this software and its
documentation for any purpose and without fee is hereby granted in
perpetuity, provided that the above copyright notice appear in all
copies, and that both the copyright notice and this permission notice
appear in supporting documentation. The contributors make no
representations about the suitability of this software for any
purpose. It is provided "as is" without express or implied warranty.
THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-----------------
This stylesheet was writen by David Holroyd, with patches, suggestions,
translations, and other help from these people:
David Leppik
Martin Gautier
Asia Magiera
Federico Koessler
Katie McSweenie
Many thanks to all of them!
@@ -0,0 +1,70 @@
/*
* core.css
*
* Copyright (c) 2004 David Holroyd, and contributors
* See the file 'COPYING' for terms of use
*
* Part of the Docbook-CSS stylesheet
* http://www.badgers-in-foil.co.uk/projects/docbook-css/
*/
/* Generated 2002-12-12 */
abbrev, accel, acronym, action, application, artpagenums, authorinitials,
bibliocoverage, biblioid, bibliomisc, bibliorelation, bibliosource, citation,
citebiblioid, citerefentry, citetitle, city, classname, co, command,
computeroutput, constant, coref, country, database, date, email, emphasis,
envar, errorcode, errorname, errortext, errortype, exceptionname, fax,
filename, firstname, firstterm, funcdef, funcparams, function, group,
guibutton, guiicon, guilabel, guimenu, guimenuitem, guisubmenu, hardware,
honorific, initializer, inlineequation, inlinegraphic, inlinemediaobject,
interface, interfacename, invpartnumber, isbn, issn, keycap, keycode,
keycombo, keysym, lineage, lineannotation, link, literal, markup, medialabel,
member, menuchoice, methodname, methodparam, modifier, mousebutton, olink,
ooclass, ooexception, oointerface, option, optional, orgdiv, orgname,
otheraddr, othername, pagenums, paramdef, parameter, phone, phrase, pob,
postcode, productname, productnumber, prompt, property, pubdate, pubsnumber,
quote, refpurpose, replaceable, returnvalue, revnumber, seriesvolnums,
sgmltag, shortcut, state, street, structfield, structname, subscript,
superscript, surname, symbol, systemitem, token, trademark, type, ulink,
userinput, varname, volumenum, wordasword, year {
display:inline;
}
abstract, ackno, address, answer, appendix, article, attribution, authorblurb,
bibliodiv, biblioentry, bibliography, bibliomixed, bibliomset, biblioset,
blockquote, book, callout, calloutlist, caption, caution, chapter,
cmdsynopsis, colophon, constraintdef, dedication, epigraph, equation, example,
figure, formalpara, glossary, glossdef, glossdiv, glossentry, glosslist,
graphic, graphicco, highlights, imagedata, imageobjectco, important, index,
indexdiv, indexentry, informalequation, informalexample, informalfigure,
informaltable, itemizedlist, legalnotice, listitem, lot, lotentry,
mediaobject, mediaobjectco, msg, msgentry, msgexplan, msgmain, msgset, note,
orderedlist, para, part, partintro, personblurb, preface, primaryie,
printhistory, procedure, productionset, programlistingco, qandadiv, qandaentry,
qandaset, question, refentry, refentrytitle, reference, refnamediv, refsect1,
refsect2, refsect3, refsection, refsynopsisdiv, revhistory, screenco,
screenshot, secondaryie, sect2, sect3, sect4, sect5, section, seealsoie, seeie,
set, setindex, sidebar, simpara, simplemsgentry, simplesect, step, substeps,
subtitle, synopfragment, synopfragmentref, table, term, tertiaryie, tip,
title, toc, tocback, tocchap, tocentry, tocfront, toclevel1, toclevel2,
toclevel3, toclevel4, toclevel5, tocpart, variablelist, varlistentry, warning,
sect1 {
display:block;
}
appendixinfo, area, areaset, areaspec, articleinfo, bibliographyinfo,
blockinfo, bookinfo, chapterinfo, colspec, glossaryinfo, indexinfo, indexterm,
itermset, modespec, objectinfo, partinfo, prefaceinfo, primary, refentryinfo,
referenceinfo, refmeta, refsect1info, refsect2info, refsect3info,
refsectioninfo, refsynopsisdivinfo, screeninfo, secondary, sect1info,
sect2info, sect3info, sect4info, sect5info, sectioninfo, see, seealso,
setindexinfo, setinfo, sidebarinfo, spanspec, tertiary {
display:none;
}
classsynopsisinfo, funcsynopsisinfo, literallayout, programlisting, screen,
synopsis {
white-space:pre;
font-family:monospace;
display:block;
}
@@ -0,0 +1,31 @@
<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl"
xmlns:html="http://www.w3.org/1999/xhtml">
<binding id="ulink">
<handlers>
<handler event="click" button="0"
action="window.location=this.attributes.url.value;"/>
<handler event="mouseover"
action="window.status=this.attributes.url.value;"/>
<handler event="mouseout"
action="window.status=null;"/>
</handlers>
</binding>
<binding id="image">
<content>
<html:img xbl:inherits="src=fileref"/>
</content>
<implementation>
<constructor>
var img = document.getAnonymousNodes(this)[0];
var file = this.getAttribute("fileref");
// HACK: using img.src=file 'inline' doesn't seem to work
// but it does when called from a setTimeout()
var f = function() { img.src = file; }
setTimeout(f, 0);
</constructor>
</implementation>
</binding>
</bindings>
@@ -0,0 +1,27 @@
/*
* driver.css
*
* Copyright (c) 2004 David Holroyd, and contributors
* See the file 'COPYING' for terms of use
*
* Part of the Docbook-CSS stylesheet
* http://www.badgers-in-foil.co.uk/projects/docbook-css/
*
* This is the 'driver' file of the stylesheet. It imports all the major
* stylesheet components. If you want to make use of this stylesheet in your
* XML document (e.g. for display in a web browser), include a line like this
* at the top of the XML file (replacing <ver> with the version number):
*
* <?xml-stylesheet href="docbook-css-<ver>/driver.css" type="text/css"?>
*
* If you want to customise the stylesheet, a customisation layer can be
* created by simply witing a new CSS file, and including a declaration to
* import this file at the top. The customisation layer can then override any
* of the existing stylesheet rules, or create new ones.
*/
@import "core.css";
@import "tables.css";
@import "styles.css";
@import "mozilla.css";
@import "opera.css";
@@ -0,0 +1,44 @@
/*
* mozilla.css
*
* Copyright (c) 2004 David Holroyd, and contributors
* See the file 'COPYING' for terms of use
*
* Part of the Docbook-CSS stylesheet
* http://www.badgers-in-foil.co.uk/projects/docbook-css/
*
* This file contains CSS specific to mozilla.org's Gecko rendering engine.
*
* Some of the rules here will take effect even if you aren't using a Mozilla-
* based browser.
*/
/* make <ulink>s clickable */
ulink {
-moz-binding:url('db-bindings.xml#ulink');
cursor: pointer;
-moz-user-focus: normal;
}
ulink:active {
color: red;
}
ulink:focus {
-moz-outline: 1px dotted invert;
}
imagedata {
-moz-binding:url('db-bindings.xml#image');
}
guimenu, guimenuitem, guisubmenu {
font: menu;
}
orderedlist, itemizedlist, procedure {
/* this seems to be required to make auto-numbering work */
-moz-counter-reset: -html-counter 0;
}
@@ -0,0 +1,33 @@
/*
* opera.css
*
* Copyright (c) 2004 David Holroyd, and contributors
* See the file 'COPYING' for terms of use
*
* Part of the Docbook-CSS stylesheet
* http://www.badgers-in-foil.co.uk/projects/docbook-css/
*
* This file contains CSS specific to the Opera browser.
*/
/*
* Discovered -o-link from,
* http://groups.google.com/groups?q=opera+styles+xml&start=10&hl=en&lr=&ie=UTF-8&newwindow=1&selm=opr6pgr0tgicz8n2%40news.opera.com&rnum=18
*/
ulink {
-o-link: attr(url);
-o-link-source: current;
}
/*
* Given the above rule, it makes sense to have this here too, though it's
* not Opera-specific
*/
ulink:focus {
outline: 1px dotted invert;
}
/* this was in the example I found, but it doesn't achive much */
imagedata {
-o-replace: attr(fileref)
}
@@ -0,0 +1,680 @@
/*
* styles.css
*
* Copyright (c) 2004 David Holroyd, and contributors
* See the file 'COPYING' for terms of use
*
* Part of the Docbook-CSS stylesheet
* http://www.badgers-in-foil.co.uk/projects/docbook-css/
*/
/*
* CSS2 styling for DocBook XML
*
* To be included in the cascade _after_ core.css. Defines styling that can't
* be generated mechanically from another source.
*/
/*
* TODO:
*
* - do I remember correctly that <abstract> be hidden for screen media?
*/
article, book {
margin:.5em;
}
title, subtitle {
font-family:sans-serif;
}
title {
font-weight:bolder;
margin-bottom:.5em;
}
/*
* Sectioning elements that may contain paragraph-level elements get left/right
* margins
*/
section>*, chapter>*, bibliography>*, appendix>*, glossary>*, preface>*,
dedication>*, colophon>*, sect1>*, sect2>*, sect3>*, sect4>*, sect5>*,
bibliodiv>* {
margin-left:10%;
margin-right:10%;
}
/*
* Give admonitions bigger margins, to set them more apart from the main
* flow of text.
*/
warning, caution, important, tip, note {
margin-left: 15%;
margin-right: 15%;
}
/*
* Remove any margin defined be the previous rule when the child in question
* is a section or title. Titles should be allowed to take up the maximum
* available width, as they're usually is larger type. Sections must not
* be given margins because, the *contents* of the section will alreay have
* them; we don't want to recursively increase margins with the nesting depth
* of the document.
*/
section, title, sect1, sect2, sect3, sect4, sect5, bibliodiv {
margin-left:0;
margin-right:0;
}
book>title, article>title {
font-size:xx-large;
text-align:center;
border-bottom-style:solid;
}
appendix>title, bibliography>title, chapter>title, colophon>title, dedication>title, glossary>title, part>title, preface>title {
font-size:xx-large;
text-align:center;
}
section>title, sect1>title, bibliodiv>title {
font-size:xx-large;
}
section>section>title, sect2>title {
font-size:x-large;
margin-left:5%;
}
section>section>section>title, sect3>title {
font-size:large;
margin-left:7.5%;
}
section>section>section>section>title, sect4>title {
font-size:large;
margin-left:10%;
}
section>section>section>section>section>title, sect5>title {
font-size:inherit;
margin-left:10%;
}
biblioentry > title {
display: inline;
}
/* Give vertical spacing between compoments of the document */
*+section, *+chapter, *+bibliography, *+bibliodiv, *+appendix, *+glossary {
margin-top: 3em;
}
section>*+section {
margin-top: 2em;
}
section>section>*+section {
margin-top: 1em;
}
/*
* Give paragraph-level elements some leading space when they aren't the first
* item in their containing block.
*/
*+para, *+formalpara, *+blockquote, *+glossentry, *+table, *+variablelist,
*+example, *+informalexample, *+programlisting, *+cmdsynopsis,
*+orderedlist, *+itemizedlist, *+figure,
*>warning, *>caution, *>important, *>tip, *>note {
margin-top:.5em;
}
/*
* BiblioEntry blocks need a bit more space, since they may contain multiple
* paragraphs, and so need greater-than-paragraph spacing to make it clear
* which gap is the end just of a paragraph, and which gap is the end of the
* entry
*/
*+biblioentry {
margin-top: 1em;
}
/*
* REVISIT: I think this is the proper way; but deson't work in Firefox 0.8
formalpara > title {
display: run-in;
}
* Make all children of formalpara inline, instead...
*/
formalpara > * {
display: inline;
}
formalpara > title:after {
content: ".";
}
para, formalpara {
text-align: justify;
}
quote:before {
content: open-quote;
}
quote:after {
content: close-quote;
}
question, answer {
margin-top:.5em;
display:list-item;
}
question>para, answer>para {
display:inline;
}
/* see language specific files for content */
question:before {
display:marker;
font-weight:bolder;
}
answer:before {
display:marker;
font-weight: bolder;
}
emphasis {
font-style:italic;
}
emphasis[role="strong"] {
font-weight:bolder;
}
emphasis[role="bold"] {
font-weight:bolder;
font-style:inherit;
}
emphasis[role="underline"] {
text-decoration:underline;
font-style:inherit;
}
emphasis[role="strikethrough"] {
text-decoration:line-through;
font-style:inherit;
}
emphasis>emphasis {
font-weight:bolder;
}
foreignphrase, wordasword, productname {
font-style:italic;
}
replaceable {
font-style:italic;
}
sgmltag[class="starttag"]:before, sgmltag[class="emptytag"]:before {
content: "<";
}
sgmltag[class="starttag"]:after, sgmltag[class="endtag"]:after {
content: ">";
}
sgmltag[class="endtag"]:before {
content: "</";
}
sgmltag[class="emptytag"]:after {
content: "/>";
}
sgmltag[class="attvalue"]:before, sgmltag[class="attvalue"]:after {
content: '"';
}
sgmltag[class="genentity"]:before {
content: "&";
}
sgmltag[class="genentity"]:after {
content: ";";
}
sgmltag[class="sgmlcomment"]:before {
content: "<!--";
}
sgmltag[class="sgmlcomment"]:after {
content: "-->";
}
sgmltag[class="xmlpi"]:before {
content: "<?";
}
sgmltag[class="xmlpi"]:after {
content: "?>";
}
application, keycap, guimenu, guimenuitem, guisubmenu {
font-family: sans-serif;
}
/*
* ensure there's some whitespace between elements of an author's name
*/
author>* + *:before {
content: " ";
}
/* give keycaps a '3D' shaded look */
keycap {
padding-left: .2em;
padding-right: .2em;
border-style: solid;
border-top-width: 2px;
border-left-width: 3px;
border-right-width: 3px;
border-bottom-width: 4px;
border-top-color: #eeeecc;
border-left-color: #eeeecc;
border-right-color: #999977;
border-bottom-color: #999977;
background-color: #ddddbb;
/* All these borders may interfere with text on the line bellow. Make
the text a little smaller to try and 'pull up' the bottom edge, */
font-size: smaller;
}
keycombo>keycap+keycap:before {
/* FIXME: this appears inside the second keycap's 3D boarder, but
* ideally, we'd like it to appear inbetween the two keycaps */
content: "-";
}
menuchoice>guimenu+guimenuitem:before,
menuchoice>guimenuitem+guimenuitem:before,
menuchoice>guimenuitem+guisubmenu:before {
/*content: "->";*/
/* a 'proper' left-arrow character */
content: "\2192";
}
guibutton {
border: 2px outset #dddddd;
background-color: #dddddd;
/*
border: 2px solid;
border-top-color: #eeeeee;
border-left-color: #eeeeee;
border-right-color: #999999;
border-bottom-color: #999999;
background-color: #dddddd;
*/}
/* render link-like elements per HTML's normal styling */
link, ulink, email {
/* When ulink contains no body text, the url should be rendered
* at this point in the document. Can't see how to do this with CSS */
color:#0000ff;
text-decoration:underline;
}
/*ulink:after {
content: " <" attr(url) ">";
}*/
email:before {
content: "<";
}
email:after {
content: ">";
}
citation:before {
content: "[";
}
citation:after {
content: "]";
}
xref:after {
/* simple symbol - content: "#" attr(linkend);*/
/* 'section' symbol */
content: "\00a7" attr(linkend);
color:#0000ff;
text-decoration: underline;
}
blockquote {
padding-left:3em;
padding-bottom: 1em;
}
blockquote>attribution {
text-align:right;
font-style: italic;
}
blockquote>attribution:after {
/* I've tried various things to position the attribution after the
* other blockquote content (e.g. relative/absolute positioning), but
* none of the things I tried produced satisfactory results (e.g. the
* attribution appears at the bottom of the containing block, but it
* overlaps preceeding content). */
content:":"
}
blockquote>para:before {
content: open-quote;
}
blockquote>para:after {
content: no-close-quote;
}
blockquote>para:last-child:after {
content: close-quote;
}
/* lists */
itemizedlist {
padding-left: 1em;
list-style-type: disc;
}
listitem+listitem {
padding-top: .5em;
}
/* 2 deep nested lists */
itemizedlist itemizedlist {
list-style-type: circle;
}
/* 3 or more deep nested lists */
itemizedlist itemizedlist itemizedlist {
list-style-type: square;
}
itemizedlist>listitem {
display:list-item;
}
orderedlist {
padding-left: 1.5em;
list-style-type: decimal;
}
orderedlist>listitem {
display:list-item;
}
/*
* We've got no way of properly implementing call-out lists with CSS, so just
* present as a list of bullet points.
*/
calloutlist {
padding-left: 1em;
list-style-type: disc;
}
calloutlist>callout {
display:list-item;
}
/*
* The list of possible mark names is not defined by Docbook, but "opencircle"
* and "bullet" are used in T.D.G. example
*/
itemizedlist[mark="opencircle"], listitem[override="opencircle"] {
list-style-type: circle;
}
itemizedlist[mark="bullet"], listitem[override="bullet"] {
list-style-type: disc;
}
varlistentry>listitem {
margin-left: 2em;
}
varlistentry+varlistentry {
margin-top: .5em;
}
simplelist[type=horiz] {
display: block;
}
simplelist[type=inline]>member+member:before {
/* typically, we end up with unwanted whitespace before the comma
* (i.e. whitespace between <member> elements). I see no way of
* suppressing this with CSS.
* TODO: try a combination of :after and :first-child instead to
* avoid the above issue */
content: ", ";
}
cmdsynopsis, code, command, computeroutput, envar, filename, keycode, keysym,
literal, option, parameter, sgmltag, systemitem {
font-family: monospace;
}
filename[class=directory]:after {
content: "/";
}
/* TODO: Are these specific to 'en' locales or not? */
trademark:after {
content: "\2122"
}
trademark[class="copyright"]:after {
content: "\A9"
}
trademark[class="registered"]:after {
content: "\AE"
}
trademark[class="service"]:after {
content: "\2120"
}
example, informalexample, programlisting {
background-color:#dddddd;
padding: .5em;
border: 1px dashed black;
}
example programlisting, informalexample programlisting {
background-color: none;
padding: 0;
border: none;
}
/* admonitions */
warning, caution, tip, note, important {
border: 1px dashed gray;
padding: .5em;
}
/* Have admonition titles appear inline with generated content ("Note:" etc.) */
warning>title, caution>title, tip>title, note>title, important>title {
display: inline;
}
warning:before, caution:before, tip:before, note:before, important:before {
/* Match the style of <title> */
font-weight: bolder;
font-family: sans-serif;
}
/* FIXME: background colours are cheezy :S ... */
/* see language specific css for content: */
warning:before {
background-color: red;
}
caution:before {
background-color: yellow;
}
tip:before {
background-color: #aaaddd;
}
note:before {
background-color: #dddddd;
}
important:before {
background-color: plum;
}
/* Tables */
thead > row > entry {
/* FIXME: will under-rule every row in the <thead>, not just the last
* (I tried adding this style to <thead> itself, but this doesn't
* appear to work in combination with display:table-header-group, as
* defined in tables.css) */
border-bottom: 2px solid black;
}
thead {
font-weight: bolder;
}
entry {
padding: .2em;
}
/* Footnotes */
/*
* Attempt to display footnotes on-mouseover. This may well break if a
* footnote element has multiple children (I think the children will end up
* stacked on top of each other).
*/
footnote {
position: relative;
cursor: help;
}
footnote:hover {
}
footnote>* {
display: none;
z-index: 100;
}
footnote:hover>* {
display: block;
position: fixed;
border: 2px dotted black;
background-color: #ffeeaa;
padding: .5em;
left: 0px;
bottom: 0px;
}
footnote:before {
content: "?";
background-color: #ffeeaa;
border: 2px dotted black;
font-size: smaller;
}
/*
Attempting to format <footnote> as a sitebar, floating it to the right.
Sometimes works for footnotes in the 'main body' of some text, but works badly
when the containing block is, for instance, a table cell.
footnote:before {
content: "*";
display: block;
border: 2px dotted black;
}
footnote>* {
display: block;
float: right;
border: 2px dotted black;
padding: .5em;
width: 25%;
top: -1em;
}
footnote>*:before {
content: "*Footnote";
display: block;
font-weight: bold;
font-family: sans-serif;
}
*/
glossentry>glossterm {
font-weight: bolder;
font-style: italic;
}
userinput {
font-weight: bolder;
}
figure {
text-align: center;
}
imageobject {
display: block;
}
mediaobject>textobject {
font-size: smaller;
}
/* Content */
question:before {
content: "Q: ";
}
answer:before {
content: "A: ";
}
example > title:before {
content: "Example: ";
}
quote {
quotes: "“" "”";
}
quote quote {
quotes: "" "";
}
/* Admonitions */
warning:before {
content: "Warning: ";
}
caution:before {
content: "Caution: ";
}
important:before {
content: "Important: ";
}
tip:before {
content: "Tip: ";
}
note:before {
content: "Note: ";
}
@@ -0,0 +1,59 @@
/*
* tables.css
*
* Copyright (c) 2004 David Holroyd, and contributors
* See the file 'COPYING' for terms of use
*
* Part of the Docbook-CSS stylesheet
* http://www.badgers-in-foil.co.uk/projects/docbook-css/
*
*/
tgroup {
display: table;
}
row {
display: table-row;
}
thead {
display: table-header-group;
}
tbody {
display: table-row-group;
}
entry, entrytbl {
display: table-cell;
}
entry[valign=top] {
vertical-align: top;
}
entry[valign=bottom] {
vertical-align: bottom;
}
/*
* CSS can't generate the indended formatting for segmented lists, so we turn
* them into tables instead.
*
* TODO: seems to break formatting when nested in a table entry
*/
segmentedlist {
display: table;
}
seglistitem {
display: table-row;
}
seg, segtitle {
display: table-cell;
}
segmentedlist>title {
display: table-caption;
}
@@ -1,11 +1,12 @@
<?xml version="1.0"?>
<?xml-stylesheet href="docbook-css/driver.css" type="text/css" ?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" >
<book>
<bookinfo>
<date>9-1-2006</date>
<title>Haiku Human Interface Guidelines...</title>
<title>Haiku Human Interface Guidelines</title>
<subtitle>Better Known as "How <emphasis>NOT</emphasis> to Write Software</subtitle>
<authorgroup>
<author>DarkWyrm</author>
@@ -1442,33 +1443,6 @@ Go to (MyApp or MyCompany)'s Website </term><listitem><para>Opens the default we
</variablelist>
</chapter>
<chapter id="chapter13">
<title>Installation and Updates</title>
<para>It is easy to get so wrapped up in developing great software that you forget about getting it onto a user's computer. It pays to pay attention to detail in the installation of your software -- if a user can't get your program to work on his machine, you've just managed to both hurt your reputation as a developer and lost a user at the same time. Installation is one of those elements of software development that is given little, if any, attention when it works well but is quickly noticed when something goes wrong. As of this writing, there are two main methods of packaging and installing software on BeOS-based operating systems: zip files and Software Valet packages. </para>
<sect1>
Zip Files
<para>Zipped software is the simplest method for the developer at the cost of more work for the user. If your program has a simple structure, this is generally no big deal -- the user unzips it, sticks it somewhere, and creates a symlink in the Be menu. If, on the other hand, your program has shared libraries that need installed or other files that need to be installed in more than one folder, it is much, much better to use a Software Valet package.</para>
</sect1>
<sect1>
<title>Software Valet packages</title>
<para>Package files make more work for a developer but much less for the user. As a result, they are the method of choice when a software package requires files be stored in more than one folder on the user's hard drive. They also allow the user to choose different types of installation, such as just an update, minimal installs, or developer installs.</para>
<para>When you make a Software Valet package, there are a few considerations to keep in mind. Installing shortcuts are a pain in the neck unless you have a fixed install location and you make separate packages for Zeta and R5. You should also make sure that all the little details, such as version, build date, and so forth have been set to the proper values. Lastly, test the installation before actually releasing the software to make sure that it actually works the way that it should.</para>
</sect1>
<sect1>
<title>Getting Program Updates</title>
<para>While there is no official support from the operating system, a conscientious developer will make a way for the user to easily update his program. Ideally, your program should automatically check for updates, ask the user if he would like to download them, download them in the background, and then install the updates when your program starts up. Providing a way to roll back the updates in case of something going seriously wrong is also a very good idea. The only problem with this kind of setup is that it is a *lot* of work.</para>
<para>Because of the popularity of BeOS download sites such as BeBits, it is relatively simple to post updates merely by releasing the new version on such sites. It places the check-download-install responsibility on the user, though. More motivated users will update their software; a great many users will not, so keep this in mind if this is the route you would choose to go.</para>
</sect1>
</chapter>
<appendix>
<title>How to Make a Good Error</title>
-1
View File
@@ -5,7 +5,6 @@ SubInclude HAIKU_TOP src apps ;
SubInclude HAIKU_TOP src bin ;
SubInclude HAIKU_TOP src build ;
SubInclude HAIKU_TOP src data ;
SubInclude HAIKU_TOP src documentation ;
SubInclude HAIKU_TOP src kits ;
SubInclude HAIKU_TOP src libs ;
SubInclude HAIKU_TOP src preferences ;
-6
View File
@@ -1,6 +0,0 @@
SubDir HAIKU_TOP src documentation ;
SEARCH on <src!documentation>license.xml = [ FDirName $(HAIKU_TOP) src documentation ] ;
SubInclude HAIKU_TOP src documentation uiguidelines ;
-12
View File
@@ -1,12 +0,0 @@
SubDir HAIKU_TOP src documentation uiguidelines ;
SetSubDirSupportedPlatformsBeOSCompatible ;
Doc2HTML
HaikuHIG.xml
: index.html
: [ FDirName $(HAIKU_TOP) src documentation docbook-xsl html chunk.xsl ]
: HIG
:
: -stringparam use.id.as.filename 1
;
-1
View File
@@ -90,7 +90,6 @@ SubInclude HAIKU_TOP src tools anyboot ;
SubInclude HAIKU_TOP src tools bfs_shell ;
SubInclude HAIKU_TOP src tools cppunit ;
SubInclude HAIKU_TOP src tools create_repository_config ;
SubInclude HAIKU_TOP src tools docbook ;
SubInclude HAIKU_TOP src tools elfsymbolpatcher ;
SubInclude HAIKU_TOP src tools fixup_amiga_boot_checksum ;
SubInclude HAIKU_TOP src tools fixup_tos_boot_checksum ;