Dokumentation eingebaut und aktuelle Element wird nun gekennzeichnet

This commit is contained in:
mdn 2015-12-06 23:25:21 +01:00
parent 0147753ff6
commit 2abef7a2a4
49 changed files with 3505 additions and 39 deletions

1
.gitignore vendored
View file

@ -27,3 +27,4 @@ obj/
[Rr]elease*/
_ReSharper*/
[Tt]est[Rr]esult*
output/

View file

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Allgemeine Informationen über eine Assembly werden über folgende
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
// die einer Assembly zugeordnet sind.
[assembly: AssemblyTitle("TimeScheduler.Test")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("TimeScheduler.Test")]
[assembly: AssemblyCopyright("Copyright © 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Wenn ComVisible auf "false" festgelegt wird, sind die Typen innerhalb dieser Assembly
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
[assembly: ComVisible(false)]
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
[assembly: Guid("8b47037c-584e-41fb-b8b8-14fad26d7bca")]
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
//
// Hauptversion
// Nebenversion
// Buildnummer
// Revision
//
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben:
// [Assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{8B47037C-584E-41FB-B8B8-14FAD26D7BCA}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>TimeScheduler.Test</RootNamespace>
<AssemblyName>TimeScheduler.Test</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
<IsCodedUITest>False</IsCodedUITest>
<TestProjectType>UnitTest</TestProjectType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
</ItemGroup>
<Choose>
<When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'">
<ItemGroup>
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework">
<Private>False</Private>
</Reference>
</ItemGroup>
</Otherwise>
</Choose>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ViewModel\MainViewModelTest.cs" />
</ItemGroup>
<Choose>
<When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
<ItemGroup>
<Reference Include="Microsoft.VisualStudio.QualityTools.CodedUITestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestTools.UITest.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestTools.UITest.Extension, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestTools.UITesting, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
</ItemGroup>
</When>
</Choose>
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View file

@ -0,0 +1,14 @@
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace TimeScheduler.Test.ViewModel
{
[TestClass]
public class MainViewModelTest
{
[TestMethod]
public void TestMethod1()
{
}
}
}

View file

@ -5,6 +5,8 @@ VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TimeScheduler", "TimeScheduler\TimeScheduler.csproj", "{0129AAAE-40F7-4B87-959F-0C48806F496A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TimeScheduler.Test", "TimeScheduler.Test\TimeScheduler.Test.csproj", "{8B47037C-584E-41FB-B8B8-14FAD26D7BCA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -15,6 +17,10 @@ Global
{0129AAAE-40F7-4B87-959F-0C48806F496A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0129AAAE-40F7-4B87-959F-0C48806F496A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0129AAAE-40F7-4B87-959F-0C48806F496A}.Release|Any CPU.Build.0 = Release|Any CPU
{8B47037C-584E-41FB-B8B8-14FAD26D7BCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8B47037C-584E-41FB-B8B8-14FAD26D7BCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8B47037C-584E-41FB-B8B8-14FAD26D7BCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8B47037C-584E-41FB-B8B8-14FAD26D7BCA}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View file

@ -15,7 +15,7 @@ namespace TimeScheduler.Common
/// &lt;FrameworkElement Property="{Binding Source={StaticResource proxy},Path=VMProperty}"&gt;
/// </code>
/// </example>
class BindingProxy : Freezable
public class BindingProxy : Freezable
{
#region Konstruktion
/// <summary>Standard-Konstruktor</summary>

View file

@ -64,7 +64,7 @@ namespace TimeScheduler.Domain.Impl
}
#endregion
#region ITimeItem
#region ITimeItem (Eigenschaften nicht implizit implementieren, sonst funktioniert das Binden nicht)
private int key_;
/// <inheritdoc/>
public int Key { get { return key_; } set { SetField(ref key_, value); } }
@ -106,6 +106,10 @@ namespace TimeScheduler.Domain.Impl
private TimeItemType itemType_;
/// <inheritdoc/>
public TimeItemType ItemType { get { return itemType_; } set { SetField(ref itemType_, value); } }
private bool isCurrentItem_;
/// <inheritdoc/>
public bool IsCurrentItem { get { return isCurrentItem_; } set { SetField(ref isCurrentItem_, value); } }
#endregion
}
}

View file

@ -48,15 +48,23 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border x:Name="showSelection" BorderBrush="Black" BorderThickness="1" Margin="1,2,1,0">
<Border x:Name="showSelection" BorderBrush="Black" BorderThickness="2" Margin="1,2,1,0">
<Border Background="{TemplateBinding Background}" Margin="5" CornerRadius="10" Padding="5">
<Grid>
<ContentPresenter />
<Path x:Name="currentItemAdorner" Visibility="Collapsed" Fill="#FF00C000" Width="10" Height="10"
VerticalAlignment="Top" HorizontalAlignment="Right"
Data="M 0,0 L 10,5 L0,10 Z"/>
</Grid>
</Border>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="showSelection" Property="Background" Value="Blue"/>
</Trigger>
<DataTrigger Binding="{Binding IsCurrentItem}" Value="true">
<Setter TargetName="currentItemAdorner" Property="Visibility" Value="Visible"/>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
@ -110,7 +118,7 @@
<Setter.Value>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="White" Offset="0"/>
<GradientStop Color="Green" Offset="0.5"/>
<GradientStop Color="Red" Offset="0.5"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>

View file

@ -23,5 +23,8 @@ namespace TimeScheduler.Model
/// <summary>Typ</summary>
TimeItemType ItemType { get; set; }
/// <summary>Definiert ob diese Element, das aktuelle ist auf dem gespeichert werden soll</summary>
bool IsCurrentItem { get; set; }
}
}

View file

@ -0,0 +1,8 @@
Änderungshistorie
=================
Version 1.0.0.0
---------------
* erstellt

View file

@ -89,9 +89,17 @@
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="Resource\ChangeLog.md" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>"$(SolutionDir)package\CreateDocu.cmd"</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

View file

@ -14,10 +14,10 @@ namespace TimeScheduler.ViewModel
#region Konstruktion
/// <summary>aktuelles Ele</summary>
private ITimeItem lastTimeItem_;
/// <summary>Element, das noch undefinierten Zeitraum speichert</summary>
private ITimeItem undefinedItem_;
/// <summary>Zyklische Aktuallisierung</summary>
private System.Timers.Timer timer_;
/// <summary>Funktion zum ermitteln der aktuellen Uhrzeit</summary>
protected Func<DateTime> currentTime_ = new Func<DateTime>(() => DateTime.Now);
/// <summary>Standard-Konstruktor</summary>
public MainViewModel() : this(new Domain.Impl.FileDomain()) { Refresh(); }
@ -56,22 +56,13 @@ namespace TimeScheduler.ViewModel
{
case Microsoft.Win32.PowerModes.Resume: break;
case Microsoft.Win32.PowerModes.StatusChange: break;
case Microsoft.Win32.PowerModes.Suspend:
// Beim wechseln in Suspend, ein neues Element erzeugen, wenn das vorhergehende lang genug ist
Save();
if (lastTimeItem_ != null)
if ((lastTimeItem_.Till - lastTimeItem_.From) > TimeSpan.FromMinutes(15))
{
var newItem = Provider.NewItem();
newItem.From = lastTimeItem_.Till;
TimeItems.Add(newItem);
}
break;
case Microsoft.Win32.PowerModes.Suspend: CreateNewLastItem(); break;
}
}
catch (Exception exc) { }
}
private void SystemEvents_SessionEnded(object sender, Microsoft.Win32.SessionEndedEventArgs e) { Save(); }
private void SystemEvents_SessionEnded(object sender, Microsoft.Win32.SessionEndedEventArgs e) { UpdateLastItem(); }
private void SystemEvents_SessionSwitch(object sender, Microsoft.Win32.SessionSwitchEventArgs e)
{
try
@ -84,24 +75,15 @@ namespace TimeScheduler.ViewModel
case Microsoft.Win32.SessionSwitchReason.RemoteDisconnect: break;
case Microsoft.Win32.SessionSwitchReason.SessionLogon: break;
case Microsoft.Win32.SessionSwitchReason.SessionLogoff: break;
case Microsoft.Win32.SessionSwitchReason.SessionLock:
// Beim Sperren, eine neue Session beginnen
Save();
if (lastTimeItem_ != null)
if ((lastTimeItem_.Till - lastTimeItem_.From) >= TimeSpan.FromMinutes(15))
{
var newItem = Provider.NewItem();
newItem.From = lastTimeItem_.Till;
TimeItems.Add(newItem);
}
break;
case Microsoft.Win32.SessionSwitchReason.SessionLock: CreateNewLastItem(); break;
case Microsoft.Win32.SessionSwitchReason.SessionUnlock: break;
case Microsoft.Win32.SessionSwitchReason.SessionRemoteControl: break;
}
}
catch (Exception exc) { }
}
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { Save(); }
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { UpdateLastItem(); }
/// <summary>Datenbeschaffer</summary>
@ -109,7 +91,7 @@ namespace TimeScheduler.ViewModel
#endregion
#region Eigenschaften
private DateTime selectedDate_ = DateTime.Now.Date;
private DateTime selectedDate_;
/// <summary>Beinhaltet den selektierten Tag</summary>
public DateTime SelectedDate
{
@ -144,6 +126,7 @@ namespace TimeScheduler.ViewModel
RefreshCommand = new RelayCommand(Refresh);
AddNewCommand = new RelayCommand(AddNew);
DeleteCommand = new RelayCommand(Delete, CanDelete);
SaveCommand = new RelayCommand(Save);
}
public ICommand RefreshCommand { get; private set; }
@ -157,18 +140,22 @@ namespace TimeScheduler.ViewModel
ItemTypes = it;
// Andere Daten ermitteln
RefreshForDate(SelectedDate);
SelectedDate = currentTime_().Date;
//RefreshForDate(SelectedDate);
// Letztes Element ermitteln, auf dem weiter gelaufen wird
var lastItem = TimeItems.OrderByDescending(x => x.From).FirstOrDefault();
if (lastItem == null || lastItem.From.Date != SelectedDate.Date)
{// Wenn keines gefunden wurde oder keins für den heutigen Tag gefunden wurde, dann eins neu erzeugen
lastItem = Provider.NewItem();
lastItem.From = DateTime.Now;
lastItem.From = currentTime_();
TimeItems.Add(lastItem);
}
// und abspeichern
lastTimeItem_ = lastItem;
lastTimeItem_.IsCurrentItem = true;
// Und direkt den aktuellen Wert speichern
UpdateLastItem();
}
private void RefreshForDate(DateTime date)
{
@ -205,16 +192,46 @@ namespace TimeScheduler.ViewModel
}
public ICommand AddNewCommand { get; private set; }
private void AddNew() { TimeItems.Add(Provider.NewItem()); }
private void AddNew() { CreateNewLastItem(); }
public ICommand DeleteCommand { get; private set; }
private void Delete() { TimeItems.Remove(SelectedTimeItem); }
public bool CanDelete() { return SelectedTimeItem != null; }
private void Save() { if (lastTimeItem_ != null) { lastTimeItem_.Till = DateTime.Now; } }
public ICommand SaveCommand { get; private set; }
private void Save() { UpdateLastItem(); }
#endregion
#region Hilfsfunktionen
/// <summary>Schließt das aktuelle "Letzte Element" ab und erzeugt ein neues, aber nur wenn das aktuelle >15min ist</summary>
private void CreateNewLastItem()
{
// Aktuelles Element speichern
UpdateLastItem();
// Wenn ein letztes Element existiert und dies eine Dauer >15min besitzt, dann erst ein neues erzeugen
if (lastTimeItem_ != null && (lastTimeItem_.Till - lastTimeItem_.From) > TimeSpan.FromMinutes(15))
{
// neues Element erzeugen und belegen
var newItem = Provider.NewItem();
newItem.From = lastTimeItem_.Till;
newItem.IsCurrentItem = true;
// Aufnehmen und altes LastItem durch neues ersetzen
TimeItems.Add(newItem);
lastTimeItem_.IsCurrentItem = false;
lastTimeItem_ = newItem;
}
}
/// <summary>Aktualisiert das "Letzte Element"</summary>
private void UpdateLastItem()
{
if (lastTimeItem_ != null)
lastTimeItem_.Till = currentTime_();
}
#endregion
#region Ereignisse
private void TimeItems_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)

View file

@ -0,0 +1,23 @@
@echo off
cls
setlocal
:: In aktuellen Ordner wechseln
%~d0
cd %~dp0
:: Dokumentation via doxygen erzeugen
pushd "doxygen
doxygen TimeScheduler.doxyconf
popd
:: Dokumentation via simpleDocu erzeugen
set FOLDER=%1
if "%FOLDER%"=="" set FOLDER=Release
pushd "docu"
docu.exe "..\..\TimeScheduler\bin\%FOLDER%\TimeScheduler.exe" "..\..\TimeScheduler\bin\%FOLDER%\TimeScheduler.XML" --output="..\..\output\docu"
popd
endlocal
::pause

View file

@ -0,0 +1,10 @@
Einfache Software zum erstellen von HTML-Dokumentation.
Kann aktuell noch keine Code-Elemente in Beispielen.
Webseite: http://docu.jagregory.com
Aufruf durch:
docu assembly.dll
Beim Exe-Programmen, die xml mit angeben:
docu assembly.exe assembly.xml

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,3 @@
<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

Binary file not shown.

View file

@ -0,0 +1,210 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>docu</name>
</assembly>
<members>
<member name="M:Docu.Console.ISwitch.Handle(System.String)">
<summary>
Handle the argument
</summary>
<param name="arg">argument</param>
<returns>Continue/true or exit/false</returns>
</member>
<member name="T:Docu.Output.Rendering.SparkTemplateBase">
<summary>
All public or protected methods and properties on this class are available within documentation templates
</summary>
</member>
<member name="P:Docu.Output.Rendering.SparkTemplateBase.Assemblies">
<summary>
All of the assemblies being documented
</summary>
</member>
<member name="P:Docu.Output.Rendering.SparkTemplateBase.Namespaces">
<summary>
All of the namespaces in the assemblies being documented
</summary>
</member>
<member name="P:Docu.Output.Rendering.SparkTemplateBase.Types">
<summary>
All of the types in the assemblies being documented
</summary>
</member>
<member name="P:Docu.Output.Rendering.SparkTemplateBase.Namespace">
<summary>
The current namespace being documented within the special !namespace template
</summary>
</member>
<member name="P:Docu.Output.Rendering.SparkTemplateBase.Type">
<summary>
The current type being documented withing the special !type template
</summary>
</member>
<member name="P:Docu.Output.Rendering.SparkTemplateBase.RelativeOutputPath">
<summary>
The path of the file that this view represents, relative to the output directory.
</summary>
</member>
<member name="M:Docu.Output.Rendering.SparkTemplateBase.SetMethodUrlFormat(System.String)">
<summary>
Configures the pattern that will be used to construct links to methods referenced in the documentation of other symbols
</summary>
<remarks>
The pattern can be constructed using the following placeholders:
<list type="definition">
<item><term>{type.namespace}</term><description>The namespace of the type that contains the method</description></item>
<item><term>{type}</term><description>The short name of the type that contains the method</description></item>
<item><term>{method}</term><description>The name of method</description></item>
</list>
<para>The default is {type.namespace}/{type}.htm#{method}</para></remarks>
<param name="format">The pattern used to construct the link</param>
</member>
<member name="M:Docu.Output.Rendering.SparkTemplateBase.SetTypeUrlFormat(System.String)">
<summary>
Configures the pattern that will be used to construct links to types referenced in the documentation of other symbols
</summary>
<remarks>
The pattern can be constructed using the following placeholders:
<list type="definition">
<item><term>{type.namespace}</term><description>The namespace of the type</description></item>
<item><term>{type}</term><description>The short name of the type</description></item>
</list>
<para>The default is {type.namespace}/{type}.htm</para></remarks>
<param name="format">The pattern used to construct the link</param>
</member>
<member name="M:Docu.Output.Rendering.SparkTemplateBase.SetPropertyUrlFormat(System.String)">
<summary>
Configures the pattern that will be used to construct links to properties referenced in the documentation of other symbols
</summary>
<remarks>
The pattern can be constructed using the following placeholders:
<list type="definition">
<item><term>{type.namespace}</term><description>The namespace of the type that contains the property</description></item>
<item><term>{type}</term><description>The short name of the type that contains the property</description></item>
<item><term>{property}</term><description>The name of the property</description></item>
</list>
<para>The default is {type.namespace}/{type}.htm#{property}</para></remarks>
<param name="format">The pattern used to construct the link</param>
</member>
<member name="M:Docu.Output.Rendering.SparkTemplateBase.SetEventUrlFormat(System.String)">
<summary>
Configures the pattern that will be used to construct links to events referenced in the documentation of other symbols
</summary>
<remarks>
The pattern can be constructed using the following placeholders:
<list type="definition">
<item><term>{type.namespace}</term><description>The namespace of the type that contains the event</description></item>
<item><term>{type}</term><description>The short name of the type that contains the event</description></item>
<item><term>{event}</term><description>The name of the event</description></item>
</list>
<para>The default is {type.namespace}/{type}.htm#{event}</para></remarks>
<param name="format">The pattern used to construct the link</param>
</member>
<member name="M:Docu.Output.Rendering.SparkTemplateBase.SetFieldUrlFormat(System.String)">
<summary>
Configures the pattern that will be used to construct links to fields referenced in the documentation of other symbols
</summary>
<remarks>
The pattern can be constructed using the following placeholders:
<list type="definition">
<item><term>{type.namespace}</term><description>The namespace of the type that contains the field</description></item>
<item><term>{type}</term><description>The short name of the type that contains the field</description></item>
<item><term>{field}</term><description>The name of the field</description></item>
</list>
<para>The default is {type.namespace}/{type}.htm#{field}</para></remarks>
<param name="format">The pattern used to construct the link</param>
</member>
<member name="M:Docu.Output.Rendering.SparkTemplateBase.SetNamespaceUrlFormat(System.String)">
<summary>
Configures the pattern that will be used to construct links to namespaces referenced in the documentation of other symbols
</summary>
<remarks>
The pattern can be constructed using the following placeholders:
<list type="definition">
<item><term>{type.namespace}</term><description>The name of the namespace</description></item>
</list>
<para>The default is {namespace}.htm</para></remarks>
<param name="format">The pattern used to construct the link</param>
</member>
<member name="M:Docu.Output.Rendering.SparkTemplateBase.WriteProductName(System.Reflection.Assembly)">
<summary>
Returns the product name of an assembly
</summary>
<param name="assembly"></param>
<returns></returns>
</member>
<member name="M:Docu.Output.Rendering.SparkTemplateBase.WriteFileDescription(System.Reflection.Assembly)">
<summary>
Returns the description of an assembly
</summary>
<param name="assembly"></param>
<returns></returns>
</member>
<member name="M:Docu.Output.Rendering.SparkTemplateBase.WriteAssemblyTitle(System.Reflection.Assembly)">
<summary>
Returns the title of an assembly
</summary>
<param name="assembly"></param>
<returns></returns>
</member>
<member name="M:Docu.Output.Rendering.SparkTemplateBase.WriteVersion(System.Reflection.Assembly)">
<summary>
Returns the version number of an assembly
</summary>
<param name="assembly"></param>
<returns></returns>
</member>
<member name="M:Docu.Output.Rendering.SparkTemplateBase.h(System.String)">
<summary>
HTML encodes the content
</summary>
<param name="content"></param>
<returns></returns>
</member>
<member name="M:Docu.Output.Rendering.SparkTemplateBase.Format(Docu.Documentation.Comments.IComment)">
<summary>
Returns the comments in a format suitable for display
</summary>
<param name="comment"></param>
<returns></returns>
</member>
<member name="M:Docu.Output.Rendering.SparkTemplateBase.Format(Docu.Documentation.IReferencable,System.Linq.Expressions.Expression{System.Func{System.Object,System.String}}[])">
<summary>
Returns a hyperlink to another symbol
</summary>
<remarks>The format of the URL in the returned hyperlink can be controlled by the methods <see cref="M:Docu.Output.Rendering.SparkTemplateBase.SetNamespaceUrlFormat(System.String)"/>, <see cref="M:Docu.Output.Rendering.SparkTemplateBase.SetTypeUrlFormat(System.String)"/>, <see cref="M:Docu.Output.Rendering.SparkTemplateBase.SetPropertyUrlFormat(System.String)"/>, <see cref="M:Docu.Output.Rendering.SparkTemplateBase.SetMethodUrlFormat(System.String)"/>, <see cref="M:Docu.Output.Rendering.SparkTemplateBase.SetFieldUrlFormat(System.String)"/> and <see cref="M:Docu.Output.Rendering.SparkTemplateBase.SetEventUrlFormat(System.String)"/></remarks>
<param name="referencable"></param>
<returns></returns>
</member>
<member name="M:Docu.Output.Rendering.SparkTemplateBase.WriteInterfaces(System.Collections.Generic.IList{Docu.Documentation.IReferencable})">
<summary>
Returns a comma-delimited list of the interfaces impleted by a given type
</summary>
<param name="interfaces"></param>
<returns></returns>
</member>
<member name="M:Docu.Output.Rendering.SparkTemplateBase.OutputMethodParams(Docu.Documentation.Method)">
<summary>
Returns a comma-delimited list of the parameters of a given method
</summary>
<param name="method"></param>
<returns></returns>
</member>
<member name="M:Docu.Output.PatternTemplateResolver.Resolve(System.String,System.Collections.Generic.IList{Docu.Documentation.Namespace})">
<summary>
Expands a path into a collection of output files
</summary>
<example>
given template path and a list of namespaces:
test.htm.spark, null == [test.htm]
!namespace.htm.spark, [one, two] == [one.htm, two.htm]
!namespace/test.htm.spark, [one, two] == [one/test.htm, two/test.htm]
</example>
<param name="path">Template path</param>
<param name="namespaces">Namespaces</param>
<returns>List of resolved output matches</returns>
</member>
</members>
</doc>

View file

@ -0,0 +1,82 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<title>${h(Type.PrettyName)} - ${WriteProductName(Assemblies[0])} Documentation</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link type="text/css" rel="stylesheet" href="../main.css" />
<script type="text/javascript" src="../js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="../js/jquery.scrollTo-min.js"></script>
<script type="text/javascript" src="../js/navigation.js"></script>
<script type="text/javascript" src="../js/example.js"></script>
</head>
<body>
<header><h1>${WriteProductName(Assemblies[0])} : API Documentation</h1>
</header>
<namespaces />
<types />
<article>
<header>
<p class="class"><strong>Type</strong> ${h(Type.PrettyName)}</p>
</header>
<section>
<header>
<p><strong>Namespace</strong> ${Namespace.Name}</p>
<p if="Type.ParentType != null && Type.ParentType.PrettyName != 'object'"><strong>Parent</strong> ${Format(Type.ParentType)}</p>
<p if="Type.Interfaces.Count > 0"><strong>Interfaces</strong> ${WriteInterfaces(Type.Interfaces)}</p>
</header>
<div class="sub-header">
<if condition="(Type.Summary != null && Type.Summary.Children.Count() > 0) || (Type.Remarks != null && Type.Remarks.Children.Count() > 0)">
<div id="summary">
<comment content="Type.Summary" />
<remarks content="Type.Remarks" />
<example content="Type.Example" />
</div>
</if>
<if condition="Type.Events.Count > 0">
<h3 class="section">Events</h3>
<ul>
<li each="var ev in Type.Events">${Format(ev)}</li>
</ul>
</if>
<if condition="Type.Methods.Count > 0">
<h3 class="section">Methods</h3>
<ul>
<li each="var method in Type.Methods">${Format(method)}</li>
</ul>
</if>
<if condition="Type.Properties.Count > 0">
<h3 class="section">Properties</h3>
<ul>
<li each="var property in Type.Properties">${Format(property)}</li>
</ul>
</if>
<if condition="Type.Fields.Count > 0">
<h3 class="section">Fields</h3>
<ul>
<li each="var field in Type.Fields">${Format(field)}</li>
</ul>
</if>
</div>
<events events="Type.Events" title="'Events'" />
<var publicInstanceMethods="Type.Methods.Where(x => x.IsPublic && !x.IsStatic)" />
<methods methods="publicInstanceMethods" title="'Public instance methods'" />
<var publicStaticMethods="Type.Methods.Where(x => x.IsPublic && x.IsStatic)" />
<methods methods="publicStaticMethods" title="'Public static methods'" />
<properties properties="Type.Properties" title="'Public properties'" />
<fields fields="Type.Fields" title="'Public fields'" />
</section>
</article>
<use file="../_common_footer" />
</body>
</html>

View file

@ -0,0 +1 @@
${Format(content)}

View file

@ -0,0 +1,12 @@
<if condition="events.Count() > 0">
<h3 class="section">${title}</h3>
<div id="${ev.Name}" class="method" each="var ev in events">
<h4><strong>${h(ev.Name)}</strong></h4>
<div class="content">
<comment content="ev.Summary" />
<remarks content="ev.Remarks" />
<example content="ev.Example" />
</div>
</div>
</if>

View file

@ -0,0 +1,4 @@
<div class="example" if="content != null && content.Children.Count() > 0">
<a href="javascript:void(0)">Show Example</a>
<pre>${Format(content)}</pre>
</div>

View file

@ -0,0 +1,19 @@
<if condition="fields.Count() > 0">
<h3 class="section">${title}</h3>
<div id="${field.Name}" class="method" each="var field in fields">
<h4>${h(field.ReturnType.PrettyName)} <strong>${h(field.Name)}</strong></h4>
<div class="content">
<comment content="field.Summary" />
<remarks content="field.Remarks" />
<table>
<tr>
<td>
<code>return ${Format(field.ReturnType)}</code>
</td>
</tr>
</table>
<example content="field.Example" />
</div>
</div>
</if>

View file

@ -0,0 +1,46 @@
<if condition="methods.Count() > 0">
<h3 class="section">${title}</h3>
<div id="${method.Name}" class="method" each="var method in methods">
<h4>
${Format(method.ReturnType)} <strong>${h(method.PrettyName)}</strong>(${OutputMethodParams(method)})
</h4>
<div class="content">
<comment content="method.Summary" />
<remarks content="method.Remarks" />
<var hasReturn="method.ReturnType.PrettyName != 'void'" />
<var hasParams="method.Parameters.Any(x => x.HasDocumentation)" />
<div class="parameters" if="hasParams">
<h5>Parameters</h5>
<dl>
<for each="var param in method.Parameters">
<dt>
<code>${Format(param.Reference)}</code> ${param.Name}
</dt>
<dd if="!param.Summary.IsEmpty">
<comment content="param.Summary" />
</dd>
</for>
</dl>
</div>
<div class="return" if="!method.Returns.IsEmpty">
<h5>Returns</h5>
<dl>
<dt>
<code>${Format(method.ReturnType)}</code>
</dt>
<dd>
<comment content="method.Returns" />
</dd>
</dl>
</div>
<value content="method.Value" />
<example content="method.Example" />
</div>
</div>
</if>

View file

@ -0,0 +1,14 @@
<nav id="namespaces">
<h2 class="fixed">Namespaces</h2>
<div class="scroll">
<ul>
<li each="var ns in Namespaces">
<if condition="ns == Namespace">
${Format(ns, class => "current")}
<else />
${Format(ns)}
</if>
</li>
</ul>
</div>
</nav>

View file

@ -0,0 +1,27 @@
<if condition="properties.Count() > 0">
<h3 class="section">${title}</h3>
<div id="${property.Name}" class="method" each="var property in properties">
<h4>
${Format(property.ReturnType)} <strong>${h(property.Name)}</strong> <if condition="property.HasGet">get;</if> <if condition="property.HasSet">set;</if>
</h4>
<div class="content">
<comment content="property.Summary" />
<remarks content="property.Remarks" />
<div class="return" if="property.ReturnType.HasDocumentation">
<h5>Property type</h5>
<dl>
<dt>
<code>${Format(property.ReturnType)}</code>
</dt>
<dd>
<comment content="property.ReturnType.Summary" />
</dd>
</dl>
</div>
<value content="property.Value" />
<example content="property.Example" />
</div>
</div>
</if>

View file

@ -0,0 +1,3 @@
<blockquote class="remarks" if="content != null && content.Children.Count() > 0">
${Format(content)}
</blockquote>

View file

@ -0,0 +1,14 @@
<nav id="types">
<h2 class="fixed">Types in ${Namespace.PrettyName}</h2>
<div class="scroll">
<ul>
<li each="var type in Namespace.Types">
<if condition="type == Type">
${Format(type, class => "current")}
<else />
${Format(type)}
</if>
</li>
</ul>
</div>
</nav>

View file

@ -0,0 +1,3 @@
<blockquote class="value" if="content.Children.Count() > 0">
<strong>Value: </strong>${Format(content)}
</blockquote>

View file

@ -0,0 +1,49 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<title>${Namespace.Name} - ${WriteProductName(Assemblies[0])} Documentation</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link type="text/css" rel="stylesheet" href="../main.css" />
<script type="text/javascript" src="../js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="../js/jquery.scrollTo-min.js"></script>
<script type="text/javascript" src="../js/navigation.js"></script>
</head>
<body>
<header><h1>${WriteProductName(Assemblies[0])} : API Documentation</h1>
</header>
<namespaces />
<types />
<article>
<header>
<p class="class"><strong>Namespace</strong> ${Namespace.Name}</p>
</header>
<section>
<div class="sub-header">
<if condition="Namespace.HasClasses">
<h3 class="section">Classes</h3>
<ul>
<for each="var type in Namespace.Classes">
<li>${Format(type)}</li>
</for>
</ul>
</if>
<if condition="Namespace.HasInterfaces">
<h3 class="section">Interfaces</h3>
<ul>
<for each="var type in Namespace.Interfaces">
<li>${Format(type)}</li>
</for>
</ul>
</if>
<p if="!Namespace.HasTypes">This namespace is empty.</p>
</div>
</section>
</article>
<use file="../_common_footer" />
</body>
</html>

View file

@ -0,0 +1,6 @@
<footer>
<span id="version">Built from v${WriteVersion(Assemblies[0])} of ${WriteAssemblyTitle(Assemblies[0])}</span>
<span id="docu-link">
Generated by <a href="http://docu.jagregory.com">docu</a>
</span>
</footer>

View file

@ -0,0 +1,8 @@
<nav id="namespaces">
<h2 class="fixed">Namespaces</h2>
<div class="scroll">
<ul>
<li each="var ns in Namespaces">${Format(ns)}</li>
</ul>
</div>
</nav>

View file

@ -0,0 +1,10 @@
<nav id="types">
<h2 class="fixed">All Types</h2>
<div class="scroll">
<ul>
<for each="var ns in Namespaces">
<li each="var type in ns.Types">${Format(type)}</li>
</for>
</ul>
</div>
</nav>

View file

@ -0,0 +1,23 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<title>${WriteProductName(Assemblies[0])} API Documentation</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link type="text/css" rel="stylesheet" href="main.css" />
</head>
<body>
<header><h1>${WriteProductName(Assemblies[0])} : API Documentation</h1>
</header>
<namespaces />
<types />
<article>
<header>
<p class="class">${WriteProductName(Assemblies[0])} Documentation</p>
</header>
</article>
<use file="_common_footer" />
</body>
</html>

View file

@ -0,0 +1,21 @@
$(document).ready(function() {
$('div.example').each(function(i, div) {
var a = $('a', div);
var pre = $('pre', div);
a.pre = pre;
a.preVisible = false;
pre.hide();
a.click(function() {
if (a.preVisible) {
a.pre.hide();
a.text('Show Example');
a.preVisible = false;
} else {
a.pre.show();
a.text('Hide Example');
a.preVisible = true;
}
});
});
});

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,11 @@
/**
* jQuery.ScrollTo - Easy element scrolling using jQuery.
* Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
* Dual licensed under MIT and GPL.
* Date: 5/25/2009
* @author Ariel Flesler
* @version 1.4.2
*
* http://flesler.blogspot.com/2007/10/jqueryscrollto.html
*/
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);

View file

@ -0,0 +1,11 @@
$(document).ready(function() {
var scroll = function(selector) {
var currentItem = $(selector + ' .current');
if (currentItem)
$(selector + ' div.scroll').scrollTo(currentItem);
};
scroll('#namespaces');
scroll('#types');
});

View file

@ -0,0 +1,263 @@
/* HTML5 ? Boilerplate */
html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
blockquote, q { quotes: none; }
blockquote:before, blockquote:after,
q:before, q:after { content: ""; content: none; }
ins { background-color: #ff9; color: #000; text-decoration: none; }
mark { background-color: #ff9; color: #000; font-style: italic; font-weight: bold; }
del { text-decoration: line-through; }
abbr[title], dfn[title] { border-bottom: 1px dotted; cursor: help; }
table { border-collapse: collapse; border-spacing: 0; }
hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; }
input, select { vertical-align: middle; }
body { font:13px/1.231 sans-serif; }
select, input, textarea, button { font:99% sans-serif; }
pre, code, kbd, samp { font-family: monospace, sans-serif; }
html { overflow-y: scroll; }
a:hover, a:active { outline: none; }
ul, ol { margin-left: 2em; }
ol { list-style-type: decimal; }
nav ul, nav li { margin: 0; list-style:none; list-style-image: none; }
small { font-size: 85%; }
strong, th { font-weight: bold; }
td { vertical-align: top; }
sub, sup { font-size: 75%; line-height: 0; position: relative; }
sup { top: -0.5em; }
sub { bottom: -0.25em; }
pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; padding: 15px; }
textarea { overflow: auto; }
.ie6 legend, .ie7 legend { margin-left: -7px; }
input[type="radio"] { vertical-align: text-bottom; }
input[type="checkbox"] { vertical-align: bottom; }
.ie7 input[type="checkbox"] { vertical-align: baseline; }
.ie6 input { vertical-align: text-bottom; }
label, input[type="button"], input[type="submit"], input[type="image"], button { cursor: pointer; }
button, input, select, textarea { margin: 0; }
input:valid, textarea:valid { }
input:invalid, textarea:invalid { -moz-box-shadow: 0px 0px 5px red; -webkit-box-shadow: 0px 0px 5px red; }
.no-boxshadow input:invalid, .no-boxshadow textarea:invalid { background-color: #f0dddd; }
::-moz-selection{ background: #FF5E99; color:#fff; }
::selection { background:#FF5E99; color:#fff; }
a:link { -webkit-tap-highlight-color: #FF5E99; }
button { width: auto; overflow: visible; }
.ie7 img { -ms-interpolation-mode: bicubic; }
h1, h2, h3, h4, h5, h6 { font-weight: bold; }
a, a:active, a:visited { color: #607890; }
a:hover { color: #036; }
/**
* Primary styles
*
* Author: Dylan Beattie (dylan@dylanbeattie.net)
*/
body > header {
position: absolute;
left: 8px;
right: 8px;
top: 8px;
height: 16px;
padding: 4px;
border: 1px solid #333333;
}
body > header > span#project-link {
position: absolute;
right: 4px;
top: 4px;
}
body {
background-color: #999999;
}
nav {
padding: 0px;
}
div.scroll {
padding: 4px;
overflow: auto;
position: absolute;
top: 24px;
bottom: 0px;
left: 0px;
right: 0px;
background-color: #fff;
}
div.scroll ul li {
padding: 2px 0px;
}
div.scroll ul li a {
text-decoration: none;
}
nav#namespaces {
position: absolute;
top: 42px;
left: 8px;
bottom: 8px;
width: 384px;
overflow: hidden;
}
nav#types {
position: absolute;
top: 42px;
right: 8px;
left: 400px;
height: 204px;
background-color: #fff;
overflow: hidden;
}
article {
position: absolute;
left: 400px;
top: 256px;
bottom: 40px;
right: 8px;
background-color: #fff;
}
footer {
position: absolute;
left: 400px;
bottom: 8px;
height: 16px;
right: 8px;
background-color: #aaaaaa;
padding: 4px;
font-size: 80%;
}
header {
background-color: #cccccc;
}
header p {
padding: 4px;
}
nav h2, header p.class {
background-color: #333333;
padding: 4px;
color: #fff;
}
article section {
position: absolute;
top: 24px;
bottom: 0px;
left: 0px;
right: 0px;
overflow:auto;
}
section ul li {
margin: 4px 0px;
}
article section header p { margin: 0px; }
article section h3, article section p {
padding: 4px;
margin: 4px 0px;
}
article section h3 {
font-size: 120%;
}
div.method {
padding: 4px 4px 4px 16px;
}
div#summary {
padding: 4px;
}
div.method div.content {
margin: 8px;
}
footer span#docu-link {
position: absolute;
right: 4px;
}
code {
font-family: Consolas, Courier, monospaced;
font-weight: normal;
}
h5 {
margin: 8px 0px;
}
dl dt { width: 180px; float: left; }
dl dd { margin-left: 180px; }
.ir { display: block; text-indent: -999em; overflow: hidden; background-repeat: no-repeat; text-align: left; direction: ltr; }
.hidden { display: none; visibility: hidden; }
.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
.visuallyhidden.focusable:active,
.visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; }
.invisible { visibility: hidden; }
.clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; overflow: hidden; }
.clearfix:after { clear: both; }
.clearfix { zoom: 1; }
@media all and (orientation:portrait) {
}
@media all and (orientation:landscape) {
}
@media screen and (max-device-width: 480px) {
/* html { -webkit-text-size-adjust:none; -ms-text-size-adjust:none; } */
}
@media print {
* { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important;
-ms-filter: none !important; }
a, a:visited { color: #444 !important; text-decoration: underline; }
a[href]:after { content: " (" attr(href) ")"; }
abbr[title]:after { content: " (" attr(title) ")"; }
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }
pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
thead { display: table-header-group; }
tr, img { page-break-inside: avoid; }
@page { margin: 0.5cm; }
p, h2, h3 { orphans: 3; widows: 3; }
h2, h3{ page-break-after: avoid; }
}

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

Binary file not shown.