diff --git a/00_Prepare_everything/index.html b/00_Prepare_everything/index.html
old mode 100755
new mode 100644
index 0ae93cd..86f230c
--- a/00_Prepare_everything/index.html
+++ b/00_Prepare_everything/index.html
@@ -153,10 +153,9 @@
Before You Start
-
These documents will guide you through the process of creating your own Extractor
-service of which will enable NewPipe to access additional streaming services, such as the currently supported YouTube and SoundCloud.
-The whole documentation consists of this page, which explains the general concept of the NewPipeExtractor, as well as our
-Jdoc setup.
+
These documents will guide you through the process of understanding or creating your own Extractor
+service of which will enable NewPipe to access additional streaming services, such as the currently supported YouTube, SoundCloud and MediaCCC.
+The whole documentation consists of this page and Jdoc setup, which explains the general concept of the NewPipeExtractor.
IMPORTANT!!! This is likely to be the worst documentation you have ever read, so do not hesitate to
report if
you find any spelling errors, incomplete parts or you simply don't understand something. We are an open community
diff --git a/01_Concept_of_the_extractor/index.html b/01_Concept_of_the_extractor/index.html
old mode 100755
new mode 100644
index d006114..d79983f
--- a/01_Concept_of_the_extractor/index.html
+++ b/01_Concept_of_the_extractor/index.html
@@ -75,7 +75,7 @@
Collector/Extractor Pattern for Lists
-
InfoItems Encapsulated in Pages
+
ListExtractor
@@ -196,15 +196,16 @@ try {
Information can be represented as a list. In NewPipe, a list is represented by a
InfoItemsCollector.
-A InfoItemCollector will collect and assemble a list of InfoItem.
-For each item that should be extracted, a new Extractor must be created, and given to the InfoItemCollector via commit().
+A InfoItemsCollector will collect and assemble a list of
InfoItem.
+For each item that should be extracted, a new Extractor must be created, and given to the InfoItemsCollector via
commit().
-
If you are implementing a list for your service you need to extend InfoItem containing the extracted information
-and implement an InfoItemExtractor,
-that will return the data of one InfoItem.
+
If you are implementing a list in your service you need to implement an InfoItemExtractor,
+that will be able to retreve data for one and only one InfoItem. This extractor will then be comitted to the InfoItemsCollector that can collect the type of InfoItems you want to generate.
A common implementation would look like this:
-
private MyInfoItemCollector collectInfoItemsFromElement(Element e) {
- MyInfoItemCollector collector = new MyInfoItemCollector(getServiceId());
+private SomeInfoItemCollector collectInfoItemsFromElement(Element e) {
+ // See *Some* as something like Stream or Channel
+ // e.g. StreamInfoItemsCollector, and ChannelInfoItemsCollector are provided by NP
+ SomeInfoItemCollector collector = new SomeInfoItemCollector(getServiceId());
for(final Element li : element.children()) {
collector.commit(new InfoItemExtractor() {
@@ -225,15 +226,21 @@ that will return the data of one InfoItem.
-InfoItems Encapsulated in Pages
+
+There is more to know about lists:
+
+-
When a streaming site shows a list of items, it usually offers some additional information about that list like its title, a thumbnail,
and its creator. Such info can be called list header.
-When a website shows a long list of items it usually does not load the whole list, but only a part of it. In order to get more items you may have to click on a next page button, or scroll down.
-This is why a list in NewPipe lists are chopped down into smaller lists called InfoItemsPages. Each page has its own URL, and needs to be extracted separately.
-Additional metadata about the list and extracting multiple pages can be handled by a
-ListExtractor,
-and its ListExtractor.InfoItemsPage.
-For extracting list header information it behaves like a regular extractor. For handling InfoItemsPages
it adds methods
+
+-
+
When a website shows a long list of items it usually does not load the whole list, but only a part of it. In order to get more items you may have to click on a next page button, or scroll down.
+
+
+Both of these Problems are fixed by the ListExtractor which takes care about extracting additional metadata about the liast,
+and by chopping down lists into several pages, so called InfoItemsPages.
+Each page has its own URL, and needs to be extracted separately.
+For extracting list header information a ListExtractor
behaves like a regular extractor. For handling InfoItemsPages
it adds methods
such as:
The reason why the first page is handled special is because many Websites such as YouTube will load the first page of
items like a regular web page, but all the others as an AJAX request.
+An InfoItemsPage itself has two constructors which take these parameters:
+- The InfoitemsCollector of the list that the page should represent
+- A nextPageUrl which represents the url of the following page (may be null if not page follows).
+- Optionally errors which is a list of Exceptions that may have happened during extracton.
+Here is a simplified reference implementation of a list extractor that only extracts pages, but not metadata:
+class MyListExtractor extends ListExtractor {
+ ...
+ private Document document;
+
+ ...
+
+ public InfoItemsPage<SomeInfoItem> getPage(pageUrl)
+ throws ExtractionException {
+ SomeInfoItemCollector collector = new SomeInfoItemCollector(getServiceId());
+ document = myFunctionToGetThePageHTMLWhatever(pageUrl);
+
+ //remember this part from the simple list extraction
+ for(final Element li : document.children()) {
+ collector.commit(new InfoItemExtractor() {
+ @Override
+ public String getName() throws ParsingException {
+ ...
+ }
+
+ @Override
+ public String getUrl() throws ParsingException {
+ ...
+ }
+ ...
+ }
+ return new InfoItemsPage<SomeInfoItem>(collector, myFunctionToGetTheNextPageUrl(document));
+ }
+
+ public InfoItemsPage<SomeInfoItem> getInitialPage() {
+ //document here got initialzied by the fetch() function.
+ return getPage(getTheCurrentPageUrl(document));
+ }
+ ...
+}
+
diff --git a/02_Concept_of_LinkHandler/index.html b/02_Concept_of_LinkHandler/index.html
old mode 100755
new mode 100644
diff --git a/03_Implement_a_service/index.html b/03_Implement_a_service/index.html
old mode 100755
new mode 100644
diff --git a/04_Run_changes_in_App/index.html b/04_Run_changes_in_App/index.html
old mode 100755
new mode 100644
diff --git a/05_releasing/index.html b/05_releasing/index.html
old mode 100755
new mode 100644
diff --git a/06_documentation/index.html b/06_documentation/index.html
old mode 100755
new mode 100644
diff --git a/07_maintainers_view/index.html b/07_maintainers_view/index.html
old mode 100755
new mode 100644
diff --git a/404.html b/404.html
old mode 100755
new mode 100644
diff --git a/css/github.min.css b/css/github.min.css
old mode 100755
new mode 100644
index 3fadc2d..47e68ba
--- a/css/github.min.css
+++ b/css/github.min.css
@@ -1,62 +1,62 @@
-.hljs {
- display:block;
- overflow-x:auto;
- padding:1em;
- color:#333;
- background:#f8f8f8
-}
-.hljs-comment,.hljs-quote {
- color:#998;
- font-style:italic
-}
-.hljs-keyword,.hljs-selector-tag,.hljs-subst {
- color:#333;
- font-weight:bold
-}
-.hljs-number,.hljs-literal,.hljs-variable,.hljs-template-variable,.hljs-tag .hljs-attr {
- color:#008080
-}
-.hljs-string,.hljs-doctag {
- color:#d14
-}
-.hljs-title,.hljs-section,.hljs-selector-id {
- color:#900;
- font-weight:bold
-}
-.hljs-subst {
- font-weight:normal
-}
-.hljs-type,.hljs-class .hljs-title {
- color:#458;
- font-weight:bold
-}
-.hljs-tag,.hljs-name,.hljs-attribute {
- color:#000080;
- font-weight:normal
-}
-.hljs-regexp,.hljs-link {
- color:#009926
-}
-.hljs-symbol,.hljs-bullet {
- color:#990073
-}
-.hljs-built_in,.hljs-builtin-name {
- color:#0086b3
-}
-.hljs-meta {
- color:#999;
- font-weight:bold
-}
-.hljs-deletion {
- background:#fdd
-}
-.hljs-addition {
- background:#dfd
-}
-.hljs-emphasis {
- font-style:italic
-}
-.hljs-strong {
- font-weight:bold
-}
-
+.hljs {
+ display:block;
+ overflow-x:auto;
+ padding:1em;
+ color:#333;
+ background:#f8f8f8
+}
+.hljs-comment,.hljs-quote {
+ color:#998;
+ font-style:italic
+}
+.hljs-keyword,.hljs-selector-tag,.hljs-subst {
+ color:#333;
+ font-weight:bold
+}
+.hljs-number,.hljs-literal,.hljs-variable,.hljs-template-variable,.hljs-tag .hljs-attr {
+ color:#008080
+}
+.hljs-string,.hljs-doctag {
+ color:#d14
+}
+.hljs-title,.hljs-section,.hljs-selector-id {
+ color:#900;
+ font-weight:bold
+}
+.hljs-subst {
+ font-weight:normal
+}
+.hljs-type,.hljs-class .hljs-title {
+ color:#458;
+ font-weight:bold
+}
+.hljs-tag,.hljs-name,.hljs-attribute {
+ color:#000080;
+ font-weight:normal
+}
+.hljs-regexp,.hljs-link {
+ color:#009926
+}
+.hljs-symbol,.hljs-bullet {
+ color:#990073
+}
+.hljs-built_in,.hljs-builtin-name {
+ color:#0086b3
+}
+.hljs-meta {
+ color:#999;
+ font-weight:bold
+}
+.hljs-deletion {
+ background:#fdd
+}
+.hljs-addition {
+ background:#dfd
+}
+.hljs-emphasis {
+ font-style:italic
+}
+.hljs-strong {
+ font-weight:bold
+}
+
diff --git a/css/highlight.css b/css/highlight.css
old mode 100755
new mode 100644
index ed74bb1..4e68981
--- a/css/highlight.css
+++ b/css/highlight.css
@@ -1,115 +1,115 @@
-.codehilite code, .codehilite pre{color:#3F3F3F;background-color:#F7F7F7;
-overflow: auto;
-box-sizing: border-box;
-
- padding: 0.01em 16px;
- padding-top: 0.01em;
- padding-right-value: 16px;
- padding-bottom: 0.01em;
- padding-left-value: 16px;
- padding-left-ltr-source: physical;
- padding-left-rtl-source: physical;
- padding-right-ltr-source: physical;
- padding-right-rtl-source: physical;
-
-border-radius: 16px !important;
- border-top-left-radius: 16px;
- border-top-right-radius: 16px;
- border-bottom-right-radius: 16px;
- border-bottom-left-radius: 16px;
-
-border: 1px solid #CCC !important;
- border-top-width: 1px;
- border-right-width-value: 1px;
- border-right-width-ltr-source: physical;
- border-right-width-rtl-source: physical;
- border-bottom-width: 1px;
- border-left-width-value: 1px;
- border-left-width-ltr-source: physical;
- border-left-width-rtl-source: physical;
- border-top-style: solid;
- border-right-style-value: solid;
- border-right-style-ltr-source: physical;
- border-right-style-rtl-source: physical;
- border-bottom-style: solid;
- border-left-style-value: solid;
- border-left-style-ltr-source: physical;
- border-left-style-rtl-source: physical;
- border-top-color: #CCC;
- border-right-color-value: #CCC;
- border-right-color-ltr-source: physical;
- border-right-color-rtl-source: physical;
- border-bottom-color: #CCC;
- border-left-color-value: #CCC;
- border-left-color-ltr-source: physical;
- border-left-color-rtl-source: physical;
- -moz-border-top-colors: none;
- -moz-border-right-colors: none;
- -moz-border-bottom-colors: none;
- -moz-border-left-colors: none;
- border-image-source: none;
- border-image-slice: 100% 100% 100% 100%;
- border-image-width: 1 1 1 1;
- border-image-outset: 0 0 0 0;
- border-image-repeat: stretch stretch;}
-.codehilite .hll { background-color: #ffffcc }
-.codehilite .c { color: #999988; font-style: italic } /* Comment */
-.codehilite .err { color: #a61717; background-color: #e3d2d2 } /* Error */
-.codehilite .k { color: #000000; font-weight: bold } /* Keyword */
-.codehilite .o { color: #000000; font-weight: bold } /* Operator */
-.codehilite .cm { color: #999988; font-style: italic } /* Comment.Multiline */
-.codehilite .cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */
-.codehilite .c1 { color: #999988; font-style: italic } /* Comment.Single */
-.codehilite .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
-.codehilite .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
-.codehilite .ge { color: #000000; font-style: italic } /* Generic.Emph */
-.codehilite .gr { color: #aa0000 } /* Generic.Error */
-.codehilite .gh { color: #999999 } /* Generic.Heading */
-.codehilite .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
-.codehilite .go { color: #888888 } /* Generic.Output */
-.codehilite .gp { color: #555555 } /* Generic.Prompt */
-.codehilite .gs { font-weight: bold } /* Generic.Strong */
-.codehilite .gu { color: #aaaaaa } /* Generic.Subheading */
-.codehilite .gt { color: #aa0000 } /* Generic.Traceback */
-.codehilite .kc { color: #000000; font-weight: bold } /* Keyword.Constant */
-.codehilite .kd { color: #000000; font-weight: bold } /* Keyword.Declaration */
-.codehilite .kn { color: #000000; font-weight: bold } /* Keyword.Namespace */
-.codehilite .kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */
-.codehilite .kr { color: #000000; font-weight: bold } /* Keyword.Reserved */
-.codehilite .kt { color: #445588; font-weight: bold } /* Keyword.Type */
-.codehilite .m { color: #009999 } /* Literal.Number */
-.codehilite .s { color: #d01040 } /* Literal.String */
-.codehilite .na { color: #008080 } /* Name.Attribute */
-.codehilite .nb { color: #0086B3 } /* Name.Builtin */
-.codehilite .nc { color: #445588; font-weight: bold } /* Name.Class */
-.codehilite .no { color: #008080 } /* Name.Constant */
-.codehilite .nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */
-.codehilite .ni { color: #800080 } /* Name.Entity */
-.codehilite .ne { color: #990000; font-weight: bold } /* Name.Exception */
-.codehilite .nf { color: #990000; font-weight: bold } /* Name.Function */
-.codehilite .nl { color: #990000; font-weight: bold } /* Name.Label */
-.codehilite .nn { color: #555555 } /* Name.Namespace */
-.codehilite .nt { color: #000080 } /* Name.Tag */
-.codehilite .nv { color: #008080 } /* Name.Variable */
-.codehilite .ow { color: #000000; font-weight: bold } /* Operator.Word */
-.codehilite .w { color: #bbbbbb } /* Text.Whitespace */
-.codehilite .mf { color: #009999 } /* Literal.Number.Float */
-.codehilite .mh { color: #009999 } /* Literal.Number.Hex */
-.codehilite .mi { color: #009999 } /* Literal.Number.Integer */
-.codehilite .mo { color: #009999 } /* Literal.Number.Oct */
-.codehilite .sb { color: #d01040 } /* Literal.String.Backtick */
-.codehilite .sc { color: #d01040 } /* Literal.String.Char */
-.codehilite .sd { color: #d01040 } /* Literal.String.Doc */
-.codehilite .s2 { color: #d01040 } /* Literal.String.Double */
-.codehilite .se { color: #d01040 } /* Literal.String.Escape */
-.codehilite .sh { color: #d01040 } /* Literal.String.Heredoc */
-.codehilite .si { color: #d01040 } /* Literal.String.Interpol */
-.codehilite .sx { color: #d01040 } /* Literal.String.Other */
-.codehilite .sr { color: #009926 } /* Literal.String.Regex */
-.codehilite .s1 { color: #d01040 } /* Literal.String.Single */
-.codehilite .ss { color: #990073 } /* Literal.String.Symbol */
-.codehilite .bp { color: #999999 } /* Name.Builtin.Pseudo */
-.codehilite .vc { color: #008080 } /* Name.Variable.Class */
-.codehilite .vg { color: #008080 } /* Name.Variable.Global */
-.codehilite .vi { color: #008080 } /* Name.Variable.Instance */
-.codehilite .il { color: #009999 } /* Literal.Number.Integer.Long */
+.codehilite code, .codehilite pre{color:#3F3F3F;background-color:#F7F7F7;
+overflow: auto;
+box-sizing: border-box;
+
+ padding: 0.01em 16px;
+ padding-top: 0.01em;
+ padding-right-value: 16px;
+ padding-bottom: 0.01em;
+ padding-left-value: 16px;
+ padding-left-ltr-source: physical;
+ padding-left-rtl-source: physical;
+ padding-right-ltr-source: physical;
+ padding-right-rtl-source: physical;
+
+border-radius: 16px !important;
+ border-top-left-radius: 16px;
+ border-top-right-radius: 16px;
+ border-bottom-right-radius: 16px;
+ border-bottom-left-radius: 16px;
+
+border: 1px solid #CCC !important;
+ border-top-width: 1px;
+ border-right-width-value: 1px;
+ border-right-width-ltr-source: physical;
+ border-right-width-rtl-source: physical;
+ border-bottom-width: 1px;
+ border-left-width-value: 1px;
+ border-left-width-ltr-source: physical;
+ border-left-width-rtl-source: physical;
+ border-top-style: solid;
+ border-right-style-value: solid;
+ border-right-style-ltr-source: physical;
+ border-right-style-rtl-source: physical;
+ border-bottom-style: solid;
+ border-left-style-value: solid;
+ border-left-style-ltr-source: physical;
+ border-left-style-rtl-source: physical;
+ border-top-color: #CCC;
+ border-right-color-value: #CCC;
+ border-right-color-ltr-source: physical;
+ border-right-color-rtl-source: physical;
+ border-bottom-color: #CCC;
+ border-left-color-value: #CCC;
+ border-left-color-ltr-source: physical;
+ border-left-color-rtl-source: physical;
+ -moz-border-top-colors: none;
+ -moz-border-right-colors: none;
+ -moz-border-bottom-colors: none;
+ -moz-border-left-colors: none;
+ border-image-source: none;
+ border-image-slice: 100% 100% 100% 100%;
+ border-image-width: 1 1 1 1;
+ border-image-outset: 0 0 0 0;
+ border-image-repeat: stretch stretch;}
+.codehilite .hll { background-color: #ffffcc }
+.codehilite .c { color: #999988; font-style: italic } /* Comment */
+.codehilite .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.codehilite .k { color: #000000; font-weight: bold } /* Keyword */
+.codehilite .o { color: #000000; font-weight: bold } /* Operator */
+.codehilite .cm { color: #999988; font-style: italic } /* Comment.Multiline */
+.codehilite .cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */
+.codehilite .c1 { color: #999988; font-style: italic } /* Comment.Single */
+.codehilite .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
+.codehilite .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.codehilite .ge { color: #000000; font-style: italic } /* Generic.Emph */
+.codehilite .gr { color: #aa0000 } /* Generic.Error */
+.codehilite .gh { color: #999999 } /* Generic.Heading */
+.codehilite .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.codehilite .go { color: #888888 } /* Generic.Output */
+.codehilite .gp { color: #555555 } /* Generic.Prompt */
+.codehilite .gs { font-weight: bold } /* Generic.Strong */
+.codehilite .gu { color: #aaaaaa } /* Generic.Subheading */
+.codehilite .gt { color: #aa0000 } /* Generic.Traceback */
+.codehilite .kc { color: #000000; font-weight: bold } /* Keyword.Constant */
+.codehilite .kd { color: #000000; font-weight: bold } /* Keyword.Declaration */
+.codehilite .kn { color: #000000; font-weight: bold } /* Keyword.Namespace */
+.codehilite .kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */
+.codehilite .kr { color: #000000; font-weight: bold } /* Keyword.Reserved */
+.codehilite .kt { color: #445588; font-weight: bold } /* Keyword.Type */
+.codehilite .m { color: #009999 } /* Literal.Number */
+.codehilite .s { color: #d01040 } /* Literal.String */
+.codehilite .na { color: #008080 } /* Name.Attribute */
+.codehilite .nb { color: #0086B3 } /* Name.Builtin */
+.codehilite .nc { color: #445588; font-weight: bold } /* Name.Class */
+.codehilite .no { color: #008080 } /* Name.Constant */
+.codehilite .nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */
+.codehilite .ni { color: #800080 } /* Name.Entity */
+.codehilite .ne { color: #990000; font-weight: bold } /* Name.Exception */
+.codehilite .nf { color: #990000; font-weight: bold } /* Name.Function */
+.codehilite .nl { color: #990000; font-weight: bold } /* Name.Label */
+.codehilite .nn { color: #555555 } /* Name.Namespace */
+.codehilite .nt { color: #000080 } /* Name.Tag */
+.codehilite .nv { color: #008080 } /* Name.Variable */
+.codehilite .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.codehilite .w { color: #bbbbbb } /* Text.Whitespace */
+.codehilite .mf { color: #009999 } /* Literal.Number.Float */
+.codehilite .mh { color: #009999 } /* Literal.Number.Hex */
+.codehilite .mi { color: #009999 } /* Literal.Number.Integer */
+.codehilite .mo { color: #009999 } /* Literal.Number.Oct */
+.codehilite .sb { color: #d01040 } /* Literal.String.Backtick */
+.codehilite .sc { color: #d01040 } /* Literal.String.Char */
+.codehilite .sd { color: #d01040 } /* Literal.String.Doc */
+.codehilite .s2 { color: #d01040 } /* Literal.String.Double */
+.codehilite .se { color: #d01040 } /* Literal.String.Escape */
+.codehilite .sh { color: #d01040 } /* Literal.String.Heredoc */
+.codehilite .si { color: #d01040 } /* Literal.String.Interpol */
+.codehilite .sx { color: #d01040 } /* Literal.String.Other */
+.codehilite .sr { color: #009926 } /* Literal.String.Regex */
+.codehilite .s1 { color: #d01040 } /* Literal.String.Single */
+.codehilite .ss { color: #990073 } /* Literal.String.Symbol */
+.codehilite .bp { color: #999999 } /* Name.Builtin.Pseudo */
+.codehilite .vc { color: #008080 } /* Name.Variable.Class */
+.codehilite .vg { color: #008080 } /* Name.Variable.Global */
+.codehilite .vi { color: #008080 } /* Name.Variable.Instance */
+.codehilite .il { color: #009999 } /* Literal.Number.Integer.Long */
diff --git a/css/local_fonts.css b/css/local_fonts.css
old mode 100755
new mode 100644
index 4a4963f..4139f27
--- a/css/local_fonts.css
+++ b/css/local_fonts.css
@@ -1,60 +1,60 @@
-/*
- Stylesheet to load all local fonts except Font-Awesome because that is done by the theme.
- Add all new fonts below.
- */
-
-@font-face {
- font-family: 'Inconsolata';
- font-style: normal;
- font-weight: 400;
- src: local('Inconsolata'), local('Inconsolata-Regular'), url(../fonts/Inconsolata-Regular.ttf) format('truetype');
-}
-
-@font-face {
- font-family: 'Inconsolata';
- font-style: normal;
- font-weight: 700;
- src: local('Inconsolata Bold'), local('Inconsolata-Bold'), url(../fonts/Inconsolata-Bold.ttf) format('truetype');
-}
-
-@font-face {
- font-family: 'Lato';
- font-style: normal;
- font-weight: 400;
- src: local('Lato Regular'), local('Lato-Regular'), url(../fonts/Lato-Regular.ttf) format('truetype');
-}
-
-@font-face {
- font-family: 'Lato';
- font-style: normal;
- font-weight: 700;
- src: local('Lato Bold'), local('Lato-Bold'), url(../fonts/Lato-Bold.ttf) format('truetype');
-}
-
-@font-face {
- font-family: 'Lato';
- font-style: italic;
- font-weight: 400;
- src: local('Lato Italic'), local('Lato-Italic'), url(../fonts/Lato-Italic.ttf) format('truetype');
-}
-
-@font-face {
- font-family: 'Lato';
- font-style: italic;
- font-weight: 700;
- src: local('Lato Bold Italic'), local('Lato-BoldItalic'), url(../fonts/Lato-BoldItalic.ttf) format('truetype');
-}
-
-@font-face {
- font-family: 'Roboto Slab';
- font-style: normal;
- font-weight: 400;
- src: local('Roboto Slab Regular'), local('RobotoSlab-Regular'), url(../fonts/RobotoSlab-Regular.ttf) format('truetype');
-}
-
-@font-face {
- font-family: 'Roboto Slab';
- font-style: normal;
- font-weight: 700;
- src: local('Roboto Slab Bold'), local('RobotoSlab-Bold'), url(../fonts/RobotoSlab-Bold.ttf) format('truetype');
-}
+/*
+ Stylesheet to load all local fonts except Font-Awesome because that is done by the theme.
+ Add all new fonts below.
+ */
+
+@font-face {
+ font-family: 'Inconsolata';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Inconsolata'), local('Inconsolata-Regular'), url(../fonts/Inconsolata-Regular.ttf) format('truetype');
+}
+
+@font-face {
+ font-family: 'Inconsolata';
+ font-style: normal;
+ font-weight: 700;
+ src: local('Inconsolata Bold'), local('Inconsolata-Bold'), url(../fonts/Inconsolata-Bold.ttf) format('truetype');
+}
+
+@font-face {
+ font-family: 'Lato';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Lato Regular'), local('Lato-Regular'), url(../fonts/Lato-Regular.ttf) format('truetype');
+}
+
+@font-face {
+ font-family: 'Lato';
+ font-style: normal;
+ font-weight: 700;
+ src: local('Lato Bold'), local('Lato-Bold'), url(../fonts/Lato-Bold.ttf) format('truetype');
+}
+
+@font-face {
+ font-family: 'Lato';
+ font-style: italic;
+ font-weight: 400;
+ src: local('Lato Italic'), local('Lato-Italic'), url(../fonts/Lato-Italic.ttf) format('truetype');
+}
+
+@font-face {
+ font-family: 'Lato';
+ font-style: italic;
+ font-weight: 700;
+ src: local('Lato Bold Italic'), local('Lato-BoldItalic'), url(../fonts/Lato-BoldItalic.ttf) format('truetype');
+}
+
+@font-face {
+ font-family: 'Roboto Slab';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Roboto Slab Regular'), local('RobotoSlab-Regular'), url(../fonts/RobotoSlab-Regular.ttf) format('truetype');
+}
+
+@font-face {
+ font-family: 'Roboto Slab';
+ font-style: normal;
+ font-weight: 700;
+ src: local('Roboto Slab Bold'), local('RobotoSlab-Bold'), url(../fonts/RobotoSlab-Bold.ttf) format('truetype');
+}
diff --git a/css/theme.css b/css/theme.css
old mode 100755
new mode 100644
diff --git a/css/theme_child.css b/css/theme_child.css
old mode 100755
new mode 100644
index bf8041f..0cabce0
--- a/css/theme_child.css
+++ b/css/theme_child.css
@@ -1,3 +1,3 @@
-.wy-nav-top i {
- line-height: 50px;
+.wy-nav-top i {
+ line-height: 50px;
}
\ No newline at end of file
diff --git a/css/theme_extra.css b/css/theme_extra.css
old mode 100755
new mode 100644
diff --git a/fonts/Inconsolata-Bold.ttf b/fonts/Inconsolata-Bold.ttf
old mode 100755
new mode 100644
diff --git a/fonts/Inconsolata-Regular.ttf b/fonts/Inconsolata-Regular.ttf
old mode 100755
new mode 100644
diff --git a/fonts/Lato-Bold.ttf b/fonts/Lato-Bold.ttf
old mode 100755
new mode 100644
diff --git a/fonts/Lato-BoldItalic.ttf b/fonts/Lato-BoldItalic.ttf
old mode 100755
new mode 100644
diff --git a/fonts/Lato-Italic.ttf b/fonts/Lato-Italic.ttf
old mode 100755
new mode 100644
diff --git a/fonts/Lato-Regular.ttf b/fonts/Lato-Regular.ttf
old mode 100755
new mode 100644
diff --git a/fonts/RobotoSlab-Bold.ttf b/fonts/RobotoSlab-Bold.ttf
old mode 100755
new mode 100644
diff --git a/fonts/RobotoSlab-Regular.ttf b/fonts/RobotoSlab-Regular.ttf
old mode 100755
new mode 100644
diff --git a/fonts/fontawesome-webfont.eot b/fonts/fontawesome-webfont.eot
old mode 100755
new mode 100644
diff --git a/fonts/fontawesome-webfont.svg b/fonts/fontawesome-webfont.svg
old mode 100755
new mode 100644
diff --git a/fonts/fontawesome-webfont.ttf b/fonts/fontawesome-webfont.ttf
old mode 100755
new mode 100644
diff --git a/fonts/fontawesome-webfont.woff b/fonts/fontawesome-webfont.woff
old mode 100755
new mode 100644
diff --git a/img/InfoItemsCollector_objectdiagram.svg b/img/InfoItemsCollector_objectdiagram.svg
old mode 100755
new mode 100644
index 0f515cb..d661de9
--- a/img/InfoItemsCollector_objectdiagram.svg
+++ b/img/InfoItemsCollector_objectdiagram.svg
@@ -1,39 +1,39 @@
-
-
-