From ab643d8f2cd8b122c1be707263408f27058486b9 Mon Sep 17 00:00:00 2001 From: Geoffrey Huntley Date: Sun, 7 Dec 2014 12:32:07 +1100 Subject: [PATCH 001/175] initial documentation structure using mkdocs + rtd --- ...vo's conflicted copy 2014-12-08).gitignore | 211 ++++++++++++++++++ .gitignore | 3 +- docs/.gitignore | 1 + docs/README.md | 37 +++ .../advanced/act-on-every-object.md | 0 docs/{ => legacy}/advanced/autopersist.md | 0 .../advanced/create-derived-collection.md | 0 .../advanced/handle-observable-errors.md | 0 docs/{ => legacy}/advanced/index.md | 0 .../advanced/memoizing-mru-cache.md | 0 .../advanced/property-binding-continued.md | 0 .../{ => legacy}/advanced/reflection-utils.md | 0 docs/{ => legacy}/advanced/serialization.md | 0 docs/{ => legacy}/advanced/suspension-host.md | 0 docs/{ => legacy}/advanced/testing.md | 0 .../advanced/when-navigated-to.md | 0 .../android/activities-and-fragments.md | 0 .../handling-the-hardware-back-button.md | 0 docs/{ => legacy}/android/initialization.md | 0 docs/{ => legacy}/android/platform-info.md | 0 docs/legacy/basics/application-boostraper.md | 21 ++ docs/{ => legacy}/basics/bindings.md | 0 .../basics/create-derived-collection.md | 0 docs/legacy/basics/data-binding.md | 73 ++++++ .../basics/dependency-resolution.md | 0 docs/{ => legacy}/basics/errors.md | 0 docs/{ => legacy}/basics/index.md | 0 docs/{ => legacy}/basics/logging.md | 0 docs/{ => legacy}/basics/messagebus.md | 0 docs/{ => legacy}/basics/orderedcomparer.md | 0 docs/legacy/basics/presenters.md | 24 ++ docs/legacy/basics/project-layout.md | 46 ++++ .../basics/reactive-command-async.md | 0 docs/{ => legacy}/basics/reactive-command.md | 0 docs/{ => legacy}/basics/reactive-list.md | 0 docs/{ => legacy}/basics/reactive-object.md | 0 docs/{ => legacy}/basics/routing.md | 0 .../{ => legacy}/basics/rx-cocoa-delegates.md | 0 docs/{ => legacy}/basics/rx-events.md | 0 docs/{ => legacy}/basics/schedulers.md | 0 docs/{ => legacy}/basics/testing.md | 0 docs/{ => legacy}/basics/to-property.md | 0 docs/{ => legacy}/basics/view-location.md | 0 docs/legacy/basics/view-model-design.md | 21 ++ docs/{ => legacy}/basics/whenany.md | 0 docs/legacy/best-practices/command-names.md | 14 ++ docs/legacy/best-practices/commands.md | 39 ++++ docs/legacy/best-practices/index.md | 3 + .../prefer-observable-property-helpers.md | 35 +++ .../ui-thread-and-schedulers.md | 26 +++ .../use-this-as-the-left-side-of-whenany.md | 40 ++++ .../contributing/packaging-convention.md | 46 ++++ .../customization/binding-type-converters.md | 0 .../customization/creates-command-binding.md | 0 .../creates-observable-for-property.md | 0 .../customization/dependency-resolution.md | 0 docs/{ => legacy}/customization/index.md | 0 .../customization/registrable-interfaces.md | 0 docs/{ => legacy}/customization/startup.md | 0 docs/{cocoa => legacy/ios}/initialization.md | 0 docs/{cocoa => legacy/ios}/kvo-observation.md | 0 docs/{cocoa => legacy/ios}/platform-info.md | 0 .../ios}/reactive-view-controllers.md | 0 .../ios}/reactivetableviewsource.md | 0 docs/legacy/support.md | 7 + docs/legacy/whats-new/index.rst | 142 ++++++++++++ docs/legacy/whats-new/version-5.md | 47 ++++ docs/legacy/whats-new/version-6.md | 112 ++++++++++ .../handling-the-hardware-back-button.md | 11 + docs/{ => legacy}/xaml/auto-data-template.md | 0 .../xaml/booleantovisibilitytypeconverter.md | 0 docs/{ => legacy}/xaml/platform-info.md | 0 .../xaml/transitioning-content-control.md | 0 docs/sources/binding/index.md | 0 docs/sources/caching/index.md | 0 docs/sources/commands/index.md | 0 docs/sources/concepts/binding.md | 0 docs/sources/concepts/commands.md | 0 .../functional-reactive-programming.md | 0 docs/sources/concepts/index.md | 0 docs/sources/concepts/model-view-viewmodel.md | 0 docs/sources/concepts/reactive-extensions.md | 0 docs/sources/contributing/index.md | 58 +++++ docs/sources/dependency-injection/autofac.md | 0 docs/sources/dependency-injection/index.md | 0 docs/sources/error-handling/index.md | 0 docs/sources/getting-started/index.md | 0 .../getting-started/solution-layout.md | 57 +++++ docs/sources/index.md | 25 +++ docs/sources/logging/index.md | 39 ++++ docs/sources/logging/nlog.md | 0 docs/sources/release-notes.md | 77 +++++++ docs/sources/routing/caliburn-micro.md | 0 docs/sources/routing/index.md | 0 docs/sources/routing/reactiveui.md | 0 docs/sources/routing/xamarin-forms.md | 0 docs/sources/search.md | 11 + docs/sources/service-location/index.md | 0 docs/sources/suspension/index.md | 0 docs/sources/user-interface/index.md | 0 docs/sources/viewmodel/index.md | 0 docs/theme/favicon.ico | Bin 0 -> 34494 bytes docs/theme/logo.png | Bin 0 -> 21926 bytes docs/theme/solution-layout.png | Bin 0 -> 19621 bytes legacydocs/advanced/act-on-every-object.md | 1 + legacydocs/advanced/autopersist.md | 1 + .../advanced/create-derived-collection.md | 1 + .../advanced/handle-observable-errors.md | 1 + legacydocs/advanced/index.md | 1 + legacydocs/advanced/memoizing-mru-cache.md | 1 + .../advanced/property-binding-continued.md | 1 + legacydocs/advanced/reflection-utils.md | 1 + legacydocs/advanced/serialization.md | 1 + legacydocs/advanced/suspension-host.md | 1 + legacydocs/advanced/testing.md | 1 + legacydocs/advanced/when-navigated-to.md | 1 + .../android/activities-and-fragments.md | 1 + legacydocs/android/initialization.md | 1 + legacydocs/android/platform-info.md | 1 + legacydocs/basics/bindings.md | 160 +++++++++++++ .../basics/create-derived-collection.md | 98 ++++++++ legacydocs/basics/dependency-resolution.md | 153 +++++++++++++ legacydocs/basics/errors.md | 194 ++++++++++++++++ legacydocs/basics/index.md | 1 + legacydocs/basics/logging.md | 118 ++++++++++ legacydocs/basics/messagebus.md | 114 ++++++++++ legacydocs/basics/orderedcomparer.md | 100 +++++++++ legacydocs/basics/reactive-command-async.md | 125 +++++++++++ legacydocs/basics/reactive-command.md | 192 ++++++++++++++++ legacydocs/basics/reactive-list.md | 136 +++++++++++ legacydocs/basics/reactive-object.md | 165 ++++++++++++++ legacydocs/basics/routing.md | 78 +++++++ legacydocs/basics/rx-cocoa-delegates.md | 34 +++ legacydocs/basics/rx-events.md | 30 +++ legacydocs/basics/schedulers.md | 79 +++++++ legacydocs/basics/testing.md | 79 +++++++ legacydocs/basics/to-property.md | 92 ++++++++ legacydocs/basics/view-location.md | 35 +++ legacydocs/basics/whenany.md | 116 ++++++++++ legacydocs/cocoa/initialization.md | 1 + legacydocs/cocoa/kvo-observation.md | 1 + legacydocs/cocoa/platform-info.md | 1 + legacydocs/cocoa/reactive-view-controllers.md | 1 + legacydocs/cocoa/reactivetableviewsource.md | 1 + .../customization/binding-type-converters.md | 1 + .../customization/creates-command-binding.md | 1 + .../creates-observable-for-property.md | 1 + .../customization/dependency-resolution.md | 1 + legacydocs/customization/index.md | 1 + .../customization/registrable-interfaces.md | 1 + legacydocs/customization/startup.md | 1 + {docs => legacydocs}/getting-started.md | 0 {docs => legacydocs}/library-overview.md | 0 {docs => legacydocs}/migrating-from-rxui4.md | 0 {docs => legacydocs}/migrating-from-rxui5.md | 0 {docs => legacydocs}/notes.md | 0 {docs => legacydocs}/overview.md | 0 {docs => legacydocs}/rac-info.md | 0 legacydocs/xaml/auto-data-template.md | 1 + .../xaml/booleantovisibilitytypeconverter.md | 1 + legacydocs/xaml/platform-info.md | 1 + .../xaml/transitioning-content-control.md | 1 + mkdocs.yml | 81 +++++++ 163 files changed, 3436 insertions(+), 1 deletion(-) create mode 100644 (lenovo's conflicted copy 2014-12-08).gitignore create mode 100644 docs/.gitignore create mode 100644 docs/README.md rename docs/{ => legacy}/advanced/act-on-every-object.md (100%) rename docs/{ => legacy}/advanced/autopersist.md (100%) rename docs/{ => legacy}/advanced/create-derived-collection.md (100%) rename docs/{ => legacy}/advanced/handle-observable-errors.md (100%) rename docs/{ => legacy}/advanced/index.md (100%) rename docs/{ => legacy}/advanced/memoizing-mru-cache.md (100%) rename docs/{ => legacy}/advanced/property-binding-continued.md (100%) rename docs/{ => legacy}/advanced/reflection-utils.md (100%) rename docs/{ => legacy}/advanced/serialization.md (100%) rename docs/{ => legacy}/advanced/suspension-host.md (100%) rename docs/{ => legacy}/advanced/testing.md (100%) rename docs/{ => legacy}/advanced/when-navigated-to.md (100%) rename docs/{ => legacy}/android/activities-and-fragments.md (100%) create mode 100644 docs/legacy/android/handling-the-hardware-back-button.md rename docs/{ => legacy}/android/initialization.md (100%) rename docs/{ => legacy}/android/platform-info.md (100%) create mode 100644 docs/legacy/basics/application-boostraper.md rename docs/{ => legacy}/basics/bindings.md (100%) rename docs/{ => legacy}/basics/create-derived-collection.md (100%) create mode 100644 docs/legacy/basics/data-binding.md rename docs/{ => legacy}/basics/dependency-resolution.md (100%) rename docs/{ => legacy}/basics/errors.md (100%) rename docs/{ => legacy}/basics/index.md (100%) rename docs/{ => legacy}/basics/logging.md (100%) rename docs/{ => legacy}/basics/messagebus.md (100%) rename docs/{ => legacy}/basics/orderedcomparer.md (100%) create mode 100644 docs/legacy/basics/presenters.md create mode 100644 docs/legacy/basics/project-layout.md rename docs/{ => legacy}/basics/reactive-command-async.md (100%) rename docs/{ => legacy}/basics/reactive-command.md (100%) rename docs/{ => legacy}/basics/reactive-list.md (100%) rename docs/{ => legacy}/basics/reactive-object.md (100%) rename docs/{ => legacy}/basics/routing.md (100%) rename docs/{ => legacy}/basics/rx-cocoa-delegates.md (100%) rename docs/{ => legacy}/basics/rx-events.md (100%) rename docs/{ => legacy}/basics/schedulers.md (100%) rename docs/{ => legacy}/basics/testing.md (100%) rename docs/{ => legacy}/basics/to-property.md (100%) rename docs/{ => legacy}/basics/view-location.md (100%) create mode 100644 docs/legacy/basics/view-model-design.md rename docs/{ => legacy}/basics/whenany.md (100%) create mode 100644 docs/legacy/best-practices/command-names.md create mode 100644 docs/legacy/best-practices/commands.md create mode 100644 docs/legacy/best-practices/index.md create mode 100644 docs/legacy/best-practices/prefer-observable-property-helpers.md create mode 100644 docs/legacy/best-practices/ui-thread-and-schedulers.md create mode 100644 docs/legacy/best-practices/use-this-as-the-left-side-of-whenany.md create mode 100644 docs/legacy/contributing/packaging-convention.md rename docs/{ => legacy}/customization/binding-type-converters.md (100%) rename docs/{ => legacy}/customization/creates-command-binding.md (100%) rename docs/{ => legacy}/customization/creates-observable-for-property.md (100%) rename docs/{ => legacy}/customization/dependency-resolution.md (100%) rename docs/{ => legacy}/customization/index.md (100%) rename docs/{ => legacy}/customization/registrable-interfaces.md (100%) rename docs/{ => legacy}/customization/startup.md (100%) rename docs/{cocoa => legacy/ios}/initialization.md (100%) rename docs/{cocoa => legacy/ios}/kvo-observation.md (100%) rename docs/{cocoa => legacy/ios}/platform-info.md (100%) rename docs/{cocoa => legacy/ios}/reactive-view-controllers.md (100%) rename docs/{cocoa => legacy/ios}/reactivetableviewsource.md (100%) create mode 100644 docs/legacy/support.md create mode 100644 docs/legacy/whats-new/index.rst create mode 100644 docs/legacy/whats-new/version-5.md create mode 100644 docs/legacy/whats-new/version-6.md create mode 100644 docs/legacy/windows-phone/handling-the-hardware-back-button.md rename docs/{ => legacy}/xaml/auto-data-template.md (100%) rename docs/{ => legacy}/xaml/booleantovisibilitytypeconverter.md (100%) rename docs/{ => legacy}/xaml/platform-info.md (100%) rename docs/{ => legacy}/xaml/transitioning-content-control.md (100%) create mode 100644 docs/sources/binding/index.md create mode 100644 docs/sources/caching/index.md create mode 100644 docs/sources/commands/index.md create mode 100644 docs/sources/concepts/binding.md create mode 100644 docs/sources/concepts/commands.md create mode 100644 docs/sources/concepts/functional-reactive-programming.md create mode 100644 docs/sources/concepts/index.md create mode 100644 docs/sources/concepts/model-view-viewmodel.md create mode 100644 docs/sources/concepts/reactive-extensions.md create mode 100644 docs/sources/contributing/index.md create mode 100644 docs/sources/dependency-injection/autofac.md create mode 100644 docs/sources/dependency-injection/index.md create mode 100644 docs/sources/error-handling/index.md create mode 100644 docs/sources/getting-started/index.md create mode 100644 docs/sources/getting-started/solution-layout.md create mode 100644 docs/sources/index.md create mode 100644 docs/sources/logging/index.md create mode 100644 docs/sources/logging/nlog.md create mode 100644 docs/sources/release-notes.md create mode 100644 docs/sources/routing/caliburn-micro.md create mode 100644 docs/sources/routing/index.md create mode 100644 docs/sources/routing/reactiveui.md create mode 100644 docs/sources/routing/xamarin-forms.md create mode 100644 docs/sources/search.md create mode 100644 docs/sources/service-location/index.md create mode 100644 docs/sources/suspension/index.md create mode 100644 docs/sources/user-interface/index.md create mode 100644 docs/sources/viewmodel/index.md create mode 100644 docs/theme/favicon.ico create mode 100644 docs/theme/logo.png create mode 100644 docs/theme/solution-layout.png create mode 100644 legacydocs/advanced/act-on-every-object.md create mode 100644 legacydocs/advanced/autopersist.md create mode 100644 legacydocs/advanced/create-derived-collection.md create mode 100644 legacydocs/advanced/handle-observable-errors.md create mode 100644 legacydocs/advanced/index.md create mode 100644 legacydocs/advanced/memoizing-mru-cache.md create mode 100644 legacydocs/advanced/property-binding-continued.md create mode 100644 legacydocs/advanced/reflection-utils.md create mode 100644 legacydocs/advanced/serialization.md create mode 100644 legacydocs/advanced/suspension-host.md create mode 100644 legacydocs/advanced/testing.md create mode 100644 legacydocs/advanced/when-navigated-to.md create mode 100644 legacydocs/android/activities-and-fragments.md create mode 100644 legacydocs/android/initialization.md create mode 100644 legacydocs/android/platform-info.md create mode 100644 legacydocs/basics/bindings.md create mode 100644 legacydocs/basics/create-derived-collection.md create mode 100644 legacydocs/basics/dependency-resolution.md create mode 100644 legacydocs/basics/errors.md create mode 100644 legacydocs/basics/index.md create mode 100644 legacydocs/basics/logging.md create mode 100644 legacydocs/basics/messagebus.md create mode 100644 legacydocs/basics/orderedcomparer.md create mode 100644 legacydocs/basics/reactive-command-async.md create mode 100644 legacydocs/basics/reactive-command.md create mode 100644 legacydocs/basics/reactive-list.md create mode 100644 legacydocs/basics/reactive-object.md create mode 100644 legacydocs/basics/routing.md create mode 100644 legacydocs/basics/rx-cocoa-delegates.md create mode 100644 legacydocs/basics/rx-events.md create mode 100644 legacydocs/basics/schedulers.md create mode 100644 legacydocs/basics/testing.md create mode 100644 legacydocs/basics/to-property.md create mode 100644 legacydocs/basics/view-location.md create mode 100644 legacydocs/basics/whenany.md create mode 100644 legacydocs/cocoa/initialization.md create mode 100644 legacydocs/cocoa/kvo-observation.md create mode 100644 legacydocs/cocoa/platform-info.md create mode 100644 legacydocs/cocoa/reactive-view-controllers.md create mode 100644 legacydocs/cocoa/reactivetableviewsource.md create mode 100644 legacydocs/customization/binding-type-converters.md create mode 100644 legacydocs/customization/creates-command-binding.md create mode 100644 legacydocs/customization/creates-observable-for-property.md create mode 100644 legacydocs/customization/dependency-resolution.md create mode 100644 legacydocs/customization/index.md create mode 100644 legacydocs/customization/registrable-interfaces.md create mode 100644 legacydocs/customization/startup.md rename {docs => legacydocs}/getting-started.md (100%) rename {docs => legacydocs}/library-overview.md (100%) rename {docs => legacydocs}/migrating-from-rxui4.md (100%) rename {docs => legacydocs}/migrating-from-rxui5.md (100%) rename {docs => legacydocs}/notes.md (100%) rename {docs => legacydocs}/overview.md (100%) rename {docs => legacydocs}/rac-info.md (100%) create mode 100644 legacydocs/xaml/auto-data-template.md create mode 100644 legacydocs/xaml/booleantovisibilitytypeconverter.md create mode 100644 legacydocs/xaml/platform-info.md create mode 100644 legacydocs/xaml/transitioning-content-control.md create mode 100644 mkdocs.yml diff --git a/ (lenovo's conflicted copy 2014-12-08).gitignore b/ (lenovo's conflicted copy 2014-12-08).gitignore new file mode 100644 index 0000000000..14db5abe1a --- /dev/null +++ b/ (lenovo's conflicted copy 2014-12-08).gitignore @@ -0,0 +1,211 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Roslyn cache directories +*.ide/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +#NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding addin-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +## TODO: Comment the next line if you want to checkin your +## web deploy settings but do note that will include unencrypted +## passwords +*.pubxml + +# NuGet Packages Directory +packages/* +## TODO: If the tool you use requires repositories.config +## uncomment the next line +!packages/repositories.config + +# Enable "build/" folder in the NuGet Packages folder since +# NuGet packages use it for MSBuild targets. +# This line needs to be after the ignore of the build folder +# (and the packages folder if the line above has been uncommented) +!packages/build/ + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# RxUI build directories +Release +NuGet-Release + +# Ensure all files in the NuGet directory are tracked. +!NuGet/** + +*.nupkg +*.userprefs + +version-bump.patch + +ReactiveUI.Events/Events.cs +ReactiveUI.Events/Events_*.cs + +ReactiveUI.Events/EventBuilder.exe +ReactiveUI.Events/EventBuilder.exe.mdb +ReactiveUI.Events/Mono.* +ReactiveUI.Events/Nustache.* + +ext/monodroid/18 + +# Exlcude compiled versions of the documentation +docs/_build/** + diff --git a/.gitignore b/.gitignore index 895a4e6882..14db5abe1a 100644 --- a/.gitignore +++ b/.gitignore @@ -206,5 +206,6 @@ ReactiveUI.Events/Nustache.* ext/monodroid/18 - +# Exlcude compiled versions of the documentation +docs/_build/** diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000000..9c5f578270 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1 @@ +_build \ No newline at end of file diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000000..91512b760e --- /dev/null +++ b/docs/README.md @@ -0,0 +1,37 @@ +# ReactiveUI Documentation + +The source for ReactiveUI documentation is here under `sources/` and uses extended +Markdown, as implemented by [MkDocs](http://mkdocs.org). + +The HTML files are built and hosted on `http://docs.reactiveui.net`, and update +automatically after each change to the master branch of [ReactiveUI on +GitHub](https://github.com/ReactiveUI/ReactiveUI) thanks to post-commit hooks. + +## Contributing + +Be sure to follow the [contribution guidelines] + +## Getting Started + +ReactiveUI documentation builds are done in a ReactiveUI container, which installs all +the required tools, adds the local `docs/` directory and builds the HTML docs. +It then starts a HTTP server on port 8000 so that you can connect and see your +changes. + +In the root of the `ReactiveUI` source directory: + + $ make docs + .... (lots of output) .... + $ ReactiveUI run --rm -it -e AWS_S3_BUCKET -p 8000:8000 "ReactiveUI-docs:master" mkdocs serve + Running at: http://0.0.0.0:8000/ + Live reload enabled. + Hold ctrl+c to quit. + +If you have any issues you need to debug, you can use `make docs-shell` and then +run `mkdocs serve` + +## Adding a new document + +New document (`.md`) files are added to the documentation builds by adding them +to the menu definition in the `docs/mkdocs.yml` file. + diff --git a/docs/advanced/act-on-every-object.md b/docs/legacy/advanced/act-on-every-object.md similarity index 100% rename from docs/advanced/act-on-every-object.md rename to docs/legacy/advanced/act-on-every-object.md diff --git a/docs/advanced/autopersist.md b/docs/legacy/advanced/autopersist.md similarity index 100% rename from docs/advanced/autopersist.md rename to docs/legacy/advanced/autopersist.md diff --git a/docs/advanced/create-derived-collection.md b/docs/legacy/advanced/create-derived-collection.md similarity index 100% rename from docs/advanced/create-derived-collection.md rename to docs/legacy/advanced/create-derived-collection.md diff --git a/docs/advanced/handle-observable-errors.md b/docs/legacy/advanced/handle-observable-errors.md similarity index 100% rename from docs/advanced/handle-observable-errors.md rename to docs/legacy/advanced/handle-observable-errors.md diff --git a/docs/advanced/index.md b/docs/legacy/advanced/index.md similarity index 100% rename from docs/advanced/index.md rename to docs/legacy/advanced/index.md diff --git a/docs/advanced/memoizing-mru-cache.md b/docs/legacy/advanced/memoizing-mru-cache.md similarity index 100% rename from docs/advanced/memoizing-mru-cache.md rename to docs/legacy/advanced/memoizing-mru-cache.md diff --git a/docs/advanced/property-binding-continued.md b/docs/legacy/advanced/property-binding-continued.md similarity index 100% rename from docs/advanced/property-binding-continued.md rename to docs/legacy/advanced/property-binding-continued.md diff --git a/docs/advanced/reflection-utils.md b/docs/legacy/advanced/reflection-utils.md similarity index 100% rename from docs/advanced/reflection-utils.md rename to docs/legacy/advanced/reflection-utils.md diff --git a/docs/advanced/serialization.md b/docs/legacy/advanced/serialization.md similarity index 100% rename from docs/advanced/serialization.md rename to docs/legacy/advanced/serialization.md diff --git a/docs/advanced/suspension-host.md b/docs/legacy/advanced/suspension-host.md similarity index 100% rename from docs/advanced/suspension-host.md rename to docs/legacy/advanced/suspension-host.md diff --git a/docs/advanced/testing.md b/docs/legacy/advanced/testing.md similarity index 100% rename from docs/advanced/testing.md rename to docs/legacy/advanced/testing.md diff --git a/docs/advanced/when-navigated-to.md b/docs/legacy/advanced/when-navigated-to.md similarity index 100% rename from docs/advanced/when-navigated-to.md rename to docs/legacy/advanced/when-navigated-to.md diff --git a/docs/android/activities-and-fragments.md b/docs/legacy/android/activities-and-fragments.md similarity index 100% rename from docs/android/activities-and-fragments.md rename to docs/legacy/android/activities-and-fragments.md diff --git a/docs/legacy/android/handling-the-hardware-back-button.md b/docs/legacy/android/handling-the-hardware-back-button.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/android/initialization.md b/docs/legacy/android/initialization.md similarity index 100% rename from docs/android/initialization.md rename to docs/legacy/android/initialization.md diff --git a/docs/android/platform-info.md b/docs/legacy/android/platform-info.md similarity index 100% rename from docs/android/platform-info.md rename to docs/legacy/android/platform-info.md diff --git a/docs/legacy/basics/application-boostraper.md b/docs/legacy/basics/application-boostraper.md new file mode 100644 index 0000000000..0a418b2677 --- /dev/null +++ b/docs/legacy/basics/application-boostraper.md @@ -0,0 +1,21 @@ +```cs +/* COOLSTUFF: What is the AppBootstrapper? +* +* The AppBootstrapper is like a ViewModel for the WPF Application class. +* Since Application isn't very testable (just like Window / UserControl), +* we want to create a class we can test. Since our application only has +* one "screen" (i.e. a place we present Routed Views), we can also use +* this as our IScreen. +* +* An IScreen is a ViewModel that contains a Router - practically speaking, +* it usually represents a Window (or the RootFrame of a WinRT app). We +* should technically create a MainWindowViewModel to represent the IScreen, +* but there isn't much benefit to split those up unless you've got multiple +* windows. +* +* AppBootstrapper is a good place to implement a lot of the "global +* variable" type things in your application. It's also the place where +* you should configure your IoC container. And finally, it's the place +* which decides which View to Navigate to when the application starts. +*/ +``` \ No newline at end of file diff --git a/docs/basics/bindings.md b/docs/legacy/basics/bindings.md similarity index 100% rename from docs/basics/bindings.md rename to docs/legacy/basics/bindings.md diff --git a/docs/basics/create-derived-collection.md b/docs/legacy/basics/create-derived-collection.md similarity index 100% rename from docs/basics/create-derived-collection.md rename to docs/legacy/basics/create-derived-collection.md diff --git a/docs/legacy/basics/data-binding.md b/docs/legacy/basics/data-binding.md new file mode 100644 index 0000000000..06392dde45 --- /dev/null +++ b/docs/legacy/basics/data-binding.md @@ -0,0 +1,73 @@ +is it still impossible to use RXUI binding inside ItemTemplate? + +paulcbetts [5:35 AM] +Yes + +ionoy [5:35 AM] +damn + +paulcbetts [5:35 AM] +Well, inside an implicit DataTemplate + +paulcbetts [5:36 AM] +You have to create a UserControl + +paulcbetts [5:36 AM] +The good news is, if you use `OneWayBind` to set the ItemsSource, we'll set up a DataTemplate for you + +ionoy [5:37 AM] +can you elaborate? if I have an Items collection and one way bind it to my list, how should I name this UserControl then? (for you to automatically set it as DataTemplate) (edited) + +paulcbetts [5:38 AM] +You can name it whatever you want, as long as: +1. The UserControl implements `IViewFor` +2. You register the View: `Locator.CurrentMutable.Register(() => new MyUserControl, typeof(IViewFor< TheViewModelYourePuttingIntoThatList>));` + +ionoy [5:38 AM] +oh, awesome + +paulcbetts [5:39 AM] +The end result is, in ReactiveUI you end up writing a bit more UserControls, but your XAML is cleaner + +ionoy [5:39 AM] +this is actually a very good solution + +paulcbetts [5:39 AM] +Because your ListBox can now be as simple as `` + +ionoy [5:39 AM] +yep + +ionoy [5:49 AM] +hm, one downside is that my design time data isn't displayed nicely anymore... + +paulcbetts [5:59 AM] +Design time data is the best part of ReactiveUI + +paulcbetts [5:59 AM] +So, the way you do design time data, is that you just *set the property* to whatever you want + +paulcbetts [5:59 AM] +And at runtime, the RxUI binding will override it + +paulcbetts [6:00 AM] +It works with ItemsControls too + +paulcbetts [6:01 AM] +``` + + + + + + + + +moswald [6:14 AM] +the only downside is that if you are setting your `ItemsSource` from within a call to `WhenActivated` , your design-time data ends up showing up for a frame or two + +moswald [6:14 AM] +the solution is to manually clear your design-time data at the bottom of your constructor in those cases + +ionoy [6:56 AM] +@moswald: I set design time data via '{Binding Source={d:DesignInstance Type=models:DesignTimeData, IsDesignTimeCreatable=True}}', so it doesn't show when app is started \ No newline at end of file diff --git a/docs/basics/dependency-resolution.md b/docs/legacy/basics/dependency-resolution.md similarity index 100% rename from docs/basics/dependency-resolution.md rename to docs/legacy/basics/dependency-resolution.md diff --git a/docs/basics/errors.md b/docs/legacy/basics/errors.md similarity index 100% rename from docs/basics/errors.md rename to docs/legacy/basics/errors.md diff --git a/docs/basics/index.md b/docs/legacy/basics/index.md similarity index 100% rename from docs/basics/index.md rename to docs/legacy/basics/index.md diff --git a/docs/basics/logging.md b/docs/legacy/basics/logging.md similarity index 100% rename from docs/basics/logging.md rename to docs/legacy/basics/logging.md diff --git a/docs/basics/messagebus.md b/docs/legacy/basics/messagebus.md similarity index 100% rename from docs/basics/messagebus.md rename to docs/legacy/basics/messagebus.md diff --git a/docs/basics/orderedcomparer.md b/docs/legacy/basics/orderedcomparer.md similarity index 100% rename from docs/basics/orderedcomparer.md rename to docs/legacy/basics/orderedcomparer.md diff --git a/docs/legacy/basics/presenters.md b/docs/legacy/basics/presenters.md new file mode 100644 index 0000000000..2618591dec --- /dev/null +++ b/docs/legacy/basics/presenters.md @@ -0,0 +1,24 @@ +paulcbetts [8:59 AM] +@ghuntley: At a high level, the single View is being pushed on and off the IScreen, yeah + +paulcbetts [9:00 AM] +Not familiar with the concept of Presenters + +ghuntley [9:11 AM] +Customization of the behavior of views when navigating between ViewModels. For example pushing on and off UINavigationViewController, switching between uitabbarcontroller options, displaying as splitviewcontroller on iPad but hamburger on iPhone. + +ghuntley [9:11 AM] +http://4.bp.blogspot.com/-Vg7F4u_Unew/UaXgifRFsfI/AAAAAAAAA2o/GIVg5-VM6tM/s1600/redblue1.png (27KB) + + +ghuntley [9:11 AM] +http://4.bp.blogspot.com/-6UzllelBSj4/UaXgjuLbkcI/AAAAAAAAA2w/Cs23N8j8sIM/s1600/redblue2.png (7KB) + + +paulcbetts [9:12 AM] +Ah, in that case you'd have to create your own `RoutedViewHost` which isn't too hard + +ghuntley [9:13 AM] +:heart: + +https://github.com/reactiveui/ReactiveUI/blob/master/ReactiveUI/Xaml/RoutedViewHost.cs \ No newline at end of file diff --git a/docs/legacy/basics/project-layout.md b/docs/legacy/basics/project-layout.md new file mode 100644 index 0000000000..f2eff0e525 --- /dev/null +++ b/docs/legacy/basics/project-layout.md @@ -0,0 +1,46 @@ +We suggest the following logical naming pattern when laying out your solution: + + + + +All application logic is stored within a core portable class library which is shared between and referenced in each specific platform application: + +.Core +----- + +A portable class library that will be the heart of the application and where you will spend most of your time. Profile259 is the recommended profile which should be used, you will need to select it when you create the project. + +.Core.Tests +----------- + +A standard class library that contains unit tests that confirm functionality of .Core. + +.Droid +------- + +A monodroid (Xamarin.Android) application which contains Android user interface code for both phone and tablet. Please note .Android namespace prefix is reserved by Google for Android internals and must not be used. + +.iOS +----- + +A monotouch (Xamarin.iOS) application which contains iOS user interface code for both iPhone and iPad. + +.Mac +---- + +A monomac (Xamarin.Mac) application which contains OSX user interface code. + +.WindowsPhone +------------- + +A Windows Phone application which contains the user interface code. + +.WindowsStore +------------- + +Windows 8 Store application with contains the user interface code. + +.Wpf +---- + +Windows Presentation Foundation applications with contains the user interface code. diff --git a/docs/basics/reactive-command-async.md b/docs/legacy/basics/reactive-command-async.md similarity index 100% rename from docs/basics/reactive-command-async.md rename to docs/legacy/basics/reactive-command-async.md diff --git a/docs/basics/reactive-command.md b/docs/legacy/basics/reactive-command.md similarity index 100% rename from docs/basics/reactive-command.md rename to docs/legacy/basics/reactive-command.md diff --git a/docs/basics/reactive-list.md b/docs/legacy/basics/reactive-list.md similarity index 100% rename from docs/basics/reactive-list.md rename to docs/legacy/basics/reactive-list.md diff --git a/docs/basics/reactive-object.md b/docs/legacy/basics/reactive-object.md similarity index 100% rename from docs/basics/reactive-object.md rename to docs/legacy/basics/reactive-object.md diff --git a/docs/basics/routing.md b/docs/legacy/basics/routing.md similarity index 100% rename from docs/basics/routing.md rename to docs/legacy/basics/routing.md diff --git a/docs/basics/rx-cocoa-delegates.md b/docs/legacy/basics/rx-cocoa-delegates.md similarity index 100% rename from docs/basics/rx-cocoa-delegates.md rename to docs/legacy/basics/rx-cocoa-delegates.md diff --git a/docs/basics/rx-events.md b/docs/legacy/basics/rx-events.md similarity index 100% rename from docs/basics/rx-events.md rename to docs/legacy/basics/rx-events.md diff --git a/docs/basics/schedulers.md b/docs/legacy/basics/schedulers.md similarity index 100% rename from docs/basics/schedulers.md rename to docs/legacy/basics/schedulers.md diff --git a/docs/basics/testing.md b/docs/legacy/basics/testing.md similarity index 100% rename from docs/basics/testing.md rename to docs/legacy/basics/testing.md diff --git a/docs/basics/to-property.md b/docs/legacy/basics/to-property.md similarity index 100% rename from docs/basics/to-property.md rename to docs/legacy/basics/to-property.md diff --git a/docs/basics/view-location.md b/docs/legacy/basics/view-location.md similarity index 100% rename from docs/basics/view-location.md rename to docs/legacy/basics/view-location.md diff --git a/docs/legacy/basics/view-model-design.md b/docs/legacy/basics/view-model-design.md new file mode 100644 index 0000000000..901e685970 --- /dev/null +++ b/docs/legacy/basics/view-model-design.md @@ -0,0 +1,21 @@ +```cs +/// +/// It's usually a good idea to create an interface for every ViewModel and +/// reference that instead of the implementation. This makes creating fake +/// versions or design-time versions of ViewModels much easier. +/// +public interface ITeamLoginTitleViewModel +{ + [IgnoreDataMember] + ReactiveCommand LoginToThisTeam { get; } + + [DataMember] + TeamWithUser Model { get; } +} + + +public class TeamLoginTitleViewModel : ReactiveObject, ITeamLoginTitleViewModel +{ + +} +``` \ No newline at end of file diff --git a/docs/basics/whenany.md b/docs/legacy/basics/whenany.md similarity index 100% rename from docs/basics/whenany.md rename to docs/legacy/basics/whenany.md diff --git a/docs/legacy/best-practices/command-names.md b/docs/legacy/best-practices/command-names.md new file mode 100644 index 0000000000..30f456a41a --- /dev/null +++ b/docs/legacy/best-practices/command-names.md @@ -0,0 +1,14 @@ +# Don't +Don't suffix `ReactiveCommand` properties' names with `Command`; instead, name the property using a verb that describes the command's action. For example: + +```cs + +public ReactiveCommand Synchronize { get; private set; } + +// and then in the ctor: + +Synchronize = ReactiveCommand.CreateAsyncObservable( +_ => SynchronizeImpl(mergeInsteadOfRebase: !IsAhead)); +``` + +When a `ReactiveCommand`'s implementation is too large or too complex for an anonymous delegate, name the implementation's method the same name as the command, but with `Impl` suffixed (for example, `SychronizeImpl` above). diff --git a/docs/legacy/best-practices/commands.md b/docs/legacy/best-practices/commands.md new file mode 100644 index 0000000000..5cf4f664e6 --- /dev/null +++ b/docs/legacy/best-practices/commands.md @@ -0,0 +1,39 @@ +Prefer binding user interactions to commands rather than methods. + +# Do + +```cs +// In XAML +