initial version

master
Marc Wäckerlin 20 years ago
parent 80dcf5c1fb
commit dd32b7e85b
  1. 5
      mrw/foot.html
  2. 20
      mrw/head.html
  3. 161
      mrw/log4cxxconfiguration.cpp
  4. 611
      mrw/style.css

@ -0,0 +1,5 @@
<div class="status">Last Change: $date</div>
<div class="feedback"></div>
<div class="author"><a href="http://marc.waeckerlin.org">The autor's page: http://marc.waeckerlin.org</a></div>
</body>
</html>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en-gb"
lang="en-gb">
<head xml:lang="en-gb"
lang="en-gb">
<meta http-equiv="content-type" content="html; charset=utf-8" />
<link href="icon.png" rel="shortcut icon" />
<link href="/favicon.ico" rel="shortcut icon" />
<link type="text/css" rel="stylesheet" href="style.css" media="all" />
<title>$title</title>
</head>
<body xml:lang="en-gb"
lang="en-gb">
<div class="kontakt" xml:lang="de-ch" lang="de:de-ch"><a class="target" name="top"></a><a href="&#109;&#97;&#105;&#108;&#116;&#111;:&#109;&#97;&#114;&#99;@&#119;&#97;&#101;&#99;&#107;&#101;&#114;&#108;&#105;&#110;&#46;&#111;&#114;&#103;&#10;">&#109;&#97;&#114;&#99;@&#119;&#97;&#101;&#99;&#107;&#101;&#114;&#108;&#105;&#110;&#46;&#111;&#114;&#103;&#10;</a></div>
<h1 class="main"><a href="http://marc.waeckerlin.org">$title</a></h1>

@ -0,0 +1,161 @@
/** @file
$Id$
$Date$
$Author$
@copy &copy; Marc W&auml;ckerlin
@license LGPL, see file <a href="license.html">COPYING</a>
$Log$
Revision 1.1 2005/04/07 20:57:36 marc
initial version
1 2 3 4 5 6 7 8
5678901234567890123456789012345678901234567890123456789012345678901234567890
*/
#include <log4cxx/propertyconfigurator.h>
#include <log4cxx/helpers/properties.h>
#include <fstream>
namespace mrw {
/** @addtogroup debug
*/
//@{
/** @defgroup AutoInitLog4cxx Automatically initialize log4cxx
If you want to enable log4cxx
(http://logging.apache.org/log4cxx), you have to configure it in
your application, normally in the main. If you want to configure
it automatically, without changing a single line in your code
(e.g. for temporary debugging), simply link to @c
libmrwlog4cxxconfiguration, either with option @c
-lmrwlog4cxxconfiguration for single threaded, or with @c
-lmrwlog4cxxconfiguration-mt for multi threaded applications.
With @ref trclog4cxx and @ref
AutoFunctionTrace, you can add tracing based on @c log4cxx,
without even change a single line in your code. But your code
still has to initialize @c log4cxx. If you even want to
automatically initialize @c log4cxx, use this library!
Configures @c log4cxx in the following way:
-# if available, read @c log4cxx property file
(read first file found, in this order)
-# file specified in environment variable
@c $MRW_LOG4CXX_CONFIGFILE
-# <code>.mrwlog4cxx</code> (local file)
-# <code>~/.mrwlog4cxx</code> (file in user's home)
-# <code>/etc/mrwlog4cxx</code> (global configuration)
-# if no configuration file is found, use default configuration:
@verbatim
log4j.rootLogger = DEBUG, A1
log4j.logger.mrw.fn = DEBUG, A1
log4j.logger.mrw.fn.log4cxx = OFF, A1
log4j.logger.mrw.fn.boost = OFF, A1
log4j.logger.mrw.fn.Thread = OFF, A1
log4j.logger.mrw.fn.QString = OFF, A1
log4j.logger.mrw.fn.QShared = OFF, A1
log4j.logger.mrw.fn.QWidget = OFF, A1
log4j.logger.mrw.fn.mrw = OFF, A1
log4j.logger.mrw.fn.std = OFF, A1
log4j.logger.mrw.fn.new = OFF, A1
log4j.logger.mrw.fn.CppUnit = OFF, A1
log4j.logger.mrw.fn.__gnu_cxx = OFF, A1
log4j.appender.A1 = org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout = org.apache.log4j.PatternLayout
@endverbatim
and for multi threaded programs in addition:
@verbatim
log4j.appender.A1.layout.ConversionPattern = t-%-60c%m%n
@endverbatim
on the other hand, single threaded programs are formatted as:
@verbatim
log4j.appender.A1.layout.ConversionPattern = 60c%m%n
@endverbatim
This results in the following behaviour:
- trace to console
- format as...
- @c "%t-%-60c%m%n" if threaded
- @c "%-60c%m%n" if not threaded
- enable all tracing to @c DEBUG
- enable tracing of @ref AutoFunctionTrace
- disable function trace for @c log4cxx
- disable function trace for @c boost
- disable function trace for @c Qt base classes
- disable function trace for @c libmrw
- disable function trace for @c std and @c new
- disable function trace for @c CppUnit
- disable function trace for @c gcc internals
*/
//@{
class InitLog4cxx {
public:
InitLog4cxx() {
std::string logconfigfile;
char* c(getenv("MRW_LOG4CXX_CONFIGFILE"));
if (c && std::ifstream(c))
logconfigfile = c;
else if (std::ifstream(".mrwlog4cxx"))
logconfigfile = ".mrwlog4cxx";
else if ((c=getenv("HOME")) &&
std::ifstream((std::string(c)+"/.mrwlog4cxx").c_str()))
logconfigfile = std::string(c)+"/.mrwlog4cxx";
else if (std::ifstream("/etc/mrwlog4cxx"))
logconfigfile = "/etc/mrwlog4cxx";
if (logconfigfile.size()) {
log4cxx::PropertyConfigurator::configure(logconfigfile);
return;
}
log4cxx::helpers::Properties properties;
properties.setProperty("log4j.rootLogger",
"DEBUG, A1");
properties.setProperty("log4j.logger.mrw.fn",
"DEBUG, A1");
properties.setProperty("log4j.logger.mrw.fn.log4cxx",
"OFF, A1");
properties.setProperty("log4j.logger.mrw.fn.boost",
"OFF, A1");
properties.setProperty("log4j.logger.mrw.fn.Thread",
"OFF, A1");
properties.setProperty("log4j.logger.mrw.fn.QString",
"OFF, A1");
properties.setProperty("log4j.logger.mrw.fn.QShared",
"OFF, A1");
properties.setProperty("log4j.logger.mrw.fn.QWidget",
"OFF, A1");
properties.setProperty("log4j.logger.mrw.fn.mrw",
"OFF, A1");
properties.setProperty("log4j.logger.mrw.fn.std",
"OFF, A1");
properties.setProperty("log4j.logger.mrw.fn.new",
"OFF, A1");
properties.setProperty("log4j.logger.mrw.fn.CppUnit",
"OFF, A1");
properties.setProperty("log4j.logger.mrw.fn.__gnu_cxx",
"OFF, A1");
properties.setProperty("log4j.appender.A1",
"org.apache.log4j.ConsoleAppender");
properties.setProperty("log4j.appender.A1.layout",
"org.apache.log4j.PatternLayout");
#ifdef _REENTRANT
properties.setProperty("log4j.appender.A1.layout.ConversionPattern",
"%t-%-60c%m%n");
#else
properties.setProperty("log4j.appender.A1.layout.ConversionPattern",
"%-60c%m%n");
#endif
log4cxx::PropertyConfigurator::configure(properties);
}
};
static InitLog4cxx INIT_LOG4CXX;
//@}
//@}
};

@ -0,0 +1,611 @@
/* Doxygen */
body,h1,h2,h3,h4,h5,h6,p,center,td,th,ul,dl,div {
font-family: Geneva, Arial, Helvetica, sans-serif;
}
caption { font-weight: bold }
div.nav {
width: 100%;
background-color: #eeeeff;
border: 1px solid #b0b0b0;
text-align: center;
margin: 2px;
padding: 2px;
line-height: 140%;
}
/*
a.el { text-decoration: none; font-weight: bold }
a.elRef { font-weight: bold }
a.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
a.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
a.codeRef:link { font-weight: normal; color: #0000FF}
a.codeRef:visited { font-weight: normal; color: #0000FF}
a:hover { text-decoration: none; background-color: #f2f2ff }
*/
dl.el { margin-left: -1cm }
.fragment {
font-family: monospace
}
pre.fragment {
border: 1px solid #CCCCCC;
background-color: #f5f5f5;
margin-top: 4px;
margin-bottom: 4px;
margin-left: 2px;
margin-right: 8px;
padding-left: 6px;
padding-right: 6px;
padding-top: 4px;
padding-bottom: 4px;
}
div.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
td.md { background-color: transparent; font-weight: bold; }
td.mdPrefix {
background-color: transparent;
color: #606060;
font-size: 80%;
}
td.mdname1 { background-color: transparent; font-weight: bold; color: #602020; }
td.mdname { background-color: transparent; font-weight: bold; color: #602020; width: 600px; }
div.groupHeader {
margin-left: 16px;
margin-top: 12px;
margin-bottom: 6px;
font-weight: bold;
}
div.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
td.indexkey {
background-color: #eeeeff;
font-weight: bold;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
padding-bottom : 2px;
margin-left : 0px;
margin-right : 0px;
margin-top : 2px;
margin-bottom : 2px;
border: 1px solid #CCCCCC;
}
td.indexvalue {
background-color: #eeeeff;
font-style: italic;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
padding-bottom : 2px;
margin-left : 0px;
margin-right : 0px;
margin-top : 2px;
margin-bottom : 2px;
border: 1px solid #CCCCCC;
}
tr.memlist {
background-color: #f0f0f0;
}
p.formulaDsp { text-align: center; }
img.formulaDsp { }
img.formulaInl { vertical-align: middle; }
span.keyword { color: #008000 }
span.keywordtype { color: #604020 }
span.keywordflow { color: #e08000 }
span.comment { color: #800000 }
span.preprocessor { color: #806020 }
span.stringliteral { color: #002080 }
span.charliteral { color: #008080 }
.mdTable {
border: 1px solid #868686;
background-color: transparent;
}
.mdRow {
padding: 8px 10px;
}
.mdescLeft {
padding: 0px 8px 4px 8px;
font-size: 80%;
font-style: italic;
background-color: transparent;
border-top: 1px none #E0E0E0;
border-right: 1px none #E0E0E0;
border-bottom: 1px none #E0E0E0;
border-left: 1px none #E0E0E0;
margin: 0px;
}
.mdescRight {
padding: 0px 8px 4px 8px;
font-size: 80%;
font-style: italic;
background-color: transparent;
border-top: 1px none #E0E0E0;
border-right: 1px none #E0E0E0;
border-bottom: 1px none #E0E0E0;
border-left: 1px none #E0E0E0;
margin: 0px;
}
.memItemLeft {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: transparent;
font-size: 80%;
}
.memItemRight {
padding: 1px 8px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: transparent;
font-size: 80%;
}
.memTemplItemLeft {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: transparent;
font-size: 80%;
}
.memTemplItemRight {
padding: 1px 8px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: transparent;
font-size: 80%;
}
.memTemplParams {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
color: #606060;
background-color: transparent;
font-size: 80%;
}
.search { color: #003399;
font-weight: bold;
}
form.search {
margin-bottom: 0px;
margin-top: 0px;
}
input.search { font-size: 75%;
color: #000080;
font-weight: normal;
background-color: transparent;
}
td.tiny { font-size: 75%;
}
a {
color: #252E78;
}
a:visited {
color: #3D2185;
}
.dirtab { padding: 4px;
border-collapse: collapse;
border: 1px solid #b0b0b0;
}
th.dirtab { background: #eeeeff;
font-weight: bold;
}
hr { height: 1px;
border: none;
border-top: 1px solid black;
}
/* MRW */
.hidden {
display: none;
}
.boese {
display: none;
}
@media screen {
div.lang {
position: fixed;
top: 0;
right: 0;
z-index: 3;
color: white;
font-weight: bold;
background-color: black;
}
}
@media print {
div.lang {
display: none;
}
}
div.lang a {
color: yellow;
}
div.lang a:link {
color: yellow;
}
div.lang a:visited {
color: yellow;
}
div.lang a:active {
color: white;
background-color: blue;
}
div.lang a:hover {
color: black;
background-color: yellow;
}
div.feedback {
border: .5em groove gold;
margin-top: 1em;
margin-bottom: 1em;
background-color: #AAA;
}
div.feedback:lang(de):before {
content: "Ideen, Anregungen, Kommentare? Für Rückmeldungen bin ich sehr dankbar! "
}
div.feedback:lang(en):before {
content: "Ideas, suggestions, comments? I welcome your participation! "
}
div.feedback:lang(zh):before {
content: "想法, 建议, 评论?我欢迎您提建议!"
}
div.feedback:lang(de):after {
content: " (ePost Adresse siehe oben) Bitte beachte, dass ich keine Briefe an GMX Adressen zurückschreiben kann, wegen deren defekter Mailserver. Ebensowenig kann ich anderen Servern antworten, die fälschlicherweise schwarze Listen verwenden, die dynamische IP Adressen enthalten."
}
div.feedback:lang(en):after {
content: " (email address see above) Please note that I cannot respond to GMX addresses, because of their buggy mailserver, nor can I respond to other locations that use blacklists containing dynamic IP addresses."
}
div.feedback:lang(zh):before {
content: "(电脑地址在上边)注意:我不会给GMX地址写信。"
}
@media screen {
div.kontakt {
position: fixed;
left: 0;
top: 0;
z-index: 2;
color: white;
font-weight: bold;
background-color: black;
}
div.kontakt a {
color: yellow;
}
div.kontakt a:link {
color: yellow;
}
div.kontakt a:visited {
color: yellow;
}
div.kontakt a:active {
color: white;
background-color: blue;
}
div.kontakt a:hover {
color: black;
background-color: yellow;
}
}
@media print {
div.kontakt {
position: fixed;
bottom: 0;
right: 0;
color: black;
font-weight: normal;
background-color: white;
}
a, a:link, a:visited, a:active, a:hover
div.kontakt a, div.kontakt a:link, div.kontakt a:visited, div.kontakt a:active, div.kontakt a:hover
{
color: black;
}
}
@media screen {
div.back {
position: fixed;
top: 0;
right: 0;
color: white;
font-weight: bold;
background-color: black;
}
}
@media print {
div.back {
display: none;
}
}
div.back a {
color: yellow;
}
div.back a:link {
color: yellow;
}
div.back a:visited {
color: yellow;
}
div.back a:active {
color: white;
background-color: blue;
}
div.back a:hover {
color: black;
background-color: yellow;
}
@media screen {
a.target {
position: relative;
top: -5em;
}
body {
padding-top: 1em;
padding-bottom: 1em;
color: black;
background: #FECFD3 url(hintergrund.png) repeat;
}
h1.main {
position: fixed;
top: 0;
left: 0;
right: 0;
text-align: center;
margin-top: 0;
padding-top: 0;
font-weight: bold;
background-color: black;
color: white;
font-size: 100%;
}
h1.main a, h1.main a:link {
background: transparent;
color: yellow;
}
}
@media print {
body {
color: black;
background: white;
padding-bottom: 1em;
}
}
@media screen {
a, a:link {
background: transparent;
color: blue;
}
a:visited {
background: transparent;
color: #000088;
}
a:active {
background: blue;
color: white;
}
a:hover {
background: black;
color: white;
}
}
p {
text-align: justify;
}
p.picture {
text-align: center;
border: .2cm inset yellow;
}
@media print {
p.header-top, p.header-bottom {
display: none;
}
}
@media screen {
p.header-top {
text-align: center;
margin-bottom: 0;
}
p.header-bottom {
text-align: right;
margin-top: 0;
font-size: small;
}
}
dt {
text-align: left;
font-weight: bolder;
margin-top: .5ex;
}
dd {
text-align: justify;
margin-bottom: .5ex;
}
img {
border: .5em groove gold;
}
@media print {
img.scale {
width: 95%;
height: auto;
}
}
div.mainimage {
float: left;
margin: 1em 2em 1em 0;
padding: 0;
}
div.mainimage img {
width: 33%;
height: auto;
}
div.status {
position: fixed;
text-align: right;
bottom: 0;
right: 0;
}
div.validation {
text-align: right;
}
div.validation img {
border: 0;
}
q:lang(de) {
quotes: "\AB" "\BB";
font-style: italic;
/* font-family: cursive; */
}
q:lang(en), q:lang(zh) {
quotes: "\201C" "\201D";
font-style: italic;
/* font-family: cursive; */
}
q q:lang(de) {
quotes: "\2039" "\203A";
font-style: italic;
/* font-family: cursive; */
}
q q:lang(en), q q:lang(zh) {
quotes: "\2018" "\2019";
font-style: italic;
/* font-family: cursive; */
}
pre, code {
border: 1px solid #777
}
@media screen {
/* border and colour */
div.qindex {
background-color: black;
color: black;
font-weight: normal;
}
div.qindex:hover {
background-color: yellow;
color: black;
font-weight: normal;
}
div.qindex a {
background-color: black;
color: yellow;
font-weight: normal;
border: 1px solid white;
}
div.qindex a.qindexHL {
font-weight: bold;
}
div.qindex:hover a {
background-color: yellow;
color: black;
font-weight: normal;
}
div.qindex:hover a:hover {
background-color: black;
color: yellow;
font-weight: normal;
}
/* display and position */
div.qindex {
display: block;
border: .25em groove gold;
text-align: center;
}
}
@media print {
div.qindex {
display: none;
}
}
Loading…
Cancel
Save