summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff-webhosting.net>2014-07-26 16:31:27 +0200
committerJörg Frings-Fürst <debian@jff-webhosting.net>2014-07-26 16:31:27 +0200
commit78989ebb445af2c6462ae2bf05ffd588d76610e4 (patch)
tree931f0ae1302ff7d45e41a1aa4b6dbc96be174744
parent9d8eae9f5bf53a4a80e29d7a3a1d2c7d7197688a (diff)
Imported Upstream version 2.3.2upstream/2.3.2
-rw-r--r--LICENSE2
-rw-r--r--QMTest/README.txt4
-rw-r--r--QMTest/SConscript2
-rw-r--r--QMTest/TestCmd.py31
-rw-r--r--QMTest/TestRuntest.py4
-rw-r--r--QMTest/TestSCons.py10
-rw-r--r--QMTest/TestSConsMSVS.py4
-rw-r--r--QMTest/TestSCons_time.py4
-rw-r--r--QMTest/TestSConsign.py4
-rw-r--r--QMTest/scons_tdb.py4
-rw-r--r--SConstruct10
-rw-r--r--bin/SConsDoc.py6
-rw-r--r--bin/import-test.py4
-rw-r--r--bin/linecount.py4
-rw-r--r--bin/restore.sh24
-rw-r--r--bin/update-release-info.py8
-rwxr-xr-xbin/upload-release-files.sh4
-rwxr-xr-xbootstrap.py2
-rw-r--r--debian/changelog160
-rw-r--r--debian/compat1
-rw-r--r--debian/control30
-rw-r--r--debian/copyright43
-rw-r--r--debian/doc-base10
-rw-r--r--debian/docs2
-rw-r--r--debian/missing-sources/jquery-1.4.2.js6240
-rw-r--r--debian/missing-sources/jquery-ui-1.8.2.custom.js15933
-rw-r--r--debian/patches/series1
-rw-r--r--debian/patches/user_guide.patch24
-rwxr-xr-xdebian/rules23
-rw-r--r--debian/source/format1
-rw-r--r--debian/watch2
-rw-r--r--doc/SConscript343
-rw-r--r--doc/design/SConstruct2
-rw-r--r--doc/design/acks.xml4
-rw-r--r--doc/design/bground.xml4
-rw-r--r--doc/design/chtml.xsl3
-rw-r--r--doc/design/copyright.xml4
-rw-r--r--doc/design/engine.xml4
-rw-r--r--doc/design/goals.xml4
-rw-r--r--doc/design/html.xsl3
-rw-r--r--doc/design/install.xml4
-rw-r--r--doc/design/intro.xml4
-rw-r--r--doc/design/issues.xml4
-rw-r--r--doc/design/main.xml4
-rw-r--r--doc/design/native.xml4
-rw-r--r--doc/design/overview.xml4
-rw-r--r--doc/design/pdf.xsl3
-rw-r--r--doc/design/scons.css4
-rw-r--r--doc/design/scons_title.xsl2
-rw-r--r--doc/design/summary.xml4
-rw-r--r--doc/developer/SConstruct2
-rw-r--r--doc/developer/architecture.xml4
-rw-r--r--doc/developer/branches.xml4
-rw-r--r--doc/developer/copyright.xml4
-rw-r--r--doc/developer/cycle.xml4
-rw-r--r--doc/developer/main.xml4
-rw-r--r--doc/developer/packaging.xml4
-rw-r--r--doc/developer/preface.xml4
-rw-r--r--doc/developer/sourcetree.xml4
-rw-r--r--doc/developer/testing.xml4
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons2.xml7
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/addListItem.pngbin0 -> 542 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/back.pngbin0 -> 793 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/boldText.pngbin0 -> 570 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/copy.pngbin0 -> 651 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/cut.pngbin0 -> 636 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/decrementColumnSpan.pngbin0 -> 448 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/decrementRowSpan.pngbin0 -> 454 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/definitionList.pngbin0 -> 411 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/delete.pngbin0 -> 792 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/deleteColumn.pngbin0 -> 663 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/deleteRow.pngbin0 -> 671 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/documentation.pngbin0 -> 748 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/down.pngbin0 -> 614 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/editDocument.pngbin0 -> 717 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/emphasisText.pngbin0 -> 569 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/emphasisText_menu.pngbin0 -> 592 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/figure.pngbin0 -> 686 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/figure_menu.pngbin0 -> 630 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/forward.pngbin0 -> 799 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/heading.pngbin0 -> 380 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/heading_menu.pngbin0 -> 431 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/hyperText.pngbin0 -> 562 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/hyperText_menu.pngbin0 -> 585 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/incrementColumnSpan.pngbin0 -> 485 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/incrementRowSpan.pngbin0 -> 491 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertColumnAfter.pngbin0 -> 528 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertColumnBefore.pngbin0 -> 531 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertRowAfter.pngbin0 -> 514 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertRowBefore.pngbin0 -> 548 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/italicText.pngbin0 -> 554 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/itemizedList.pngbin0 -> 415 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/left.pngbin0 -> 570 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/link.pngbin0 -> 720 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/link_menu.pngbin0 -> 706 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/navigate.pngbin0 -> 618 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/normalText.pngbin0 -> 553 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/onlineHelp.pngbin0 -> 861 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/orderedList.pngbin0 -> 451 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/paragraph.pngbin0 -> 374 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/paste.pngbin0 -> 699 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/pasteAfter.pngbin0 -> 710 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/pasteBefore.pngbin0 -> 721 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/plainText.pngbin0 -> 554 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/right.pngbin0 -> 589 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/section.pngbin0 -> 379 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/section_menu.pngbin0 -> 353 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/table.pngbin0 -> 440 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/table_menu.pngbin0 -> 423 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/typewriterText.pngbin0 -> 438 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/up.pngbin0 -> 627 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_icons/viewDocument.pngbin0 -> 677 bytes
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/appendix.xml2
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/article.xml2
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/book.xml2
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/chapter.xml2
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/glossary.xml2
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/part.xml2
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/refentry.xml2
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/sconsdoc.xml2
-rw-r--r--doc/editor_configs/xmlmind/addon/config/scons/scons_templates/section.xml2
-rw-r--r--doc/editor_configs/xmlmind/custom/dummy.txt1
-rw-r--r--doc/editor_configs/xmlmind/preferences.properties108
-rw-r--r--doc/editor_configs/xmlmind/ser/dummy.txt1
-rw-r--r--doc/editor_configs/xmlmind/spell/dummy.txt1
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/common.incl647
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/css/cals_table.imp24
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/css/collapsible.imp135
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/css/docbook1.imp1157
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/css/docbook2.imp1292
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/css/example1.css20
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/css/html_cals_table.imp101
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/css/image.imp23
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/css/print.imp15
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/css/refentry.imp524
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/css/scons.css17
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/css/structure.css140
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/css/table.imp87
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/css/visible_inclusions.css9
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/htmlTable.incl195
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons.css11
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons.xxe37
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_catalog.xml9
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/appendix.xml10
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/article.xml20
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/book.xml23
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/chapter.xml10
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/glossary.xml16
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/part.xml13
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/refentry.xml25
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/sconsdoc.xml15
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/section.xml7
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/calstblx.xsd390
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/dbhierx.xsd2186
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/dbnotnx.xsd102
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/dbpoolx.xsd8682
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/htmltblx.xsd431
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/scons.xsd99
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/xml.xsd15
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/toolBar.incl189
-rw-r--r--doc/editor_configs/xmlmind5/addon/config/scons/xslMenu.incl688
-rw-r--r--doc/generated/builders.gen27
-rw-r--r--doc/generated/examples/EnumVariable_map_1.xml2
-rw-r--r--doc/generated/examples/addmethod_ex1_1.xml2
-rw-r--r--doc/generated/examples/addmethod_ex2_1.xml2
-rw-r--r--doc/generated/examples/addmethod_ex2_2.xml2
-rw-r--r--doc/generated/examples/alias_ex1_1.xml2
-rw-r--r--doc/generated/examples/alias_ex2_1.xml2
-rw-r--r--doc/generated/examples/buildersbuiltin_ex1_1.xml2
-rw-r--r--doc/generated/examples/buildersbuiltin_ex2_1.xml2
-rw-r--r--doc/generated/examples/buildersbuiltin_ex3_1.xml2
-rw-r--r--doc/generated/examples/buildersbuiltin_ex4_1.xml2
-rw-r--r--doc/generated/examples/buildersbuiltin_libs_1.xml2
-rw-r--r--doc/generated/examples/buildersbuiltin_libs_2.xml2
-rw-r--r--doc/generated/examples/builderscommands_ex1_1.xml2
-rw-r--r--doc/generated/examples/builderscommands_ex2_1.xml2
-rw-r--r--doc/generated/examples/builderswriting_MY_EMITTER_1.xml2
-rw-r--r--doc/generated/examples/builderswriting_ex1_1.xml2
-rw-r--r--doc/generated/examples/builderswriting_ex2_1.xml2
-rw-r--r--doc/generated/examples/builderswriting_ex3_1.xml2
-rw-r--r--doc/generated/examples/builderswriting_ex4_1.xml2
-rw-r--r--doc/generated/examples/builderswriting_ex5_1.xml2
-rw-r--r--doc/generated/examples/builderswriting_ex6_1.xml2
-rw-r--r--doc/generated/examples/builderswriting_ex7_1.xml2
-rw-r--r--doc/generated/examples/caching_ex-random_1.xml6
-rw-r--r--doc/generated/examples/caching_ex1_1.xml2
-rw-r--r--doc/generated/examples/caching_ex1_2.xml2
-rw-r--r--doc/generated/examples/caching_ex1_4.xml2
-rw-r--r--doc/generated/examples/caching_ex1_5.xml2
-rw-r--r--doc/generated/examples/commandline_ARGLIST_1.xml2
-rw-r--r--doc/generated/examples/commandline_ARGUMENTS_1.xml2
-rw-r--r--doc/generated/examples/commandline_AddOption_1.xml2
-rw-r--r--doc/generated/examples/commandline_AddOption_2.xml2
-rw-r--r--doc/generated/examples/commandline_BUILD_TARGETS_1_1.xml2
-rw-r--r--doc/generated/examples/commandline_BoolVariable_1.xml2
-rw-r--r--doc/generated/examples/commandline_BoolVariable_2.xml2
-rw-r--r--doc/generated/examples/commandline_BoolVariable_3.xml2
-rw-r--r--doc/generated/examples/commandline_BoolVariable_4.xml2
-rw-r--r--doc/generated/examples/commandline_BoolVariable_5.xml2
-rw-r--r--doc/generated/examples/commandline_COMMAND_LINE_TARGETS_1.xml2
-rw-r--r--doc/generated/examples/commandline_DEFAULT_TARGETS_1_1.xml2
-rw-r--r--doc/generated/examples/commandline_DEFAULT_TARGETS_2_1.xml2
-rw-r--r--doc/generated/examples/commandline_Default1_1.xml2
-rw-r--r--doc/generated/examples/commandline_Default1_2.xml2
-rw-r--r--doc/generated/examples/commandline_Default2_1.xml2
-rw-r--r--doc/generated/examples/commandline_Default3_1.xml2
-rw-r--r--doc/generated/examples/commandline_Default4_1.xml3
-rw-r--r--doc/generated/examples/commandline_EnumVariable_1.xml2
-rw-r--r--doc/generated/examples/commandline_EnumVariable_2.xml2
-rw-r--r--doc/generated/examples/commandline_EnumVariable_3.xml2
-rw-r--r--doc/generated/examples/commandline_EnumVariable_ic1_1.xml2
-rw-r--r--doc/generated/examples/commandline_EnumVariable_ic2_1.xml2
-rw-r--r--doc/generated/examples/commandline_ListVariable_1.xml2
-rw-r--r--doc/generated/examples/commandline_ListVariable_2.xml2
-rw-r--r--doc/generated/examples/commandline_ListVariable_3.xml2
-rw-r--r--doc/generated/examples/commandline_PackageVariable_1.xml2
-rw-r--r--doc/generated/examples/commandline_PathVariable_1.xml2
-rw-r--r--doc/generated/examples/commandline_PathVariable_2.xml2
-rw-r--r--doc/generated/examples/commandline_SCONSFLAGS_1.xml2
-rw-r--r--doc/generated/examples/commandline_SetOption_1.xml2
-rw-r--r--doc/generated/examples/commandline_SetOption_2.xml2
-rw-r--r--doc/generated/examples/commandline_SetOption_3.xml2
-rw-r--r--doc/generated/examples/commandline_UnknownVariables_1.xml2
-rw-r--r--doc/generated/examples/commandline_Variables1_1.xml2
-rw-r--r--doc/generated/examples/commandline_Variables_Help_1.xml2
-rw-r--r--doc/generated/examples/commandline_Variables_custom_py_1_1.xml2
-rw-r--r--doc/generated/examples/commandline_Variables_custom_py_2_1.xml2
-rw-r--r--doc/generated/examples/depends_AlwaysBuild_1.xml2
-rw-r--r--doc/generated/examples/depends_AlwaysBuild_2.xml2
-rw-r--r--doc/generated/examples/depends_Requires_1.xml2
-rw-r--r--doc/generated/examples/depends_ex1_1.xml2
-rw-r--r--doc/generated/examples/depends_ex1_2.xml2
-rw-r--r--doc/generated/examples/depends_ex1_3.xml2
-rw-r--r--doc/generated/examples/depends_ex1_4.xml2
-rw-r--r--doc/generated/examples/depends_ex1_5.xml2
-rw-r--r--doc/generated/examples/depends_ex1_6.xml2
-rw-r--r--doc/generated/examples/depends_ex1_7.xml2
-rw-r--r--doc/generated/examples/depends_ex1_8.xml2
-rw-r--r--doc/generated/examples/depends_ex5_1.xml2
-rw-r--r--doc/generated/examples/depends_ex5_2.xml2
-rw-r--r--doc/generated/examples/depends_ignore_explicit_1.xml2
-rw-r--r--doc/generated/examples/depends_include_1.xml2
-rw-r--r--doc/generated/examples/depends_macroinc_1.xml2
-rw-r--r--doc/generated/examples/depends_match_1.xml2
-rw-r--r--doc/generated/examples/depends_mixing_1.xml2
-rw-r--r--doc/generated/examples/depends_newer_1.xml2
-rw-r--r--doc/generated/examples/depends_no-Requires_1.xml2
-rw-r--r--doc/generated/examples/depends_parsedep_1.xml2
-rw-r--r--doc/generated/examples/environments_Append-nonexistent_1.xml2
-rw-r--r--doc/generated/examples/environments_Prepend-nonexistent_1.xml2
-rw-r--r--doc/generated/examples/environments_Replace-nonexistent_1.xml2
-rw-r--r--doc/generated/examples/environments_Replace1_1.xml2
-rw-r--r--doc/generated/examples/environments_Replace2_1.xml2
-rw-r--r--doc/generated/examples/environments_ex1_1.xml2
-rw-r--r--doc/generated/examples/environments_ex2_1.xml2
-rw-r--r--doc/generated/examples/environments_ex3_1.xml2
-rw-r--r--doc/generated/examples/environments_ex4_1.xml2
-rw-r--r--doc/generated/examples/environments_ex5_1.xml2
-rw-r--r--doc/generated/examples/environments_ex6_1.xml2
-rw-r--r--doc/generated/examples/environments_ex6b_1.xml2
-rw-r--r--doc/generated/examples/environments_ex6b_2.xml2
-rw-r--r--doc/generated/examples/environments_ex8_1.xml2
-rw-r--r--doc/generated/examples/environments_ex9_1.xml2
-rw-r--r--doc/generated/examples/environments_missing1_1.xml2
-rw-r--r--doc/generated/examples/environments_missing2_1.xml2
-rw-r--r--doc/generated/examples/environments_missing3_1.xml2
-rw-r--r--doc/generated/examples/factories_Chmod_1.xml2
-rw-r--r--doc/generated/examples/factories_Copy1_1.xml2
-rw-r--r--doc/generated/examples/factories_Copy2_1.xml2
-rw-r--r--doc/generated/examples/factories_Copy3_1.xml2
-rw-r--r--doc/generated/examples/factories_Delete1_1.xml2
-rw-r--r--doc/generated/examples/factories_Delete2_1.xml2
-rw-r--r--doc/generated/examples/factories_Execute_1.xml2
-rw-r--r--doc/generated/examples/factories_Mkdir_1.xml2
-rw-r--r--doc/generated/examples/factories_Move_1.xml2
-rw-r--r--doc/generated/examples/factories_Touch_1.xml2
-rw-r--r--doc/generated/examples/fileremoval_clean-ex1_1.xml2
-rw-r--r--doc/generated/examples/fileremoval_noclean-ex1_1.xml2
-rw-r--r--doc/generated/examples/fileremoval_precious-ex1_1.xml2
-rw-r--r--doc/generated/examples/hierarchy_Return_1.xml2
-rw-r--r--doc/generated/examples/hierarchy_ex1_1.xml2
-rw-r--r--doc/generated/examples/hierarchy_ex2_1.xml2
-rw-r--r--doc/generated/examples/hierarchy_ex3_1.xml2
-rw-r--r--doc/generated/examples/install_ex1_1.xml2
-rw-r--r--doc/generated/examples/install_ex2_1.xml2
-rw-r--r--doc/generated/examples/install_ex3_1.xml2
-rw-r--r--doc/generated/examples/install_ex4_1.xml2
-rw-r--r--doc/generated/examples/install_ex5_1.xml2
-rw-r--r--doc/generated/examples/java_JAVACLASSDIR_1.xml2
-rw-r--r--doc/generated/examples/java_RMIC_1.xml2
-rw-r--r--doc/generated/examples/java_jar1_1.xml2
-rw-r--r--doc/generated/examples/java_jar2_1.xml2
-rw-r--r--doc/generated/examples/java_java-classes_1.xml2
-rw-r--r--doc/generated/examples/java_java-classes_2.xml2
-rw-r--r--doc/generated/examples/java_java_1.xml2
-rw-r--r--doc/generated/examples/java_javah_1.xml2
-rw-r--r--doc/generated/examples/java_javah_file_1.xml2
-rw-r--r--doc/generated/examples/lesssimple_ex2_1.xml2
-rw-r--r--doc/generated/examples/lesssimple_ex3_1.xml2
-rw-r--r--doc/generated/examples/lesssimple_ex3_2.xml2
-rw-r--r--doc/generated/examples/lesssimple_ex4_1.xml2
-rw-r--r--doc/generated/examples/lesssimple_ex5_1.xml2
-rw-r--r--doc/generated/examples/lesssimple_target_1.xml2
-rw-r--r--doc/generated/examples/lesssimple_target_2.xml2
-rw-r--r--doc/generated/examples/libraries_SharedLibrary_1.xml2
-rw-r--r--doc/generated/examples/libraries_SharedLibrary_2.xml2
-rw-r--r--doc/generated/examples/libraries_ex1_1.xml2
-rw-r--r--doc/generated/examples/libraries_ex1_2.xml2
-rw-r--r--doc/generated/examples/libraries_ex2_1.xml2
-rw-r--r--doc/generated/examples/libraries_ex2_2.xml2
-rw-r--r--doc/generated/examples/libraries_ex3_1.xml2
-rw-r--r--doc/generated/examples/libraries_ex3_2.xml2
-rw-r--r--doc/generated/examples/libraries_objects_1.xml2
-rw-r--r--doc/generated/examples/mergeflags_MergeFlags1_1.xml2
-rw-r--r--doc/generated/examples/mergeflags_MergeFlags2_1.xml2
-rw-r--r--doc/generated/examples/mergeflags_MergeFlags3_1.xml2
-rw-r--r--doc/generated/examples/misc_Exit_1.xml2
-rw-r--r--doc/generated/examples/misc_FindFile1a_1.xml2
-rw-r--r--doc/generated/examples/misc_FindFile1b_1.xml2
-rw-r--r--doc/generated/examples/misc_FindFile1d_1.xml2
-rw-r--r--doc/generated/examples/misc_FindFile2_1.xml2
-rw-r--r--doc/generated/examples/misc_FindFile2_2.xml2
-rw-r--r--doc/generated/examples/misc_FindFile3_1.xml2
-rw-r--r--doc/generated/examples/misc_Flatten1_1.xml2
-rw-r--r--doc/generated/examples/misc_Flatten2_1.xml2
-rw-r--r--doc/generated/examples/nodes_GetBuildPath_1.xml2
-rw-r--r--doc/generated/examples/nodes_ex1_1.xml2
-rw-r--r--doc/generated/examples/nodes_ex1_2.xml2
-rw-r--r--doc/generated/examples/nodes_exists_1.xml2
-rw-r--r--doc/generated/examples/nodes_print_1.xml2
-rw-r--r--doc/generated/examples/nodes_print_2.xml2
-rw-r--r--doc/generated/examples/output_Progress-TARGET_1.xml2
-rw-r--r--doc/generated/examples/output_ex1_1.xml2
-rw-r--r--doc/generated/examples/output_ex2_1.xml2
-rw-r--r--doc/generated/examples/output_ex2_2.xml2
-rw-r--r--doc/generated/examples/output_gbf2_1.xml2
-rw-r--r--doc/generated/examples/parseflags_ex1_1.xml2
-rw-r--r--doc/generated/examples/parseflags_ex1_2.xml2
-rw-r--r--doc/generated/examples/parseflags_ex2_1.xml2
-rw-r--r--doc/generated/examples/parseflags_ex3_1.xml2
-rw-r--r--doc/generated/examples/parseflags_ex4_1.xml2
-rw-r--r--doc/generated/examples/repositories_CPPPATH3_1.xml2
-rw-r--r--doc/generated/examples/repositories_CPPPATH_1.xml2
-rw-r--r--doc/generated/examples/repositories_ex1_1.xml2
-rw-r--r--doc/generated/examples/repositories_ex2_1.xml2
-rw-r--r--doc/generated/examples/repositories_ex3_1.xml2
-rw-r--r--doc/generated/examples/repositories_ex4_1.xml2
-rw-r--r--doc/generated/examples/repositories_quote1_1.xml2
-rw-r--r--doc/generated/examples/separate_builddir_1.xml2
-rw-r--r--doc/generated/examples/separate_builddir_sconscript_1.xml2
-rw-r--r--doc/generated/examples/separate_duplicate0_1.xml2
-rw-r--r--doc/generated/examples/separate_ex1_1.xml2
-rw-r--r--doc/generated/examples/separate_glob_builddir_sconscript_1.xml2
-rw-r--r--doc/generated/examples/sideeffect_parallel_1.xml2
-rw-r--r--doc/generated/examples/sideeffect_shared_1.xml2
-rw-r--r--doc/generated/examples/sideeffect_simple_1.xml2
-rw-r--r--doc/generated/examples/simple_Object_1.xml2
-rw-r--r--doc/generated/examples/simple_Object_2.xml2
-rw-r--r--doc/generated/examples/simple_clean_1.xml2
-rw-r--r--doc/generated/examples/simple_clean_2.xml2
-rw-r--r--doc/generated/examples/simple_declarative_1.xml2
-rw-r--r--doc/generated/examples/simple_ex1_1.xml2
-rw-r--r--doc/generated/examples/simple_ex1_2.xml2
-rw-r--r--doc/generated/examples/simple_ex1_3.xml2
-rw-r--r--doc/generated/examples/simple_ex1_4.xml2
-rw-r--r--doc/generated/examples/simple_java_1.xml2
-rw-r--r--doc/generated/examples/sourcecode_bitkeeper_1.xml2
-rw-r--r--doc/generated/examples/sourcecode_cvs_1.xml2
-rw-r--r--doc/generated/examples/sourcecode_rcs_1.xml2
-rw-r--r--doc/generated/examples/sourcecode_sccs_1.xml2
-rw-r--r--doc/generated/examples/tasks_ex1_1.xml2
-rw-r--r--doc/generated/examples/troubleshoot_Dump_1.xml5
-rw-r--r--doc/generated/examples/troubleshoot_Dump_2.xml6
-rw-r--r--doc/generated/examples/troubleshoot_Dump_ENV_1.xml2
-rw-r--r--doc/generated/examples/troubleshoot_Dump_ENV_2.xml2
-rw-r--r--doc/generated/examples/troubleshoot_explain1_1.xml2
-rw-r--r--doc/generated/examples/troubleshoot_explain1_2.xml2
-rw-r--r--doc/generated/examples/troubleshoot_explain1_3.xml4
-rw-r--r--doc/generated/examples/troubleshoot_explain2_1.xml2
-rw-r--r--doc/generated/examples/troubleshoot_explain3_1.xml2
-rw-r--r--doc/generated/examples/troubleshoot_findlibs_1.xml2
-rw-r--r--doc/generated/examples/troubleshoot_stacktrace_1.xml2
-rw-r--r--doc/generated/examples/troubleshoot_stacktrace_2.xml8
-rw-r--r--doc/generated/examples/troubleshoot_taskmastertrace_1.xml2
-rw-r--r--doc/generated/examples/troubleshoot_tree1_1.xml2
-rw-r--r--doc/generated/examples/troubleshoot_tree1_2.xml2
-rw-r--r--doc/generated/examples/troubleshoot_tree1_3.xml2
-rw-r--r--doc/generated/examples/troubleshoot_tree1_4.xml2
-rw-r--r--doc/generated/examples/troubleshoot_tree1_5.xml2
-rw-r--r--doc/generated/examples/troubleshoot_tree1_6.xml2
-rw-r--r--doc/generated/examples/troubleshoot_tree2_1.xml2
-rw-r--r--doc/generated/examples/troubleshoot_tree2_2.xml2
-rw-r--r--doc/generated/examples/variants_ex_1.xml2
-rw-r--r--doc/generated/examples/variants_ex_2.xml2
-rw-r--r--doc/generated/functions.gen2
-rw-r--r--doc/generated/tools.gen35
-rw-r--r--doc/generated/tools.mod8
-rw-r--r--doc/generated/variables.gen385
-rw-r--r--doc/generated/variables.mod80
-rw-r--r--doc/man/SConstruct2
-rw-r--r--doc/man/epub.xsl2
-rw-r--r--doc/man/html.xsl3
-rw-r--r--doc/man/pdf.xsl3
-rw-r--r--doc/man/scons-time.xml57
-rw-r--r--doc/man/scons.css4
-rw-r--r--doc/man/scons.xml74
-rw-r--r--doc/man/scons_title.xsl2
-rw-r--r--doc/man/sconsign.xml56
-rw-r--r--doc/python10/SConstruct2
-rw-r--r--doc/python10/abstract.xml4
-rw-r--r--doc/python10/acks.xml4
-rw-r--r--doc/python10/copyright.xml4
-rw-r--r--doc/python10/design.xml4
-rw-r--r--doc/python10/future.xml4
-rw-r--r--doc/python10/install.xml4
-rw-r--r--doc/python10/intro.xml4
-rw-r--r--doc/python10/main.xml12
-rw-r--r--doc/python10/process.xml4
-rw-r--r--doc/python10/summary.xml4
-rw-r--r--doc/reference/Alias.xml4
-rw-r--r--doc/reference/CFile.xml4
-rw-r--r--doc/reference/CXXFile.xml4
-rw-r--r--doc/reference/Command.xml4
-rw-r--r--doc/reference/Install.xml4
-rw-r--r--doc/reference/InstallAs.xml4
-rw-r--r--doc/reference/Library.xml4
-rw-r--r--doc/reference/Object.xml4
-rw-r--r--doc/reference/PCH.xml4
-rw-r--r--doc/reference/PDF.xml4
-rw-r--r--doc/reference/PostScript.xml4
-rw-r--r--doc/reference/Program.xml4
-rw-r--r--doc/reference/RES.xml4
-rw-r--r--doc/reference/SConstruct2
-rw-r--r--doc/reference/SharedLibrary.xml4
-rw-r--r--doc/reference/SharedObject.xml4
-rw-r--r--doc/reference/StaticLibrary.xml4
-rw-r--r--doc/reference/StaticObject.xml4
-rw-r--r--doc/reference/chtml.xsl3
-rw-r--r--doc/reference/copyright.xml4
-rw-r--r--doc/reference/errors.xml4
-rw-r--r--doc/reference/html.xsl3
-rw-r--r--doc/reference/main.xml4
-rw-r--r--doc/reference/pdf.xsl3
-rw-r--r--doc/reference/preface.xml4
-rw-r--r--doc/reference/scons.css4
-rw-r--r--doc/reference/scons_title.xsl2
-rw-r--r--doc/scons.mod6
-rw-r--r--doc/user/README2
-rw-r--r--doc/user/SConstruct2
-rw-r--r--doc/user/actions.xml4
-rw-r--r--doc/user/add-method.xml4
-rw-r--r--doc/user/alias.xml4
-rw-r--r--doc/user/ant.xml4
-rw-r--r--doc/user/build-install.xml4
-rw-r--r--doc/user/builders-built-in.xml4
-rw-r--r--doc/user/builders-commands.xml4
-rw-r--r--doc/user/builders-writing.xml4
-rw-r--r--doc/user/builders.xml4
-rw-r--r--doc/user/caching.xml4
-rw-r--r--doc/user/chtml.xsl3
-rw-r--r--doc/user/command-line.xml4
-rw-r--r--doc/user/copyright.xml4
-rw-r--r--doc/user/depends.xml4
-rw-r--r--doc/user/environments.xml4
-rw-r--r--doc/user/epub.xsl2
-rw-r--r--doc/user/errors.xml4
-rw-r--r--doc/user/example.xml4
-rw-r--r--doc/user/factories.xml4
-rw-r--r--doc/user/file-removal.xml4
-rw-r--r--doc/user/functions.xml4
-rw-r--r--doc/user/gettext.xml4
-rw-r--r--doc/user/hierarchy.xml4
-rw-r--r--doc/user/html.xsl3
-rw-r--r--doc/user/install.xml4
-rw-r--r--doc/user/java.xml4
-rw-r--r--doc/user/less-simple.xml4
-rw-r--r--doc/user/libraries.xml4
-rw-r--r--doc/user/main.xml16
-rw-r--r--doc/user/make.xml4
-rw-r--r--doc/user/mergeflags.xml4
-rw-r--r--doc/user/misc.xml4
-rw-r--r--doc/user/nodes.xml4
-rw-r--r--doc/user/output.xml4
-rw-r--r--doc/user/parseconfig.xml4
-rw-r--r--doc/user/parseflags.xml4
-rw-r--r--doc/user/pdf.xsl3
-rw-r--r--doc/user/preface.xml4
-rw-r--r--doc/user/python.xml4
-rw-r--r--doc/user/repositories.xml4
-rw-r--r--doc/user/run.xml4
-rw-r--r--doc/user/scanners.xml4
-rw-r--r--doc/user/sconf.xml4
-rw-r--r--doc/user/scons.css4
-rw-r--r--doc/user/scons_title.xsl2
-rw-r--r--doc/user/separate.xml4
-rw-r--r--doc/user/sideeffect.xml4
-rw-r--r--doc/user/simple.xml4
-rw-r--r--doc/user/sourcecode.xml4
-rw-r--r--doc/user/tasks.xml4
-rw-r--r--doc/user/tools.xml4
-rw-r--r--doc/user/troubleshoot.xml4
-rw-r--r--doc/user/variables.xml4
-rw-r--r--doc/user/variants.xml4
-rw-r--r--src/Announce.txt29
-rw-r--r--src/CHANGES.txt60
-rw-r--r--src/LICENSE.txt2
-rw-r--r--src/README.txt24
-rw-r--r--src/RELEASE.txt88
-rw-r--r--src/engine/MANIFEST.in3
-rw-r--r--src/engine/SCons/Action.py9
-rw-r--r--src/engine/SCons/Action.xml6
-rw-r--r--src/engine/SCons/ActionTests.py17
-rw-r--r--src/engine/SCons/Builder.py4
-rw-r--r--src/engine/SCons/BuilderTests.py9
-rw-r--r--src/engine/SCons/CacheDir.py4
-rw-r--r--src/engine/SCons/CacheDirTests.py8
-rw-r--r--src/engine/SCons/Debug.py4
-rw-r--r--src/engine/SCons/Defaults.py15
-rw-r--r--src/engine/SCons/Defaults.xml6
-rw-r--r--src/engine/SCons/DefaultsTests.py8
-rw-r--r--src/engine/SCons/Environment.py10
-rw-r--r--src/engine/SCons/Environment.xml6
-rw-r--r--src/engine/SCons/EnvironmentTests.py11
-rw-r--r--src/engine/SCons/Errors.py4
-rw-r--r--src/engine/SCons/ErrorsTests.py10
-rw-r--r--src/engine/SCons/Executor.py4
-rw-r--r--src/engine/SCons/ExecutorTests.py9
-rw-r--r--src/engine/SCons/Job.py4
-rw-r--r--src/engine/SCons/JobTests.py14
-rw-r--r--src/engine/SCons/Memoize.py4
-rw-r--r--src/engine/SCons/MemoizeTests.py9
-rw-r--r--src/engine/SCons/Node/Alias.py4
-rw-r--r--src/engine/SCons/Node/AliasTests.py9
-rw-r--r--src/engine/SCons/Node/FS.py4
-rw-r--r--src/engine/SCons/Node/FSTests.py11
-rw-r--r--src/engine/SCons/Node/NodeTests.py9
-rw-r--r--src/engine/SCons/Node/Python.py4
-rw-r--r--src/engine/SCons/Node/PythonTests.py9
-rw-r--r--src/engine/SCons/Node/__init__.py4
-rw-r--r--src/engine/SCons/Options/BoolOption.py4
-rw-r--r--src/engine/SCons/Options/EnumOption.py4
-rw-r--r--src/engine/SCons/Options/ListOption.py4
-rw-r--r--src/engine/SCons/Options/PackageOption.py4
-rw-r--r--src/engine/SCons/Options/PathOption.py4
-rw-r--r--src/engine/SCons/Options/__init__.py4
-rw-r--r--src/engine/SCons/PathList.py4
-rw-r--r--src/engine/SCons/PathListTests.py9
-rw-r--r--src/engine/SCons/Platform/PlatformTests.py9
-rw-r--r--src/engine/SCons/Platform/__init__.py4
-rw-r--r--src/engine/SCons/Platform/__init__.xml6
-rw-r--r--src/engine/SCons/Platform/aix.py44
-rw-r--r--src/engine/SCons/Platform/cygwin.py4
-rw-r--r--src/engine/SCons/Platform/darwin.py4
-rw-r--r--src/engine/SCons/Platform/hpux.py4
-rw-r--r--src/engine/SCons/Platform/irix.py4
-rw-r--r--src/engine/SCons/Platform/os2.py4
-rw-r--r--src/engine/SCons/Platform/posix.py8
-rw-r--r--src/engine/SCons/Platform/posix.xml6
-rw-r--r--src/engine/SCons/Platform/sunos.py4
-rw-r--r--src/engine/SCons/Platform/sunos.xml6
-rw-r--r--src/engine/SCons/Platform/win32.py4
-rw-r--r--src/engine/SCons/Platform/win32.xml6
-rw-r--r--src/engine/SCons/SConf.py33
-rw-r--r--src/engine/SCons/SConfTests.py10
-rw-r--r--src/engine/SCons/SConsign.py4
-rw-r--r--src/engine/SCons/SConsignTests.py11
-rw-r--r--src/engine/SCons/Scanner/C.py4
-rw-r--r--src/engine/SCons/Scanner/CTests.py13
-rw-r--r--src/engine/SCons/Scanner/D.py4
-rw-r--r--src/engine/SCons/Scanner/Dir.py4
-rw-r--r--src/engine/SCons/Scanner/DirTests.py11
-rw-r--r--src/engine/SCons/Scanner/Fortran.py4
-rw-r--r--src/engine/SCons/Scanner/FortranTests.py10
-rw-r--r--src/engine/SCons/Scanner/IDL.py4
-rw-r--r--src/engine/SCons/Scanner/IDLTests.py16
-rw-r--r--src/engine/SCons/Scanner/LaTeX.py4
-rw-r--r--src/engine/SCons/Scanner/LaTeXTests.py11
-rw-r--r--src/engine/SCons/Scanner/Prog.py4
-rw-r--r--src/engine/SCons/Scanner/ProgTests.py11
-rw-r--r--src/engine/SCons/Scanner/RC.py4
-rw-r--r--src/engine/SCons/Scanner/RCTests.py16
-rw-r--r--src/engine/SCons/Scanner/ScannerTests.py11
-rw-r--r--src/engine/SCons/Scanner/__init__.py4
-rw-r--r--src/engine/SCons/Scanner/__init__.xml6
-rw-r--r--src/engine/SCons/Script/Interactive.py4
-rw-r--r--src/engine/SCons/Script/Main.py70
-rw-r--r--src/engine/SCons/Script/Main.xml4
-rw-r--r--src/engine/SCons/Script/MainTests.py10
-rw-r--r--src/engine/SCons/Script/SConsOptions.py4
-rw-r--r--src/engine/SCons/Script/SConscript.py4
-rw-r--r--src/engine/SCons/Script/SConscript.xml6
-rw-r--r--src/engine/SCons/Script/SConscriptTests.py4
-rw-r--r--src/engine/SCons/Script/__init__.py4
-rw-r--r--src/engine/SCons/Sig.py4
-rw-r--r--src/engine/SCons/Subst.py4
-rw-r--r--src/engine/SCons/Subst.xml6
-rw-r--r--src/engine/SCons/SubstTests.py9
-rw-r--r--src/engine/SCons/Taskmaster.py4
-rw-r--r--src/engine/SCons/TaskmasterTests.py9
-rw-r--r--src/engine/SCons/Tool/386asm.py4
-rw-r--r--src/engine/SCons/Tool/386asm.xml6
-rw-r--r--src/engine/SCons/Tool/BitKeeper.py4
-rw-r--r--src/engine/SCons/Tool/BitKeeper.xml6
-rw-r--r--src/engine/SCons/Tool/CVS.py4
-rw-r--r--src/engine/SCons/Tool/CVS.xml6
-rw-r--r--src/engine/SCons/Tool/DCommon.py56
-rw-r--r--src/engine/SCons/Tool/FortranCommon.py4
-rw-r--r--src/engine/SCons/Tool/GettextCommon.py4
-rw-r--r--src/engine/SCons/Tool/JavaCommon.py7
-rw-r--r--src/engine/SCons/Tool/JavaCommonTests.py10
-rw-r--r--src/engine/SCons/Tool/MSCommon/__init__.py4
-rw-r--r--src/engine/SCons/Tool/MSCommon/arch.py4
-rw-r--r--src/engine/SCons/Tool/MSCommon/common.py4
-rw-r--r--src/engine/SCons/Tool/MSCommon/netframework.py4
-rw-r--r--src/engine/SCons/Tool/MSCommon/sdk.py4
-rw-r--r--src/engine/SCons/Tool/MSCommon/vc.py30
-rw-r--r--src/engine/SCons/Tool/MSCommon/vs.py105
-rw-r--r--src/engine/SCons/Tool/Perforce.py4
-rw-r--r--src/engine/SCons/Tool/Perforce.xml6
-rw-r--r--src/engine/SCons/Tool/PharLapCommon.py4
-rw-r--r--src/engine/SCons/Tool/PharLapCommonTests.py9
-rw-r--r--src/engine/SCons/Tool/RCS.py4
-rw-r--r--src/engine/SCons/Tool/RCS.xml6
-rw-r--r--src/engine/SCons/Tool/SCCS.py4
-rw-r--r--src/engine/SCons/Tool/SCCS.xml6
-rw-r--r--src/engine/SCons/Tool/Subversion.py4
-rw-r--r--src/engine/SCons/Tool/Subversion.xml6
-rw-r--r--src/engine/SCons/Tool/ToolTests.py11
-rw-r--r--src/engine/SCons/Tool/__init__.py18
-rw-r--r--src/engine/SCons/Tool/__init__.xml4
-rw-r--r--src/engine/SCons/Tool/aixc++.py29
-rw-r--r--src/engine/SCons/Tool/aixc++.xml6
-rw-r--r--src/engine/SCons/Tool/aixcc.py22
-rw-r--r--src/engine/SCons/Tool/aixcc.xml6
-rw-r--r--src/engine/SCons/Tool/aixf77.py4
-rw-r--r--src/engine/SCons/Tool/aixf77.xml6
-rw-r--r--src/engine/SCons/Tool/aixlink.py19
-rw-r--r--src/engine/SCons/Tool/aixlink.xml6
-rw-r--r--src/engine/SCons/Tool/applelink.py4
-rw-r--r--src/engine/SCons/Tool/applelink.xml6
-rw-r--r--src/engine/SCons/Tool/ar.py4
-rw-r--r--src/engine/SCons/Tool/ar.xml6
-rw-r--r--src/engine/SCons/Tool/as.py4
-rw-r--r--src/engine/SCons/Tool/as.xml6
-rw-r--r--src/engine/SCons/Tool/bcc32.py4
-rw-r--r--src/engine/SCons/Tool/bcc32.xml6
-rw-r--r--src/engine/SCons/Tool/c++.py9
-rw-r--r--src/engine/SCons/Tool/c++.xml6
-rw-r--r--src/engine/SCons/Tool/cc.py11
-rw-r--r--src/engine/SCons/Tool/cc.xml6
-rw-r--r--src/engine/SCons/Tool/cvf.py4
-rw-r--r--src/engine/SCons/Tool/cvf.xml6
-rw-r--r--src/engine/SCons/Tool/default.py4
-rw-r--r--src/engine/SCons/Tool/default.xml6
-rw-r--r--src/engine/SCons/Tool/dmd.py194
-rw-r--r--src/engine/SCons/Tool/dmd.xml38
-rw-r--r--src/engine/SCons/Tool/docbook/__init__.py9
-rw-r--r--src/engine/SCons/Tool/docbook/__init__.xml4
-rw-r--r--src/engine/SCons/Tool/docbook/docs/manual.xml2
-rw-r--r--src/engine/SCons/Tool/dvi.py4
-rw-r--r--src/engine/SCons/Tool/dvi.xml6
-rw-r--r--src/engine/SCons/Tool/dvipdf.py4
-rw-r--r--src/engine/SCons/Tool/dvipdf.xml6
-rw-r--r--src/engine/SCons/Tool/dvips.py4
-rw-r--r--src/engine/SCons/Tool/dvips.xml6
-rw-r--r--src/engine/SCons/Tool/f03.py4
-rw-r--r--src/engine/SCons/Tool/f03.xml6
-rw-r--r--src/engine/SCons/Tool/f77.py4
-rw-r--r--src/engine/SCons/Tool/f77.xml6
-rw-r--r--src/engine/SCons/Tool/f90.py4
-rw-r--r--src/engine/SCons/Tool/f90.xml6
-rw-r--r--src/engine/SCons/Tool/f95.py4
-rw-r--r--src/engine/SCons/Tool/f95.xml6
-rw-r--r--src/engine/SCons/Tool/filesystem.py4
-rw-r--r--src/engine/SCons/Tool/fortran.py4
-rw-r--r--src/engine/SCons/Tool/fortran.xml6
-rw-r--r--src/engine/SCons/Tool/g++.py34
-rw-r--r--src/engine/SCons/Tool/g++.xml6
-rw-r--r--src/engine/SCons/Tool/g77.py4
-rw-r--r--src/engine/SCons/Tool/g77.xml6
-rw-r--r--src/engine/SCons/Tool/gas.py4
-rw-r--r--src/engine/SCons/Tool/gas.xml6
-rw-r--r--src/engine/SCons/Tool/gcc.py62
-rw-r--r--src/engine/SCons/Tool/gcc.xml6
-rw-r--r--src/engine/SCons/Tool/gdc.py130
-rw-r--r--src/engine/SCons/Tool/gdc.xml388
-rw-r--r--src/engine/SCons/Tool/gettext.py4
-rw-r--r--src/engine/SCons/Tool/gettext.xml6
-rw-r--r--src/engine/SCons/Tool/gfortran.py4
-rw-r--r--src/engine/SCons/Tool/gfortran.xml6
-rw-r--r--src/engine/SCons/Tool/gnulink.py15
-rw-r--r--src/engine/SCons/Tool/gnulink.xml6
-rw-r--r--src/engine/SCons/Tool/gs.py4
-rw-r--r--src/engine/SCons/Tool/gs.xml6
-rw-r--r--src/engine/SCons/Tool/hpc++.py4
-rw-r--r--src/engine/SCons/Tool/hpc++.xml6
-rw-r--r--src/engine/SCons/Tool/hpcc.py4
-rw-r--r--src/engine/SCons/Tool/hpcc.xml6
-rw-r--r--src/engine/SCons/Tool/hplink.py4
-rw-r--r--src/engine/SCons/Tool/hplink.xml6
-rw-r--r--src/engine/SCons/Tool/icc.py4
-rw-r--r--src/engine/SCons/Tool/icc.xml6
-rw-r--r--src/engine/SCons/Tool/icl.py4
-rw-r--r--src/engine/SCons/Tool/icl.xml6
-rw-r--r--src/engine/SCons/Tool/ifl.py4
-rw-r--r--src/engine/SCons/Tool/ifl.xml6
-rw-r--r--src/engine/SCons/Tool/ifort.py4
-rw-r--r--src/engine/SCons/Tool/ifort.xml6
-rw-r--r--src/engine/SCons/Tool/ilink.py4
-rw-r--r--src/engine/SCons/Tool/ilink.xml6
-rw-r--r--src/engine/SCons/Tool/ilink32.py4
-rw-r--r--src/engine/SCons/Tool/ilink32.xml6
-rw-r--r--src/engine/SCons/Tool/install.py4
-rw-r--r--src/engine/SCons/Tool/install.xml6
-rw-r--r--src/engine/SCons/Tool/intelc.py66
-rw-r--r--src/engine/SCons/Tool/intelc.xml6
-rw-r--r--src/engine/SCons/Tool/ipkg.py4
-rw-r--r--src/engine/SCons/Tool/jar.py4
-rw-r--r--src/engine/SCons/Tool/jar.xml6
-rw-r--r--src/engine/SCons/Tool/javac.py4
-rw-r--r--src/engine/SCons/Tool/javac.xml6
-rw-r--r--src/engine/SCons/Tool/javacTests.py7
-rw-r--r--src/engine/SCons/Tool/javah.py4
-rw-r--r--src/engine/SCons/Tool/javah.xml6
-rw-r--r--src/engine/SCons/Tool/latex.py4
-rw-r--r--src/engine/SCons/Tool/latex.xml6
-rw-r--r--src/engine/SCons/Tool/ldc.py143
-rw-r--r--src/engine/SCons/Tool/ldc.xml82
-rw-r--r--src/engine/SCons/Tool/lex.py4
-rw-r--r--src/engine/SCons/Tool/lex.xml6
-rw-r--r--src/engine/SCons/Tool/link.py19
-rw-r--r--src/engine/SCons/Tool/link.xml15
-rw-r--r--src/engine/SCons/Tool/linkloc.py4
-rw-r--r--src/engine/SCons/Tool/linkloc.xml6
-rw-r--r--src/engine/SCons/Tool/m4.py4
-rw-r--r--src/engine/SCons/Tool/m4.xml6
-rw-r--r--src/engine/SCons/Tool/masm.py4
-rw-r--r--src/engine/SCons/Tool/masm.xml6
-rw-r--r--src/engine/SCons/Tool/midl.py4
-rw-r--r--src/engine/SCons/Tool/midl.xml6
-rw-r--r--src/engine/SCons/Tool/mingw.py4
-rw-r--r--src/engine/SCons/Tool/mingw.xml6
-rw-r--r--src/engine/SCons/Tool/msgfmt.py4
-rw-r--r--src/engine/SCons/Tool/msgfmt.xml6
-rw-r--r--src/engine/SCons/Tool/msginit.py4
-rw-r--r--src/engine/SCons/Tool/msginit.xml6
-rw-r--r--src/engine/SCons/Tool/msgmerge.py4
-rw-r--r--src/engine/SCons/Tool/msgmerge.xml6
-rw-r--r--src/engine/SCons/Tool/mslib.py4
-rw-r--r--src/engine/SCons/Tool/mslib.xml6
-rw-r--r--src/engine/SCons/Tool/mslink.py4
-rw-r--r--src/engine/SCons/Tool/mslink.xml6
-rw-r--r--src/engine/SCons/Tool/mssdk.py4
-rw-r--r--src/engine/SCons/Tool/mssdk.xml6
-rw-r--r--src/engine/SCons/Tool/msvc.py4
-rw-r--r--src/engine/SCons/Tool/msvc.xml29
-rw-r--r--src/engine/SCons/Tool/msvs.py4
-rw-r--r--src/engine/SCons/Tool/msvs.xml6
-rw-r--r--src/engine/SCons/Tool/msvsTests.py23
-rw-r--r--src/engine/SCons/Tool/mwcc.py4
-rw-r--r--src/engine/SCons/Tool/mwcc.xml6
-rw-r--r--src/engine/SCons/Tool/mwld.py4
-rw-r--r--src/engine/SCons/Tool/mwld.xml6
-rw-r--r--src/engine/SCons/Tool/nasm.py4
-rw-r--r--src/engine/SCons/Tool/nasm.xml6
-rw-r--r--src/engine/SCons/Tool/packaging.xml6
-rw-r--r--src/engine/SCons/Tool/packaging/__init__.py4
-rw-r--r--src/engine/SCons/Tool/packaging/__init__.xml6
-rw-r--r--src/engine/SCons/Tool/packaging/ipk.py4
-rw-r--r--src/engine/SCons/Tool/packaging/msi.py4
-rw-r--r--src/engine/SCons/Tool/packaging/rpm.py4
-rw-r--r--src/engine/SCons/Tool/packaging/src_tarbz2.py4
-rw-r--r--src/engine/SCons/Tool/packaging/src_targz.py4
-rw-r--r--src/engine/SCons/Tool/packaging/src_zip.py4
-rw-r--r--src/engine/SCons/Tool/packaging/tarbz2.py4
-rw-r--r--src/engine/SCons/Tool/packaging/targz.py4
-rw-r--r--src/engine/SCons/Tool/packaging/zip.py4
-rw-r--r--src/engine/SCons/Tool/pdf.py4
-rw-r--r--src/engine/SCons/Tool/pdf.xml6
-rw-r--r--src/engine/SCons/Tool/pdflatex.py4
-rw-r--r--src/engine/SCons/Tool/pdflatex.xml6
-rw-r--r--src/engine/SCons/Tool/pdftex.py4
-rw-r--r--src/engine/SCons/Tool/pdftex.xml6
-rw-r--r--src/engine/SCons/Tool/qt.py4
-rw-r--r--src/engine/SCons/Tool/qt.xml6
-rw-r--r--src/engine/SCons/Tool/rmic.py4
-rw-r--r--src/engine/SCons/Tool/rmic.xml6
-rw-r--r--src/engine/SCons/Tool/rpcgen.py4
-rw-r--r--src/engine/SCons/Tool/rpcgen.xml6
-rw-r--r--src/engine/SCons/Tool/rpm.py4
-rw-r--r--src/engine/SCons/Tool/rpmutils.py34
-rw-r--r--src/engine/SCons/Tool/sgiar.py4
-rw-r--r--src/engine/SCons/Tool/sgiar.xml6
-rw-r--r--src/engine/SCons/Tool/sgic++.py4
-rw-r--r--src/engine/SCons/Tool/sgic++.xml6
-rw-r--r--src/engine/SCons/Tool/sgicc.py4
-rw-r--r--src/engine/SCons/Tool/sgicc.xml6
-rw-r--r--src/engine/SCons/Tool/sgilink.py4
-rw-r--r--src/engine/SCons/Tool/sgilink.xml6
-rw-r--r--src/engine/SCons/Tool/sunar.py4
-rw-r--r--src/engine/SCons/Tool/sunar.xml6
-rw-r--r--src/engine/SCons/Tool/sunc++.py4
-rw-r--r--src/engine/SCons/Tool/sunc++.xml6
-rw-r--r--src/engine/SCons/Tool/suncc.py4
-rw-r--r--src/engine/SCons/Tool/suncc.xml6
-rw-r--r--src/engine/SCons/Tool/sunf77.py4
-rw-r--r--src/engine/SCons/Tool/sunf77.xml6
-rw-r--r--src/engine/SCons/Tool/sunf90.py4
-rw-r--r--src/engine/SCons/Tool/sunf90.xml6
-rw-r--r--src/engine/SCons/Tool/sunf95.py4
-rw-r--r--src/engine/SCons/Tool/sunf95.xml6
-rw-r--r--src/engine/SCons/Tool/sunlink.py4
-rw-r--r--src/engine/SCons/Tool/sunlink.xml6
-rw-r--r--src/engine/SCons/Tool/swig.py4
-rw-r--r--src/engine/SCons/Tool/swig.xml6
-rw-r--r--src/engine/SCons/Tool/tar.py4
-rw-r--r--src/engine/SCons/Tool/tar.xml6
-rw-r--r--src/engine/SCons/Tool/tex.py16
-rw-r--r--src/engine/SCons/Tool/tex.xml6
-rw-r--r--src/engine/SCons/Tool/textfile.py4
-rw-r--r--src/engine/SCons/Tool/textfile.xml4
-rw-r--r--src/engine/SCons/Tool/tlib.py4
-rw-r--r--src/engine/SCons/Tool/tlib.xml6
-rw-r--r--src/engine/SCons/Tool/wix.py4
-rw-r--r--src/engine/SCons/Tool/wixTests.py9
-rw-r--r--src/engine/SCons/Tool/xgettext.py4
-rw-r--r--src/engine/SCons/Tool/xgettext.xml6
-rw-r--r--src/engine/SCons/Tool/yacc.py4
-rw-r--r--src/engine/SCons/Tool/yacc.xml6
-rw-r--r--src/engine/SCons/Tool/zip.py4
-rw-r--r--src/engine/SCons/Tool/zip.xml4
-rw-r--r--src/engine/SCons/Util.py4
-rw-r--r--src/engine/SCons/UtilTests.py8
-rw-r--r--src/engine/SCons/Variables/BoolVariable.py4
-rw-r--r--src/engine/SCons/Variables/BoolVariableTests.py9
-rw-r--r--src/engine/SCons/Variables/EnumVariable.py4
-rw-r--r--src/engine/SCons/Variables/EnumVariableTests.py9
-rw-r--r--src/engine/SCons/Variables/ListVariable.py4
-rw-r--r--src/engine/SCons/Variables/ListVariableTests.py9
-rw-r--r--src/engine/SCons/Variables/PackageVariable.py4
-rw-r--r--src/engine/SCons/Variables/PackageVariableTests.py9
-rw-r--r--src/engine/SCons/Variables/PathVariable.py4
-rw-r--r--src/engine/SCons/Variables/PathVariableTests.py9
-rw-r--r--src/engine/SCons/Variables/VariablesTests.py9
-rw-r--r--src/engine/SCons/Variables/__init__.py4
-rw-r--r--src/engine/SCons/Warnings.py4
-rw-r--r--src/engine/SCons/WarningsTests.py10
-rw-r--r--src/engine/SCons/__init__.py8
-rw-r--r--src/engine/SCons/compat/__init__.py4
-rw-r--r--src/engine/SCons/compat/_scons_builtins.py4
-rw-r--r--src/engine/SCons/compat/_scons_collections.py4
-rw-r--r--src/engine/SCons/compat/_scons_dbm.py4
-rw-r--r--src/engine/SCons/compat/_scons_hashlib.py4
-rw-r--r--src/engine/SCons/compat/_scons_io.py4
-rw-r--r--src/engine/SCons/cpp.py11
-rw-r--r--src/engine/SCons/cppTests.py41
-rw-r--r--src/engine/SCons/exitfuncs.py4
-rw-r--r--src/script/scons-time.py4
-rw-r--r--src/script/scons.bat6
-rw-r--r--src/script/scons.py27
-rw-r--r--src/script/sconsign.py8
-rw-r--r--src/setup.py6
-rw-r--r--src/test_aegistests.py4
-rw-r--r--src/test_files.py4
-rw-r--r--src/test_interrupts.py4
-rw-r--r--src/test_pychecker.py4
-rw-r--r--src/test_setup.py4
-rw-r--r--src/test_strings.py8
868 files changed, 21209 insertions, 24778 deletions
diff --git a/LICENSE b/LICENSE
index dab75df..32aa74a 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/QMTest/README.txt b/QMTest/README.txt
index 18167cc..e279d71 100644
--- a/QMTest/README.txt
+++ b/QMTest/README.txt
@@ -54,5 +54,5 @@ the pieces here are local to SCons.
from this infrastructure, in no small part because we're not
really using it as originally envisioned.
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
-QMTest/README.txt 2014/03/02 14:18:15 garyo
+Copyright (c) 2001 - 2014 The SCons Foundation
+QMTest/README.txt 2014/07/05 09:42:21 garyo
diff --git a/QMTest/SConscript b/QMTest/SConscript
index 75f2770..eb1ece5 100644
--- a/QMTest/SConscript
+++ b/QMTest/SConscript
@@ -3,7 +3,7 @@
#
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
diff --git a/QMTest/TestCmd.py b/QMTest/TestCmd.py
index 38e9cd3..b51d90f 100644
--- a/QMTest/TestCmd.py
+++ b/QMTest/TestCmd.py
@@ -672,8 +672,35 @@ except AttributeError:
PIPE = subprocess.PIPE
if subprocess.mswindows:
- from win32file import ReadFile, WriteFile
- from win32pipe import PeekNamedPipe
+ try:
+ from win32file import ReadFile, WriteFile
+ from win32pipe import PeekNamedPipe
+ except ImportError:
+ # If PyWin32 is not available, try ctypes instead
+ # XXX These replicate _just_enough_ PyWin32 behaviour for our purposes
+ import ctypes; from ctypes.wintypes import DWORD
+ def ReadFile(hFile, bufSize, ol=None):
+ assert ol is None
+ lpBuffer = ctypes.create_string_buffer(bufSize)
+ bytesRead = DWORD()
+ bErr = ctypes.windll.kernel32.ReadFile(
+ hFile, lpBuffer, bufSize, ctypes.byref(bytesRead), ol)
+ if not bErr: raise ctypes.WinError()
+ return (0, ctypes.string_at(lpBuffer, bytesRead.value))
+ def WriteFile(hFile, data, ol=None):
+ assert ol is None
+ bytesWritten = DWORD()
+ bErr = ctypes.windll.kernel32.WriteFile(
+ hFile, data, len(data), ctypes.byref(bytesWritten), ol)
+ if not bErr: raise ctypes.WinError()
+ return (0, bytesWritten.value)
+ def PeekNamedPipe(hPipe, size):
+ assert size == 0
+ bytesAvail = DWORD()
+ bErr = ctypes.windll.kernel32.PeekNamedPipe(
+ hPipe, None, size, None, ctypes.byref(bytesAvail), None)
+ if not bErr: raise ctypes.WinError()
+ return ("", bytesAvail.value, None)
import msvcrt
else:
import select
diff --git a/QMTest/TestRuntest.py b/QMTest/TestRuntest.py
index 31346cd..c4f9301 100644
--- a/QMTest/TestRuntest.py
+++ b/QMTest/TestRuntest.py
@@ -12,9 +12,9 @@ from those classes, as well as any overridden or additional methods or
attributes defined in this subclass.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
-__revision__ = "QMTest/TestRuntest.py 2014/03/02 14:18:15 garyo"
+__revision__ = "QMTest/TestRuntest.py 2014/07/05 09:42:21 garyo"
import os
import os.path
diff --git a/QMTest/TestSCons.py b/QMTest/TestSCons.py
index ea1cb77..24f285a 100644
--- a/QMTest/TestSCons.py
+++ b/QMTest/TestSCons.py
@@ -12,10 +12,10 @@ from those classes, as well as any overridden or additional methods or
attributes defined in this subclass.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
from __future__ import division
-__revision__ = "QMTest/TestSCons.py 2014/03/02 14:18:15 garyo"
+__revision__ = "QMTest/TestSCons.py 2014/07/05 09:42:21 garyo"
import os
import re
@@ -34,7 +34,7 @@ from TestCmd import PIPE
# here provides some independent verification that what we packaged
# conforms to what we expect.
-default_version = '2.3.1'
+default_version = '2.3.2'
python_version_unsupported = (2, 3, 0)
python_version_deprecated = (2, 7, 0)
@@ -43,7 +43,7 @@ python_version_deprecated = (2, 7, 0)
# line must remain "__ VERSION __" (without the spaces) so the built
# version in build/QMTest/TestSCons.py contains the actual version
# string of the packages that have been built.
-SConsVersion = '2.3.1'
+SConsVersion = '2.3.2'
if SConsVersion == '__' + 'VERSION' + '__':
SConsVersion = default_version
@@ -150,7 +150,7 @@ def deprecated_python_version(version=sys.version_info):
if deprecated_python_version():
msg = r"""
scons: warning: Support for pre-2.7.0 Python version (%s) is deprecated.
- If this will cause hardship, contact dev@scons.tigris.org.
+ If this will cause hardship, contact scons-dev@scons.org
"""
deprecated_python_expr = re_escape(msg % python_version_string()) + file_expr
diff --git a/QMTest/TestSConsMSVS.py b/QMTest/TestSConsMSVS.py
index 42564a7..cad1849 100644
--- a/QMTest/TestSConsMSVS.py
+++ b/QMTest/TestSConsMSVS.py
@@ -13,9 +13,9 @@ as well as any overridden or additional methods or attributes defined
in this subclass.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
-__revision__ = "QMTest/TestSConsMSVS.py 2014/03/02 14:18:15 garyo"
+__revision__ = "QMTest/TestSConsMSVS.py 2014/07/05 09:42:21 garyo"
import os
import sys
diff --git a/QMTest/TestSCons_time.py b/QMTest/TestSCons_time.py
index 806d7ca..2ce4b69 100644
--- a/QMTest/TestSCons_time.py
+++ b/QMTest/TestSCons_time.py
@@ -11,9 +11,9 @@ from those classes, as well as any overridden or additional methods or
attributes defined in this subclass.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
-__revision__ = "QMTest/TestSCons_time.py 2014/03/02 14:18:15 garyo"
+__revision__ = "QMTest/TestSCons_time.py 2014/07/05 09:42:21 garyo"
import os
import os.path
diff --git a/QMTest/TestSConsign.py b/QMTest/TestSConsign.py
index fe86173..579cb4b 100644
--- a/QMTest/TestSConsign.py
+++ b/QMTest/TestSConsign.py
@@ -1,6 +1,6 @@
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
-__revision__ = "QMTest/TestSConsign.py 2014/03/02 14:18:15 garyo"
+__revision__ = "QMTest/TestSConsign.py 2014/07/05 09:42:21 garyo"
__doc__ = """
TestSConsign.py: a testing framework for the "sconsign" script
diff --git a/QMTest/scons_tdb.py b/QMTest/scons_tdb.py
index 7ea2202..fa48c50 100644
--- a/QMTest/scons_tdb.py
+++ b/QMTest/scons_tdb.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ QMTest classes to support SCons' testing and Aegis-inspired workflow.
Thanks to Stefan Seefeld for the initial code.
"""
-__revision__ = "QMTest/scons_tdb.py 2014/03/02 14:18:15 garyo"
+__revision__ = "QMTest/scons_tdb.py 2014/07/05 09:42:21 garyo"
########################################################################
# Imports
diff --git a/SConstruct b/SConstruct
index 85baeda..9432264 100644
--- a/SConstruct
+++ b/SConstruct
@@ -3,13 +3,13 @@
#
# See the README.rst file for an overview of how SCons is built and tested.
-copyright_years = '2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014'
+copyright_years = '2001 - 2014'
# This gets inserted into the man pages to reflect the month of release.
-month_year = 'March 2014'
+month_year = 'July 2014'
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -43,7 +43,7 @@ import tempfile
import bootstrap
project = 'scons'
-default_version = '2.3.1'
+default_version = '2.3.2'
copyright = "Copyright (c) %s The SCons Foundation" % copyright_years
platform = distutils.util.get_platform()
@@ -805,7 +805,7 @@ for p in [ scons ]:
#
# Now run everything in src_file through the sed command we
- # concocted to expand SConstruct, 2.3.1, etc.
+ # concocted to expand SConstruct, 2.3.2, etc.
#
for b in src_files:
s = p['filemap'].get(b, b)
diff --git a/bin/SConsDoc.py b/bin/SConsDoc.py
index d0575b0..b42e994 100644
--- a/bin/SConsDoc.py
+++ b/bin/SConsDoc.py
@@ -169,7 +169,7 @@ xsi = "http://www.w3.org/2001/XMLSchema-instance"
# Header comment with copyright
copyright_comment = """
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -315,7 +315,7 @@ if not has_libxml2:
fout.close()
def decorateWithHeader(self, root):
- root.attrib["{"+xsi+"}schemaLocation"] = "%s/scons.xsd scons.xsd" % dbxsd
+ root.attrib["{"+xsi+"}schemaLocation"] = "%s %s/scons.xsd" % (dbxsd, dbxsd)
return root
def newXmlTree(self, root):
@@ -450,7 +450,7 @@ else:
xi = root.newNs(xsi, 'xsi')
root.setNs(ns) #put this node in the target namespace
- root.setNsProp(xi, 'schemaLocation', "%s/scons.xsd scons.xsd" % dbxsd)
+ root.setNsProp(xi, 'schemaLocation', "%s %s/scons.xsd" % (dbxsd, dbxsd))
return root
diff --git a/bin/import-test.py b/bin/import-test.py
index ccec096..b58486f 100644
--- a/bin/import-test.py
+++ b/bin/import-test.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# tree2test.py - turn a directory tree into TestSCons code
#
@@ -25,7 +25,7 @@
# """ triple-quotes will need to have their contents edited by hand.
#
-__revision__ = "bin/import-test.py 2014/03/02 14:18:15 garyo"
+__revision__ = "bin/import-test.py 2014/07/05 09:42:21 garyo"
import os.path
import sys
diff --git a/bin/linecount.py b/bin/linecount.py
index 9088529..b9778af 100644
--- a/bin/linecount.py
+++ b/bin/linecount.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Count statistics about SCons test and source files. This must be run
# against a fully-populated tree (for example, one that's been freshly
@@ -23,7 +23,7 @@
# interesting one for most purposes.
from __future__ import division
-__revision__ = "bin/linecount.py 2014/03/02 14:18:15 garyo"
+__revision__ = "bin/linecount.py 2014/07/05 09:42:21 garyo"
import os.path
diff --git a/bin/restore.sh b/bin/restore.sh
index df296a4..d9113ae 100644
--- a/bin/restore.sh
+++ b/bin/restore.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env sh
#
-# Simple hack script to restore __revision__, __COPYRIGHT_, 2.3.1
+# Simple hack script to restore __revision__, __COPYRIGHT_, 2.3.2
# and other similar variables to what gets checked in to source. This
# comes in handy when people send in diffs based on the released source.
#
@@ -22,9 +22,9 @@ header() {
for i in `find $DIRS -name '*.py'`; do
header $i
ed $i <<EOF
-g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation/p
+g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001 - 2014 The SCons Foundation/p
w
-/^__revision__ = /s/= .*/= "bin/restore.sh 2014/03/02 14:18:15 garyo"/p
+/^__revision__ = /s/= .*/= "bin/restore.sh 2014/07/05 09:42:21 garyo"/p
w
q
EOF
@@ -33,9 +33,9 @@ done
for i in `find $DIRS -name 'scons.bat'`; do
header $i
ed $i <<EOF
-g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation/p
+g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001 - 2014 The SCons Foundation/p
w
-/^@REM src\/script\/scons.bat/s/@REM .* knight/@REM bin/restore.sh 2014/03/02 14:18:15 garyo/p
+/^@REM src\/script\/scons.bat/s/@REM .* knight/@REM bin/restore.sh 2014/07/05 09:42:21 garyo/p
w
q
EOF
@@ -44,13 +44,13 @@ done
for i in `find $DIRS -name '__init__.py' -o -name 'scons.py' -o -name 'sconsign.py'`; do
header $i
ed $i <<EOF
-/^__version__ = /s/= .*/= "2.3.1"/p
+/^__version__ = /s/= .*/= "2.3.2"/p
w
/^__build__ = /s/= .*/= ""/p
w
/^__buildsys__ = /s/= .*/= "lubuntu"/p
w
-/^__date__ = /s/= .*/= "2014/03/02 14:18:15"/p
+/^__date__ = /s/= .*/= "2014/07/05 09:42:21"/p
w
/^__developer__ = /s/= .*/= "garyo"/p
w
@@ -61,7 +61,7 @@ done
for i in `find $DIRS -name 'setup.py'`; do
header $i
ed $i <<EOF
-/^ *version = /s/= .*/= "2.3.1",/p
+/^ *version = /s/= .*/= "2.3.2",/p
w
q
EOF
@@ -70,11 +70,11 @@ done
for i in `find $DIRS -name '*.txt'`; do
header $i
ed $i <<EOF
-g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation/p
+g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001 - 2014 The SCons Foundation/p
w
-/# [^ ]* 0.96.[CD][0-9]* [0-9\/]* [0-9:]* knight$/s/.*/# bin/restore.sh 2014/03/02 14:18:15 garyo/p
+/# [^ ]* 0.96.[CD][0-9]* [0-9\/]* [0-9:]* knight$/s/.*/# bin/restore.sh 2014/07/05 09:42:21 garyo/p
w
-/Version [0-9][0-9]*\.[0-9][0-9]*/s//Version 2.3.1/p
+/Version [0-9][0-9]*\.[0-9][0-9]*/s//Version 2.3.2/p
w
q
EOF
@@ -83,7 +83,7 @@ done
for i in `find $DIRS -name '*.xml'`; do
header $i
ed $i <<EOF
-g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation/p
+g/Copyright (c) 2001.*SCons Foundation/s//Copyright (c) 2001 - 2014 The SCons Foundation/p
w
q
EOF
diff --git a/bin/update-release-info.py b/bin/update-release-info.py
index b8c50bd..3b98c48 100644
--- a/bin/update-release-info.py
+++ b/bin/update-release-info.py
@@ -36,7 +36,7 @@ In 'post' mode, files are prepared for the next release cycle:
src/Announce.txt.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -57,7 +57,7 @@ In 'post' mode, files are prepared for the next release cycle:
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "bin/update-release-info.py 2014/03/02 14:18:15 garyo"
+__revision__ = "bin/update-release-info.py 2014/07/05 09:42:21 garyo"
import os
import sys
@@ -138,7 +138,7 @@ if DEBUG: print 'month year', month_year
try:
copyright_years = config['copyright_years']
except KeyError:
- copyright_years = ', '.join(map(str, list(range(2001, release_date[0] + 1))))
+ copyright_years = '2001 - %d'%(release_date[0] + 1)
if DEBUG: print 'copyright years', copyright_years
class UpdateFile(object):
@@ -332,7 +332,7 @@ t.replace_assign('deprecated_python_version', str(deprecated_version))
# Update doc/user/main.{in,xml}
-docyears = ', '.join(map(str, iter(range(2004, release_date[0] + 1))))
+docyears = '2004 - %d' % release_date[0]
if os.path.exists(os.path.join('doc', 'user', 'main.in')):
# this is no longer used as of Dec 2013
t = UpdateFile(os.path.join('doc', 'user', 'main.in'))
diff --git a/bin/upload-release-files.sh b/bin/upload-release-files.sh
index 2867e3c..bf09751 100755
--- a/bin/upload-release-files.sh
+++ b/bin/upload-release-files.sh
@@ -46,7 +46,7 @@ $RSYNC $RSYNCOPTS \
#
# scons.org stuff:
-#
+#
# Doc: copy the doc tgz over; we'll unpack later
$RSYNC $RSYNCOPTS \
scons-doc-$VERSION.tar.gz \
@@ -68,7 +68,7 @@ ssh scons@scons.org "
cd ..
rm latest; ln -s $VERSION latest
rm production; ln -s $VERSION production
- for f in HTML PDF PS TEXT; do rm $f; ln -s $VERSION/$f $f; done
+ for f in HTML PDF EPUB PS TEXT; do rm \$f; ln -s $VERSION/\$f \$f; done
"
echo '*****'
echo '***** Now manually update index.php, includes/versions.php and news-raw.xhtml on scons.org.'
diff --git a/bootstrap.py b/bootstrap.py
index 7f1397d..3e386ae 100755
--- a/bootstrap.py
+++ b/bootstrap.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644
index e81741a..0000000
--- a/debian/changelog
+++ /dev/null
@@ -1,160 +0,0 @@
-scons-doc (2.3.1-1) unstable; urgency=medium
-
- * New upstream release.
- * debian/missing-sources/jquery-1.4.2.js,
- debian/missing-sources/jquery-ui-1.8.2.custom.js:
- - Provide missing sources for compressed JavaScript libraries.
- * debian/patches/user_guide.patch:
- - Build User Guide only.
- * debian/control:
- - Build-depends on python-libxml2, python-libxslt1, and fop.
- - Bump Standards-Version to 3.9.5, no changes required.
- * debian/docs:
- - PS files are no longer generated.
- * debian/doc-base:
- - Refresh doc-base with new file locations.
- * debian/rules:
- - Remove .pyc files on clean.
-
- -- Luca Falavigna <dktrkranz@debian.org> Sun, 27 Apr 2014 12:05:51 +0200
-
-scons-doc (2.3.0-2) unstable; urgency=low
-
- * Upload to unstable.
- * debian/control:
- - Move VCS repository under collab-maint.
-
- -- Luca Falavigna <dktrkranz@debian.org> Sun, 05 May 2013 11:50:40 +0200
-
-scons-doc (2.3.0-1) experimental; urgency=low
-
- * New upstream release.
- * debian/control:
- - Bump Standards-Version to 3.9.4, no changes required.
-
- -- Luca Falavigna <dktrkranz@debian.org> Mon, 11 Mar 2013 22:35:26 +0100
-
-scons-doc (2.2.0-1) experimental; urgency=low
-
- * New upstream release.
- * debian/patches/no_remote_dtd.patch:
- - Removed, no longer needed.
- * debian/patches/unicode.patch:
- - Removed, applied upstream.
- * debian/compat:
- - Bump compatibility level to 9.
- * debian/control:
- - Add docbook-xml to Build-Depends-Indep field.
- - Bump Standards-Version to 3.9.3, no changes required.
-
- -- Luca Falavigna <dktrkranz@debian.org> Mon, 20 Aug 2012 23:50:21 +0200
-
-scons-doc (2.1.0-2) unstable; urgency=low
-
- * debian/patches/unicode.patch:
- - Make sure input variable is unicode.
-
- -- Luca Falavigna <dktrkranz@debian.org> Tue, 18 Oct 2011 21:30:36 +0200
-
-scons-doc (2.1.0-1) unstable; urgency=low
-
- * New upstream release.
- * debian/control:
- - Bump Standards-Version to 3.9.2, no changes required.
-
- -- Luca Falavigna <dktrkranz@debian.org> Sat, 10 Sep 2011 11:31:08 +0200
-
-scons-doc (2.0.1-1) unstable; urgency=low
-
- * New upstream release.
- * debian/control:
- - Bump Standards-Version to 3.9.1, no changes required.
- * debian/copyright:
- - Adjust copyright years.
- * debian/watch:
- - Adjust to ignore development versions.
-
- -- Luca Falavigna <dktrkranz@debian.org> Thu, 10 Feb 2011 23:21:48 +0100
-
-scons-doc (2.0.0-1) unstable; urgency=low
-
- * New upstream release.
- * debian/watch:
- - Look for 2.0 branch.
-
- -- Luca Falavigna <dktrkranz@debian.org> Tue, 15 Jun 2010 16:31:02 +0200
-
-scons-doc (1.3.0-1) unstable; urgency=low
-
- * New upstream release.
-
- -- Luca Falavigna <dktrkranz@debian.org> Thu, 25 Mar 2010 20:54:30 +0100
-
-scons-doc (1.2.0.d20100306-1) unstable; urgency=low
-
- * New upstream checkpoint release.
- * debian/control:
- - Bump Standards-Version to 3.8.4, no changes required.
-
- -- Luca Falavigna <dktrkranz@debian.org> Wed, 10 Mar 2010 14:19:03 +0100
-
-scons-doc (1.2.0.d20100117-1) unstable; urgency=low
-
- * New upstream checkpoint release
- * Switch to format 3.0 (quilt).
-
- -- Luca Falavigna <dktrkranz@debian.org> Sat, 23 Jan 2010 15:25:58 +0100
-
-scons-doc (1.2.0.d20091224-1) unstable; urgency=low
-
- * New upstream checkpoint release.
-
- -- Luca Falavigna <dktrkranz@debian.org> Tue, 29 Dec 2009 13:24:52 +0100
-
-scons-doc (1.2.0.d20090919-1) unstable; urgency=low
-
- * New upstream checkpoint release.
-
- -- Luca Falavigna <dktrkranz@debian.org> Sat, 05 Dec 2009 17:41:49 +0100
-
-scons-doc (1.2.0.d20090905-3) unstable; urgency=low
-
- * debian/patches/no_remote_dtd.patch:
- - Do not fetch DTD from WWW, use local one instead (Closes: #549824).
-
- -- Luca Falavigna <dktrkranz@debian.org> Mon, 05 Oct 2009 23:14:53 +0200
-
-scons-doc (1.2.0.d20090905-2) unstable; urgency=low
-
- * Do not install scons-reference, it is completely empty and useless.
- Wait for upstream to complete it (Closes: #549111).
- * Do not install man pages, they are installed with scons package.
-
- -- Luca Falavigna <dktrkranz@debian.org> Thu, 01 Oct 2009 23:25:05 +0200
-
-scons-doc (1.2.0.d20090905-1) unstable; urgency=low
-
- * New upstream checkpoint release.
- * Also provide PDF and PostScript files.
- * Update my e-mail address.
- * Remove DM-Upload-Allowed field.
- * Update copyright informations.
- * Switch to debhelper 7.
- * Add doc-base file.
- * Add Vcs-* fields to document where scons-doc debianisation is stored.
- * Bump Standards-Version to 3.8.3, no changes required.
-
- -- Luca Falavigna <dktrkranz@debian.org> Wed, 09 Sep 2009 20:56:23 +0200
-
-scons-doc (1.2.0-2) unstable; urgency=low
-
- * Update Standards-Version to 3.8.1, no changes required.
- * Add watch file.
-
- -- Luca Falavigna <dktrkranz@ubuntu.com> Sat, 04 Apr 2009 00:21:40 +0200
-
-scons-doc (1.2.0-1) experimental; urgency=low
-
- * Initial release (Closes: #263237).
-
- -- Luca Falavigna <dktrkranz@ubuntu.com> Sat, 27 Dec 2008 11:33:28 +0100
diff --git a/debian/compat b/debian/compat
deleted file mode 100644
index ec63514..0000000
--- a/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
-9
diff --git a/debian/control b/debian/control
deleted file mode 100644
index 042fd75..0000000
--- a/debian/control
+++ /dev/null
@@ -1,30 +0,0 @@
-Source: scons-doc
-Section: doc
-Priority: optional
-Maintainer: Luca Falavigna <dktrkranz@debian.org>
-Uploaders: Mark Brown <broonie@debian.org>
-Build-Depends: debhelper (>= 9),
- scons (>= 2.3.1)
-Build-Depends-Indep: python-libxml2,
- python-libxslt1,
- docbook-utils,
- fop,
- jade,
- docbook-xml
-Standards-Version: 3.9.5
-Homepage: http://www.scons.org/
-Vcs-Git: git://anonscm.debian.org/collab-maint/scons-doc.git
-Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/scons-doc.git;a=summary
-
-Package: scons-doc
-Architecture: all
-Depends: ${misc:Depends}
-Suggests: scons (>= 2.3.1)
-Description: Documentation for SCons, a replacement for Make
- SCons is a make replacement providing a range of enhanced features such
- as automated dependency generation and built in compilation cache
- support. SCons rule sets are Python scripts so as well as the features
- it provides itself SCons allows you to use the full power of Python
- to control compilation.
- .
- This package provides the SCons User's guide.
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644
index 8882d15..0000000
--- a/debian/copyright
+++ /dev/null
@@ -1,43 +0,0 @@
-This package was debianized by Luca Falavigna <dktrkranz@ubuntu.com> on
-Sat, 27 Dec 2008 11:33:28 +0100.
-
-It was downloaded from http://scons.tigris.org/svn/scons
-
-Upstream Author:
-
- Steven Knight <knight@baldmt.com>
-
-Copyright:
-
- Copyright © 2001-2009 The SCons Foundation
- Copyright © 1999-2001 Steve Purcell
- Copyright © 1999-2006 Gregory P. Ward.
- Copyright © 2001-2003 Steven Knight
- Copyright © 2001-2004 Twisted Matrix Laboratories
- Copyright © 2002-2006 Python Software Foundation.
- Copyright © 2003-2005 Peter Astrand
- Copyright © 2003 Stichting NLnet Labs
-
-License:
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-The Debian packaging is copyright 2008-2011, Luca Falavigna <dktrkranz@debian.org>
-and is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
diff --git a/debian/doc-base b/debian/doc-base
deleted file mode 100644
index 3dcb6db..0000000
--- a/debian/doc-base
+++ /dev/null
@@ -1,10 +0,0 @@
-Document: scons
-Title: SCons documentation
-Author: The SCons Foundation
-Abstract: This manual describes what SCons is
- and how it can be used to build applications.
-Section: Help/Books
-
-Format: HTML
-Index: /usr/share/doc/scons-doc/HTML/scons-user.html
-Files: /usr/share/doc/scons-doc/HTML/scons-user.html
diff --git a/debian/docs b/debian/docs
deleted file mode 100644
index 748755d..0000000
--- a/debian/docs
+++ /dev/null
@@ -1,2 +0,0 @@
-build/doc/HTML
-build/doc/PDF
diff --git a/debian/missing-sources/jquery-1.4.2.js b/debian/missing-sources/jquery-1.4.2.js
deleted file mode 100644
index fff6776..0000000
--- a/debian/missing-sources/jquery-1.4.2.js
+++ /dev/null
@@ -1,6240 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.4.2
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Sat Feb 13 22:33:48 2010 -0500
- */
-(function( window, undefined ) {
-
-// Define a local copy of jQuery
-var jQuery = function( selector, context ) {
- // The jQuery object is actually just the init constructor 'enhanced'
- return new jQuery.fn.init( selector, context );
- },
-
- // Map over jQuery in case of overwrite
- _jQuery = window.jQuery,
-
- // Map over the $ in case of overwrite
- _$ = window.$,
-
- // Use the correct document accordingly with window argument (sandbox)
- document = window.document,
-
- // A central reference to the root jQuery(document)
- rootjQuery,
-
- // A simple way to check for HTML strings or ID strings
- // (both of which we optimize for)
- quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,
-
- // Is it a simple selector
- isSimple = /^.[^:#\[\.,]*$/,
-
- // Check if a string has a non-whitespace character in it
- rnotwhite = /\S/,
-
- // Used for trimming whitespace
- rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g,
-
- // Match a standalone tag
- rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
-
- // Keep a UserAgent string for use with jQuery.browser
- userAgent = navigator.userAgent,
-
- // For matching the engine and version of the browser
- browserMatch,
-
- // Has the ready events already been bound?
- readyBound = false,
-
- // The functions to execute on DOM ready
- readyList = [],
-
- // The ready event handler
- DOMContentLoaded,
-
- // Save a reference to some core methods
- toString = Object.prototype.toString,
- hasOwnProperty = Object.prototype.hasOwnProperty,
- push = Array.prototype.push,
- slice = Array.prototype.slice,
- indexOf = Array.prototype.indexOf;
-
-jQuery.fn = jQuery.prototype = {
- init: function( selector, context ) {
- var match, elem, ret, doc;
-
- // Handle $(""), $(null), or $(undefined)
- if ( !selector ) {
- return this;
- }
-
- // Handle $(DOMElement)
- if ( selector.nodeType ) {
- this.context = this[0] = selector;
- this.length = 1;
- return this;
- }
-
- // The body element only exists once, optimize finding it
- if ( selector === "body" && !context ) {
- this.context = document;
- this[0] = document.body;
- this.selector = "body";
- this.length = 1;
- return this;
- }
-
- // Handle HTML strings
- if ( typeof selector === "string" ) {
- // Are we dealing with HTML string or an ID?
- match = quickExpr.exec( selector );
-
- // Verify a match, and that no context was specified for #id
- if ( match && (match[1] || !context) ) {
-
- // HANDLE: $(html) -> $(array)
- if ( match[1] ) {
- doc = (context ? context.ownerDocument || context : document);
-
- // If a single string is passed in and it's a single tag
- // just do a createElement and skip the rest
- ret = rsingleTag.exec( selector );
-
- if ( ret ) {
- if ( jQuery.isPlainObject( context ) ) {
- selector = [ document.createElement( ret[1] ) ];
- jQuery.fn.attr.call( selector, context, true );
-
- } else {
- selector = [ doc.createElement( ret[1] ) ];
- }
-
- } else {
- ret = buildFragment( [ match[1] ], [ doc ] );
- selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
- }
-
- return jQuery.merge( this, selector );
-
- // HANDLE: $("#id")
- } else {
- elem = document.getElementById( match[2] );
-
- if ( elem ) {
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id !== match[2] ) {
- return rootjQuery.find( selector );
- }
-
- // Otherwise, we inject the element directly into the jQuery object
- this.length = 1;
- this[0] = elem;
- }
-
- this.context = document;
- this.selector = selector;
- return this;
- }
-
- // HANDLE: $("TAG")
- } else if ( !context && /^\w+$/.test( selector ) ) {
- this.selector = selector;
- this.context = document;
- selector = document.getElementsByTagName( selector );
- return jQuery.merge( this, selector );
-
- // HANDLE: $(expr, $(...))
- } else if ( !context || context.jquery ) {
- return (context || rootjQuery).find( selector );
-
- // HANDLE: $(expr, context)
- // (which is just equivalent to: $(context).find(expr)
- } else {
- return jQuery( context ).find( selector );
- }
-
- // HANDLE: $(function)
- // Shortcut for document ready
- } else if ( jQuery.isFunction( selector ) ) {
- return rootjQuery.ready( selector );
- }
-
- if (selector.selector !== undefined) {
- this.selector = selector.selector;
- this.context = selector.context;
- }
-
- return jQuery.makeArray( selector, this );
- },
-
- // Start with an empty selector
- selector: "",
-
- // The current version of jQuery being used
- jquery: "1.4.2",
-
- // The default length of a jQuery object is 0
- length: 0,
-
- // The number of elements contained in the matched element set
- size: function() {
- return this.length;
- },
-
- toArray: function() {
- return slice.call( this, 0 );
- },
-
- // Get the Nth element in the matched element set OR
- // Get the whole matched element set as a clean array
- get: function( num ) {
- return num == null ?
-
- // Return a 'clean' array
- this.toArray() :
-
- // Return just the object
- ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
- },
-
- // Take an array of elements and push it onto the stack
- // (returning the new matched element set)
- pushStack: function( elems, name, selector ) {
- // Build a new jQuery matched element set
- var ret = jQuery();
-
- if ( jQuery.isArray( elems ) ) {
- push.apply( ret, elems );
-
- } else {
- jQuery.merge( ret, elems );
- }
-
- // Add the old object onto the stack (as a reference)
- ret.prevObject = this;
-
- ret.context = this.context;
-
- if ( name === "find" ) {
- ret.selector = this.selector + (this.selector ? " " : "") + selector;
- } else if ( name ) {
- ret.selector = this.selector + "." + name + "(" + selector + ")";
- }
-
- // Return the newly-formed element set
- return ret;
- },
-
- // Execute a callback for every element in the matched set.
- // (You can seed the arguments with an array of args, but this is
- // only used internally.)
- each: function( callback, args ) {
- return jQuery.each( this, callback, args );
- },
-
- ready: function( fn ) {
- // Attach the listeners
- jQuery.bindReady();
-
- // If the DOM is already ready
- if ( jQuery.isReady ) {
- // Execute the function immediately
- fn.call( document, jQuery );
-
- // Otherwise, remember the function for later
- } else if ( readyList ) {
- // Add the function to the wait list
- readyList.push( fn );
- }
-
- return this;
- },
-
- eq: function( i ) {
- return i === -1 ?
- this.slice( i ) :
- this.slice( i, +i + 1 );
- },
-
- first: function() {
- return this.eq( 0 );
- },
-
- last: function() {
- return this.eq( -1 );
- },
-
- slice: function() {
- return this.pushStack( slice.apply( this, arguments ),
- "slice", slice.call(arguments).join(",") );
- },
-
- map: function( callback ) {
- return this.pushStack( jQuery.map(this, function( elem, i ) {
- return callback.call( elem, i, elem );
- }));
- },
-
- end: function() {
- return this.prevObject || jQuery(null);
- },
-
- // For internal use only.
- // Behaves like an Array's method, not like a jQuery method.
- push: push,
- sort: [].sort,
- splice: [].splice
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-jQuery.extend = jQuery.fn.extend = function() {
- // copy reference to target object
- var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy;
-
- // Handle a deep copy situation
- if ( typeof target === "boolean" ) {
- deep = target;
- target = arguments[1] || {};
- // skip the boolean and the target
- i = 2;
- }
-
- // Handle case when target is a string or something (possible in deep copy)
- if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
- target = {};
- }
-
- // extend jQuery itself if only one argument is passed
- if ( length === i ) {
- target = this;
- --i;
- }
-
- for ( ; i < length; i++ ) {
- // Only deal with non-null/undefined values
- if ( (options = arguments[ i ]) != null ) {
- // Extend the base object
- for ( name in options ) {
- src = target[ name ];
- copy = options[ name ];
-
- // Prevent never-ending loop
- if ( target === copy ) {
- continue;
- }
-
- // Recurse if we're merging object literal values or arrays
- if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) {
- var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src
- : jQuery.isArray(copy) ? [] : {};
-
- // Never move original objects, clone them
- target[ name ] = jQuery.extend( deep, clone, copy );
-
- // Don't bring in undefined values
- } else if ( copy !== undefined ) {
- target[ name ] = copy;
- }
- }
- }
- }
-
- // Return the modified object
- return target;
-};
-
-jQuery.extend({
- noConflict: function( deep ) {
- window.$ = _$;
-
- if ( deep ) {
- window.jQuery = _jQuery;
- }
-
- return jQuery;
- },
-
- // Is the DOM ready to be used? Set to true once it occurs.
- isReady: false,
-
- // Handle when the DOM is ready
- ready: function() {
- // Make sure that the DOM is not already loaded
- if ( !jQuery.isReady ) {
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( !document.body ) {
- return setTimeout( jQuery.ready, 13 );
- }
-
- // Remember that the DOM is ready
- jQuery.isReady = true;
-
- // If there are functions bound, to execute
- if ( readyList ) {
- // Execute all of them
- var fn, i = 0;
- while ( (fn = readyList[ i++ ]) ) {
- fn.call( document, jQuery );
- }
-
- // Reset the list of functions
- readyList = null;
- }
-
- // Trigger any bound ready events
- if ( jQuery.fn.triggerHandler ) {
- jQuery( document ).triggerHandler( "ready" );
- }
- }
- },
-
- bindReady: function() {
- if ( readyBound ) {
- return;
- }
-
- readyBound = true;
-
- // Catch cases where $(document).ready() is called after the
- // browser event has already occurred.
- if ( document.readyState === "complete" ) {
- return jQuery.ready();
- }
-
- // Mozilla, Opera and webkit nightlies currently support this event
- if ( document.addEventListener ) {
- // Use the handy event callback
- document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-
- // A fallback to window.onload, that will always work
- window.addEventListener( "load", jQuery.ready, false );
-
- // If IE event model is used
- } else if ( document.attachEvent ) {
- // ensure firing before onload,
- // maybe late but safe also for iframes
- document.attachEvent("onreadystatechange", DOMContentLoaded);
-
- // A fallback to window.onload, that will always work
- window.attachEvent( "onload", jQuery.ready );
-
- // If IE and not a frame
- // continually check to see if the document is ready
- var toplevel = false;
-
- try {
- toplevel = window.frameElement == null;
- } catch(e) {}
-
- if ( document.documentElement.doScroll && toplevel ) {
- doScrollCheck();
- }
- }
- },
-
- // See test/unit/core.js for details concerning isFunction.
- // Since version 1.3, DOM methods and functions like alert
- // aren't supported. They return false on IE (#2968).
- isFunction: function( obj ) {
- return toString.call(obj) === "[object Function]";
- },
-
- isArray: function( obj ) {
- return toString.call(obj) === "[object Array]";
- },
-
- isPlainObject: function( obj ) {
- // Must be an Object.
- // Because of IE, we also have to check the presence of the constructor property.
- // Make sure that DOM nodes and window objects don't pass through, as well
- if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) {
- return false;
- }
-
- // Not own constructor property must be Object
- if ( obj.constructor
- && !hasOwnProperty.call(obj, "constructor")
- && !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) {
- return false;
- }
-
- // Own properties are enumerated firstly, so to speed up,
- // if last one is own, then all properties are own.
-
- var key;
- for ( key in obj ) {}
-
- return key === undefined || hasOwnProperty.call( obj, key );
- },
-
- isEmptyObject: function( obj ) {
- for ( var name in obj ) {
- return false;
- }
- return true;
- },
-
- error: function( msg ) {
- throw msg;
- },
-
- parseJSON: function( data ) {
- if ( typeof data !== "string" || !data ) {
- return null;
- }
-
- // Make sure leading/trailing whitespace is removed (IE can't handle it)
- data = jQuery.trim( data );
-
- // Make sure the incoming data is actual JSON
- // Logic borrowed from http://json.org/json2.js
- if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
- .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
- .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
-
- // Try to use the native JSON parser first
- return window.JSON && window.JSON.parse ?
- window.JSON.parse( data ) :
- (new Function("return " + data))();
-
- } else {
- jQuery.error( "Invalid JSON: " + data );
- }
- },
-
- noop: function() {},
-
- // Evalulates a script in a global context
- globalEval: function( data ) {
- if ( data && rnotwhite.test(data) ) {
- // Inspired by code by Andrea Giammarchi
- // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
- var head = document.getElementsByTagName("head")[0] || document.documentElement,
- script = document.createElement("script");
-
- script.type = "text/javascript";
-
- if ( jQuery.support.scriptEval ) {
- script.appendChild( document.createTextNode( data ) );
- } else {
- script.text = data;
- }
-
- // Use insertBefore instead of appendChild to circumvent an IE6 bug.
- // This arises when a base node is used (#2709).
- head.insertBefore( script, head.firstChild );
- head.removeChild( script );
- }
- },
-
- nodeName: function( elem, name ) {
- return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
- },
-
- // args is for internal usage only
- each: function( object, callback, args ) {
- var name, i = 0,
- length = object.length,
- isObj = length === undefined || jQuery.isFunction(object);
-
- if ( args ) {
- if ( isObj ) {
- for ( name in object ) {
- if ( callback.apply( object[ name ], args ) === false ) {
- break;
- }
- }
- } else {
- for ( ; i < length; ) {
- if ( callback.apply( object[ i++ ], args ) === false ) {
- break;
- }
- }
- }
-
- // A special, fast, case for the most common use of each
- } else {
- if ( isObj ) {
- for ( name in object ) {
- if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
- break;
- }
- }
- } else {
- for ( var value = object[0];
- i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
- }
- }
-
- return object;
- },
-
- trim: function( text ) {
- return (text || "").replace( rtrim, "" );
- },
-
- // results is for internal usage only
- makeArray: function( array, results ) {
- var ret = results || [];
-
- if ( array != null ) {
- // The window, strings (and functions) also have 'length'
- // The extra typeof function check is to prevent crashes
- // in Safari 2 (See: #3039)
- if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || (typeof array !== "function" && array.setInterval) ) {
- push.call( ret, array );
- } else {
- jQuery.merge( ret, array );
- }
- }
-
- return ret;
- },
-
- inArray: function( elem, array ) {
- if ( array.indexOf ) {
- return array.indexOf( elem );
- }
-
- for ( var i = 0, length = array.length; i < length; i++ ) {
- if ( array[ i ] === elem ) {
- return i;
- }
- }
-
- return -1;
- },
-
- merge: function( first, second ) {
- var i = first.length, j = 0;
-
- if ( typeof second.length === "number" ) {
- for ( var l = second.length; j < l; j++ ) {
- first[ i++ ] = second[ j ];
- }
-
- } else {
- while ( second[j] !== undefined ) {
- first[ i++ ] = second[ j++ ];
- }
- }
-
- first.length = i;
-
- return first;
- },
-
- grep: function( elems, callback, inv ) {
- var ret = [];
-
- // Go through the array, only saving the items
- // that pass the validator function
- for ( var i = 0, length = elems.length; i < length; i++ ) {
- if ( !inv !== !callback( elems[ i ], i ) ) {
- ret.push( elems[ i ] );
- }
- }
-
- return ret;
- },
-
- // arg is for internal usage only
- map: function( elems, callback, arg ) {
- var ret = [], value;
-
- // Go through the array, translating each of the items to their
- // new value (or values).
- for ( var i = 0, length = elems.length; i < length; i++ ) {
- value = callback( elems[ i ], i, arg );
-
- if ( value != null ) {
- ret[ ret.length ] = value;
- }
- }
-
- return ret.concat.apply( [], ret );
- },
-
- // A global GUID counter for objects
- guid: 1,
-
- proxy: function( fn, proxy, thisObject ) {
- if ( arguments.length === 2 ) {
- if ( typeof proxy === "string" ) {
- thisObject = fn;
- fn = thisObject[ proxy ];
- proxy = undefined;
-
- } else if ( proxy && !jQuery.isFunction( proxy ) ) {
- thisObject = proxy;
- proxy = undefined;
- }
- }
-
- if ( !proxy && fn ) {
- proxy = function() {
- return fn.apply( thisObject || this, arguments );
- };
- }
-
- // Set the guid of unique handler to the same of original handler, so it can be removed
- if ( fn ) {
- proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
- }
-
- // So proxy can be declared as an argument
- return proxy;
- },
-
- // Use of jQuery.browser is frowned upon.
- // More details: http://docs.jquery.com/Utilities/jQuery.browser
- uaMatch: function( ua ) {
- ua = ua.toLowerCase();
-
- var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
- /(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) ||
- /(msie) ([\w.]+)/.exec( ua ) ||
- !/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) ||
- [];
-
- return { browser: match[1] || "", version: match[2] || "0" };
- },
-
- browser: {}
-});
-
-browserMatch = jQuery.uaMatch( userAgent );
-if ( browserMatch.browser ) {
- jQuery.browser[ browserMatch.browser ] = true;
- jQuery.browser.version = browserMatch.version;
-}
-
-// Deprecated, use jQuery.browser.webkit instead
-if ( jQuery.browser.webkit ) {
- jQuery.browser.safari = true;
-}
-
-if ( indexOf ) {
- jQuery.inArray = function( elem, array ) {
- return indexOf.call( array, elem );
- };
-}
-
-// All jQuery objects should point back to these
-rootjQuery = jQuery(document);
-
-// Cleanup functions for the document ready method
-if ( document.addEventListener ) {
- DOMContentLoaded = function() {
- document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
- jQuery.ready();
- };
-
-} else if ( document.attachEvent ) {
- DOMContentLoaded = function() {
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( document.readyState === "complete" ) {
- document.detachEvent( "onreadystatechange", DOMContentLoaded );
- jQuery.ready();
- }
- };
-}
-
-// The DOM ready check for Internet Explorer
-function doScrollCheck() {
- if ( jQuery.isReady ) {
- return;
- }
-
- try {
- // If IE is used, use the trick by Diego Perini
- // http://javascript.nwbox.com/IEContentLoaded/
- document.documentElement.doScroll("left");
- } catch( error ) {
- setTimeout( doScrollCheck, 1 );
- return;
- }
-
- // and execute any waiting functions
- jQuery.ready();
-}
-
-function evalScript( i, elem ) {
- if ( elem.src ) {
- jQuery.ajax({
- url: elem.src,
- async: false,
- dataType: "script"
- });
- } else {
- jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
- }
-
- if ( elem.parentNode ) {
- elem.parentNode.removeChild( elem );
- }
-}
-
-// Mutifunctional method to get and set values to a collection
-// The value/s can be optionally by executed if its a function
-function access( elems, key, value, exec, fn, pass ) {
- var length = elems.length;
-
- // Setting many attributes
- if ( typeof key === "object" ) {
- for ( var k in key ) {
- access( elems, k, key[k], exec, fn, value );
- }
- return elems;
- }
-
- // Setting one attribute
- if ( value !== undefined ) {
- // Optionally, function values get executed if exec is true
- exec = !pass && exec && jQuery.isFunction(value);
-
- for ( var i = 0; i < length; i++ ) {
- fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
- }
-
- return elems;
- }
-
- // Getting an attribute
- return length ? fn( elems[0], key ) : undefined;
-}
-
-function now() {
- return (new Date).getTime();
-}
-(function() {
-
- jQuery.support = {};
-
- var root = document.documentElement,
- script = document.createElement("script"),
- div = document.createElement("div"),
- id = "script" + now();
-
- div.style.display = "none";
- div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-
- var all = div.getElementsByTagName("*"),
- a = div.getElementsByTagName("a")[0];
-
- // Can't get basic test support
- if ( !all || !all.length || !a ) {
- return;
- }
-
- jQuery.support = {
- // IE strips leading whitespace when .innerHTML is used
- leadingWhitespace: div.firstChild.nodeType === 3,
-
- // Make sure that tbody elements aren't automatically inserted
- // IE will insert them into empty tables
- tbody: !div.getElementsByTagName("tbody").length,
-
- // Make sure that link elements get serialized correctly by innerHTML
- // This requires a wrapper element in IE
- htmlSerialize: !!div.getElementsByTagName("link").length,
-
- // Get the style information from getAttribute
- // (IE uses .cssText insted)
- style: /red/.test( a.getAttribute("style") ),
-
- // Make sure that URLs aren't manipulated
- // (IE normalizes it by default)
- hrefNormalized: a.getAttribute("href") === "/a",
-
- // Make sure that element opacity exists
- // (IE uses filter instead)
- // Use a regex to work around a WebKit issue. See #5145
- opacity: /^0.55$/.test( a.style.opacity ),
-
- // Verify style float existence
- // (IE uses styleFloat instead of cssFloat)
- cssFloat: !!a.style.cssFloat,
-
- // Make sure that if no value is specified for a checkbox
- // that it defaults to "on".
- // (WebKit defaults to "" instead)
- checkOn: div.getElementsByTagName("input")[0].value === "on",
-
- // Make sure that a selected-by-default option has a working selected property.
- // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
- optSelected: document.createElement("select").appendChild( document.createElement("option") ).selected,
-
- parentNode: div.removeChild( div.appendChild( document.createElement("div") ) ).parentNode === null,
-
- // Will be defined later
- deleteExpando: true,
- checkClone: false,
- scriptEval: false,
- noCloneEvent: true,
- boxModel: null
- };
-
- script.type = "text/javascript";
- try {
- script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
- } catch(e) {}
-
- root.insertBefore( script, root.firstChild );
-
- // Make sure that the execution of code works by injecting a script
- // tag with appendChild/createTextNode
- // (IE doesn't support this, fails, and uses .text instead)
- if ( window[ id ] ) {
- jQuery.support.scriptEval = true;
- delete window[ id ];
- }
-
- // Test to see if it's possible to delete an expando from an element
- // Fails in Internet Explorer
- try {
- delete script.test;
-
- } catch(e) {
- jQuery.support.deleteExpando = false;
- }
-
- root.removeChild( script );
-
- if ( div.attachEvent && div.fireEvent ) {
- div.attachEvent("onclick", function click() {
- // Cloning a node shouldn't copy over any
- // bound event handlers (IE does this)
- jQuery.support.noCloneEvent = false;
- div.detachEvent("onclick", click);
- });
- div.cloneNode(true).fireEvent("onclick");
- }
-
- div = document.createElement("div");
- div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
-
- var fragment = document.createDocumentFragment();
- fragment.appendChild( div.firstChild );
-
- // WebKit doesn't clone checked state correctly in fragments
- jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
-
- // Figure out if the W3C box model works as expected
- // document.body must exist before we can do this
- jQuery(function() {
- var div = document.createElement("div");
- div.style.width = div.style.paddingLeft = "1px";
-
- document.body.appendChild( div );
- jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
- document.body.removeChild( div ).style.display = 'none';
-
- div = null;
- });
-
- // Technique from Juriy Zaytsev
- // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
- var eventSupported = function( eventName ) {
- var el = document.createElement("div");
- eventName = "on" + eventName;
-
- var isSupported = (eventName in el);
- if ( !isSupported ) {
- el.setAttribute(eventName, "return;");
- isSupported = typeof el[eventName] === "function";
- }
- el = null;
-
- return isSupported;
- };
-
- jQuery.support.submitBubbles = eventSupported("submit");
- jQuery.support.changeBubbles = eventSupported("change");
-
- // release memory in IE
- root = script = div = all = a = null;
-})();
-
-jQuery.props = {
- "for": "htmlFor",
- "class": "className",
- readonly: "readOnly",
- maxlength: "maxLength",
- cellspacing: "cellSpacing",
- rowspan: "rowSpan",
- colspan: "colSpan",
- tabindex: "tabIndex",
- usemap: "useMap",
- frameborder: "frameBorder"
-};
-var expando = "jQuery" + now(), uuid = 0, windowData = {};
-
-jQuery.extend({
- cache: {},
-
- expando:expando,
-
- // The following elements throw uncatchable exceptions if you
- // attempt to add expando properties to them.
- noData: {
- "embed": true,
- "object": true,
- "applet": true
- },
-
- data: function( elem, name, data ) {
- if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
- return;
- }
-
- elem = elem == window ?
- windowData :
- elem;
-
- var id = elem[ expando ], cache = jQuery.cache, thisCache;
-
- if ( !id && typeof name === "string" && data === undefined ) {
- return null;
- }
-
- // Compute a unique ID for the element
- if ( !id ) {
- id = ++uuid;
- }
-
- // Avoid generating a new cache unless none exists and we
- // want to manipulate it.
- if ( typeof name === "object" ) {
- elem[ expando ] = id;
- thisCache = cache[ id ] = jQuery.extend(true, {}, name);
-
- } else if ( !cache[ id ] ) {
- elem[ expando ] = id;
- cache[ id ] = {};
- }
-
- thisCache = cache[ id ];
-
- // Prevent overriding the named cache with undefined values
- if ( data !== undefined ) {
- thisCache[ name ] = data;
- }
-
- return typeof name === "string" ? thisCache[ name ] : thisCache;
- },
-
- removeData: function( elem, name ) {
- if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
- return;
- }
-
- elem = elem == window ?
- windowData :
- elem;
-
- var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];
-
- // If we want to remove a specific section of the element's data
- if ( name ) {
- if ( thisCache ) {
- // Remove the section of cache data
- delete thisCache[ name ];
-
- // If we've removed all the data, remove the element's cache
- if ( jQuery.isEmptyObject(thisCache) ) {
- jQuery.removeData( elem );
- }
- }
-
- // Otherwise, we want to remove all of the element's data
- } else {
- if ( jQuery.support.deleteExpando ) {
- delete elem[ jQuery.expando ];
-
- } else if ( elem.removeAttribute ) {
- elem.removeAttribute( jQuery.expando );
- }
-
- // Completely remove the data cache
- delete cache[ id ];
- }
- }
-});
-
-jQuery.fn.extend({
- data: function( key, value ) {
- if ( typeof key === "undefined" && this.length ) {
- return jQuery.data( this[0] );
-
- } else if ( typeof key === "object" ) {
- return this.each(function() {
- jQuery.data( this, key );
- });
- }
-
- var parts = key.split(".");
- parts[1] = parts[1] ? "." + parts[1] : "";
-
- if ( value === undefined ) {
- var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
-
- if ( data === undefined && this.length ) {
- data = jQuery.data( this[0], key );
- }
- return data === undefined && parts[1] ?
- this.data( parts[0] ) :
- data;
- } else {
- return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() {
- jQuery.data( this, key, value );
- });
- }
- },
-
- removeData: function( key ) {
- return this.each(function() {
- jQuery.removeData( this, key );
- });
- }
-});
-jQuery.extend({
- queue: function( elem, type, data ) {
- if ( !elem ) {
- return;
- }
-
- type = (type || "fx") + "queue";
- var q = jQuery.data( elem, type );
-
- // Speed up dequeue by getting out quickly if this is just a lookup
- if ( !data ) {
- return q || [];
- }
-
- if ( !q || jQuery.isArray(data) ) {
- q = jQuery.data( elem, type, jQuery.makeArray(data) );
-
- } else {
- q.push( data );
- }
-
- return q;
- },
-
- dequeue: function( elem, type ) {
- type = type || "fx";
-
- var queue = jQuery.queue( elem, type ), fn = queue.shift();
-
- // If the fx queue is dequeued, always remove the progress sentinel
- if ( fn === "inprogress" ) {
- fn = queue.shift();
- }
-
- if ( fn ) {
- // Add a progress sentinel to prevent the fx queue from being
- // automatically dequeued
- if ( type === "fx" ) {
- queue.unshift("inprogress");
- }
-
- fn.call(elem, function() {
- jQuery.dequeue(elem, type);
- });
- }
- }
-});
-
-jQuery.fn.extend({
- queue: function( type, data ) {
- if ( typeof type !== "string" ) {
- data = type;
- type = "fx";
- }
-
- if ( data === undefined ) {
- return jQuery.queue( this[0], type );
- }
- return this.each(function( i, elem ) {
- var queue = jQuery.queue( this, type, data );
-
- if ( type === "fx" && queue[0] !== "inprogress" ) {
- jQuery.dequeue( this, type );
- }
- });
- },
- dequeue: function( type ) {
- return this.each(function() {
- jQuery.dequeue( this, type );
- });
- },
-
- // Based off of the plugin by Clint Helfers, with permission.
- // http://blindsignals.com/index.php/2009/07/jquery-delay/
- delay: function( time, type ) {
- time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
- type = type || "fx";
-
- return this.queue( type, function() {
- var elem = this;
- setTimeout(function() {
- jQuery.dequeue( elem, type );
- }, time );
- });
- },
-
- clearQueue: function( type ) {
- return this.queue( type || "fx", [] );
- }
-});
-var rclass = /[\n\t]/g,
- rspace = /\s+/,
- rreturn = /\r/g,
- rspecialurl = /href|src|style/,
- rtype = /(button|input)/i,
- rfocusable = /(button|input|object|select|textarea)/i,
- rclickable = /^(a|area)$/i,
- rradiocheck = /radio|checkbox/;
-
-jQuery.fn.extend({
- attr: function( name, value ) {
- return access( this, name, value, true, jQuery.attr );
- },
-
- removeAttr: function( name, fn ) {
- return this.each(function(){
- jQuery.attr( this, name, "" );
- if ( this.nodeType === 1 ) {
- this.removeAttribute( name );
- }
- });
- },
-
- addClass: function( value ) {
- if ( jQuery.isFunction(value) ) {
- return this.each(function(i) {
- var self = jQuery(this);
- self.addClass( value.call(this, i, self.attr("class")) );
- });
- }
-
- if ( value && typeof value === "string" ) {
- var classNames = (value || "").split( rspace );
-
- for ( var i = 0, l = this.length; i < l; i++ ) {
- var elem = this[i];
-
- if ( elem.nodeType === 1 ) {
- if ( !elem.className ) {
- elem.className = value;
-
- } else {
- var className = " " + elem.className + " ", setClass = elem.className;
- for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
- if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
- setClass += " " + classNames[c];
- }
- }
- elem.className = jQuery.trim( setClass );
- }
- }
- }
- }
-
- return this;
- },
-
- removeClass: function( value ) {
- if ( jQuery.isFunction(value) ) {
- return this.each(function(i) {
- var self = jQuery(this);
- self.removeClass( value.call(this, i, self.attr("class")) );
- });
- }
-
- if ( (value && typeof value === "string") || value === undefined ) {
- var classNames = (value || "").split(rspace);
-
- for ( var i = 0, l = this.length; i < l; i++ ) {
- var elem = this[i];
-
- if ( elem.nodeType === 1 && elem.className ) {
- if ( value ) {
- var className = (" " + elem.className + " ").replace(rclass, " ");
- for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
- className = className.replace(" " + classNames[c] + " ", " ");
- }
- elem.className = jQuery.trim( className );
-
- } else {
- elem.className = "";
- }
- }
- }
- }
-
- return this;
- },
-
- toggleClass: function( value, stateVal ) {
- var type = typeof value, isBool = typeof stateVal === "boolean";
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function(i) {
- var self = jQuery(this);
- self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
- });
- }
-
- return this.each(function() {
- if ( type === "string" ) {
- // toggle individual class names
- var className, i = 0, self = jQuery(this),
- state = stateVal,
- classNames = value.split( rspace );
-
- while ( (className = classNames[ i++ ]) ) {
- // check each className given, space seperated list
- state = isBool ? state : !self.hasClass( className );
- self[ state ? "addClass" : "removeClass" ]( className );
- }
-
- } else if ( type === "undefined" || type === "boolean" ) {
- if ( this.className ) {
- // store className if set
- jQuery.data( this, "__className__", this.className );
- }
-
- // toggle whole className
- this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || "";
- }
- });
- },
-
- hasClass: function( selector ) {
- var className = " " + selector + " ";
- for ( var i = 0, l = this.length; i < l; i++ ) {
- if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
- return true;
- }
- }
-
- return false;
- },
-
- val: function( value ) {
- if ( value === undefined ) {
- var elem = this[0];
-
- if ( elem ) {
- if ( jQuery.nodeName( elem, "option" ) ) {
- return (elem.attributes.value || {}).specified ? elem.value : elem.text;
- }
-
- // We need to handle select boxes special
- if ( jQuery.nodeName( elem, "select" ) ) {
- var index = elem.selectedIndex,
- values = [],
- options = elem.options,
- one = elem.type === "select-one";
-
- // Nothing was selected
- if ( index < 0 ) {
- return null;
- }
-
- // Loop through all the selected options
- for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
- var option = options[ i ];
-
- if ( option.selected ) {
- // Get the specifc value for the option
- value = jQuery(option).val();
-
- // We don't need an array for one selects
- if ( one ) {
- return value;
- }
-
- // Multi-Selects return an array
- values.push( value );
- }
- }
-
- return values;
- }
-
- // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
- if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
- return elem.getAttribute("value") === null ? "on" : elem.value;
- }
-
-
- // Everything else, we just grab the value
- return (elem.value || "").replace(rreturn, "");
-
- }
-
- return undefined;
- }
-
- var isFunction = jQuery.isFunction(value);
-
- return this.each(function(i) {
- var self = jQuery(this), val = value;
-
- if ( this.nodeType !== 1 ) {
- return;
- }
-
- if ( isFunction ) {
- val = value.call(this, i, self.val());
- }
-
- // Typecast each time if the value is a Function and the appended
- // value is therefore different each time.
- if ( typeof val === "number" ) {
- val += "";
- }
-
- if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
- this.checked = jQuery.inArray( self.val(), val ) >= 0;
-
- } else if ( jQuery.nodeName( this, "select" ) ) {
- var values = jQuery.makeArray(val);
-
- jQuery( "option", this ).each(function() {
- this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
- });
-
- if ( !values.length ) {
- this.selectedIndex = -1;
- }
-
- } else {
- this.value = val;
- }
- });
- }
-});
-
-jQuery.extend({
- attrFn: {
- val: true,
- css: true,
- html: true,
- text: true,
- data: true,
- width: true,
- height: true,
- offset: true
- },
-
- attr: function( elem, name, value, pass ) {
- // don't set attributes on text and comment nodes
- if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
- return undefined;
- }
-
- if ( pass && name in jQuery.attrFn ) {
- return jQuery(elem)[name](value);
- }
-
- var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
- // Whether we are setting (or getting)
- set = value !== undefined;
-
- // Try to normalize/fix the name
- name = notxml && jQuery.props[ name ] || name;
-
- // Only do all the following if this is a node (faster for style)
- if ( elem.nodeType === 1 ) {
- // These attributes require special treatment
- var special = rspecialurl.test( name );
-
- // Safari mis-reports the default selected property of an option
- // Accessing the parent's selectedIndex property fixes it
- if ( name === "selected" && !jQuery.support.optSelected ) {
- var parent = elem.parentNode;
- if ( parent ) {
- parent.selectedIndex;
-
- // Make sure that it also works with optgroups, see #5701
- if ( parent.parentNode ) {
- parent.parentNode.selectedIndex;
- }
- }
- }
-
- // If applicable, access the attribute via the DOM 0 way
- if ( name in elem && notxml && !special ) {
- if ( set ) {
- // We can't allow the type property to be changed (since it causes problems in IE)
- if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
- jQuery.error( "type property can't be changed" );
- }
-
- elem[ name ] = value;
- }
-
- // browsers index elements by id/name on forms, give priority to attributes.
- if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
- return elem.getAttributeNode( name ).nodeValue;
- }
-
- // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
- // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
- if ( name === "tabIndex" ) {
- var attributeNode = elem.getAttributeNode( "tabIndex" );
-
- return attributeNode && attributeNode.specified ?
- attributeNode.value :
- rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
- 0 :
- undefined;
- }
-
- return elem[ name ];
- }
-
- if ( !jQuery.support.style && notxml && name === "style" ) {
- if ( set ) {
- elem.style.cssText = "" + value;
- }
-
- return elem.style.cssText;
- }
-
- if ( set ) {
- // convert the value to a string (all browsers do this but IE) see #1070
- elem.setAttribute( name, "" + value );
- }
-
- var attr = !jQuery.support.hrefNormalized && notxml && special ?
- // Some attributes require a special call on IE
- elem.getAttribute( name, 2 ) :
- elem.getAttribute( name );
-
- // Non-existent attributes return null, we normalize to undefined
- return attr === null ? undefined : attr;
- }
-
- // elem is actually elem.style ... set the style
- // Using attr for specific style information is now deprecated. Use style instead.
- return jQuery.style( elem, name, value );
- }
-});
-var rnamespaces = /\.(.*)$/,
- fcleanup = function( nm ) {
- return nm.replace(/[^\w\s\.\|`]/g, function( ch ) {
- return "\\" + ch;
- });
- };
-
-/*
- * A number of helper functions used for managing events.
- * Many of the ideas behind this code originated from
- * Dean Edwards' addEvent library.
- */
-jQuery.event = {
-
- // Bind an event to an element
- // Original by Dean Edwards
- add: function( elem, types, handler, data ) {
- if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
- return;
- }
-
- // For whatever reason, IE has trouble passing the window object
- // around, causing it to be cloned in the process
- if ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) {
- elem = window;
- }
-
- var handleObjIn, handleObj;
-
- if ( handler.handler ) {
- handleObjIn = handler;
- handler = handleObjIn.handler;
- }
-
- // Make sure that the function being executed has a unique ID
- if ( !handler.guid ) {
- handler.guid = jQuery.guid++;
- }
-
- // Init the element's event structure
- var elemData = jQuery.data( elem );
-
- // If no elemData is found then we must be trying to bind to one of the
- // banned noData elements
- if ( !elemData ) {
- return;
- }
-
- var events = elemData.events = elemData.events || {},
- eventHandle = elemData.handle, eventHandle;
-
- if ( !eventHandle ) {
- elemData.handle = eventHandle = function() {
- // Handle the second event of a trigger and when
- // an event is called after a page has unloaded
- return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
- jQuery.event.handle.apply( eventHandle.elem, arguments ) :
- undefined;
- };
- }
-
- // Add elem as a property of the handle function
- // This is to prevent a memory leak with non-native events in IE.
- eventHandle.elem = elem;
-
- // Handle multiple events separated by a space
- // jQuery(...).bind("mouseover mouseout", fn);
- types = types.split(" ");
-
- var type, i = 0, namespaces;
-
- while ( (type = types[ i++ ]) ) {
- handleObj = handleObjIn ?
- jQuery.extend({}, handleObjIn) :
- { handler: handler, data: data };
-
- // Namespaced event handlers
- if ( type.indexOf(".") > -1 ) {
- namespaces = type.split(".");
- type = namespaces.shift();
- handleObj.namespace = namespaces.slice(0).sort().join(".");
-
- } else {
- namespaces = [];
- handleObj.namespace = "";
- }
-
- handleObj.type = type;
- handleObj.guid = handler.guid;
-
- // Get the current list of functions bound to this event
- var handlers = events[ type ],
- special = jQuery.event.special[ type ] || {};
-
- // Init the event handler queue
- if ( !handlers ) {
- handlers = events[ type ] = [];
-
- // Check for a special event handler
- // Only use addEventListener/attachEvent if the special
- // events handler returns false
- if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
- // Bind the global event handler to the element
- if ( elem.addEventListener ) {
- elem.addEventListener( type, eventHandle, false );
-
- } else if ( elem.attachEvent ) {
- elem.attachEvent( "on" + type, eventHandle );
- }
- }
- }
-
- if ( special.add ) {
- special.add.call( elem, handleObj );
-
- if ( !handleObj.handler.guid ) {
- handleObj.handler.guid = handler.guid;
- }
- }
-
- // Add the function to the element's handler list
- handlers.push( handleObj );
-
- // Keep track of which events have been used, for global triggering
- jQuery.event.global[ type ] = true;
- }
-
- // Nullify elem to prevent memory leaks in IE
- elem = null;
- },
-
- global: {},
-
- // Detach an event or set of events from an element
- remove: function( elem, types, handler, pos ) {
- // don't do events on text and comment nodes
- if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
- return;
- }
-
- var ret, type, fn, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
- elemData = jQuery.data( elem ),
- events = elemData && elemData.events;
-
- if ( !elemData || !events ) {
- return;
- }
-
- // types is actually an event object here
- if ( types && types.type ) {
- handler = types.handler;
- types = types.type;
- }
-
- // Unbind all events for the element
- if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
- types = types || "";
-
- for ( type in events ) {
- jQuery.event.remove( elem, type + types );
- }
-
- return;
- }
-
- // Handle multiple events separated by a space
- // jQuery(...).unbind("mouseover mouseout", fn);
- types = types.split(" ");
-
- while ( (type = types[ i++ ]) ) {
- origType = type;
- handleObj = null;
- all = type.indexOf(".") < 0;
- namespaces = [];
-
- if ( !all ) {
- // Namespaced event handlers
- namespaces = type.split(".");
- type = namespaces.shift();
-
- namespace = new RegExp("(^|\\.)" +
- jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)")
- }
-
- eventType = events[ type ];
-
- if ( !eventType ) {
- continue;
- }
-
- if ( !handler ) {
- for ( var j = 0; j < eventType.length; j++ ) {
- handleObj = eventType[ j ];
-
- if ( all || namespace.test( handleObj.namespace ) ) {
- jQuery.event.remove( elem, origType, handleObj.handler, j );
- eventType.splice( j--, 1 );
- }
- }
-
- continue;
- }
-
- special = jQuery.event.special[ type ] || {};
-
- for ( var j = pos || 0; j < eventType.length; j++ ) {
- handleObj = eventType[ j ];
-
- if ( handler.guid === handleObj.guid ) {
- // remove the given handler for the given type
- if ( all || namespace.test( handleObj.namespace ) ) {
- if ( pos == null ) {
- eventType.splice( j--, 1 );
- }
-
- if ( special.remove ) {
- special.remove.call( elem, handleObj );
- }
- }
-
- if ( pos != null ) {
- break;
- }
- }
- }
-
- // remove generic event handler if no more handlers exist
- if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
- if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
- removeEvent( elem, type, elemData.handle );
- }
-
- ret = null;
- delete events[ type ];
- }
- }
-
- // Remove the expando if it's no longer used
- if ( jQuery.isEmptyObject( events ) ) {
- var handle = elemData.handle;
- if ( handle ) {
- handle.elem = null;
- }
-
- delete elemData.events;
- delete elemData.handle;
-
- if ( jQuery.isEmptyObject( elemData ) ) {
- jQuery.removeData( elem );
- }
- }
- },
-
- // bubbling is internal
- trigger: function( event, data, elem /*, bubbling */ ) {
- // Event object or event type
- var type = event.type || event,
- bubbling = arguments[3];
-
- if ( !bubbling ) {
- event = typeof event === "object" ?
- // jQuery.Event object
- event[expando] ? event :
- // Object literal
- jQuery.extend( jQuery.Event(type), event ) :
- // Just the event type (string)
- jQuery.Event(type);
-
- if ( type.indexOf("!") >= 0 ) {
- event.type = type = type.slice(0, -1);
- event.exclusive = true;
- }
-
- // Handle a global trigger
- if ( !elem ) {
- // Don't bubble custom events when global (to avoid too much overhead)
- event.stopPropagation();
-
- // Only trigger if we've ever bound an event for it
- if ( jQuery.event.global[ type ] ) {
- jQuery.each( jQuery.cache, function() {
- if ( this.events && this.events[type] ) {
- jQuery.event.trigger( event, data, this.handle.elem );
- }
- });
- }
- }
-
- // Handle triggering a single element
-
- // don't do events on text and comment nodes
- if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
- return undefined;
- }
-
- // Clean up in case it is reused
- event.result = undefined;
- event.target = elem;
-
- // Clone the incoming data, if any
- data = jQuery.makeArray( data );
- data.unshift( event );
- }
-
- event.currentTarget = elem;
-
- // Trigger the event, it is assumed that "handle" is a function
- var handle = jQuery.data( elem, "handle" );
- if ( handle ) {
- handle.apply( elem, data );
- }
-
- var parent = elem.parentNode || elem.ownerDocument;
-
- // Trigger an inline bound script
- try {
- if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
- if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
- event.result = false;
- }
- }
-
- // prevent IE from throwing an error for some elements with some event types, see #3533
- } catch (e) {}
-
- if ( !event.isPropagationStopped() && parent ) {
- jQuery.event.trigger( event, data, parent, true );
-
- } else if ( !event.isDefaultPrevented() ) {
- var target = event.target, old,
- isClick = jQuery.nodeName(target, "a") && type === "click",
- special = jQuery.event.special[ type ] || {};
-
- if ( (!special._default || special._default.call( elem, event ) === false) &&
- !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
-
- try {
- if ( target[ type ] ) {
- // Make sure that we don't accidentally re-trigger the onFOO events
- old = target[ "on" + type ];
-
- if ( old ) {
- target[ "on" + type ] = null;
- }
-
- jQuery.event.triggered = true;
- target[ type ]();
- }
-
- // prevent IE from throwing an error for some elements with some event types, see #3533
- } catch (e) {}
-
- if ( old ) {
- target[ "on" + type ] = old;
- }
-
- jQuery.event.triggered = false;
- }
- }
- },
-
- handle: function( event ) {
- var all, handlers, namespaces, namespace, events;
-
- event = arguments[0] = jQuery.event.fix( event || window.event );
- event.currentTarget = this;
-
- // Namespaced event handlers
- all = event.type.indexOf(".") < 0 && !event.exclusive;
-
- if ( !all ) {
- namespaces = event.type.split(".");
- event.type = namespaces.shift();
- namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)");
- }
-
- var events = jQuery.data(this, "events"), handlers = events[ event.type ];
-
- if ( events && handlers ) {
- // Clone the handlers to prevent manipulation
- handlers = handlers.slice(0);
-
- for ( var j = 0, l = handlers.length; j < l; j++ ) {
- var handleObj = handlers[ j ];
-
- // Filter the functions by class
- if ( all || namespace.test( handleObj.namespace ) ) {
- // Pass in a reference to the handler function itself
- // So that we can later remove it
- event.handler = handleObj.handler;
- event.data = handleObj.data;
- event.handleObj = handleObj;
-
- var ret = handleObj.handler.apply( this, arguments );
-
- if ( ret !== undefined ) {
- event.result = ret;
- if ( ret === false ) {
- event.preventDefault();
- event.stopPropagation();
- }
- }
-
- if ( event.isImmediatePropagationStopped() ) {
- break;
- }
- }
- }
- }
-
- return event.result;
- },
-
- props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-
- fix: function( event ) {
- if ( event[ expando ] ) {
- return event;
- }
-
- // store a copy of the original event object
- // and "clone" to set read-only properties
- var originalEvent = event;
- event = jQuery.Event( originalEvent );
-
- for ( var i = this.props.length, prop; i; ) {
- prop = this.props[ --i ];
- event[ prop ] = originalEvent[ prop ];
- }
-
- // Fix target property, if necessary
- if ( !event.target ) {
- event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
- }
-
- // check if target is a textnode (safari)
- if ( event.target.nodeType === 3 ) {
- event.target = event.target.parentNode;
- }
-
- // Add relatedTarget, if necessary
- if ( !event.relatedTarget && event.fromElement ) {
- event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
- }
-
- // Calculate pageX/Y if missing and clientX/Y available
- if ( event.pageX == null && event.clientX != null ) {
- var doc = document.documentElement, body = document.body;
- event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
- event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
- }
-
- // Add which for key events
- if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {
- event.which = event.charCode || event.keyCode;
- }
-
- // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
- if ( !event.metaKey && event.ctrlKey ) {
- event.metaKey = event.ctrlKey;
- }
-
- // Add which for click: 1 === left; 2 === middle; 3 === right
- // Note: button is not normalized, so don't use it
- if ( !event.which && event.button !== undefined ) {
- event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
- }
-
- return event;
- },
-
- // Deprecated, use jQuery.guid instead
- guid: 1E8,
-
- // Deprecated, use jQuery.proxy instead
- proxy: jQuery.proxy,
-
- special: {
- ready: {
- // Make sure the ready event is setup
- setup: jQuery.bindReady,
- teardown: jQuery.noop
- },
-
- live: {
- add: function( handleObj ) {
- jQuery.event.add( this, handleObj.origType, jQuery.extend({}, handleObj, {handler: liveHandler}) );
- },
-
- remove: function( handleObj ) {
- var remove = true,
- type = handleObj.origType.replace(rnamespaces, "");
-
- jQuery.each( jQuery.data(this, "events").live || [], function() {
- if ( type === this.origType.replace(rnamespaces, "") ) {
- remove = false;
- return false;
- }
- });
-
- if ( remove ) {
- jQuery.event.remove( this, handleObj.origType, liveHandler );
- }
- }
-
- },
-
- beforeunload: {
- setup: function( data, namespaces, eventHandle ) {
- // We only want to do this special case on windows
- if ( this.setInterval ) {
- this.onbeforeunload = eventHandle;
- }
-
- return false;
- },
- teardown: function( namespaces, eventHandle ) {
- if ( this.onbeforeunload === eventHandle ) {
- this.onbeforeunload = null;
- }
- }
- }
- }
-};
-
-var removeEvent = document.removeEventListener ?
- function( elem, type, handle ) {
- elem.removeEventListener( type, handle, false );
- } :
- function( elem, type, handle ) {
- elem.detachEvent( "on" + type, handle );
- };
-
-jQuery.Event = function( src ) {
- // Allow instantiation without the 'new' keyword
- if ( !this.preventDefault ) {
- return new jQuery.Event( src );
- }
-
- // Event object
- if ( src && src.type ) {
- this.originalEvent = src;
- this.type = src.type;
- // Event type
- } else {
- this.type = src;
- }
-
- // timeStamp is buggy for some events on Firefox(#3843)
- // So we won't rely on the native value
- this.timeStamp = now();
-
- // Mark it as fixed
- this[ expando ] = true;
-};
-
-function returnFalse() {
- return false;
-}
-function returnTrue() {
- return true;
-}
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
- preventDefault: function() {
- this.isDefaultPrevented = returnTrue;
-
- var e = this.originalEvent;
- if ( !e ) {
- return;
- }
-
- // if preventDefault exists run it on the original event
- if ( e.preventDefault ) {
- e.preventDefault();
- }
- // otherwise set the returnValue property of the original event to false (IE)
- e.returnValue = false;
- },
- stopPropagation: function() {
- this.isPropagationStopped = returnTrue;
-
- var e = this.originalEvent;
- if ( !e ) {
- return;
- }
- // if stopPropagation exists run it on the original event
- if ( e.stopPropagation ) {
- e.stopPropagation();
- }
- // otherwise set the cancelBubble property of the original event to true (IE)
- e.cancelBubble = true;
- },
- stopImmediatePropagation: function() {
- this.isImmediatePropagationStopped = returnTrue;
- this.stopPropagation();
- },
- isDefaultPrevented: returnFalse,
- isPropagationStopped: returnFalse,
- isImmediatePropagationStopped: returnFalse
-};
-
-// Checks if an event happened on an element within another element
-// Used in jQuery.event.special.mouseenter and mouseleave handlers
-var withinElement = function( event ) {
- // Check if mouse(over|out) are still within the same parent element
- var parent = event.relatedTarget;
-
- // Firefox sometimes assigns relatedTarget a XUL element
- // which we cannot access the parentNode property of
- try {
- // Traverse up the tree
- while ( parent && parent !== this ) {
- parent = parent.parentNode;
- }
-
- if ( parent !== this ) {
- // set the correct event type
- event.type = event.data;
-
- // handle event if we actually just moused on to a non sub-element
- jQuery.event.handle.apply( this, arguments );
- }
-
- // assuming we've left the element since we most likely mousedover a xul element
- } catch(e) { }
-},
-
-// In case of event delegation, we only need to rename the event.type,
-// liveHandler will take care of the rest.
-delegate = function( event ) {
- event.type = event.data;
- jQuery.event.handle.apply( this, arguments );
-};
-
-// Create mouseenter and mouseleave events
-jQuery.each({
- mouseenter: "mouseover",
- mouseleave: "mouseout"
-}, function( orig, fix ) {
- jQuery.event.special[ orig ] = {
- setup: function( data ) {
- jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
- },
- teardown: function( data ) {
- jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
- }
- };
-});
-
-// submit delegation
-if ( !jQuery.support.submitBubbles ) {
-
- jQuery.event.special.submit = {
- setup: function( data, namespaces ) {
- if ( this.nodeName.toLowerCase() !== "form" ) {
- jQuery.event.add(this, "click.specialSubmit", function( e ) {
- var elem = e.target, type = elem.type;
-
- if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
- return trigger( "submit", this, arguments );
- }
- });
-
- jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
- var elem = e.target, type = elem.type;
-
- if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
- return trigger( "submit", this, arguments );
- }
- });
-
- } else {
- return false;
- }
- },
-
- teardown: function( namespaces ) {
- jQuery.event.remove( this, ".specialSubmit" );
- }
- };
-
-}
-
-// change delegation, happens here so we have bind.
-if ( !jQuery.support.changeBubbles ) {
-
- var formElems = /textarea|input|select/i,
-
- changeFilters,
-
- getVal = function( elem ) {
- var type = elem.type, val = elem.value;
-
- if ( type === "radio" || type === "checkbox" ) {
- val = elem.checked;
-
- } else if ( type === "select-multiple" ) {
- val = elem.selectedIndex > -1 ?
- jQuery.map( elem.options, function( elem ) {
- return elem.selected;
- }).join("-") :
- "";
-
- } else if ( elem.nodeName.toLowerCase() === "select" ) {
- val = elem.selectedIndex;
- }
-
- return val;
- },
-
- testChange = function testChange( e ) {
- var elem = e.target, data, val;
-
- if ( !formElems.test( elem.nodeName ) || elem.readOnly ) {
- return;
- }
-
- data = jQuery.data( elem, "_change_data" );
- val = getVal(elem);
-
- // the current data will be also retrieved by beforeactivate
- if ( e.type !== "focusout" || elem.type !== "radio" ) {
- jQuery.data( elem, "_change_data", val );
- }
-
- if ( data === undefined || val === data ) {
- return;
- }
-
- if ( data != null || val ) {
- e.type = "change";
- return jQuery.event.trigger( e, arguments[1], elem );
- }
- };
-
- jQuery.event.special.change = {
- filters: {
- focusout: testChange,
-
- click: function( e ) {
- var elem = e.target, type = elem.type;
-
- if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
- return testChange.call( this, e );
- }
- },
-
- // Change has to be called before submit
- // Keydown will be called before keypress, which is used in submit-event delegation
- keydown: function( e ) {
- var elem = e.target, type = elem.type;
-
- if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
- (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
- type === "select-multiple" ) {
- return testChange.call( this, e );
- }
- },
-
- // Beforeactivate happens also before the previous element is blurred
- // with this event you can't trigger a change event, but you can store
- // information/focus[in] is not needed anymore
- beforeactivate: function( e ) {
- var elem = e.target;
- jQuery.data( elem, "_change_data", getVal(elem) );
- }
- },
-
- setup: function( data, namespaces ) {
- if ( this.type === "file" ) {
- return false;
- }
-
- for ( var type in changeFilters ) {
- jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
- }
-
- return formElems.test( this.nodeName );
- },
-
- teardown: function( namespaces ) {
- jQuery.event.remove( this, ".specialChange" );
-
- return formElems.test( this.nodeName );
- }
- };
-
- changeFilters = jQuery.event.special.change.filters;
-}
-
-function trigger( type, elem, args ) {
- args[0].type = type;
- return jQuery.event.handle.apply( elem, args );
-}
-
-// Create "bubbling" focus and blur events
-if ( document.addEventListener ) {
- jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
- jQuery.event.special[ fix ] = {
- setup: function() {
- this.addEventListener( orig, handler, true );
- },
- teardown: function() {
- this.removeEventListener( orig, handler, true );
- }
- };
-
- function handler( e ) {
- e = jQuery.event.fix( e );
- e.type = fix;
- return jQuery.event.handle.call( this, e );
- }
- });
-}
-
-jQuery.each(["bind", "one"], function( i, name ) {
- jQuery.fn[ name ] = function( type, data, fn ) {
- // Handle object literals
- if ( typeof type === "object" ) {
- for ( var key in type ) {
- this[ name ](key, data, type[key], fn);
- }
- return this;
- }
-
- if ( jQuery.isFunction( data ) ) {
- fn = data;
- data = undefined;
- }
-
- var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
- jQuery( this ).unbind( event, handler );
- return fn.apply( this, arguments );
- }) : fn;
-
- if ( type === "unload" && name !== "one" ) {
- this.one( type, data, fn );
-
- } else {
- for ( var i = 0, l = this.length; i < l; i++ ) {
- jQuery.event.add( this[i], type, handler, data );
- }
- }
-
- return this;
- };
-});
-
-jQuery.fn.extend({
- unbind: function( type, fn ) {
- // Handle object literals
- if ( typeof type === "object" && !type.preventDefault ) {
- for ( var key in type ) {
- this.unbind(key, type[key]);
- }
-
- } else {
- for ( var i = 0, l = this.length; i < l; i++ ) {
- jQuery.event.remove( this[i], type, fn );
- }
- }
-
- return this;
- },
-
- delegate: function( selector, types, data, fn ) {
- return this.live( types, data, fn, selector );
- },
-
- undelegate: function( selector, types, fn ) {
- if ( arguments.length === 0 ) {
- return this.unbind( "live" );
-
- } else {
- return this.die( types, null, fn, selector );
- }
- },
-
- trigger: function( type, data ) {
- return this.each(function() {
- jQuery.event.trigger( type, data, this );
- });
- },
-
- triggerHandler: function( type, data ) {
- if ( this[0] ) {
- var event = jQuery.Event( type );
- event.preventDefault();
- event.stopPropagation();
- jQuery.event.trigger( event, data, this[0] );
- return event.result;
- }
- },
-
- toggle: function( fn ) {
- // Save reference to arguments for access in closure
- var args = arguments, i = 1;
-
- // link all the functions, so any of them can unbind this click handler
- while ( i < args.length ) {
- jQuery.proxy( fn, args[ i++ ] );
- }
-
- return this.click( jQuery.proxy( fn, function( event ) {
- // Figure out which function to execute
- var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
- jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
-
- // Make sure that clicks stop
- event.preventDefault();
-
- // and execute the function
- return args[ lastToggle ].apply( this, arguments ) || false;
- }));
- },
-
- hover: function( fnOver, fnOut ) {
- return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
- }
-});
-
-var liveMap = {
- focus: "focusin",
- blur: "focusout",
- mouseenter: "mouseover",
- mouseleave: "mouseout"
-};
-
-jQuery.each(["live", "die"], function( i, name ) {
- jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
- var type, i = 0, match, namespaces, preType,
- selector = origSelector || this.selector,
- context = origSelector ? this : jQuery( this.context );
-
- if ( jQuery.isFunction( data ) ) {
- fn = data;
- data = undefined;
- }
-
- types = (types || "").split(" ");
-
- while ( (type = types[ i++ ]) != null ) {
- match = rnamespaces.exec( type );
- namespaces = "";
-
- if ( match ) {
- namespaces = match[0];
- type = type.replace( rnamespaces, "" );
- }
-
- if ( type === "hover" ) {
- types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
- continue;
- }
-
- preType = type;
-
- if ( type === "focus" || type === "blur" ) {
- types.push( liveMap[ type ] + namespaces );
- type = type + namespaces;
-
- } else {
- type = (liveMap[ type ] || type) + namespaces;
- }
-
- if ( name === "live" ) {
- // bind live handler
- context.each(function(){
- jQuery.event.add( this, liveConvert( type, selector ),
- { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
- });
-
- } else {
- // unbind live handler
- context.unbind( liveConvert( type, selector ), fn );
- }
- }
-
- return this;
- }
-});
-
-function liveHandler( event ) {
- var stop, elems = [], selectors = [], args = arguments,
- related, match, handleObj, elem, j, i, l, data,
- events = jQuery.data( this, "events" );
-
- // Make sure we avoid non-left-click bubbling in Firefox (#3861)
- if ( event.liveFired === this || !events || !events.live || event.button && event.type === "click" ) {
- return;
- }
-
- event.liveFired = this;
-
- var live = events.live.slice(0);
-
- for ( j = 0; j < live.length; j++ ) {
- handleObj = live[j];
-
- if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
- selectors.push( handleObj.selector );
-
- } else {
- live.splice( j--, 1 );
- }
- }
-
- match = jQuery( event.target ).closest( selectors, event.currentTarget );
-
- for ( i = 0, l = match.length; i < l; i++ ) {
- for ( j = 0; j < live.length; j++ ) {
- handleObj = live[j];
-
- if ( match[i].selector === handleObj.selector ) {
- elem = match[i].elem;
- related = null;
-
- // Those two events require additional checking
- if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
- related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
- }
-
- if ( !related || related !== elem ) {
- elems.push({ elem: elem, handleObj: handleObj });
- }
- }
- }
- }
-
- for ( i = 0, l = elems.length; i < l; i++ ) {
- match = elems[i];
- event.currentTarget = match.elem;
- event.data = match.handleObj.data;
- event.handleObj = match.handleObj;
-
- if ( match.handleObj.origHandler.apply( match.elem, args ) === false ) {
- stop = false;
- break;
- }
- }
-
- return stop;
-}
-
-function liveConvert( type, selector ) {
- return "live." + (type && type !== "*" ? type + "." : "") + selector.replace(/\./g, "`").replace(/ /g, "&");
-}
-
-jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
- "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
- "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
-
- // Handle event binding
- jQuery.fn[ name ] = function( fn ) {
- return fn ? this.bind( name, fn ) : this.trigger( name );
- };
-
- if ( jQuery.attrFn ) {
- jQuery.attrFn[ name ] = true;
- }
-});
-
-// Prevent memory leaks in IE
-// Window isn't included so as not to unbind existing unload events
-// More info:
-// - http://isaacschlueter.com/2006/10/msie-memory-leaks/
-if ( window.attachEvent && !window.addEventListener ) {
- window.attachEvent("onunload", function() {
- for ( var id in jQuery.cache ) {
- if ( jQuery.cache[ id ].handle ) {
- // Try/Catch is to handle iframes being unloaded, see #4280
- try {
- jQuery.event.remove( jQuery.cache[ id ].handle.elem );
- } catch(e) {}
- }
- }
- });
-}
-/*!
- * Sizzle CSS Selector Engine - v1.0
- * Copyright 2009, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- * More information: http://sizzlejs.com/
- */
-(function(){
-
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
- done = 0,
- toString = Object.prototype.toString,
- hasDuplicate = false,
- baseHasDuplicate = true;
-
-// Here we check if the JavaScript engine is using some sort of
-// optimization where it does not always call our comparision
-// function. If that is the case, discard the hasDuplicate value.
-// Thus far that includes Google Chrome.
-[0, 0].sort(function(){
- baseHasDuplicate = false;
- return 0;
-});
-
-var Sizzle = function(selector, context, results, seed) {
- results = results || [];
- var origContext = context = context || document;
-
- if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
- return [];
- }
-
- if ( !selector || typeof selector !== "string" ) {
- return results;
- }
-
- var parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context),
- soFar = selector;
-
- // Reset the position of the chunker regexp (start from head)
- while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
- soFar = m[3];
-
- parts.push( m[1] );
-
- if ( m[2] ) {
- extra = m[3];
- break;
- }
- }
-
- if ( parts.length > 1 && origPOS.exec( selector ) ) {
- if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
- set = posProcess( parts[0] + parts[1], context );
- } else {
- set = Expr.relative[ parts[0] ] ?
- [ context ] :
- Sizzle( parts.shift(), context );
-
- while ( parts.length ) {
- selector = parts.shift();
-
- if ( Expr.relative[ selector ] ) {
- selector += parts.shift();
- }
-
- set = posProcess( selector, set );
- }
- }
- } else {
- // Take a shortcut and set the context if the root selector is an ID
- // (but not if it'll be faster if the inner selector is an ID)
- if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
- Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
- var ret = Sizzle.find( parts.shift(), context, contextXML );
- context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
- }
-
- if ( context ) {
- var ret = seed ?
- { expr: parts.pop(), set: makeArray(seed) } :
- Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
- set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
-
- if ( parts.length > 0 ) {
- checkSet = makeArray(set);
- } else {
- prune = false;
- }
-
- while ( parts.length ) {
- var cur = parts.pop(), pop = cur;
-
- if ( !Expr.relative[ cur ] ) {
- cur = "";
- } else {
- pop = parts.pop();
- }
-
- if ( pop == null ) {
- pop = context;
- }
-
- Expr.relative[ cur ]( checkSet, pop, contextXML );
- }
- } else {
- checkSet = parts = [];
- }
- }
-
- if ( !checkSet ) {
- checkSet = set;
- }
-
- if ( !checkSet ) {
- Sizzle.error( cur || selector );
- }
-
- if ( toString.call(checkSet) === "[object Array]" ) {
- if ( !prune ) {
- results.push.apply( results, checkSet );
- } else if ( context && context.nodeType === 1 ) {
- for ( var i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
- results.push( set[i] );
- }
- }
- } else {
- for ( var i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
- results.push( set[i] );
- }
- }
- }
- } else {
- makeArray( checkSet, results );
- }
-
- if ( extra ) {
- Sizzle( extra, origContext, results, seed );
- Sizzle.uniqueSort( results );
- }
-
- return results;
-};
-
-Sizzle.uniqueSort = function(results){
- if ( sortOrder ) {
- hasDuplicate = baseHasDuplicate;
- results.sort(sortOrder);
-
- if ( hasDuplicate ) {
- for ( var i = 1; i < results.length; i++ ) {
- if ( results[i] === results[i-1] ) {
- results.splice(i--, 1);
- }
- }
- }
- }
-
- return results;
-};
-
-Sizzle.matches = function(expr, set){
- return Sizzle(expr, null, null, set);
-};
-
-Sizzle.find = function(expr, context, isXML){
- var set, match;
-
- if ( !expr ) {
- return [];
- }
-
- for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
- var type = Expr.order[i], match;
-
- if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
- var left = match[1];
- match.splice(1,1);
-
- if ( left.substr( left.length - 1 ) !== "\\" ) {
- match[1] = (match[1] || "").replace(/\\/g, "");
- set = Expr.find[ type ]( match, context, isXML );
- if ( set != null ) {
- expr = expr.replace( Expr.match[ type ], "" );
- break;
- }
- }
- }
- }
-
- if ( !set ) {
- set = context.getElementsByTagName("*");
- }
-
- return {set: set, expr: expr};
-};
-
-Sizzle.filter = function(expr, set, inplace, not){
- var old = expr, result = [], curLoop = set, match, anyFound,
- isXMLFilter = set && set[0] && isXML(set[0]);
-
- while ( expr && set.length ) {
- for ( var type in Expr.filter ) {
- if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
- var filter = Expr.filter[ type ], found, item, left = match[1];
- anyFound = false;
-
- match.splice(1,1);
-
- if ( left.substr( left.length - 1 ) === "\\" ) {
- continue;
- }
-
- if ( curLoop === result ) {
- result = [];
- }
-
- if ( Expr.preFilter[ type ] ) {
- match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
-
- if ( !match ) {
- anyFound = found = true;
- } else if ( match === true ) {
- continue;
- }
- }
-
- if ( match ) {
- for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
- if ( item ) {
- found = filter( item, match, i, curLoop );
- var pass = not ^ !!found;
-
- if ( inplace && found != null ) {
- if ( pass ) {
- anyFound = true;
- } else {
- curLoop[i] = false;
- }
- } else if ( pass ) {
- result.push( item );
- anyFound = true;
- }
- }
- }
- }
-
- if ( found !== undefined ) {
- if ( !inplace ) {
- curLoop = result;
- }
-
- expr = expr.replace( Expr.match[ type ], "" );
-
- if ( !anyFound ) {
- return [];
- }
-
- break;
- }
- }
- }
-
- // Improper expression
- if ( expr === old ) {
- if ( anyFound == null ) {
- Sizzle.error( expr );
- } else {
- break;
- }
- }
-
- old = expr;
- }
-
- return curLoop;
-};
-
-Sizzle.error = function( msg ) {
- throw "Syntax error, unrecognized expression: " + msg;
-};
-
-var Expr = Sizzle.selectors = {
- order: [ "ID", "NAME", "TAG" ],
- match: {
- ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
- CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
- NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
- ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
- TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
- CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
- POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
- PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
- },
- leftMatch: {},
- attrMap: {
- "class": "className",
- "for": "htmlFor"
- },
- attrHandle: {
- href: function(elem){
- return elem.getAttribute("href");
- }
- },
- relative: {
- "+": function(checkSet, part){
- var isPartStr = typeof part === "string",
- isTag = isPartStr && !/\W/.test(part),
- isPartStrNotTag = isPartStr && !isTag;
-
- if ( isTag ) {
- part = part.toLowerCase();
- }
-
- for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
- if ( (elem = checkSet[i]) ) {
- while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
-
- checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
- elem || false :
- elem === part;
- }
- }
-
- if ( isPartStrNotTag ) {
- Sizzle.filter( part, checkSet, true );
- }
- },
- ">": function(checkSet, part){
- var isPartStr = typeof part === "string";
-
- if ( isPartStr && !/\W/.test(part) ) {
- part = part.toLowerCase();
-
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
- if ( elem ) {
- var parent = elem.parentNode;
- checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
- }
- }
- } else {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
- if ( elem ) {
- checkSet[i] = isPartStr ?
- elem.parentNode :
- elem.parentNode === part;
- }
- }
-
- if ( isPartStr ) {
- Sizzle.filter( part, checkSet, true );
- }
- }
- },
- "": function(checkSet, part, isXML){
- var doneName = done++, checkFn = dirCheck;
-
- if ( typeof part === "string" && !/\W/.test(part) ) {
- var nodeCheck = part = part.toLowerCase();
- checkFn = dirNodeCheck;
- }
-
- checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
- },
- "~": function(checkSet, part, isXML){
- var doneName = done++, checkFn = dirCheck;
-
- if ( typeof part === "string" && !/\W/.test(part) ) {
- var nodeCheck = part = part.toLowerCase();
- checkFn = dirNodeCheck;
- }
-
- checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
- }
- },
- find: {
- ID: function(match, context, isXML){
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
- return m ? [m] : [];
- }
- },
- NAME: function(match, context){
- if ( typeof context.getElementsByName !== "undefined" ) {
- var ret = [], results = context.getElementsByName(match[1]);
-
- for ( var i = 0, l = results.length; i < l; i++ ) {
- if ( results[i].getAttribute("name") === match[1] ) {
- ret.push( results[i] );
- }
- }
-
- return ret.length === 0 ? null : ret;
- }
- },
- TAG: function(match, context){
- return context.getElementsByTagName(match[1]);
- }
- },
- preFilter: {
- CLASS: function(match, curLoop, inplace, result, not, isXML){
- match = " " + match[1].replace(/\\/g, "") + " ";
-
- if ( isXML ) {
- return match;
- }
-
- for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
- if ( elem ) {
- if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
- if ( !inplace ) {
- result.push( elem );
- }
- } else if ( inplace ) {
- curLoop[i] = false;
- }
- }
- }
-
- return false;
- },
- ID: function(match){
- return match[1].replace(/\\/g, "");
- },
- TAG: function(match, curLoop){
- return match[1].toLowerCase();
- },
- CHILD: function(match){
- if ( match[1] === "nth" ) {
- // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
- var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
- match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
- !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
-
- // calculate the numbers (first)n+(last) including if they are negative
- match[2] = (test[1] + (test[2] || 1)) - 0;
- match[3] = test[3] - 0;
- }
-
- // TODO: Move to normal caching system
- match[0] = done++;
-
- return match;
- },
- ATTR: function(match, curLoop, inplace, result, not, isXML){
- var name = match[1].replace(/\\/g, "");
-
- if ( !isXML && Expr.attrMap[name] ) {
- match[1] = Expr.attrMap[name];
- }
-
- if ( match[2] === "~=" ) {
- match[4] = " " + match[4] + " ";
- }
-
- return match;
- },
- PSEUDO: function(match, curLoop, inplace, result, not){
- if ( match[1] === "not" ) {
- // If we're dealing with a complex expression, or a simple one
- if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
- match[3] = Sizzle(match[3], null, null, curLoop);
- } else {
- var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
- if ( !inplace ) {
- result.push.apply( result, ret );
- }
- return false;
- }
- } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
- return true;
- }
-
- return match;
- },
- POS: function(match){
- match.unshift( true );
- return match;
- }
- },
- filters: {
- enabled: function(elem){
- return elem.disabled === false && elem.type !== "hidden";
- },
- disabled: function(elem){
- return elem.disabled === true;
- },
- checked: function(elem){
- return elem.checked === true;
- },
- selected: function(elem){
- // Accessing this property makes selected-by-default
- // options in Safari work properly
- elem.parentNode.selectedIndex;
- return elem.selected === true;
- },
- parent: function(elem){
- return !!elem.firstChild;
- },
- empty: function(elem){
- return !elem.firstChild;
- },
- has: function(elem, i, match){
- return !!Sizzle( match[3], elem ).length;
- },
- header: function(elem){
- return /h\d/i.test( elem.nodeName );
- },
- text: function(elem){
- return "text" === elem.type;
- },
- radio: function(elem){
- return "radio" === elem.type;
- },
- checkbox: function(elem){
- return "checkbox" === elem.type;
- },
- file: function(elem){
- return "file" === elem.type;
- },
- password: function(elem){
- return "password" === elem.type;
- },
- submit: function(elem){
- return "submit" === elem.type;
- },
- image: function(elem){
- return "image" === elem.type;
- },
- reset: function(elem){
- return "reset" === elem.type;
- },
- button: function(elem){
- return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
- },
- input: function(elem){
- return /input|select|textarea|button/i.test(elem.nodeName);
- }
- },
- setFilters: {
- first: function(elem, i){
- return i === 0;
- },
- last: function(elem, i, match, array){
- return i === array.length - 1;
- },
- even: function(elem, i){
- return i % 2 === 0;
- },
- odd: function(elem, i){
- return i % 2 === 1;
- },
- lt: function(elem, i, match){
- return i < match[3] - 0;
- },
- gt: function(elem, i, match){
- return i > match[3] - 0;
- },
- nth: function(elem, i, match){
- return match[3] - 0 === i;
- },
- eq: function(elem, i, match){
- return match[3] - 0 === i;
- }
- },
- filter: {
- PSEUDO: function(elem, match, i, array){
- var name = match[1], filter = Expr.filters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
- } else if ( name === "contains" ) {
- return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
- } else if ( name === "not" ) {
- var not = match[3];
-
- for ( var i = 0, l = not.length; i < l; i++ ) {
- if ( not[i] === elem ) {
- return false;
- }
- }
-
- return true;
- } else {
- Sizzle.error( "Syntax error, unrecognized expression: " + name );
- }
- },
- CHILD: function(elem, match){
- var type = match[1], node = elem;
- switch (type) {
- case 'only':
- case 'first':
- while ( (node = node.previousSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
- if ( type === "first" ) {
- return true;
- }
- node = elem;
- case 'last':
- while ( (node = node.nextSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
- return true;
- case 'nth':
- var first = match[2], last = match[3];
-
- if ( first === 1 && last === 0 ) {
- return true;
- }
-
- var doneName = match[0],
- parent = elem.parentNode;
-
- if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
- var count = 0;
- for ( node = parent.firstChild; node; node = node.nextSibling ) {
- if ( node.nodeType === 1 ) {
- node.nodeIndex = ++count;
- }
- }
- parent.sizcache = doneName;
- }
-
- var diff = elem.nodeIndex - last;
- if ( first === 0 ) {
- return diff === 0;
- } else {
- return ( diff % first === 0 && diff / first >= 0 );
- }
- }
- },
- ID: function(elem, match){
- return elem.nodeType === 1 && elem.getAttribute("id") === match;
- },
- TAG: function(elem, match){
- return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
- },
- CLASS: function(elem, match){
- return (" " + (elem.className || elem.getAttribute("class")) + " ")
- .indexOf( match ) > -1;
- },
- ATTR: function(elem, match){
- var name = match[1],
- result = Expr.attrHandle[ name ] ?
- Expr.attrHandle[ name ]( elem ) :
- elem[ name ] != null ?
- elem[ name ] :
- elem.getAttribute( name ),
- value = result + "",
- type = match[2],
- check = match[4];
-
- return result == null ?
- type === "!=" :
- type === "=" ?
- value === check :
- type === "*=" ?
- value.indexOf(check) >= 0 :
- type === "~=" ?
- (" " + value + " ").indexOf(check) >= 0 :
- !check ?
- value && result !== false :
- type === "!=" ?
- value !== check :
- type === "^=" ?
- value.indexOf(check) === 0 :
- type === "$=" ?
- value.substr(value.length - check.length) === check :
- type === "|=" ?
- value === check || value.substr(0, check.length + 1) === check + "-" :
- false;
- },
- POS: function(elem, match, i, array){
- var name = match[2], filter = Expr.setFilters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
- }
- }
- }
-};
-
-var origPOS = Expr.match.POS;
-
-for ( var type in Expr.match ) {
- Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
- Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, function(all, num){
- return "\\" + (num - 0 + 1);
- }));
-}
-
-var makeArray = function(array, results) {
- array = Array.prototype.slice.call( array, 0 );
-
- if ( results ) {
- results.push.apply( results, array );
- return results;
- }
-
- return array;
-};
-
-// Perform a simple check to determine if the browser is capable of
-// converting a NodeList to an array using builtin methods.
-// Also verifies that the returned array holds DOM nodes
-// (which is not the case in the Blackberry browser)
-try {
- Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
-
-// Provide a fallback method if it does not work
-} catch(e){
- makeArray = function(array, results) {
- var ret = results || [];
-
- if ( toString.call(array) === "[object Array]" ) {
- Array.prototype.push.apply( ret, array );
- } else {
- if ( typeof array.length === "number" ) {
- for ( var i = 0, l = array.length; i < l; i++ ) {
- ret.push( array[i] );
- }
- } else {
- for ( var i = 0; array[i]; i++ ) {
- ret.push( array[i] );
- }
- }
- }
-
- return ret;
- };
-}
-
-var sortOrder;
-
-if ( document.documentElement.compareDocumentPosition ) {
- sortOrder = function( a, b ) {
- if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
- if ( a == b ) {
- hasDuplicate = true;
- }
- return a.compareDocumentPosition ? -1 : 1;
- }
-
- var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
- if ( ret === 0 ) {
- hasDuplicate = true;
- }
- return ret;
- };
-} else if ( "sourceIndex" in document.documentElement ) {
- sortOrder = function( a, b ) {
- if ( !a.sourceIndex || !b.sourceIndex ) {
- if ( a == b ) {
- hasDuplicate = true;
- }
- return a.sourceIndex ? -1 : 1;
- }
-
- var ret = a.sourceIndex - b.sourceIndex;
- if ( ret === 0 ) {
- hasDuplicate = true;
- }
- return ret;
- };
-} else if ( document.createRange ) {
- sortOrder = function( a, b ) {
- if ( !a.ownerDocument || !b.ownerDocument ) {
- if ( a == b ) {
- hasDuplicate = true;
- }
- return a.ownerDocument ? -1 : 1;
- }
-
- var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
- aRange.setStart(a, 0);
- aRange.setEnd(a, 0);
- bRange.setStart(b, 0);
- bRange.setEnd(b, 0);
- var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
- if ( ret === 0 ) {
- hasDuplicate = true;
- }
- return ret;
- };
-}
-
-// Utility function for retreiving the text value of an array of DOM nodes
-function getText( elems ) {
- var ret = "", elem;
-
- for ( var i = 0; elems[i]; i++ ) {
- elem = elems[i];
-
- // Get the text from text nodes and CDATA nodes
- if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
- ret += elem.nodeValue;
-
- // Traverse everything else, except comment nodes
- } else if ( elem.nodeType !== 8 ) {
- ret += getText( elem.childNodes );
- }
- }
-
- return ret;
-}
-
-// Check to see if the browser returns elements by name when
-// querying by getElementById (and provide a workaround)
-(function(){
- // We're going to inject a fake input element with a specified name
- var form = document.createElement("div"),
- id = "script" + (new Date).getTime();
- form.innerHTML = "<a name='" + id + "'/>";
-
- // Inject it into the root element, check its status, and remove it quickly
- var root = document.documentElement;
- root.insertBefore( form, root.firstChild );
-
- // The workaround has to do additional checks after a getElementById
- // Which slows things down for other browsers (hence the branching)
- if ( document.getElementById( id ) ) {
- Expr.find.ID = function(match, context, isXML){
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
- return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
- }
- };
-
- Expr.filter.ID = function(elem, match){
- var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
- return elem.nodeType === 1 && node && node.nodeValue === match;
- };
- }
-
- root.removeChild( form );
- root = form = null; // release memory in IE
-})();
-
-(function(){
- // Check to see if the browser returns only elements
- // when doing getElementsByTagName("*")
-
- // Create a fake element
- var div = document.createElement("div");
- div.appendChild( document.createComment("") );
-
- // Make sure no comments are found
- if ( div.getElementsByTagName("*").length > 0 ) {
- Expr.find.TAG = function(match, context){
- var results = context.getElementsByTagName(match[1]);
-
- // Filter out possible comments
- if ( match[1] === "*" ) {
- var tmp = [];
-
- for ( var i = 0; results[i]; i++ ) {
- if ( results[i].nodeType === 1 ) {
- tmp.push( results[i] );
- }
- }
-
- results = tmp;
- }
-
- return results;
- };
- }
-
- // Check to see if an attribute returns normalized href attributes
- div.innerHTML = "<a href='#'></a>";
- if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
- div.firstChild.getAttribute("href") !== "#" ) {
- Expr.attrHandle.href = function(elem){
- return elem.getAttribute("href", 2);
- };
- }
-
- div = null; // release memory in IE
-})();
-
-if ( document.querySelectorAll ) {
- (function(){
- var oldSizzle = Sizzle, div = document.createElement("div");
- div.innerHTML = "<p class='TEST'></p>";
-
- // Safari can't handle uppercase or unicode characters when
- // in quirks mode.
- if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
- return;
- }
-
- Sizzle = function(query, context, extra, seed){
- context = context || document;
-
- // Only use querySelectorAll on non-XML documents
- // (ID selectors don't work in non-HTML documents)
- if ( !seed && context.nodeType === 9 && !isXML(context) ) {
- try {
- return makeArray( context.querySelectorAll(query), extra );
- } catch(e){}
- }
-
- return oldSizzle(query, context, extra, seed);
- };
-
- for ( var prop in oldSizzle ) {
- Sizzle[ prop ] = oldSizzle[ prop ];
- }
-
- div = null; // release memory in IE
- })();
-}
-
-(function(){
- var div = document.createElement("div");
-
- div.innerHTML = "<div class='test e'></div><div class='test'></div>";
-
- // Opera can't find a second classname (in 9.6)
- // Also, make sure that getElementsByClassName actually exists
- if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
- return;
- }
-
- // Safari caches class attributes, doesn't catch changes (in 3.2)
- div.lastChild.className = "e";
-
- if ( div.getElementsByClassName("e").length === 1 ) {
- return;
- }
-
- Expr.order.splice(1, 0, "CLASS");
- Expr.find.CLASS = function(match, context, isXML) {
- if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
- return context.getElementsByClassName(match[1]);
- }
- };
-
- div = null; // release memory in IE
-})();
-
-function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
- if ( elem ) {
- elem = elem[dir];
- var match = false;
-
- while ( elem ) {
- if ( elem.sizcache === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 && !isXML ){
- elem.sizcache = doneName;
- elem.sizset = i;
- }
-
- if ( elem.nodeName.toLowerCase() === cur ) {
- match = elem;
- break;
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
- if ( elem ) {
- elem = elem[dir];
- var match = false;
-
- while ( elem ) {
- if ( elem.sizcache === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 ) {
- if ( !isXML ) {
- elem.sizcache = doneName;
- elem.sizset = i;
- }
- if ( typeof cur !== "string" ) {
- if ( elem === cur ) {
- match = true;
- break;
- }
-
- } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
- match = elem;
- break;
- }
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-var contains = document.compareDocumentPosition ? function(a, b){
- return !!(a.compareDocumentPosition(b) & 16);
-} : function(a, b){
- return a !== b && (a.contains ? a.contains(b) : true);
-};
-
-var isXML = function(elem){
- // documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
- var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
- return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-var posProcess = function(selector, context){
- var tmpSet = [], later = "", match,
- root = context.nodeType ? [context] : context;
-
- // Position selectors must be done after the filter
- // And so must :not(positional) so we move all PSEUDOs to the end
- while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
- later += match[0];
- selector = selector.replace( Expr.match.PSEUDO, "" );
- }
-
- selector = Expr.relative[selector] ? selector + "*" : selector;
-
- for ( var i = 0, l = root.length; i < l; i++ ) {
- Sizzle( selector, root[i], tmpSet );
- }
-
- return Sizzle.filter( later, tmpSet );
-};
-
-// EXPOSE
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.filters;
-jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = getText;
-jQuery.isXMLDoc = isXML;
-jQuery.contains = contains;
-
-return;
-
-window.Sizzle = Sizzle;
-
-})();
-var runtil = /Until$/,
- rparentsprev = /^(?:parents|prevUntil|prevAll)/,
- // Note: This RegExp should be improved, or likely pulled from Sizzle
- rmultiselector = /,/,
- slice = Array.prototype.slice;
-
-// Implement the identical functionality for filter and not
-var winnow = function( elements, qualifier, keep ) {
- if ( jQuery.isFunction( qualifier ) ) {
- return jQuery.grep(elements, function( elem, i ) {
- return !!qualifier.call( elem, i, elem ) === keep;
- });
-
- } else if ( qualifier.nodeType ) {
- return jQuery.grep(elements, function( elem, i ) {
- return (elem === qualifier) === keep;
- });
-
- } else if ( typeof qualifier === "string" ) {
- var filtered = jQuery.grep(elements, function( elem ) {
- return elem.nodeType === 1;
- });
-
- if ( isSimple.test( qualifier ) ) {
- return jQuery.filter(qualifier, filtered, !keep);
- } else {
- qualifier = jQuery.filter( qualifier, filtered );
- }
- }
-
- return jQuery.grep(elements, function( elem, i ) {
- return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
- });
-};
-
-jQuery.fn.extend({
- find: function( selector ) {
- var ret = this.pushStack( "", "find", selector ), length = 0;
-
- for ( var i = 0, l = this.length; i < l; i++ ) {
- length = ret.length;
- jQuery.find( selector, this[i], ret );
-
- if ( i > 0 ) {
- // Make sure that the results are unique
- for ( var n = length; n < ret.length; n++ ) {
- for ( var r = 0; r < length; r++ ) {
- if ( ret[r] === ret[n] ) {
- ret.splice(n--, 1);
- break;
- }
- }
- }
- }
- }
-
- return ret;
- },
-
- has: function( target ) {
- var targets = jQuery( target );
- return this.filter(function() {
- for ( var i = 0, l = targets.length; i < l; i++ ) {
- if ( jQuery.contains( this, targets[i] ) ) {
- return true;
- }
- }
- });
- },
-
- not: function( selector ) {
- return this.pushStack( winnow(this, selector, false), "not", selector);
- },
-
- filter: function( selector ) {
- return this.pushStack( winnow(this, selector, true), "filter", selector );
- },
-
- is: function( selector ) {
- return !!selector && jQuery.filter( selector, this ).length > 0;
- },
-
- closest: function( selectors, context ) {
- if ( jQuery.isArray( selectors ) ) {
- var ret = [], cur = this[0], match, matches = {}, selector;
-
- if ( cur && selectors.length ) {
- for ( var i = 0, l = selectors.length; i < l; i++ ) {
- selector = selectors[i];
-
- if ( !matches[selector] ) {
- matches[selector] = jQuery.expr.match.POS.test( selector ) ?
- jQuery( selector, context || this.context ) :
- selector;
- }
- }
-
- while ( cur && cur.ownerDocument && cur !== context ) {
- for ( selector in matches ) {
- match = matches[selector];
-
- if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
- ret.push({ selector: selector, elem: cur });
- delete matches[selector];
- }
- }
- cur = cur.parentNode;
- }
- }
-
- return ret;
- }
-
- var pos = jQuery.expr.match.POS.test( selectors ) ?
- jQuery( selectors, context || this.context ) : null;
-
- return this.map(function( i, cur ) {
- while ( cur && cur.ownerDocument && cur !== context ) {
- if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) {
- return cur;
- }
- cur = cur.parentNode;
- }
- return null;
- });
- },
-
- // Determine the position of an element within
- // the matched set of elements
- index: function( elem ) {
- if ( !elem || typeof elem === "string" ) {
- return jQuery.inArray( this[0],
- // If it receives a string, the selector is used
- // If it receives nothing, the siblings are used
- elem ? jQuery( elem ) : this.parent().children() );
- }
- // Locate the position of the desired element
- return jQuery.inArray(
- // If it receives a jQuery object, the first element is used
- elem.jquery ? elem[0] : elem, this );
- },
-
- add: function( selector, context ) {
- var set = typeof selector === "string" ?
- jQuery( selector, context || this.context ) :
- jQuery.makeArray( selector ),
- all = jQuery.merge( this.get(), set );
-
- return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
- all :
- jQuery.unique( all ) );
- },
-
- andSelf: function() {
- return this.add( this.prevObject );
- }
-});
-
-// A painfully simple check to see if an element is disconnected
-// from a document (should be improved, where feasible).
-function isDisconnected( node ) {
- return !node || !node.parentNode || node.parentNode.nodeType === 11;
-}
-
-jQuery.each({
- parent: function( elem ) {
- var parent = elem.parentNode;
- return parent && parent.nodeType !== 11 ? parent : null;
- },
- parents: function( elem ) {
- return jQuery.dir( elem, "parentNode" );
- },
- parentsUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "parentNode", until );
- },
- next: function( elem ) {
- return jQuery.nth( elem, 2, "nextSibling" );
- },
- prev: function( elem ) {
- return jQuery.nth( elem, 2, "previousSibling" );
- },
- nextAll: function( elem ) {
- return jQuery.dir( elem, "nextSibling" );
- },
- prevAll: function( elem ) {
- return jQuery.dir( elem, "previousSibling" );
- },
- nextUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "nextSibling", until );
- },
- prevUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "previousSibling", until );
- },
- siblings: function( elem ) {
- return jQuery.sibling( elem.parentNode.firstChild, elem );
- },
- children: function( elem ) {
- return jQuery.sibling( elem.firstChild );
- },
- contents: function( elem ) {
- return jQuery.nodeName( elem, "iframe" ) ?
- elem.contentDocument || elem.contentWindow.document :
- jQuery.makeArray( elem.childNodes );
- }
-}, function( name, fn ) {
- jQuery.fn[ name ] = function( until, selector ) {
- var ret = jQuery.map( this, fn, until );
-
- if ( !runtil.test( name ) ) {
- selector = until;
- }
-
- if ( selector && typeof selector === "string" ) {
- ret = jQuery.filter( selector, ret );
- }
-
- ret = this.length > 1 ? jQuery.unique( ret ) : ret;
-
- if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
- ret = ret.reverse();
- }
-
- return this.pushStack( ret, name, slice.call(arguments).join(",") );
- };
-});
-
-jQuery.extend({
- filter: function( expr, elems, not ) {
- if ( not ) {
- expr = ":not(" + expr + ")";
- }
-
- return jQuery.find.matches(expr, elems);
- },
-
- dir: function( elem, dir, until ) {
- var matched = [], cur = elem[dir];
- while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
- if ( cur.nodeType === 1 ) {
- matched.push( cur );
- }
- cur = cur[dir];
- }
- return matched;
- },
-
- nth: function( cur, result, dir, elem ) {
- result = result || 1;
- var num = 0;
-
- for ( ; cur; cur = cur[dir] ) {
- if ( cur.nodeType === 1 && ++num === result ) {
- break;
- }
- }
-
- return cur;
- },
-
- sibling: function( n, elem ) {
- var r = [];
-
- for ( ; n; n = n.nextSibling ) {
- if ( n.nodeType === 1 && n !== elem ) {
- r.push( n );
- }
- }
-
- return r;
- }
-});
-var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
- rleadingWhitespace = /^\s+/,
- rxhtmlTag = /(<([\w:]+)[^>]*?)\/>/g,
- rselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,
- rtagName = /<([\w:]+)/,
- rtbody = /<tbody/i,
- rhtml = /<|&#?\w+;/,
- rnocache = /<script|<object|<embed|<option|<style/i,
- rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, // checked="checked" or checked (html5)
- fcloseTag = function( all, front, tag ) {
- return rselfClosing.test( tag ) ?
- all :
- front + "></" + tag + ">";
- },
- wrapMap = {
- option: [ 1, "<select multiple='multiple'>", "</select>" ],
- legend: [ 1, "<fieldset>", "</fieldset>" ],
- thead: [ 1, "<table>", "</table>" ],
- tr: [ 2, "<table><tbody>", "</tbody></table>" ],
- td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
- col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
- area: [ 1, "<map>", "</map>" ],
- _default: [ 0, "", "" ]
- };
-
-wrapMap.optgroup = wrapMap.option;
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-// IE can't serialize <link> and <script> tags normally
-if ( !jQuery.support.htmlSerialize ) {
- wrapMap._default = [ 1, "div<div>", "</div>" ];
-}
-
-jQuery.fn.extend({
- text: function( text ) {
- if ( jQuery.isFunction(text) ) {
- return this.each(function(i) {
- var self = jQuery(this);
- self.text( text.call(this, i, self.text()) );
- });
- }
-
- if ( typeof text !== "object" && text !== undefined ) {
- return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
- }
-
- return jQuery.text( this );
- },
-
- wrapAll: function( html ) {
- if ( jQuery.isFunction( html ) ) {
- return this.each(function(i) {
- jQuery(this).wrapAll( html.call(this, i) );
- });
- }
-
- if ( this[0] ) {
- // The elements to wrap the target around
- var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
-
- if ( this[0].parentNode ) {
- wrap.insertBefore( this[0] );
- }
-
- wrap.map(function() {
- var elem = this;
-
- while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
- elem = elem.firstChild;
- }
-
- return elem;
- }).append(this);
- }
-
- return this;
- },
-
- wrapInner: function( html ) {
- if ( jQuery.isFunction( html ) ) {
- return this.each(function(i) {
- jQuery(this).wrapInner( html.call(this, i) );
- });
- }
-
- return this.each(function() {
- var self = jQuery( this ), contents = self.contents();
-
- if ( contents.length ) {
- contents.wrapAll( html );
-
- } else {
- self.append( html );
- }
- });
- },
-
- wrap: function( html ) {
- return this.each(function() {
- jQuery( this ).wrapAll( html );
- });
- },
-
- unwrap: function() {
- return this.parent().each(function() {
- if ( !jQuery.nodeName( this, "body" ) ) {
- jQuery( this ).replaceWith( this.childNodes );
- }
- }).end();
- },
-
- append: function() {
- return this.domManip(arguments, true, function( elem ) {
- if ( this.nodeType === 1 ) {
- this.appendChild( elem );
- }
- });
- },
-
- prepend: function() {
- return this.domManip(arguments, true, function( elem ) {
- if ( this.nodeType === 1 ) {
- this.insertBefore( elem, this.firstChild );
- }
- });
- },
-
- before: function() {
- if ( this[0] && this[0].parentNode ) {
- return this.domManip(arguments, false, function( elem ) {
- this.parentNode.insertBefore( elem, this );
- });
- } else if ( arguments.length ) {
- var set = jQuery(arguments[0]);
- set.push.apply( set, this.toArray() );
- return this.pushStack( set, "before", arguments );
- }
- },
-
- after: function() {
- if ( this[0] && this[0].parentNode ) {
- return this.domManip(arguments, false, function( elem ) {
- this.parentNode.insertBefore( elem, this.nextSibling );
- });
- } else if ( arguments.length ) {
- var set = this.pushStack( this, "after", arguments );
- set.push.apply( set, jQuery(arguments[0]).toArray() );
- return set;
- }
- },
-
- // keepData is for internal use only--do not document
- remove: function( selector, keepData ) {
- for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
- if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
- if ( !keepData && elem.nodeType === 1 ) {
- jQuery.cleanData( elem.getElementsByTagName("*") );
- jQuery.cleanData( [ elem ] );
- }
-
- if ( elem.parentNode ) {
- elem.parentNode.removeChild( elem );
- }
- }
- }
-
- return this;
- },
-
- empty: function() {
- for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
- // Remove element nodes and prevent memory leaks
- if ( elem.nodeType === 1 ) {
- jQuery.cleanData( elem.getElementsByTagName("*") );
- }
-
- // Remove any remaining nodes
- while ( elem.firstChild ) {
- elem.removeChild( elem.firstChild );
- }
- }
-
- return this;
- },
-
- clone: function( events ) {
- // Do the clone
- var ret = this.map(function() {
- if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
- // IE copies events bound via attachEvent when
- // using cloneNode. Calling detachEvent on the
- // clone will also remove the events from the orignal
- // In order to get around this, we use innerHTML.
- // Unfortunately, this means some modifications to
- // attributes in IE that are actually only stored
- // as properties will not be copied (such as the
- // the name attribute on an input).
- var html = this.outerHTML, ownerDocument = this.ownerDocument;
- if ( !html ) {
- var div = ownerDocument.createElement("div");
- div.appendChild( this.cloneNode(true) );
- html = div.innerHTML;
- }
-
- return jQuery.clean([html.replace(rinlinejQuery, "")
- // Handle the case in IE 8 where action=/test/> self-closes a tag
- .replace(/=([^="'>\s]+\/)>/g, '="$1">')
- .replace(rleadingWhitespace, "")], ownerDocument)[0];
- } else {
- return this.cloneNode(true);
- }
- });
-
- // Copy the events from the original to the clone
- if ( events === true ) {
- cloneCopyEvent( this, ret );
- cloneCopyEvent( this.find("*"), ret.find("*") );
- }
-
- // Return the cloned set
- return ret;
- },
-
- html: function( value ) {
- if ( value === undefined ) {
- return this[0] && this[0].nodeType === 1 ?
- this[0].innerHTML.replace(rinlinejQuery, "") :
- null;
-
- // See if we can take a shortcut and just use innerHTML
- } else if ( typeof value === "string" && !rnocache.test( value ) &&
- (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
- !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
-
- value = value.replace(rxhtmlTag, fcloseTag);
-
- try {
- for ( var i = 0, l = this.length; i < l; i++ ) {
- // Remove element nodes and prevent memory leaks
- if ( this[i].nodeType === 1 ) {
- jQuery.cleanData( this[i].getElementsByTagName("*") );
- this[i].innerHTML = value;
- }
- }
-
- // If using innerHTML throws an exception, use the fallback method
- } catch(e) {
- this.empty().append( value );
- }
-
- } else if ( jQuery.isFunction( value ) ) {
- this.each(function(i){
- var self = jQuery(this), old = self.html();
- self.empty().append(function(){
- return value.call( this, i, old );
- });
- });
-
- } else {
- this.empty().append( value );
- }
-
- return this;
- },
-
- replaceWith: function( value ) {
- if ( this[0] && this[0].parentNode ) {
- // Make sure that the elements are removed from the DOM before they are inserted
- // this can help fix replacing a parent with child elements
- if ( jQuery.isFunction( value ) ) {
- return this.each(function(i) {
- var self = jQuery(this), old = self.html();
- self.replaceWith( value.call( this, i, old ) );
- });
- }
-
- if ( typeof value !== "string" ) {
- value = jQuery(value).detach();
- }
-
- return this.each(function() {
- var next = this.nextSibling, parent = this.parentNode;
-
- jQuery(this).remove();
-
- if ( next ) {
- jQuery(next).before( value );
- } else {
- jQuery(parent).append( value );
- }
- });
- } else {
- return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value );
- }
- },
-
- detach: function( selector ) {
- return this.remove( selector, true );
- },
-
- domManip: function( args, table, callback ) {
- var results, first, value = args[0], scripts = [], fragment, parent;
-
- // We can't cloneNode fragments that contain checked, in WebKit
- if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
- return this.each(function() {
- jQuery(this).domManip( args, table, callback, true );
- });
- }
-
- if ( jQuery.isFunction(value) ) {
- return this.each(function(i) {
- var self = jQuery(this);
- args[0] = value.call(this, i, table ? self.html() : undefined);
- self.domManip( args, table, callback );
- });
- }
-
- if ( this[0] ) {
- parent = value && value.parentNode;
-
- // If we're in a fragment, just use that instead of building a new one
- if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
- results = { fragment: parent };
-
- } else {
- results = buildFragment( args, this, scripts );
- }
-
- fragment = results.fragment;
-
- if ( fragment.childNodes.length === 1 ) {
- first = fragment = fragment.firstChild;
- } else {
- first = fragment.firstChild;
- }
-
- if ( first ) {
- table = table && jQuery.nodeName( first, "tr" );
-
- for ( var i = 0, l = this.length; i < l; i++ ) {
- callback.call(
- table ?
- root(this[i], first) :
- this[i],
- i > 0 || results.cacheable || this.length > 1 ?
- fragment.cloneNode(true) :
- fragment
- );
- }
- }
-
- if ( scripts.length ) {
- jQuery.each( scripts, evalScript );
- }
- }
-
- return this;
-
- function root( elem, cur ) {
- return jQuery.nodeName(elem, "table") ?
- (elem.getElementsByTagName("tbody")[0] ||
- elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
- elem;
- }
- }
-});
-
-function cloneCopyEvent(orig, ret) {
- var i = 0;
-
- ret.each(function() {
- if ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {
- return;
- }
-
- var oldData = jQuery.data( orig[i++] ), curData = jQuery.data( this, oldData ), events = oldData && oldData.events;
-
- if ( events ) {
- delete curData.handle;
- curData.events = {};
-
- for ( var type in events ) {
- for ( var handler in events[ type ] ) {
- jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
- }
- }
- }
- });
-}
-
-function buildFragment( args, nodes, scripts ) {
- var fragment, cacheable, cacheresults,
- doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
-
- // Only cache "small" (1/2 KB) strings that are associated with the main document
- // Cloning options loses the selected state, so don't cache them
- // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
- // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
- if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
- !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
-
- cacheable = true;
- cacheresults = jQuery.fragments[ args[0] ];
- if ( cacheresults ) {
- if ( cacheresults !== 1 ) {
- fragment = cacheresults;
- }
- }
- }
-
- if ( !fragment ) {
- fragment = doc.createDocumentFragment();
- jQuery.clean( args, doc, fragment, scripts );
- }
-
- if ( cacheable ) {
- jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
- }
-
- return { fragment: fragment, cacheable: cacheable };
-}
-
-jQuery.fragments = {};
-
-jQuery.each({
- appendTo: "append",
- prependTo: "prepend",
- insertBefore: "before",
- insertAfter: "after",
- replaceAll: "replaceWith"
-}, function( name, original ) {
- jQuery.fn[ name ] = function( selector ) {
- var ret = [], insert = jQuery( selector ),
- parent = this.length === 1 && this[0].parentNode;
-
- if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
- insert[ original ]( this[0] );
- return this;
-
- } else {
- for ( var i = 0, l = insert.length; i < l; i++ ) {
- var elems = (i > 0 ? this.clone(true) : this).get();
- jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
- ret = ret.concat( elems );
- }
-
- return this.pushStack( ret, name, insert.selector );
- }
- };
-});
-
-jQuery.extend({
- clean: function( elems, context, fragment, scripts ) {
- context = context || document;
-
- // !context.createElement fails in IE with an error but returns typeof 'object'
- if ( typeof context.createElement === "undefined" ) {
- context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
- }
-
- var ret = [];
-
- for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
- if ( typeof elem === "number" ) {
- elem += "";
- }
-
- if ( !elem ) {
- continue;
- }
-
- // Convert html string into DOM nodes
- if ( typeof elem === "string" && !rhtml.test( elem ) ) {
- elem = context.createTextNode( elem );
-
- } else if ( typeof elem === "string" ) {
- // Fix "XHTML"-style tags in all browsers
- elem = elem.replace(rxhtmlTag, fcloseTag);
-
- // Trim whitespace, otherwise indexOf won't work as expected
- var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
- wrap = wrapMap[ tag ] || wrapMap._default,
- depth = wrap[0],
- div = context.createElement("div");
-
- // Go to html and back, then peel off extra wrappers
- div.innerHTML = wrap[1] + elem + wrap[2];
-
- // Move to the right depth
- while ( depth-- ) {
- div = div.lastChild;
- }
-
- // Remove IE's autoinserted <tbody> from table fragments
- if ( !jQuery.support.tbody ) {
-
- // String was a <table>, *may* have spurious <tbody>
- var hasBody = rtbody.test(elem),
- tbody = tag === "table" && !hasBody ?
- div.firstChild && div.firstChild.childNodes :
-
- // String was a bare <thead> or <tfoot>
- wrap[1] === "<table>" && !hasBody ?
- div.childNodes :
- [];
-
- for ( var j = tbody.length - 1; j >= 0 ; --j ) {
- if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
- tbody[ j ].parentNode.removeChild( tbody[ j ] );
- }
- }
-
- }
-
- // IE completely kills leading whitespace when innerHTML is used
- if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
- div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
- }
-
- elem = div.childNodes;
- }
-
- if ( elem.nodeType ) {
- ret.push( elem );
- } else {
- ret = jQuery.merge( ret, elem );
- }
- }
-
- if ( fragment ) {
- for ( var i = 0; ret[i]; i++ ) {
- if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
- scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
-
- } else {
- if ( ret[i].nodeType === 1 ) {
- ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
- }
- fragment.appendChild( ret[i] );
- }
- }
- }
-
- return ret;
- },
-
- cleanData: function( elems ) {
- var data, id, cache = jQuery.cache,
- special = jQuery.event.special,
- deleteExpando = jQuery.support.deleteExpando;
-
- for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
- id = elem[ jQuery.expando ];
-
- if ( id ) {
- data = cache[ id ];
-
- if ( data.events ) {
- for ( var type in data.events ) {
- if ( special[ type ] ) {
- jQuery.event.remove( elem, type );
-
- } else {
- removeEvent( elem, type, data.handle );
- }
- }
- }
-
- if ( deleteExpando ) {
- delete elem[ jQuery.expando ];
-
- } else if ( elem.removeAttribute ) {
- elem.removeAttribute( jQuery.expando );
- }
-
- delete cache[ id ];
- }
- }
- }
-});
-// exclude the following css properties to add px
-var rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
- ralpha = /alpha\([^)]*\)/,
- ropacity = /opacity=([^)]*)/,
- rfloat = /float/i,
- rdashAlpha = /-([a-z])/ig,
- rupper = /([A-Z])/g,
- rnumpx = /^-?\d+(?:px)?$/i,
- rnum = /^-?\d/,
-
- cssShow = { position: "absolute", visibility: "hidden", display:"block" },
- cssWidth = [ "Left", "Right" ],
- cssHeight = [ "Top", "Bottom" ],
-
- // cache check for defaultView.getComputedStyle
- getComputedStyle = document.defaultView && document.defaultView.getComputedStyle,
- // normalize float css property
- styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat",
- fcamelCase = function( all, letter ) {
- return letter.toUpperCase();
- };
-
-jQuery.fn.css = function( name, value ) {
- return access( this, name, value, true, function( elem, name, value ) {
- if ( value === undefined ) {
- return jQuery.curCSS( elem, name );
- }
-
- if ( typeof value === "number" && !rexclude.test(name) ) {
- value += "px";
- }
-
- jQuery.style( elem, name, value );
- });
-};
-
-jQuery.extend({
- style: function( elem, name, value ) {
- // don't set styles on text and comment nodes
- if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
- return undefined;
- }
-
- // ignore negative width and height values #1599
- if ( (name === "width" || name === "height") && parseFloat(value) < 0 ) {
- value = undefined;
- }
-
- var style = elem.style || elem, set = value !== undefined;
-
- // IE uses filters for opacity
- if ( !jQuery.support.opacity && name === "opacity" ) {
- if ( set ) {
- // IE has trouble with opacity if it does not have layout
- // Force it by setting the zoom level
- style.zoom = 1;
-
- // Set the alpha filter to set the opacity
- var opacity = parseInt( value, 10 ) + "" === "NaN" ? "" : "alpha(opacity=" + value * 100 + ")";
- var filter = style.filter || jQuery.curCSS( elem, "filter" ) || "";
- style.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : opacity;
- }
-
- return style.filter && style.filter.indexOf("opacity=") >= 0 ?
- (parseFloat( ropacity.exec(style.filter)[1] ) / 100) + "":
- "";
- }
-
- // Make sure we're using the right name for getting the float value
- if ( rfloat.test( name ) ) {
- name = styleFloat;
- }
-
- name = name.replace(rdashAlpha, fcamelCase);
-
- if ( set ) {
- style[ name ] = value;
- }
-
- return style[ name ];
- },
-
- css: function( elem, name, force, extra ) {
- if ( name === "width" || name === "height" ) {
- var val, props = cssShow, which = name === "width" ? cssWidth : cssHeight;
-
- function getWH() {
- val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
-
- if ( extra === "border" ) {
- return;
- }
-
- jQuery.each( which, function() {
- if ( !extra ) {
- val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
- }
-
- if ( extra === "margin" ) {
- val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
- } else {
- val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
- }
- });
- }
-
- if ( elem.offsetWidth !== 0 ) {
- getWH();
- } else {
- jQuery.swap( elem, props, getWH );
- }
-
- return Math.max(0, Math.round(val));
- }
-
- return jQuery.curCSS( elem, name, force );
- },
-
- curCSS: function( elem, name, force ) {
- var ret, style = elem.style, filter;
-
- // IE uses filters for opacity
- if ( !jQuery.support.opacity && name === "opacity" && elem.currentStyle ) {
- ret = ropacity.test(elem.currentStyle.filter || "") ?
- (parseFloat(RegExp.$1) / 100) + "" :
- "";
-
- return ret === "" ?
- "1" :
- ret;
- }
-
- // Make sure we're using the right name for getting the float value
- if ( rfloat.test( name ) ) {
- name = styleFloat;
- }
-
- if ( !force && style && style[ name ] ) {
- ret = style[ name ];
-
- } else if ( getComputedStyle ) {
-
- // Only "float" is needed here
- if ( rfloat.test( name ) ) {
- name = "float";
- }
-
- name = name.replace( rupper, "-$1" ).toLowerCase();
-
- var defaultView = elem.ownerDocument.defaultView;
-
- if ( !defaultView ) {
- return null;
- }
-
- var computedStyle = defaultView.getComputedStyle( elem, null );
-
- if ( computedStyle ) {
- ret = computedStyle.getPropertyValue( name );
- }
-
- // We should always get a number back from opacity
- if ( name === "opacity" && ret === "" ) {
- ret = "1";
- }
-
- } else if ( elem.currentStyle ) {
- var camelCase = name.replace(rdashAlpha, fcamelCase);
-
- ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
-
- // From the awesome hack by Dean Edwards
- // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
-
- // If we're not dealing with a regular pixel number
- // but a number that has a weird ending, we need to convert it to pixels
- if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
- // Remember the original values
- var left = style.left, rsLeft = elem.runtimeStyle.left;
-
- // Put in the new values to get a computed value out
- elem.runtimeStyle.left = elem.currentStyle.left;
- style.left = camelCase === "fontSize" ? "1em" : (ret || 0);
- ret = style.pixelLeft + "px";
-
- // Revert the changed values
- style.left = left;
- elem.runtimeStyle.left = rsLeft;
- }
- }
-
- return ret;
- },
-
- // A method for quickly swapping in/out CSS properties to get correct calculations
- swap: function( elem, options, callback ) {
- var old = {};
-
- // Remember the old values, and insert the new ones
- for ( var name in options ) {
- old[ name ] = elem.style[ name ];
- elem.style[ name ] = options[ name ];
- }
-
- callback.call( elem );
-
- // Revert the old values
- for ( var name in options ) {
- elem.style[ name ] = old[ name ];
- }
- }
-});
-
-if ( jQuery.expr && jQuery.expr.filters ) {
- jQuery.expr.filters.hidden = function( elem ) {
- var width = elem.offsetWidth, height = elem.offsetHeight,
- skip = elem.nodeName.toLowerCase() === "tr";
-
- return width === 0 && height === 0 && !skip ?
- true :
- width > 0 && height > 0 && !skip ?
- false :
- jQuery.curCSS(elem, "display") === "none";
- };
-
- jQuery.expr.filters.visible = function( elem ) {
- return !jQuery.expr.filters.hidden( elem );
- };
-}
-var jsc = now(),
- rscript = /<script(.|\s)*?\/script>/gi,
- rselectTextarea = /select|textarea/i,
- rinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,
- jsre = /=\?(&|$)/,
- rquery = /\?/,
- rts = /(\?|&)_=.*?(&|$)/,
- rurl = /^(\w+:)?\/\/([^\/?#]+)/,
- r20 = /%20/g,
-
- // Keep a copy of the old load method
- _load = jQuery.fn.load;
-
-jQuery.fn.extend({
- load: function( url, params, callback ) {
- if ( typeof url !== "string" ) {
- return _load.call( this, url );
-
- // Don't do a request if no elements are being requested
- } else if ( !this.length ) {
- return this;
- }
-
- var off = url.indexOf(" ");
- if ( off >= 0 ) {
- var selector = url.slice(off, url.length);
- url = url.slice(0, off);
- }
-
- // Default to a GET request
- var type = "GET";
-
- // If the second parameter was provided
- if ( params ) {
- // If it's a function
- if ( jQuery.isFunction( params ) ) {
- // We assume that it's the callback
- callback = params;
- params = null;
-
- // Otherwise, build a param string
- } else if ( typeof params === "object" ) {
- params = jQuery.param( params, jQuery.ajaxSettings.traditional );
- type = "POST";
- }
- }
-
- var self = this;
-
- // Request the remote document
- jQuery.ajax({
- url: url,
- type: type,
- dataType: "html",
- data: params,
- complete: function( res, status ) {
- // If successful, inject the HTML into all the matched elements
- if ( status === "success" || status === "notmodified" ) {
- // See if a selector was specified
- self.html( selector ?
- // Create a dummy div to hold the results
- jQuery("<div />")
- // inject the contents of the document in, removing the scripts
- // to avoid any 'Permission Denied' errors in IE
- .append(res.responseText.replace(rscript, ""))
-
- // Locate the specified elements
- .find(selector) :
-
- // If not, just inject the full result
- res.responseText );
- }
-
- if ( callback ) {
- self.each( callback, [res.responseText, status, res] );
- }
- }
- });
-
- return this;
- },
-
- serialize: function() {
- return jQuery.param(this.serializeArray());
- },
- serializeArray: function() {
- return this.map(function() {
- return this.elements ? jQuery.makeArray(this.elements) : this;
- })
- .filter(function() {
- return this.name && !this.disabled &&
- (this.checked || rselectTextarea.test(this.nodeName) ||
- rinput.test(this.type));
- })
- .map(function( i, elem ) {
- var val = jQuery(this).val();
-
- return val == null ?
- null :
- jQuery.isArray(val) ?
- jQuery.map( val, function( val, i ) {
- return { name: elem.name, value: val };
- }) :
- { name: elem.name, value: val };
- }).get();
- }
-});
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function( i, o ) {
- jQuery.fn[o] = function( f ) {
- return this.bind(o, f);
- };
-});
-
-jQuery.extend({
-
- get: function( url, data, callback, type ) {
- // shift arguments if data argument was omited
- if ( jQuery.isFunction( data ) ) {
- type = type || callback;
- callback = data;
- data = null;
- }
-
- return jQuery.ajax({
- type: "GET",
- url: url,
- data: data,
- success: callback,
- dataType: type
- });
- },
-
- getScript: function( url, callback ) {
- return jQuery.get(url, null, callback, "script");
- },
-
- getJSON: function( url, data, callback ) {
- return jQuery.get(url, data, callback, "json");
- },
-
- post: function( url, data, callback, type ) {
- // shift arguments if data argument was omited
- if ( jQuery.isFunction( data ) ) {
- type = type || callback;
- callback = data;
- data = {};
- }
-
- return jQuery.ajax({
- type: "POST",
- url: url,
- data: data,
- success: callback,
- dataType: type
- });
- },
-
- ajaxSetup: function( settings ) {
- jQuery.extend( jQuery.ajaxSettings, settings );
- },
-
- ajaxSettings: {
- url: location.href,
- global: true,
- type: "GET",
- contentType: "application/x-www-form-urlencoded",
- processData: true,
- async: true,
- /*
- timeout: 0,
- data: null,
- username: null,
- password: null,
- traditional: false,
- */
- // Create the request object; Microsoft failed to properly
- // implement the XMLHttpRequest in IE7 (can't request local files),
- // so we use the ActiveXObject when it is available
- // This function can be overriden by calling jQuery.ajaxSetup
- xhr: window.XMLHttpRequest && (window.location.protocol !== "file:" || !window.ActiveXObject) ?
- function() {
- return new window.XMLHttpRequest();
- } :
- function() {
- try {
- return new window.ActiveXObject("Microsoft.XMLHTTP");
- } catch(e) {}
- },
- accepts: {
- xml: "application/xml, text/xml",
- html: "text/html",
- script: "text/javascript, application/javascript",
- json: "application/json, text/javascript",
- text: "text/plain",
- _default: "*/*"
- }
- },
-
- // Last-Modified header cache for next request
- lastModified: {},
- etag: {},
-
- ajax: function( origSettings ) {
- var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings);
-
- var jsonp, status, data,
- callbackContext = origSettings && origSettings.context || s,
- type = s.type.toUpperCase();
-
- // convert data if not already a string
- if ( s.data && s.processData && typeof s.data !== "string" ) {
- s.data = jQuery.param( s.data, s.traditional );
- }
-
- // Handle JSONP Parameter Callbacks
- if ( s.dataType === "jsonp" ) {
- if ( type === "GET" ) {
- if ( !jsre.test( s.url ) ) {
- s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?";
- }
- } else if ( !s.data || !jsre.test(s.data) ) {
- s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
- }
- s.dataType = "json";
- }
-
- // Build temporary JSONP function
- if ( s.dataType === "json" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {
- jsonp = s.jsonpCallback || ("jsonp" + jsc++);
-
- // Replace the =? sequence both in the query string and the data
- if ( s.data ) {
- s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
- }
-
- s.url = s.url.replace(jsre, "=" + jsonp + "$1");
-
- // We need to make sure
- // that a JSONP style response is executed properly
- s.dataType = "script";
-
- // Handle JSONP-style loading
- window[ jsonp ] = window[ jsonp ] || function( tmp ) {
- data = tmp;
- success();
- complete();
- // Garbage collect
- window[ jsonp ] = undefined;
-
- try {
- delete window[ jsonp ];
- } catch(e) {}
-
- if ( head ) {
- head.removeChild( script );
- }
- };
- }
-
- if ( s.dataType === "script" && s.cache === null ) {
- s.cache = false;
- }
-
- if ( s.cache === false && type === "GET" ) {
- var ts = now();
-
- // try replacing _= if it is there
- var ret = s.url.replace(rts, "$1_=" + ts + "$2");
-
- // if nothing was replaced, add timestamp to the end
- s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : "");
- }
-
- // If data is available, append data to url for get requests
- if ( s.data && type === "GET" ) {
- s.url += (rquery.test(s.url) ? "&" : "?") + s.data;
- }
-
- // Watch for a new set of requests
- if ( s.global && ! jQuery.active++ ) {
- jQuery.event.trigger( "ajaxStart" );
- }
-
- // Matches an absolute URL, and saves the domain
- var parts = rurl.exec( s.url ),
- remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);
-
- // If we're requesting a remote document
- // and trying to load JSON or Script with a GET
- if ( s.dataType === "script" && type === "GET" && remote ) {
- var head = document.getElementsByTagName("head")[0] || document.documentElement;
- var script = document.createElement("script");
- script.src = s.url;
- if ( s.scriptCharset ) {
- script.charset = s.scriptCharset;
- }
-
- // Handle Script loading
- if ( !jsonp ) {
- var done = false;
-
- // Attach handlers for all browsers
- script.onload = script.onreadystatechange = function() {
- if ( !done && (!this.readyState ||
- this.readyState === "loaded" || this.readyState === "complete") ) {
- done = true;
- success();
- complete();
-
- // Handle memory leak in IE
- script.onload = script.onreadystatechange = null;
- if ( head && script.parentNode ) {
- head.removeChild( script );
- }
- }
- };
- }
-
- // Use insertBefore instead of appendChild to circumvent an IE6 bug.
- // This arises when a base node is used (#2709 and #4378).
- head.insertBefore( script, head.firstChild );
-
- // We handle everything using the script element injection
- return undefined;
- }
-
- var requestDone = false;
-
- // Create the request object
- var xhr = s.xhr();
-
- if ( !xhr ) {
- return;
- }
-
- // Open the socket
- // Passing null username, generates a login popup on Opera (#2865)
- if ( s.username ) {
- xhr.open(type, s.url, s.async, s.username, s.password);
- } else {
- xhr.open(type, s.url, s.async);
- }
-
- // Need an extra try/catch for cross domain requests in Firefox 3
- try {
- // Set the correct header, if data is being sent
- if ( s.data || origSettings && origSettings.contentType ) {
- xhr.setRequestHeader("Content-Type", s.contentType);
- }
-
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
- if ( s.ifModified ) {
- if ( jQuery.lastModified[s.url] ) {
- xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
- }
-
- if ( jQuery.etag[s.url] ) {
- xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
- }
- }
-
- // Set header so the called script knows that it's an XMLHttpRequest
- // Only send the header if it's not a remote XHR
- if ( !remote ) {
- xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
- }
-
- // Set the Accepts header for the server, depending on the dataType
- xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
- s.accepts[ s.dataType ] + ", */*" :
- s.accepts._default );
- } catch(e) {}
-
- // Allow custom headers/mimetypes and early abort
- if ( s.beforeSend && s.beforeSend.call(callbackContext, xhr, s) === false ) {
- // Handle the global AJAX counter
- if ( s.global && ! --jQuery.active ) {
- jQuery.event.trigger( "ajaxStop" );
- }
-
- // close opended socket
- xhr.abort();
- return false;
- }
-
- if ( s.global ) {
- trigger("ajaxSend", [xhr, s]);
- }
-
- // Wait for a response to come back
- var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
- // The request was aborted
- if ( !xhr || xhr.readyState === 0 || isTimeout === "abort" ) {
- // Opera doesn't call onreadystatechange before this point
- // so we simulate the call
- if ( !requestDone ) {
- complete();
- }
-
- requestDone = true;
- if ( xhr ) {
- xhr.onreadystatechange = jQuery.noop;
- }
-
- // The transfer is complete and the data is available, or the request timed out
- } else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
- requestDone = true;
- xhr.onreadystatechange = jQuery.noop;
-
- status = isTimeout === "timeout" ?
- "timeout" :
- !jQuery.httpSuccess( xhr ) ?
- "error" :
- s.ifModified && jQuery.httpNotModified( xhr, s.url ) ?
- "notmodified" :
- "success";
-
- var errMsg;
-
- if ( status === "success" ) {
- // Watch for, and catch, XML document parse errors
- try {
- // process the data (runs the xml through httpData regardless of callback)
- data = jQuery.httpData( xhr, s.dataType, s );
- } catch(err) {
- status = "parsererror";
- errMsg = err;
- }
- }
-
- // Make sure that the request was successful or notmodified
- if ( status === "success" || status === "notmodified" ) {
- // JSONP handles its own success callback
- if ( !jsonp ) {
- success();
- }
- } else {
- jQuery.handleError(s, xhr, status, errMsg);
- }
-
- // Fire the complete handlers
- complete();
-
- if ( isTimeout === "timeout" ) {
- xhr.abort();
- }
-
- // Stop memory leaks
- if ( s.async ) {
- xhr = null;
- }
- }
- };
-
- // Override the abort handler, if we can (IE doesn't allow it, but that's OK)
- // Opera doesn't fire onreadystatechange at all on abort
- try {
- var oldAbort = xhr.abort;
- xhr.abort = function() {
- if ( xhr ) {
- oldAbort.call( xhr );
- }
-
- onreadystatechange( "abort" );
- };
- } catch(e) { }
-
- // Timeout checker
- if ( s.async && s.timeout > 0 ) {
- setTimeout(function() {
- // Check to see if the request is still happening
- if ( xhr && !requestDone ) {
- onreadystatechange( "timeout" );
- }
- }, s.timeout);
- }
-
- // Send the data
- try {
- xhr.send( type === "POST" || type === "PUT" || type === "DELETE" ? s.data : null );
- } catch(e) {
- jQuery.handleError(s, xhr, null, e);
- // Fire the complete handlers
- complete();
- }
-
- // firefox 1.5 doesn't fire statechange for sync requests
- if ( !s.async ) {
- onreadystatechange();
- }
-
- function success() {
- // If a local callback was specified, fire it and pass it the data
- if ( s.success ) {
- s.success.call( callbackContext, data, status, xhr );
- }
-
- // Fire the global callback
- if ( s.global ) {
- trigger( "ajaxSuccess", [xhr, s] );
- }
- }
-
- function complete() {
- // Process result
- if ( s.complete ) {
- s.complete.call( callbackContext, xhr, status);
- }
-
- // The request was completed
- if ( s.global ) {
- trigger( "ajaxComplete", [xhr, s] );
- }
-
- // Handle the global AJAX counter
- if ( s.global && ! --jQuery.active ) {
- jQuery.event.trigger( "ajaxStop" );
- }
- }
-
- function trigger(type, args) {
- (s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);
- }
-
- // return XMLHttpRequest to allow aborting the request etc.
- return xhr;
- },
-
- handleError: function( s, xhr, status, e ) {
- // If a local callback was specified, fire it
- if ( s.error ) {
- s.error.call( s.context || s, xhr, status, e );
- }
-
- // Fire the global callback
- if ( s.global ) {
- (s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
- }
- },
-
- // Counter for holding the number of active queries
- active: 0,
-
- // Determines if an XMLHttpRequest was successful or not
- httpSuccess: function( xhr ) {
- try {
- // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
- return !xhr.status && location.protocol === "file:" ||
- // Opera returns 0 when status is 304
- ( xhr.status >= 200 && xhr.status < 300 ) ||
- xhr.status === 304 || xhr.status === 1223 || xhr.status === 0;
- } catch(e) {}
-
- return false;
- },
-
- // Determines if an XMLHttpRequest returns NotModified
- httpNotModified: function( xhr, url ) {
- var lastModified = xhr.getResponseHeader("Last-Modified"),
- etag = xhr.getResponseHeader("Etag");
-
- if ( lastModified ) {
- jQuery.lastModified[url] = lastModified;
- }
-
- if ( etag ) {
- jQuery.etag[url] = etag;
- }
-
- // Opera returns 0 when status is 304
- return xhr.status === 304 || xhr.status === 0;
- },
-
- httpData: function( xhr, type, s ) {
- var ct = xhr.getResponseHeader("content-type") || "",
- xml = type === "xml" || !type && ct.indexOf("xml") >= 0,
- data = xml ? xhr.responseXML : xhr.responseText;
-
- if ( xml && data.documentElement.nodeName === "parsererror" ) {
- jQuery.error( "parsererror" );
- }
-
- // Allow a pre-filtering function to sanitize the response
- // s is checked to keep backwards compatibility
- if ( s && s.dataFilter ) {
- data = s.dataFilter( data, type );
- }
-
- // The filter can actually parse the response
- if ( typeof data === "string" ) {
- // Get the JavaScript object, if JSON is used.
- if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {
- data = jQuery.parseJSON( data );
-
- // If the type is "script", eval it in global context
- } else if ( type === "script" || !type && ct.indexOf("javascript") >= 0 ) {
- jQuery.globalEval( data );
- }
- }
-
- return data;
- },
-
- // Serialize an array of form elements or a set of
- // key/values into a query string
- param: function( a, traditional ) {
- var s = [];
-
- // Set traditional to true for jQuery <= 1.3.2 behavior.
- if ( traditional === undefined ) {
- traditional = jQuery.ajaxSettings.traditional;
- }
-
- // If an array was passed in, assume that it is an array of form elements.
- if ( jQuery.isArray(a) || a.jquery ) {
- // Serialize the form elements
- jQuery.each( a, function() {
- add( this.name, this.value );
- });
-
- } else {
- // If traditional, encode the "old" way (the way 1.3.2 or older
- // did it), otherwise encode params recursively.
- for ( var prefix in a ) {
- buildParams( prefix, a[prefix] );
- }
- }
-
- // Return the resulting serialization
- return s.join("&").replace(r20, "+");
-
- function buildParams( prefix, obj ) {
- if ( jQuery.isArray(obj) ) {
- // Serialize array item.
- jQuery.each( obj, function( i, v ) {
- if ( traditional || /\[\]$/.test( prefix ) ) {
- // Treat each array item as a scalar.
- add( prefix, v );
- } else {
- // If array item is non-scalar (array or object), encode its
- // numeric index to resolve deserialization ambiguity issues.
- // Note that rack (as of 1.0.0) can't currently deserialize
- // nested arrays properly, and attempting to do so may cause
- // a server error. Possible fixes are to modify rack's
- // deserialization algorithm or to provide an option or flag
- // to force array serialization to be shallow.
- buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v );
- }
- });
-
- } else if ( !traditional && obj != null && typeof obj === "object" ) {
- // Serialize object item.
- jQuery.each( obj, function( k, v ) {
- buildParams( prefix + "[" + k + "]", v );
- });
-
- } else {
- // Serialize scalar item.
- add( prefix, obj );
- }
- }
-
- function add( key, value ) {
- // If value is a function, invoke it and return its value
- value = jQuery.isFunction(value) ? value() : value;
- s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
- }
- }
-});
-var elemdisplay = {},
- rfxtypes = /toggle|show|hide/,
- rfxnum = /^([+-]=)?([\d+-.]+)(.*)$/,
- timerId,
- fxAttrs = [
- // height animations
- [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
- // width animations
- [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
- // opacity animations
- [ "opacity" ]
- ];
-
-jQuery.fn.extend({
- show: function( speed, callback ) {
- if ( speed || speed === 0) {
- return this.animate( genFx("show", 3), speed, callback);
-
- } else {
- for ( var i = 0, l = this.length; i < l; i++ ) {
- var old = jQuery.data(this[i], "olddisplay");
-
- this[i].style.display = old || "";
-
- if ( jQuery.css(this[i], "display") === "none" ) {
- var nodeName = this[i].nodeName, display;
-
- if ( elemdisplay[ nodeName ] ) {
- display = elemdisplay[ nodeName ];
-
- } else {
- var elem = jQuery("<" + nodeName + " />").appendTo("body");
-
- display = elem.css("display");
-
- if ( display === "none" ) {
- display = "block";
- }
-
- elem.remove();
-
- elemdisplay[ nodeName ] = display;
- }
-
- jQuery.data(this[i], "olddisplay", display);
- }
- }
-
- // Set the display of the elements in a second loop
- // to avoid the constant reflow
- for ( var j = 0, k = this.length; j < k; j++ ) {
- this[j].style.display = jQuery.data(this[j], "olddisplay") || "";
- }
-
- return this;
- }
- },
-
- hide: function( speed, callback ) {
- if ( speed || speed === 0 ) {
- return this.animate( genFx("hide", 3), speed, callback);
-
- } else {
- for ( var i = 0, l = this.length; i < l; i++ ) {
- var old = jQuery.data(this[i], "olddisplay");
- if ( !old && old !== "none" ) {
- jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
- }
- }
-
- // Set the display of the elements in a second loop
- // to avoid the constant reflow
- for ( var j = 0, k = this.length; j < k; j++ ) {
- this[j].style.display = "none";
- }
-
- return this;
- }
- },
-
- // Save the old toggle function
- _toggle: jQuery.fn.toggle,
-
- toggle: function( fn, fn2 ) {
- var bool = typeof fn === "boolean";
-
- if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
- this._toggle.apply( this, arguments );
-
- } else if ( fn == null || bool ) {
- this.each(function() {
- var state = bool ? fn : jQuery(this).is(":hidden");
- jQuery(this)[ state ? "show" : "hide" ]();
- });
-
- } else {
- this.animate(genFx("toggle", 3), fn, fn2);
- }
-
- return this;
- },
-
- fadeTo: function( speed, to, callback ) {
- return this.filter(":hidden").css("opacity", 0).show().end()
- .animate({opacity: to}, speed, callback);
- },
-
- animate: function( prop, speed, easing, callback ) {
- var optall = jQuery.speed(speed, easing, callback);
-
- if ( jQuery.isEmptyObject( prop ) ) {
- return this.each( optall.complete );
- }
-
- return this[ optall.queue === false ? "each" : "queue" ](function() {
- var opt = jQuery.extend({}, optall), p,
- hidden = this.nodeType === 1 && jQuery(this).is(":hidden"),
- self = this;
-
- for ( p in prop ) {
- var name = p.replace(rdashAlpha, fcamelCase);
-
- if ( p !== name ) {
- prop[ name ] = prop[ p ];
- delete prop[ p ];
- p = name;
- }
-
- if ( prop[p] === "hide" && hidden || prop[p] === "show" && !hidden ) {
- return opt.complete.call(this);
- }
-
- if ( ( p === "height" || p === "width" ) && this.style ) {
- // Store display property
- opt.display = jQuery.css(this, "display");
-
- // Make sure that nothing sneaks out
- opt.overflow = this.style.overflow;
- }
-
- if ( jQuery.isArray( prop[p] ) ) {
- // Create (if needed) and add to specialEasing
- (opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];
- prop[p] = prop[p][0];
- }
- }
-
- if ( opt.overflow != null ) {
- this.style.overflow = "hidden";
- }
-
- opt.curAnim = jQuery.extend({}, prop);
-
- jQuery.each( prop, function( name, val ) {
- var e = new jQuery.fx( self, opt, name );
-
- if ( rfxtypes.test(val) ) {
- e[ val === "toggle" ? hidden ? "show" : "hide" : val ]( prop );
-
- } else {
- var parts = rfxnum.exec(val),
- start = e.cur(true) || 0;
-
- if ( parts ) {
- var end = parseFloat( parts[2] ),
- unit = parts[3] || "px";
-
- // We need to compute starting value
- if ( unit !== "px" ) {
- self.style[ name ] = (end || 1) + unit;
- start = ((end || 1) / e.cur(true)) * start;
- self.style[ name ] = start + unit;
- }
-
- // If a +=/-= token was provided, we're doing a relative animation
- if ( parts[1] ) {
- end = ((parts[1] === "-=" ? -1 : 1) * end) + start;
- }
-
- e.custom( start, end, unit );
-
- } else {
- e.custom( start, val, "" );
- }
- }
- });
-
- // For JS strict compliance
- return true;
- });
- },
-
- stop: function( clearQueue, gotoEnd ) {
- var timers = jQuery.timers;
-
- if ( clearQueue ) {
- this.queue([]);
- }
-
- this.each(function() {
- // go in reverse order so anything added to the queue during the loop is ignored
- for ( var i = timers.length - 1; i >= 0; i-- ) {
- if ( timers[i].elem === this ) {
- if (gotoEnd) {
- // force the next step to be the last
- timers[i](true);
- }
-
- timers.splice(i, 1);
- }
- }
- });
-
- // start the next in the queue if the last step wasn't forced
- if ( !gotoEnd ) {
- this.dequeue();
- }
-
- return this;
- }
-
-});
-
-// Generate shortcuts for custom animations
-jQuery.each({
- slideDown: genFx("show", 1),
- slideUp: genFx("hide", 1),
- slideToggle: genFx("toggle", 1),
- fadeIn: { opacity: "show" },
- fadeOut: { opacity: "hide" }
-}, function( name, props ) {
- jQuery.fn[ name ] = function( speed, callback ) {
- return this.animate( props, speed, callback );
- };
-});
-
-jQuery.extend({
- speed: function( speed, easing, fn ) {
- var opt = speed && typeof speed === "object" ? speed : {
- complete: fn || !fn && easing ||
- jQuery.isFunction( speed ) && speed,
- duration: speed,
- easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
- };
-
- opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
- jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
-
- // Queueing
- opt.old = opt.complete;
- opt.complete = function() {
- if ( opt.queue !== false ) {
- jQuery(this).dequeue();
- }
- if ( jQuery.isFunction( opt.old ) ) {
- opt.old.call( this );
- }
- };
-
- return opt;
- },
-
- easing: {
- linear: function( p, n, firstNum, diff ) {
- return firstNum + diff * p;
- },
- swing: function( p, n, firstNum, diff ) {
- return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
- }
- },
-
- timers: [],
-
- fx: function( elem, options, prop ) {
- this.options = options;
- this.elem = elem;
- this.prop = prop;
-
- if ( !options.orig ) {
- options.orig = {};
- }
- }
-
-});
-
-jQuery.fx.prototype = {
- // Simple function for setting a style value
- update: function() {
- if ( this.options.step ) {
- this.options.step.call( this.elem, this.now, this );
- }
-
- (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
-
- // Set display property to block for height/width animations
- if ( ( this.prop === "height" || this.prop === "width" ) && this.elem.style ) {
- this.elem.style.display = "block";
- }
- },
-
- // Get the current size
- cur: function( force ) {
- if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
- return this.elem[ this.prop ];
- }
-
- var r = parseFloat(jQuery.css(this.elem, this.prop, force));
- return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
- },
-
- // Start an animation from one number to another
- custom: function( from, to, unit ) {
- this.startTime = now();
- this.start = from;
- this.end = to;
- this.unit = unit || this.unit || "px";
- this.now = this.start;
- this.pos = this.state = 0;
-
- var self = this;
- function t( gotoEnd ) {
- return self.step(gotoEnd);
- }
-
- t.elem = this.elem;
-
- if ( t() && jQuery.timers.push(t) && !timerId ) {
- timerId = setInterval(jQuery.fx.tick, 13);
- }
- },
-
- // Simple 'show' function
- show: function() {
- // Remember where we started, so that we can go back to it later
- this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
- this.options.show = true;
-
- // Begin the animation
- // Make sure that we start at a small width/height to avoid any
- // flash of content
- this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
-
- // Start by showing the element
- jQuery( this.elem ).show();
- },
-
- // Simple 'hide' function
- hide: function() {
- // Remember where we started, so that we can go back to it later
- this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
- this.options.hide = true;
-
- // Begin the animation
- this.custom(this.cur(), 0);
- },
-
- // Each step of an animation
- step: function( gotoEnd ) {
- var t = now(), done = true;
-
- if ( gotoEnd || t >= this.options.duration + this.startTime ) {
- this.now = this.end;
- this.pos = this.state = 1;
- this.update();
-
- this.options.curAnim[ this.prop ] = true;
-
- for ( var i in this.options.curAnim ) {
- if ( this.options.curAnim[i] !== true ) {
- done = false;
- }
- }
-
- if ( done ) {
- if ( this.options.display != null ) {
- // Reset the overflow
- this.elem.style.overflow = this.options.overflow;
-
- // Reset the display
- var old = jQuery.data(this.elem, "olddisplay");
- this.elem.style.display = old ? old : this.options.display;
-
- if ( jQuery.css(this.elem, "display") === "none" ) {
- this.elem.style.display = "block";
- }
- }
-
- // Hide the element if the "hide" operation was done
- if ( this.options.hide ) {
- jQuery(this.elem).hide();
- }
-
- // Reset the properties, if the item has been hidden or shown
- if ( this.options.hide || this.options.show ) {
- for ( var p in this.options.curAnim ) {
- jQuery.style(this.elem, p, this.options.orig[p]);
- }
- }
-
- // Execute the complete function
- this.options.complete.call( this.elem );
- }
-
- return false;
-
- } else {
- var n = t - this.startTime;
- this.state = n / this.options.duration;
-
- // Perform the easing function, defaults to swing
- var specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];
- var defaultEasing = this.options.easing || (jQuery.easing.swing ? "swing" : "linear");
- this.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);
- this.now = this.start + ((this.end - this.start) * this.pos);
-
- // Perform the next step of the animation
- this.update();
- }
-
- return true;
- }
-};
-
-jQuery.extend( jQuery.fx, {
- tick: function() {
- var timers = jQuery.timers;
-
- for ( var i = 0; i < timers.length; i++ ) {
- if ( !timers[i]() ) {
- timers.splice(i--, 1);
- }
- }
-
- if ( !timers.length ) {
- jQuery.fx.stop();
- }
- },
-
- stop: function() {
- clearInterval( timerId );
- timerId = null;
- },
-
- speeds: {
- slow: 600,
- fast: 200,
- // Default speed
- _default: 400
- },
-
- step: {
- opacity: function( fx ) {
- jQuery.style(fx.elem, "opacity", fx.now);
- },
-
- _default: function( fx ) {
- if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
- fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
- } else {
- fx.elem[ fx.prop ] = fx.now;
- }
- }
- }
-});
-
-if ( jQuery.expr && jQuery.expr.filters ) {
- jQuery.expr.filters.animated = function( elem ) {
- return jQuery.grep(jQuery.timers, function( fn ) {
- return elem === fn.elem;
- }).length;
- };
-}
-
-function genFx( type, num ) {
- var obj = {};
-
- jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
- obj[ this ] = type;
- });
-
- return obj;
-}
-if ( "getBoundingClientRect" in document.documentElement ) {
- jQuery.fn.offset = function( options ) {
- var elem = this[0];
-
- if ( options ) {
- return this.each(function( i ) {
- jQuery.offset.setOffset( this, options, i );
- });
- }
-
- if ( !elem || !elem.ownerDocument ) {
- return null;
- }
-
- if ( elem === elem.ownerDocument.body ) {
- return jQuery.offset.bodyOffset( elem );
- }
-
- var box = elem.getBoundingClientRect(), doc = elem.ownerDocument, body = doc.body, docElem = doc.documentElement,
- clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
- top = box.top + (self.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop ) - clientTop,
- left = box.left + (self.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
-
- return { top: top, left: left };
- };
-
-} else {
- jQuery.fn.offset = function( options ) {
- var elem = this[0];
-
- if ( options ) {
- return this.each(function( i ) {
- jQuery.offset.setOffset( this, options, i );
- });
- }
-
- if ( !elem || !elem.ownerDocument ) {
- return null;
- }
-
- if ( elem === elem.ownerDocument.body ) {
- return jQuery.offset.bodyOffset( elem );
- }
-
- jQuery.offset.initialize();
-
- var offsetParent = elem.offsetParent, prevOffsetParent = elem,
- doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
- body = doc.body, defaultView = doc.defaultView,
- prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
- top = elem.offsetTop, left = elem.offsetLeft;
-
- while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
- if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
- break;
- }
-
- computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
- top -= elem.scrollTop;
- left -= elem.scrollLeft;
-
- if ( elem === offsetParent ) {
- top += elem.offsetTop;
- left += elem.offsetLeft;
-
- if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.nodeName)) ) {
- top += parseFloat( computedStyle.borderTopWidth ) || 0;
- left += parseFloat( computedStyle.borderLeftWidth ) || 0;
- }
-
- prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
- }
-
- if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
- top += parseFloat( computedStyle.borderTopWidth ) || 0;
- left += parseFloat( computedStyle.borderLeftWidth ) || 0;
- }
-
- prevComputedStyle = computedStyle;
- }
-
- if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
- top += body.offsetTop;
- left += body.offsetLeft;
- }
-
- if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
- top += Math.max( docElem.scrollTop, body.scrollTop );
- left += Math.max( docElem.scrollLeft, body.scrollLeft );
- }
-
- return { top: top, left: left };
- };
-}
-
-jQuery.offset = {
- initialize: function() {
- var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.curCSS(body, "marginTop", true) ) || 0,
- html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
-
- jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
-
- container.innerHTML = html;
- body.insertBefore( container, body.firstChild );
- innerDiv = container.firstChild;
- checkDiv = innerDiv.firstChild;
- td = innerDiv.nextSibling.firstChild.firstChild;
-
- this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
- this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
-
- checkDiv.style.position = "fixed", checkDiv.style.top = "20px";
- // safari subtracts parent border width here which is 5px
- this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
- checkDiv.style.position = checkDiv.style.top = "";
-
- innerDiv.style.overflow = "hidden", innerDiv.style.position = "relative";
- this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
-
- this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
-
- body.removeChild( container );
- body = container = innerDiv = checkDiv = table = td = null;
- jQuery.offset.initialize = jQuery.noop;
- },
-
- bodyOffset: function( body ) {
- var top = body.offsetTop, left = body.offsetLeft;
-
- jQuery.offset.initialize();
-
- if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
- top += parseFloat( jQuery.curCSS(body, "marginTop", true) ) || 0;
- left += parseFloat( jQuery.curCSS(body, "marginLeft", true) ) || 0;
- }
-
- return { top: top, left: left };
- },
-
- setOffset: function( elem, options, i ) {
- // set position first, in-case top/left are set even on static elem
- if ( /static/.test( jQuery.curCSS( elem, "position" ) ) ) {
- elem.style.position = "relative";
- }
- var curElem = jQuery( elem ),
- curOffset = curElem.offset(),
- curTop = parseInt( jQuery.curCSS( elem, "top", true ), 10 ) || 0,
- curLeft = parseInt( jQuery.curCSS( elem, "left", true ), 10 ) || 0;
-
- if ( jQuery.isFunction( options ) ) {
- options = options.call( elem, i, curOffset );
- }
-
- var props = {
- top: (options.top - curOffset.top) + curTop,
- left: (options.left - curOffset.left) + curLeft
- };
-
- if ( "using" in options ) {
- options.using.call( elem, props );
- } else {
- curElem.css( props );
- }
- }
-};
-
-
-jQuery.fn.extend({
- position: function() {
- if ( !this[0] ) {
- return null;
- }
-
- var elem = this[0],
-
- // Get *real* offsetParent
- offsetParent = this.offsetParent(),
-
- // Get correct offsets
- offset = this.offset(),
- parentOffset = /^body|html$/i.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
-
- // Subtract element margins
- // note: when an element has margin: auto the offsetLeft and marginLeft
- // are the same in Safari causing offset.left to incorrectly be 0
- offset.top -= parseFloat( jQuery.curCSS(elem, "marginTop", true) ) || 0;
- offset.left -= parseFloat( jQuery.curCSS(elem, "marginLeft", true) ) || 0;
-
- // Add offsetParent borders
- parentOffset.top += parseFloat( jQuery.curCSS(offsetParent[0], "borderTopWidth", true) ) || 0;
- parentOffset.left += parseFloat( jQuery.curCSS(offsetParent[0], "borderLeftWidth", true) ) || 0;
-
- // Subtract the two offsets
- return {
- top: offset.top - parentOffset.top,
- left: offset.left - parentOffset.left
- };
- },
-
- offsetParent: function() {
- return this.map(function() {
- var offsetParent = this.offsetParent || document.body;
- while ( offsetParent && (!/^body|html$/i.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
- offsetParent = offsetParent.offsetParent;
- }
- return offsetParent;
- });
- }
-});
-
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( ["Left", "Top"], function( i, name ) {
- var method = "scroll" + name;
-
- jQuery.fn[ method ] = function(val) {
- var elem = this[0], win;
-
- if ( !elem ) {
- return null;
- }
-
- if ( val !== undefined ) {
- // Set the scroll offset
- return this.each(function() {
- win = getWindow( this );
-
- if ( win ) {
- win.scrollTo(
- !i ? val : jQuery(win).scrollLeft(),
- i ? val : jQuery(win).scrollTop()
- );
-
- } else {
- this[ method ] = val;
- }
- });
- } else {
- win = getWindow( elem );
-
- // Return the scroll offset
- return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
- jQuery.support.boxModel && win.document.documentElement[ method ] ||
- win.document.body[ method ] :
- elem[ method ];
- }
- };
-});
-
-function getWindow( elem ) {
- return ("scrollTo" in elem && elem.document) ?
- elem :
- elem.nodeType === 9 ?
- elem.defaultView || elem.parentWindow :
- false;
-}
-// Create innerHeight, innerWidth, outerHeight and outerWidth methods
-jQuery.each([ "Height", "Width" ], function( i, name ) {
-
- var type = name.toLowerCase();
-
- // innerHeight and innerWidth
- jQuery.fn["inner" + name] = function() {
- return this[0] ?
- jQuery.css( this[0], type, false, "padding" ) :
- null;
- };
-
- // outerHeight and outerWidth
- jQuery.fn["outer" + name] = function( margin ) {
- return this[0] ?
- jQuery.css( this[0], type, false, margin ? "margin" : "border" ) :
- null;
- };
-
- jQuery.fn[ type ] = function( size ) {
- // Get window width or height
- var elem = this[0];
- if ( !elem ) {
- return size == null ? null : this;
- }
-
- if ( jQuery.isFunction( size ) ) {
- return this.each(function( i ) {
- var self = jQuery( this );
- self[ type ]( size.call( this, i, self[ type ]() ) );
- });
- }
-
- return ("scrollTo" in elem && elem.document) ? // does it walk and quack like a window?
- // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
- elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
- elem.document.body[ "client" + name ] :
-
- // Get document width or height
- (elem.nodeType === 9) ? // is it a document
- // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
- Math.max(
- elem.documentElement["client" + name],
- elem.body["scroll" + name], elem.documentElement["scroll" + name],
- elem.body["offset" + name], elem.documentElement["offset" + name]
- ) :
-
- // Get or set width or height on the element
- size === undefined ?
- // Get width or height on the element
- jQuery.css( elem, type ) :
-
- // Set the width or height on the element (default to pixels if value is unitless)
- this.css( type, typeof size === "string" ? size : size + "px" );
- };
-
-});
-// Expose jQuery to the global object
-window.jQuery = window.$ = jQuery;
-
-})(window);
diff --git a/debian/missing-sources/jquery-ui-1.8.2.custom.js b/debian/missing-sources/jquery-ui-1.8.2.custom.js
deleted file mode 100644
index ebeaead..0000000
--- a/debian/missing-sources/jquery-ui-1.8.2.custom.js
+++ /dev/null
@@ -1,15933 +0,0 @@
-/*!
- * jQuery UI 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI
- */
-
-(function($) {
-
-// prevent duplicate loading
-// this is only a problem because we proxy existing functions
-// and we don't want to double proxy them
-$.ui = $.ui || {};
-if ($.ui.version) {
- return;
-}
-
-//Helper functions and ui object
-$.extend($.ui, {
- version: "1.8.2",
-
- // $.ui.plugin is deprecated. Use the proxy pattern instead.
- plugin: {
- add: function(module, option, set) {
- var proto = $.ui[module].prototype;
- for(var i in set) {
- proto.plugins[i] = proto.plugins[i] || [];
- proto.plugins[i].push([option, set[i]]);
- }
- },
- call: function(instance, name, args) {
- var set = instance.plugins[name];
- if(!set || !instance.element[0].parentNode) { return; }
-
- for (var i = 0; i < set.length; i++) {
- if (instance.options[set[i][0]]) {
- set[i][1].apply(instance.element, args);
- }
- }
- }
- },
-
- contains: function(a, b) {
- return document.compareDocumentPosition
- ? a.compareDocumentPosition(b) & 16
- : a !== b && a.contains(b);
- },
-
- hasScroll: function(el, a) {
-
- //If overflow is hidden, the element might have extra content, but the user wants to hide it
- if ($(el).css('overflow') == 'hidden') { return false; }
-
- var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop',
- has = false;
-
- if (el[scroll] > 0) { return true; }
-
- // TODO: determine which cases actually cause this to happen
- // if the element doesn't have the scroll set, see if it's possible to
- // set the scroll
- el[scroll] = 1;
- has = (el[scroll] > 0);
- el[scroll] = 0;
- return has;
- },
-
- isOverAxis: function(x, reference, size) {
- //Determines when x coordinate is over "b" element axis
- return (x > reference) && (x < (reference + size));
- },
-
- isOver: function(y, x, top, left, height, width) {
- //Determines when x, y coordinates is over "b" element
- return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);
- },
-
- keyCode: {
- ALT: 18,
- BACKSPACE: 8,
- CAPS_LOCK: 20,
- COMMA: 188,
- COMMAND: 91,
- COMMAND_LEFT: 91, // COMMAND
- COMMAND_RIGHT: 93,
- CONTROL: 17,
- DELETE: 46,
- DOWN: 40,
- END: 35,
- ENTER: 13,
- ESCAPE: 27,
- HOME: 36,
- INSERT: 45,
- LEFT: 37,
- MENU: 93, // COMMAND_RIGHT
- NUMPAD_ADD: 107,
- NUMPAD_DECIMAL: 110,
- NUMPAD_DIVIDE: 111,
- NUMPAD_ENTER: 108,
- NUMPAD_MULTIPLY: 106,
- NUMPAD_SUBTRACT: 109,
- PAGE_DOWN: 34,
- PAGE_UP: 33,
- PERIOD: 190,
- RIGHT: 39,
- SHIFT: 16,
- SPACE: 32,
- TAB: 9,
- UP: 38,
- WINDOWS: 91 // COMMAND
- }
-});
-
-//jQuery plugins
-$.fn.extend({
- _focus: $.fn.focus,
- focus: function(delay, fn) {
- return typeof delay === 'number'
- ? this.each(function() {
- var elem = this;
- setTimeout(function() {
- $(elem).focus();
- (fn && fn.call(elem));
- }, delay);
- })
- : this._focus.apply(this, arguments);
- },
-
- enableSelection: function() {
- return this
- .attr('unselectable', 'off')
- .css('MozUserSelect', '');
- },
-
- disableSelection: function() {
- return this
- .attr('unselectable', 'on')
- .css('MozUserSelect', 'none');
- },
-
- scrollParent: function() {
- var scrollParent;
- if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
- scrollParent = this.parents().filter(function() {
- return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
- }).eq(0);
- } else {
- scrollParent = this.parents().filter(function() {
- return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
- }).eq(0);
- }
-
- return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
- },
-
- zIndex: function(zIndex) {
- if (zIndex !== undefined) {
- return this.css('zIndex', zIndex);
- }
-
- if (this.length) {
- var elem = $(this[0]), position, value;
- while (elem.length && elem[0] !== document) {
- // Ignore z-index if position is set to a value where z-index is ignored by the browser
- // This makes behavior of this function consistent across browsers
- // WebKit always returns auto if the element is positioned
- position = elem.css('position');
- if (position == 'absolute' || position == 'relative' || position == 'fixed')
- {
- // IE returns 0 when zIndex is not specified
- // other browsers return a string
- // we ignore the case of nested elements with an explicit value of 0
- // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
- value = parseInt(elem.css('zIndex'));
- if (!isNaN(value) && value != 0) {
- return value;
- }
- }
- elem = elem.parent();
- }
- }
-
- return 0;
- }
-});
-
-
-//Additional selectors
-$.extend($.expr[':'], {
- data: function(elem, i, match) {
- return !!$.data(elem, match[3]);
- },
-
- focusable: function(element) {
- var nodeName = element.nodeName.toLowerCase(),
- tabIndex = $.attr(element, 'tabindex');
- return (/input|select|textarea|button|object/.test(nodeName)
- ? !element.disabled
- : 'a' == nodeName || 'area' == nodeName
- ? element.href || !isNaN(tabIndex)
- : !isNaN(tabIndex))
- // the element and all of its ancestors must be visible
- // the browser may report that the area is hidden
- && !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;
- },
-
- tabbable: function(element) {
- var tabIndex = $.attr(element, 'tabindex');
- return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');
- }
-});
-
-})(jQuery);
-/*!
- * jQuery UI Widget 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Widget
- */
-(function( $ ) {
-
-var _remove = $.fn.remove;
-
-$.fn.remove = function( selector, keepData ) {
- return this.each(function() {
- if ( !keepData ) {
- if ( !selector || $.filter( selector, [ this ] ).length ) {
- $( "*", this ).add( this ).each(function() {
- $( this ).triggerHandler( "remove" );
- });
- }
- }
- return _remove.call( $(this), selector, keepData );
- });
-};
-
-$.widget = function( name, base, prototype ) {
- var namespace = name.split( "." )[ 0 ],
- fullName;
- name = name.split( "." )[ 1 ];
- fullName = namespace + "-" + name;
-
- if ( !prototype ) {
- prototype = base;
- base = $.Widget;
- }
-
- // create selector for plugin
- $.expr[ ":" ][ fullName ] = function( elem ) {
- return !!$.data( elem, name );
- };
-
- $[ namespace ] = $[ namespace ] || {};
- $[ namespace ][ name ] = function( options, element ) {
- // allow instantiation without initializing for simple inheritance
- if ( arguments.length ) {
- this._createWidget( options, element );
- }
- };
-
- var basePrototype = new base();
- // we need to make the options hash a property directly on the new instance
- // otherwise we'll modify the options hash on the prototype that we're
- // inheriting from
-// $.each( basePrototype, function( key, val ) {
-// if ( $.isPlainObject(val) ) {
-// basePrototype[ key ] = $.extend( {}, val );
-// }
-// });
- basePrototype.options = $.extend( {}, basePrototype.options );
- $[ namespace ][ name ].prototype = $.extend( true, basePrototype, {
- namespace: namespace,
- widgetName: name,
- widgetEventPrefix: $[ namespace ][ name ].prototype.widgetEventPrefix || name,
- widgetBaseClass: fullName
- }, prototype );
-
- $.widget.bridge( name, $[ namespace ][ name ] );
-};
-
-$.widget.bridge = function( name, object ) {
- $.fn[ name ] = function( options ) {
- var isMethodCall = typeof options === "string",
- args = Array.prototype.slice.call( arguments, 1 ),
- returnValue = this;
-
- // allow multiple hashes to be passed on init
- options = !isMethodCall && args.length ?
- $.extend.apply( null, [ true, options ].concat(args) ) :
- options;
-
- // prevent calls to internal methods
- if ( isMethodCall && options.substring( 0, 1 ) === "_" ) {
- return returnValue;
- }
-
- if ( isMethodCall ) {
- this.each(function() {
- var instance = $.data( this, name ),
- methodValue = instance && $.isFunction( instance[options] ) ?
- instance[ options ].apply( instance, args ) :
- instance;
- if ( methodValue !== instance && methodValue !== undefined ) {
- returnValue = methodValue;
- return false;
- }
- });
- } else {
- this.each(function() {
- var instance = $.data( this, name );
- if ( instance ) {
- if ( options ) {
- instance.option( options );
- }
- instance._init();
- } else {
- $.data( this, name, new object( options, this ) );
- }
- });
- }
-
- return returnValue;
- };
-};
-
-$.Widget = function( options, element ) {
- // allow instantiation without initializing for simple inheritance
- if ( arguments.length ) {
- this._createWidget( options, element );
- }
-};
-
-$.Widget.prototype = {
- widgetName: "widget",
- widgetEventPrefix: "",
- options: {
- disabled: false
- },
- _createWidget: function( options, element ) {
- // $.widget.bridge stores the plugin instance, but we do it anyway
- // so that it's stored even before the _create function runs
- this.element = $( element ).data( this.widgetName, this );
- this.options = $.extend( true, {},
- this.options,
- $.metadata && $.metadata.get( element )[ this.widgetName ],
- options );
-
- var self = this;
- this.element.bind( "remove." + this.widgetName, function() {
- self.destroy();
- });
-
- this._create();
- this._init();
- },
- _create: function() {},
- _init: function() {},
-
- destroy: function() {
- this.element
- .unbind( "." + this.widgetName )
- .removeData( this.widgetName );
- this.widget()
- .unbind( "." + this.widgetName )
- .removeAttr( "aria-disabled" )
- .removeClass(
- this.widgetBaseClass + "-disabled " +
- "ui-state-disabled" );
- },
-
- widget: function() {
- return this.element;
- },
-
- option: function( key, value ) {
- var options = key,
- self = this;
-
- if ( arguments.length === 0 ) {
- // don't return a reference to the internal hash
- return $.extend( {}, self.options );
- }
-
- if (typeof key === "string" ) {
- if ( value === undefined ) {
- return this.options[ key ];
- }
- options = {};
- options[ key ] = value;
- }
-
- $.each( options, function( key, value ) {
- self._setOption( key, value );
- });
-
- return self;
- },
- _setOption: function( key, value ) {
- this.options[ key ] = value;
-
- if ( key === "disabled" ) {
- this.widget()
- [ value ? "addClass" : "removeClass"](
- this.widgetBaseClass + "-disabled" + " " +
- "ui-state-disabled" )
- .attr( "aria-disabled", value );
- }
-
- return this;
- },
-
- enable: function() {
- return this._setOption( "disabled", false );
- },
- disable: function() {
- return this._setOption( "disabled", true );
- },
-
- _trigger: function( type, event, data ) {
- var callback = this.options[ type ];
-
- event = $.Event( event );
- event.type = ( type === this.widgetEventPrefix ?
- type :
- this.widgetEventPrefix + type ).toLowerCase();
- data = data || {};
-
- // copy original event properties over to the new event
- // this would happen if we could call $.event.fix instead of $.Event
- // but we don't have a way to force an event to be fixed multiple times
- if ( event.originalEvent ) {
- for ( var i = $.event.props.length, prop; i; ) {
- prop = $.event.props[ --i ];
- event[ prop ] = event.originalEvent[ prop ];
- }
- }
-
- this.element.trigger( event, data );
-
- return !( $.isFunction(callback) &&
- callback.call( this.element[0], event, data ) === false ||
- event.isDefaultPrevented() );
- }
-};
-
-})( jQuery );
-/*!
- * jQuery UI Mouse 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Mouse
- *
- * Depends:
- * jquery.ui.widget.js
- */
-(function($) {
-
-$.widget("ui.mouse", {
- options: {
- cancel: ':input,option',
- distance: 1,
- delay: 0
- },
- _mouseInit: function() {
- var self = this;
-
- this.element
- .bind('mousedown.'+this.widgetName, function(event) {
- return self._mouseDown(event);
- })
- .bind('click.'+this.widgetName, function(event) {
- if(self._preventClickEvent) {
- self._preventClickEvent = false;
- event.stopImmediatePropagation();
- return false;
- }
- });
-
- this.started = false;
- },
-
- // TODO: make sure destroying one instance of mouse doesn't mess with
- // other instances of mouse
- _mouseDestroy: function() {
- this.element.unbind('.'+this.widgetName);
- },
-
- _mouseDown: function(event) {
- // don't let more than one widget handle mouseStart
- // TODO: figure out why we have to use originalEvent
- event.originalEvent = event.originalEvent || {};
- if (event.originalEvent.mouseHandled) { return; }
-
- // we may have missed mouseup (out of window)
- (this._mouseStarted && this._mouseUp(event));
-
- this._mouseDownEvent = event;
-
- var self = this,
- btnIsLeft = (event.which == 1),
- elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);
- if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
- return true;
- }
-
- this.mouseDelayMet = !this.options.delay;
- if (!this.mouseDelayMet) {
- this._mouseDelayTimer = setTimeout(function() {
- self.mouseDelayMet = true;
- }, this.options.delay);
- }
-
- if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
- this._mouseStarted = (this._mouseStart(event) !== false);
- if (!this._mouseStarted) {
- event.preventDefault();
- return true;
- }
- }
-
- // these delegates are required to keep context
- this._mouseMoveDelegate = function(event) {
- return self._mouseMove(event);
- };
- this._mouseUpDelegate = function(event) {
- return self._mouseUp(event);
- };
- $(document)
- .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
- .bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
-
- // preventDefault() is used to prevent the selection of text here -
- // however, in Safari, this causes select boxes not to be selectable
- // anymore, so this fix is needed
- ($.browser.safari || event.preventDefault());
-
- event.originalEvent.mouseHandled = true;
- return true;
- },
-
- _mouseMove: function(event) {
- // IE mouseup check - mouseup happened when mouse was out of window
- if ($.browser.msie && !event.button) {
- return this._mouseUp(event);
- }
-
- if (this._mouseStarted) {
- this._mouseDrag(event);
- return event.preventDefault();
- }
-
- if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
- this._mouseStarted =
- (this._mouseStart(this._mouseDownEvent, event) !== false);
- (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
- }
-
- return !this._mouseStarted;
- },
-
- _mouseUp: function(event) {
- $(document)
- .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
- .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);
-
- if (this._mouseStarted) {
- this._mouseStarted = false;
- this._preventClickEvent = (event.target == this._mouseDownEvent.target);
- this._mouseStop(event);
- }
-
- return false;
- },
-
- _mouseDistanceMet: function(event) {
- return (Math.max(
- Math.abs(this._mouseDownEvent.pageX - event.pageX),
- Math.abs(this._mouseDownEvent.pageY - event.pageY)
- ) >= this.options.distance
- );
- },
-
- _mouseDelayMet: function(event) {
- return this.mouseDelayMet;
- },
-
- // These are placeholder methods, to be overriden by extending plugin
- _mouseStart: function(event) {},
- _mouseDrag: function(event) {},
- _mouseStop: function(event) {},
- _mouseCapture: function(event) { return true; }
-});
-
-})(jQuery);
-/*
- * jQuery UI Draggable 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Draggables
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.mouse.js
- * jquery.ui.widget.js
- */
-(function($) {
-
-$.widget("ui.draggable", $.ui.mouse, {
- widgetEventPrefix: "drag",
- options: {
- addClasses: true,
- appendTo: "parent",
- axis: false,
- connectToSortable: false,
- containment: false,
- cursor: "auto",
- cursorAt: false,
- grid: false,
- handle: false,
- helper: "original",
- iframeFix: false,
- opacity: false,
- refreshPositions: false,
- revert: false,
- revertDuration: 500,
- scope: "default",
- scroll: true,
- scrollSensitivity: 20,
- scrollSpeed: 20,
- snap: false,
- snapMode: "both",
- snapTolerance: 20,
- stack: false,
- zIndex: false
- },
- _create: function() {
-
- if (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css("position")))
- this.element[0].style.position = 'relative';
-
- (this.options.addClasses && this.element.addClass("ui-draggable"));
- (this.options.disabled && this.element.addClass("ui-draggable-disabled"));
-
- this._mouseInit();
-
- },
-
- destroy: function() {
- if(!this.element.data('draggable')) return;
- this.element
- .removeData("draggable")
- .unbind(".draggable")
- .removeClass("ui-draggable"
- + " ui-draggable-dragging"
- + " ui-draggable-disabled");
- this._mouseDestroy();
-
- return this;
- },
-
- _mouseCapture: function(event) {
-
- var o = this.options;
-
- // among others, prevent a drag on a resizable-handle
- if (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle'))
- return false;
-
- //Quit if we're not on a valid handle
- this.handle = this._getHandle(event);
- if (!this.handle)
- return false;
-
- return true;
-
- },
-
- _mouseStart: function(event) {
-
- var o = this.options;
-
- //Create and append the visible helper
- this.helper = this._createHelper(event);
-
- //Cache the helper size
- this._cacheHelperProportions();
-
- //If ddmanager is used for droppables, set the global draggable
- if($.ui.ddmanager)
- $.ui.ddmanager.current = this;
-
- /*
- * - Position generation -
- * This block generates everything position related - it's the core of draggables.
- */
-
- //Cache the margins of the original element
- this._cacheMargins();
-
- //Store the helper's css position
- this.cssPosition = this.helper.css("position");
- this.scrollParent = this.helper.scrollParent();
-
- //The element's absolute position on the page minus margins
- this.offset = this.positionAbs = this.element.offset();
- this.offset = {
- top: this.offset.top - this.margins.top,
- left: this.offset.left - this.margins.left
- };
-
- $.extend(this.offset, {
- click: { //Where the click happened, relative to the element
- left: event.pageX - this.offset.left,
- top: event.pageY - this.offset.top
- },
- parent: this._getParentOffset(),
- relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
- });
-
- //Generate the original position
- this.originalPosition = this.position = this._generatePosition(event);
- this.originalPageX = event.pageX;
- this.originalPageY = event.pageY;
-
- //Adjust the mouse offset relative to the helper if 'cursorAt' is supplied
- (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
-
- //Set a containment if given in the options
- if(o.containment)
- this._setContainment();
-
- //Trigger event + callbacks
- if(this._trigger("start", event) === false) {
- this._clear();
- return false;
- }
-
- //Recache the helper size
- this._cacheHelperProportions();
-
- //Prepare the droppable offsets
- if ($.ui.ddmanager && !o.dropBehaviour)
- $.ui.ddmanager.prepareOffsets(this, event);
-
- this.helper.addClass("ui-draggable-dragging");
- this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
- return true;
- },
-
- _mouseDrag: function(event, noPropagation) {
-
- //Compute the helpers position
- this.position = this._generatePosition(event);
- this.positionAbs = this._convertPositionTo("absolute");
-
- //Call plugins and callbacks and use the resulting position if something is returned
- if (!noPropagation) {
- var ui = this._uiHash();
- if(this._trigger('drag', event, ui) === false) {
- this._mouseUp({});
- return false;
- }
- this.position = ui.position;
- }
-
- if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px';
- if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px';
- if($.ui.ddmanager) $.ui.ddmanager.drag(this, event);
-
- return false;
- },
-
- _mouseStop: function(event) {
-
- //If we are using droppables, inform the manager about the drop
- var dropped = false;
- if ($.ui.ddmanager && !this.options.dropBehaviour)
- dropped = $.ui.ddmanager.drop(this, event);
-
- //if a drop comes from outside (a sortable)
- if(this.dropped) {
- dropped = this.dropped;
- this.dropped = false;
- }
-
- //if the original element is removed, don't bother to continue
- if(!this.element[0] || !this.element[0].parentNode)
- return false;
-
- if((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
- var self = this;
- $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
- if(self._trigger("stop", event) !== false) {
- self._clear();
- }
- });
- } else {
- if(this._trigger("stop", event) !== false) {
- this._clear();
- }
- }
-
- return false;
- },
-
- cancel: function() {
-
- if(this.helper.is(".ui-draggable-dragging")) {
- this._mouseUp({});
- } else {
- this._clear();
- }
-
- return this;
-
- },
-
- _getHandle: function(event) {
-
- var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;
- $(this.options.handle, this.element)
- .find("*")
- .andSelf()
- .each(function() {
- if(this == event.target) handle = true;
- });
-
- return handle;
-
- },
-
- _createHelper: function(event) {
-
- var o = this.options;
- var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone() : this.element);
-
- if(!helper.parents('body').length)
- helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));
-
- if(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css("position")))
- helper.css("position", "absolute");
-
- return helper;
-
- },
-
- _adjustOffsetFromHelper: function(obj) {
- if (typeof obj == 'string') {
- obj = obj.split(' ');
- }
- if ($.isArray(obj)) {
- obj = {left: +obj[0], top: +obj[1] || 0};
- }
- if ('left' in obj) {
- this.offset.click.left = obj.left + this.margins.left;
- }
- if ('right' in obj) {
- this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
- }
- if ('top' in obj) {
- this.offset.click.top = obj.top + this.margins.top;
- }
- if ('bottom' in obj) {
- this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
- }
- },
-
- _getParentOffset: function() {
-
- //Get the offsetParent and cache its position
- this.offsetParent = this.helper.offsetParent();
- var po = this.offsetParent.offset();
-
- // This is a special case where we need to modify a offset calculated on start, since the following happened:
- // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
- // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
- // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
- if(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) {
- po.left += this.scrollParent.scrollLeft();
- po.top += this.scrollParent.scrollTop();
- }
-
- if((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information
- || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) //Ugly IE fix
- po = { top: 0, left: 0 };
-
- return {
- top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
- left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
- };
-
- },
-
- _getRelativeOffset: function() {
-
- if(this.cssPosition == "relative") {
- var p = this.element.position();
- return {
- top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
- left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
- };
- } else {
- return { top: 0, left: 0 };
- }
-
- },
-
- _cacheMargins: function() {
- this.margins = {
- left: (parseInt(this.element.css("marginLeft"),10) || 0),
- top: (parseInt(this.element.css("marginTop"),10) || 0)
- };
- },
-
- _cacheHelperProportions: function() {
- this.helperProportions = {
- width: this.helper.outerWidth(),
- height: this.helper.outerHeight()
- };
- },
-
- _setContainment: function() {
-
- var o = this.options;
- if(o.containment == 'parent') o.containment = this.helper[0].parentNode;
- if(o.containment == 'document' || o.containment == 'window') this.containment = [
- 0 - this.offset.relative.left - this.offset.parent.left,
- 0 - this.offset.relative.top - this.offset.parent.top,
- $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,
- ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
- ];
-
- if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {
- var ce = $(o.containment)[0]; if(!ce) return;
- var co = $(o.containment).offset();
- var over = ($(ce).css("overflow") != 'hidden');
-
- this.containment = [
- co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,
- co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,
- co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,
- co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top
- ];
- } else if(o.containment.constructor == Array) {
- this.containment = o.containment;
- }
-
- },
-
- _convertPositionTo: function(d, pos) {
-
- if(!pos) pos = this.position;
- var mod = d == "absolute" ? 1 : -1;
- var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
-
- return {
- top: (
- pos.top // The absolute mouse position
- + this.offset.relative.top * mod // Only for relative positioned nodes: Relative offset from element to offset parent
- + this.offset.parent.top * mod // The offsetParent's offset without borders (offset + border)
- - ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
- ),
- left: (
- pos.left // The absolute mouse position
- + this.offset.relative.left * mod // Only for relative positioned nodes: Relative offset from element to offset parent
- + this.offset.parent.left * mod // The offsetParent's offset without borders (offset + border)
- - ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
- )
- };
-
- },
-
- _generatePosition: function(event) {
-
- var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
- var pageX = event.pageX;
- var pageY = event.pageY;
-
- /*
- * - Position constraining -
- * Constrain the position to a mix of grid, containment.
- */
-
- if(this.originalPosition) { //If we are not dragging yet, we won't check for options
-
- if(this.containment) {
- if(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;
- if(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;
- if(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;
- if(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;
- }
-
- if(o.grid) {
- var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
- pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
-
- var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
- pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
- }
-
- }
-
- return {
- top: (
- pageY // The absolute mouse position
- - this.offset.click.top // Click offset (relative to the element)
- - this.offset.relative.top // Only for relative positioned nodes: Relative offset from element to offset parent
- - this.offset.parent.top // The offsetParent's offset without borders (offset + border)
- + ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
- ),
- left: (
- pageX // The absolute mouse position
- - this.offset.click.left // Click offset (relative to the element)
- - this.offset.relative.left // Only for relative positioned nodes: Relative offset from element to offset parent
- - this.offset.parent.left // The offsetParent's offset without borders (offset + border)
- + ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
- )
- };
-
- },
-
- _clear: function() {
- this.helper.removeClass("ui-draggable-dragging");
- if(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();
- //if($.ui.ddmanager) $.ui.ddmanager.current = null;
- this.helper = null;
- this.cancelHelperRemoval = false;
- },
-
- // From now on bulk stuff - mainly helpers
-
- _trigger: function(type, event, ui) {
- ui = ui || this._uiHash();
- $.ui.plugin.call(this, type, [event, ui]);
- if(type == "drag") this.positionAbs = this._convertPositionTo("absolute"); //The absolute position has to be recalculated after plugins
- return $.Widget.prototype._trigger.call(this, type, event, ui);
- },
-
- plugins: {},
-
- _uiHash: function(event) {
- return {
- helper: this.helper,
- position: this.position,
- originalPosition: this.originalPosition,
- offset: this.positionAbs
- };
- }
-
-});
-
-$.extend($.ui.draggable, {
- version: "1.8.2"
-});
-
-$.ui.plugin.add("draggable", "connectToSortable", {
- start: function(event, ui) {
-
- var inst = $(this).data("draggable"), o = inst.options,
- uiSortable = $.extend({}, ui, { item: inst.element });
- inst.sortables = [];
- $(o.connectToSortable).each(function() {
- var sortable = $.data(this, 'sortable');
- if (sortable && !sortable.options.disabled) {
- inst.sortables.push({
- instance: sortable,
- shouldRevert: sortable.options.revert
- });
- sortable._refreshItems(); //Do a one-time refresh at start to refresh the containerCache
- sortable._trigger("activate", event, uiSortable);
- }
- });
-
- },
- stop: function(event, ui) {
-
- //If we are still over the sortable, we fake the stop event of the sortable, but also remove helper
- var inst = $(this).data("draggable"),
- uiSortable = $.extend({}, ui, { item: inst.element });
-
- $.each(inst.sortables, function() {
- if(this.instance.isOver) {
-
- this.instance.isOver = 0;
-
- inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance
- this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)
-
- //The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid'
- if(this.shouldRevert) this.instance.options.revert = true;
-
- //Trigger the stop of the sortable
- this.instance._mouseStop(event);
-
- this.instance.options.helper = this.instance.options._helper;
-
- //If the helper has been the original item, restore properties in the sortable
- if(inst.options.helper == 'original')
- this.instance.currentItem.css({ top: 'auto', left: 'auto' });
-
- } else {
- this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance
- this.instance._trigger("deactivate", event, uiSortable);
- }
-
- });
-
- },
- drag: function(event, ui) {
-
- var inst = $(this).data("draggable"), self = this;
-
- var checkPos = function(o) {
- var dyClick = this.offset.click.top, dxClick = this.offset.click.left;
- var helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left;
- var itemHeight = o.height, itemWidth = o.width;
- var itemTop = o.top, itemLeft = o.left;
-
- return $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);
- };
-
- $.each(inst.sortables, function(i) {
-
- //Copy over some variables to allow calling the sortable's native _intersectsWith
- this.instance.positionAbs = inst.positionAbs;
- this.instance.helperProportions = inst.helperProportions;
- this.instance.offset.click = inst.offset.click;
-
- if(this.instance._intersectsWith(this.instance.containerCache)) {
-
- //If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
- if(!this.instance.isOver) {
-
- this.instance.isOver = 1;
- //Now we fake the start of dragging for the sortable instance,
- //by cloning the list group item, appending it to the sortable and using it as inst.currentItem
- //We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)
- this.instance.currentItem = $(self).clone().appendTo(this.instance.element).data("sortable-item", true);
- this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it
- this.instance.options.helper = function() { return ui.helper[0]; };
-
- event.target = this.instance.currentItem[0];
- this.instance._mouseCapture(event, true);
- this.instance._mouseStart(event, true, true);
-
- //Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes
- this.instance.offset.click.top = inst.offset.click.top;
- this.instance.offset.click.left = inst.offset.click.left;
- this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;
- this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;
-
- inst._trigger("toSortable", event);
- inst.dropped = this.instance.element; //draggable revert needs that
- //hack so receive/update callbacks work (mostly)
- inst.currentItem = inst.element;
- this.instance.fromOutside = inst;
-
- }
-
- //Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable
- if(this.instance.currentItem) this.instance._mouseDrag(event);
-
- } else {
-
- //If it doesn't intersect with the sortable, and it intersected before,
- //we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval
- if(this.instance.isOver) {
-
- this.instance.isOver = 0;
- this.instance.cancelHelperRemoval = true;
-
- //Prevent reverting on this forced stop
- this.instance.options.revert = false;
-
- // The out event needs to be triggered independently
- this.instance._trigger('out', event, this.instance._uiHash(this.instance));
-
- this.instance._mouseStop(event, true);
- this.instance.options.helper = this.instance.options._helper;
-
- //Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size
- this.instance.currentItem.remove();
- if(this.instance.placeholder) this.instance.placeholder.remove();
-
- inst._trigger("fromSortable", event);
- inst.dropped = false; //draggable revert needs that
- }
-
- };
-
- });
-
- }
-});
-
-$.ui.plugin.add("draggable", "cursor", {
- start: function(event, ui) {
- var t = $('body'), o = $(this).data('draggable').options;
- if (t.css("cursor")) o._cursor = t.css("cursor");
- t.css("cursor", o.cursor);
- },
- stop: function(event, ui) {
- var o = $(this).data('draggable').options;
- if (o._cursor) $('body').css("cursor", o._cursor);
- }
-});
-
-$.ui.plugin.add("draggable", "iframeFix", {
- start: function(event, ui) {
- var o = $(this).data('draggable').options;
- $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
- $('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
- .css({
- width: this.offsetWidth+"px", height: this.offsetHeight+"px",
- position: "absolute", opacity: "0.001", zIndex: 1000
- })
- .css($(this).offset())
- .appendTo("body");
- });
- },
- stop: function(event, ui) {
- $("div.ui-draggable-iframeFix").each(function() { this.parentNode.removeChild(this); }); //Remove frame helpers
- }
-});
-
-$.ui.plugin.add("draggable", "opacity", {
- start: function(event, ui) {
- var t = $(ui.helper), o = $(this).data('draggable').options;
- if(t.css("opacity")) o._opacity = t.css("opacity");
- t.css('opacity', o.opacity);
- },
- stop: function(event, ui) {
- var o = $(this).data('draggable').options;
- if(o._opacity) $(ui.helper).css('opacity', o._opacity);
- }
-});
-
-$.ui.plugin.add("draggable", "scroll", {
- start: function(event, ui) {
- var i = $(this).data("draggable");
- if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();
- },
- drag: function(event, ui) {
-
- var i = $(this).data("draggable"), o = i.options, scrolled = false;
-
- if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') {
-
- if(!o.axis || o.axis != 'x') {
- if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)
- i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;
- else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity)
- i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;
- }
-
- if(!o.axis || o.axis != 'y') {
- if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)
- i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;
- else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity)
- i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;
- }
-
- } else {
-
- if(!o.axis || o.axis != 'x') {
- if(event.pageY - $(document).scrollTop() < o.scrollSensitivity)
- scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
- else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)
- scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
- }
-
- if(!o.axis || o.axis != 'y') {
- if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)
- scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
- else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)
- scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
- }
-
- }
-
- if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)
- $.ui.ddmanager.prepareOffsets(i, event);
-
- }
-});
-
-$.ui.plugin.add("draggable", "snap", {
- start: function(event, ui) {
-
- var i = $(this).data("draggable"), o = i.options;
- i.snapElements = [];
-
- $(o.snap.constructor != String ? ( o.snap.items || ':data(draggable)' ) : o.snap).each(function() {
- var $t = $(this); var $o = $t.offset();
- if(this != i.element[0]) i.snapElements.push({
- item: this,
- width: $t.outerWidth(), height: $t.outerHeight(),
- top: $o.top, left: $o.left
- });
- });
-
- },
- drag: function(event, ui) {
-
- var inst = $(this).data("draggable"), o = inst.options;
- var d = o.snapTolerance;
-
- var x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
- y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
-
- for (var i = inst.snapElements.length - 1; i >= 0; i--){
-
- var l = inst.snapElements[i].left, r = l + inst.snapElements[i].width,
- t = inst.snapElements[i].top, b = t + inst.snapElements[i].height;
-
- //Yes, I know, this is insane ;)
- if(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {
- if(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
- inst.snapElements[i].snapping = false;
- continue;
- }
-
- if(o.snapMode != 'inner') {
- var ts = Math.abs(t - y2) <= d;
- var bs = Math.abs(b - y1) <= d;
- var ls = Math.abs(l - x2) <= d;
- var rs = Math.abs(r - x1) <= d;
- if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
- if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top;
- if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;
- if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left;
- }
-
- var first = (ts || bs || ls || rs);
-
- if(o.snapMode != 'outer') {
- var ts = Math.abs(t - y1) <= d;
- var bs = Math.abs(b - y2) <= d;
- var ls = Math.abs(l - x1) <= d;
- var rs = Math.abs(r - x2) <= d;
- if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top;
- if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
- if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left;
- if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;
- }
-
- if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))
- (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
- inst.snapElements[i].snapping = (ts || bs || ls || rs || first);
-
- };
-
- }
-});
-
-$.ui.plugin.add("draggable", "stack", {
- start: function(event, ui) {
-
- var o = $(this).data("draggable").options;
-
- var group = $.makeArray($(o.stack)).sort(function(a,b) {
- return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
- });
- if (!group.length) { return; }
-
- var min = parseInt(group[0].style.zIndex) || 0;
- $(group).each(function(i) {
- this.style.zIndex = min + i;
- });
-
- this[0].style.zIndex = min + group.length;
-
- }
-});
-
-$.ui.plugin.add("draggable", "zIndex", {
- start: function(event, ui) {
- var t = $(ui.helper), o = $(this).data("draggable").options;
- if(t.css("zIndex")) o._zIndex = t.css("zIndex");
- t.css('zIndex', o.zIndex);
- },
- stop: function(event, ui) {
- var o = $(this).data("draggable").options;
- if(o._zIndex) $(ui.helper).css('zIndex', o._zIndex);
- }
-});
-
-})(jQuery);
-/*
- * jQuery UI Droppable 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Droppables
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.widget.js
- * jquery.ui.mouse.js
- * jquery.ui.draggable.js
- */
-(function($) {
-
-$.widget("ui.droppable", {
- widgetEventPrefix: "drop",
- options: {
- accept: '*',
- activeClass: false,
- addClasses: true,
- greedy: false,
- hoverClass: false,
- scope: 'default',
- tolerance: 'intersect'
- },
- _create: function() {
-
- var o = this.options, accept = o.accept;
- this.isover = 0; this.isout = 1;
-
- this.accept = $.isFunction(accept) ? accept : function(d) {
- return d.is(accept);
- };
-
- //Store the droppable's proportions
- this.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };
-
- // Add the reference and positions to the manager
- $.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];
- $.ui.ddmanager.droppables[o.scope].push(this);
-
- (o.addClasses && this.element.addClass("ui-droppable"));
-
- },
-
- destroy: function() {
- var drop = $.ui.ddmanager.droppables[this.options.scope];
- for ( var i = 0; i < drop.length; i++ )
- if ( drop[i] == this )
- drop.splice(i, 1);
-
- this.element
- .removeClass("ui-droppable ui-droppable-disabled")
- .removeData("droppable")
- .unbind(".droppable");
-
- return this;
- },
-
- _setOption: function(key, value) {
-
- if(key == 'accept') {
- this.accept = $.isFunction(value) ? value : function(d) {
- return d.is(value);
- };
- }
- $.Widget.prototype._setOption.apply(this, arguments);
- },
-
- _activate: function(event) {
- var draggable = $.ui.ddmanager.current;
- if(this.options.activeClass) this.element.addClass(this.options.activeClass);
- (draggable && this._trigger('activate', event, this.ui(draggable)));
- },
-
- _deactivate: function(event) {
- var draggable = $.ui.ddmanager.current;
- if(this.options.activeClass) this.element.removeClass(this.options.activeClass);
- (draggable && this._trigger('deactivate', event, this.ui(draggable)));
- },
-
- _over: function(event) {
-
- var draggable = $.ui.ddmanager.current;
- if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element
-
- if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
- if(this.options.hoverClass) this.element.addClass(this.options.hoverClass);
- this._trigger('over', event, this.ui(draggable));
- }
-
- },
-
- _out: function(event) {
-
- var draggable = $.ui.ddmanager.current;
- if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element
-
- if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
- if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);
- this._trigger('out', event, this.ui(draggable));
- }
-
- },
-
- _drop: function(event,custom) {
-
- var draggable = custom || $.ui.ddmanager.current;
- if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; // Bail if draggable and droppable are same element
-
- var childrenIntersection = false;
- this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function() {
- var inst = $.data(this, 'droppable');
- if(
- inst.options.greedy
- && !inst.options.disabled
- && inst.options.scope == draggable.options.scope
- && inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element))
- && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)
- ) { childrenIntersection = true; return false; }
- });
- if(childrenIntersection) return false;
-
- if(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
- if(this.options.activeClass) this.element.removeClass(this.options.activeClass);
- if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);
- this._trigger('drop', event, this.ui(draggable));
- return this.element;
- }
-
- return false;
-
- },
-
- ui: function(c) {
- return {
- draggable: (c.currentItem || c.element),
- helper: c.helper,
- position: c.position,
- offset: c.positionAbs
- };
- }
-
-});
-
-$.extend($.ui.droppable, {
- version: "1.8.2"
-});
-
-$.ui.intersect = function(draggable, droppable, toleranceMode) {
-
- if (!droppable.offset) return false;
-
- var x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,
- y1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height;
- var l = droppable.offset.left, r = l + droppable.proportions.width,
- t = droppable.offset.top, b = t + droppable.proportions.height;
-
- switch (toleranceMode) {
- case 'fit':
- return (l < x1 && x2 < r
- && t < y1 && y2 < b);
- break;
- case 'intersect':
- return (l < x1 + (draggable.helperProportions.width / 2) // Right Half
- && x2 - (draggable.helperProportions.width / 2) < r // Left Half
- && t < y1 + (draggable.helperProportions.height / 2) // Bottom Half
- && y2 - (draggable.helperProportions.height / 2) < b ); // Top Half
- break;
- case 'pointer':
- var draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),
- draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),
- isOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);
- return isOver;
- break;
- case 'touch':
- return (
- (y1 >= t && y1 <= b) || // Top edge touching
- (y2 >= t && y2 <= b) || // Bottom edge touching
- (y1 < t && y2 > b) // Surrounded vertically
- ) && (
- (x1 >= l && x1 <= r) || // Left edge touching
- (x2 >= l && x2 <= r) || // Right edge touching
- (x1 < l && x2 > r) // Surrounded horizontally
- );
- break;
- default:
- return false;
- break;
- }
-
-};
-
-/*
- This manager tracks offsets of draggables and droppables
-*/
-$.ui.ddmanager = {
- current: null,
- droppables: { 'default': [] },
- prepareOffsets: function(t, event) {
-
- var m = $.ui.ddmanager.droppables[t.options.scope] || [];
- var type = event ? event.type : null; // workaround for #2317
- var list = (t.currentItem || t.element).find(":data(droppable)").andSelf();
-
- droppablesLoop: for (var i = 0; i < m.length; i++) {
-
- if(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) continue; //No disabled and non-accepted
- for (var j=0; j < list.length; j++) { if(list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item
- m[i].visible = m[i].element.css("display") != "none"; if(!m[i].visible) continue; //If the element is not visible, continue
-
- m[i].offset = m[i].element.offset();
- m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };
-
- if(type == "mousedown") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables
-
- }
-
- },
- drop: function(draggable, event) {
-
- var dropped = false;
- $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
-
- if(!this.options) return;
- if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))
- dropped = dropped || this._drop.call(this, event);
-
- if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
- this.isout = 1; this.isover = 0;
- this._deactivate.call(this, event);
- }
-
- });
- return dropped;
-
- },
- drag: function(draggable, event) {
-
- //If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.
- if(draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);
-
- //Run through all droppables and check their positions based on specific tolerance options
- $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
-
- if(this.options.disabled || this.greedyChild || !this.visible) return;
- var intersects = $.ui.intersect(draggable, this, this.options.tolerance);
-
- var c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null);
- if(!c) return;
-
- var parentInstance;
- if (this.options.greedy) {
- var parent = this.element.parents(':data(droppable):eq(0)');
- if (parent.length) {
- parentInstance = $.data(parent[0], 'droppable');
- parentInstance.greedyChild = (c == 'isover' ? 1 : 0);
- }
- }
-
- // we just moved into a greedy child
- if (parentInstance && c == 'isover') {
- parentInstance['isover'] = 0;
- parentInstance['isout'] = 1;
- parentInstance._out.call(parentInstance, event);
- }
-
- this[c] = 1; this[c == 'isout' ? 'isover' : 'isout'] = 0;
- this[c == "isover" ? "_over" : "_out"].call(this, event);
-
- // we just moved out of a greedy child
- if (parentInstance && c == 'isout') {
- parentInstance['isout'] = 0;
- parentInstance['isover'] = 1;
- parentInstance._over.call(parentInstance, event);
- }
- });
-
- }
-};
-
-})(jQuery);
-/*
- * jQuery UI Resizable 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Resizables
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.mouse.js
- * jquery.ui.widget.js
- */
-(function($) {
-
-$.widget("ui.resizable", $.ui.mouse, {
- widgetEventPrefix: "resize",
- options: {
- alsoResize: false,
- animate: false,
- animateDuration: "slow",
- animateEasing: "swing",
- aspectRatio: false,
- autoHide: false,
- containment: false,
- ghost: false,
- grid: false,
- handles: "e,s,se",
- helper: false,
- maxHeight: null,
- maxWidth: null,
- minHeight: 10,
- minWidth: 10,
- zIndex: 1000
- },
- _create: function() {
-
- var self = this, o = this.options;
- this.element.addClass("ui-resizable");
-
- $.extend(this, {
- _aspectRatio: !!(o.aspectRatio),
- aspectRatio: o.aspectRatio,
- originalElement: this.element,
- _proportionallyResizeElements: [],
- _helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null
- });
-
- //Wrap the element if it cannot hold child nodes
- if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {
-
- //Opera fix for relative positioning
- if (/relative/.test(this.element.css('position')) && $.browser.opera)
- this.element.css({ position: 'relative', top: 'auto', left: 'auto' });
-
- //Create a wrapper element and set the wrapper to the new current internal element
- this.element.wrap(
- $('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({
- position: this.element.css('position'),
- width: this.element.outerWidth(),
- height: this.element.outerHeight(),
- top: this.element.css('top'),
- left: this.element.css('left')
- })
- );
-
- //Overwrite the original this.element
- this.element = this.element.parent().data(
- "resizable", this.element.data('resizable')
- );
-
- this.elementIsWrapper = true;
-
- //Move margins to the wrapper
- this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") });
- this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});
-
- //Prevent Safari textarea resize
- this.originalResizeStyle = this.originalElement.css('resize');
- this.originalElement.css('resize', 'none');
-
- //Push the actual element to our proportionallyResize internal array
- this._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' }));
-
- // avoid IE jump (hard set the margin)
- this.originalElement.css({ margin: this.originalElement.css('margin') });
-
- // fix handlers offset
- this._proportionallyResize();
-
- }
-
- this.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? "e,s,se" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' });
- if(this.handles.constructor == String) {
-
- if(this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw';
- var n = this.handles.split(","); this.handles = {};
-
- for(var i = 0; i < n.length; i++) {
-
- var handle = $.trim(n[i]), hname = 'ui-resizable-'+handle;
- var axis = $('<div class="ui-resizable-handle ' + hname + '"></div>');
-
- // increase zIndex of sw, se, ne, nw axis
- //TODO : this modifies original option
- if(/sw|se|ne|nw/.test(handle)) axis.css({ zIndex: ++o.zIndex });
-
- //TODO : What's going on here?
- if ('se' == handle) {
- axis.addClass('ui-icon ui-icon-gripsmall-diagonal-se');
- };
-
- //Insert into internal handles object and append to element
- this.handles[handle] = '.ui-resizable-'+handle;
- this.element.append(axis);
- }
-
- }
-
- this._renderAxis = function(target) {
-
- target = target || this.element;
-
- for(var i in this.handles) {
-
- if(this.handles[i].constructor == String)
- this.handles[i] = $(this.handles[i], this.element).show();
-
- //Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)
- if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {
-
- var axis = $(this.handles[i], this.element), padWrapper = 0;
-
- //Checking the correct pad and border
- padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();
-
- //The padding type i have to apply...
- var padPos = [ 'padding',
- /ne|nw|n/.test(i) ? 'Top' :
- /se|sw|s/.test(i) ? 'Bottom' :
- /^e$/.test(i) ? 'Right' : 'Left' ].join("");
-
- target.css(padPos, padWrapper);
-
- this._proportionallyResize();
-
- }
-
- //TODO: What's that good for? There's not anything to be executed left
- if(!$(this.handles[i]).length)
- continue;
-
- }
- };
-
- //TODO: make renderAxis a prototype function
- this._renderAxis(this.element);
-
- this._handles = $('.ui-resizable-handle', this.element)
- .disableSelection();
-
- //Matching axis name
- this._handles.mouseover(function() {
- if (!self.resizing) {
- if (this.className)
- var axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
- //Axis, default = se
- self.axis = axis && axis[1] ? axis[1] : 'se';
- }
- });
-
- //If we want to auto hide the elements
- if (o.autoHide) {
- this._handles.hide();
- $(this.element)
- .addClass("ui-resizable-autohide")
- .hover(function() {
- $(this).removeClass("ui-resizable-autohide");
- self._handles.show();
- },
- function(){
- if (!self.resizing) {
- $(this).addClass("ui-resizable-autohide");
- self._handles.hide();
- }
- });
- }
-
- //Initialize the mouse interaction
- this._mouseInit();
-
- },
-
- destroy: function() {
-
- this._mouseDestroy();
-
- var _destroy = function(exp) {
- $(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")
- .removeData("resizable").unbind(".resizable").find('.ui-resizable-handle').remove();
- };
-
- //TODO: Unwrap at same DOM position
- if (this.elementIsWrapper) {
- _destroy(this.element);
- var wrapper = this.element;
- wrapper.after(
- this.originalElement.css({
- position: wrapper.css('position'),
- width: wrapper.outerWidth(),
- height: wrapper.outerHeight(),
- top: wrapper.css('top'),
- left: wrapper.css('left')
- })
- ).remove();
- }
-
- this.originalElement.css('resize', this.originalResizeStyle);
- _destroy(this.originalElement);
-
- return this;
- },
-
- _mouseCapture: function(event) {
- var handle = false;
- for (var i in this.handles) {
- if ($(this.handles[i])[0] == event.target) {
- handle = true;
- }
- }
-
- return !this.options.disabled && handle;
- },
-
- _mouseStart: function(event) {
-
- var o = this.options, iniPos = this.element.position(), el = this.element;
-
- this.resizing = true;
- this.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };
-
- // bugfix for http://dev.jquery.com/ticket/1749
- if (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) {
- el.css({ position: 'absolute', top: iniPos.top, left: iniPos.left });
- }
-
- //Opera fixing relative position
- if ($.browser.opera && (/relative/).test(el.css('position')))
- el.css({ position: 'relative', top: 'auto', left: 'auto' });
-
- this._renderProxy();
-
- var curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top'));
-
- if (o.containment) {
- curleft += $(o.containment).scrollLeft() || 0;
- curtop += $(o.containment).scrollTop() || 0;
- }
-
- //Store needed variables
- this.offset = this.helper.offset();
- this.position = { left: curleft, top: curtop };
- this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
- this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
- this.originalPosition = { left: curleft, top: curtop };
- this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };
- this.originalMousePosition = { left: event.pageX, top: event.pageY };
-
- //Aspect Ratio
- this.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);
-
- var cursor = $('.ui-resizable-' + this.axis).css('cursor');
- $('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor);
-
- el.addClass("ui-resizable-resizing");
- this._propagate("start", event);
- return true;
- },
-
- _mouseDrag: function(event) {
-
- //Increase performance, avoid regex
- var el = this.helper, o = this.options, props = {},
- self = this, smp = this.originalMousePosition, a = this.axis;
-
- var dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0;
- var trigger = this._change[a];
- if (!trigger) return false;
-
- // Calculate the attrs that will be change
- var data = trigger.apply(this, [event, dx, dy]), ie6 = $.browser.msie && $.browser.version < 7, csdif = this.sizeDiff;
-
- if (this._aspectRatio || event.shiftKey)
- data = this._updateRatio(data, event);
-
- data = this._respectSize(data, event);
-
- // plugins callbacks need to be called first
- this._propagate("resize", event);
-
- el.css({
- top: this.position.top + "px", left: this.position.left + "px",
- width: this.size.width + "px", height: this.size.height + "px"
- });
-
- if (!this._helper && this._proportionallyResizeElements.length)
- this._proportionallyResize();
-
- this._updateCache(data);
-
- // calling the user callback at the end
- this._trigger('resize', event, this.ui());
-
- return false;
- },
-
- _mouseStop: function(event) {
-
- this.resizing = false;
- var o = this.options, self = this;
-
- if(this._helper) {
- var pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),
- soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,
- soffsetw = ista ? 0 : self.sizeDiff.width;
-
- var s = { width: (self.size.width - soffsetw), height: (self.size.height - soffseth) },
- left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,
- top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;
-
- if (!o.animate)
- this.element.css($.extend(s, { top: top, left: left }));
-
- self.helper.height(self.size.height);
- self.helper.width(self.size.width);
-
- if (this._helper && !o.animate) this._proportionallyResize();
- }
-
- $('body').css('cursor', 'auto');
-
- this.element.removeClass("ui-resizable-resizing");
-
- this._propagate("stop", event);
-
- if (this._helper) this.helper.remove();
- return false;
-
- },
-
- _updateCache: function(data) {
- var o = this.options;
- this.offset = this.helper.offset();
- if (isNumber(data.left)) this.position.left = data.left;
- if (isNumber(data.top)) this.position.top = data.top;
- if (isNumber(data.height)) this.size.height = data.height;
- if (isNumber(data.width)) this.size.width = data.width;
- },
-
- _updateRatio: function(data, event) {
-
- var o = this.options, cpos = this.position, csize = this.size, a = this.axis;
-
- if (data.height) data.width = (csize.height * this.aspectRatio);
- else if (data.width) data.height = (csize.width / this.aspectRatio);
-
- if (a == 'sw') {
- data.left = cpos.left + (csize.width - data.width);
- data.top = null;
- }
- if (a == 'nw') {
- data.top = cpos.top + (csize.height - data.height);
- data.left = cpos.left + (csize.width - data.width);
- }
-
- return data;
- },
-
- _respectSize: function(data, event) {
-
- var el = this.helper, o = this.options, pRatio = this._aspectRatio || event.shiftKey, a = this.axis,
- ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),
- isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height);
-
- if (isminw) data.width = o.minWidth;
- if (isminh) data.height = o.minHeight;
- if (ismaxw) data.width = o.maxWidth;
- if (ismaxh) data.height = o.maxHeight;
-
- var dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height;
- var cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);
-
- if (isminw && cw) data.left = dw - o.minWidth;
- if (ismaxw && cw) data.left = dw - o.maxWidth;
- if (isminh && ch) data.top = dh - o.minHeight;
- if (ismaxh && ch) data.top = dh - o.maxHeight;
-
- // fixing jump error on top/left - bug #2330
- var isNotwh = !data.width && !data.height;
- if (isNotwh && !data.left && data.top) data.top = null;
- else if (isNotwh && !data.top && data.left) data.left = null;
-
- return data;
- },
-
- _proportionallyResize: function() {
-
- var o = this.options;
- if (!this._proportionallyResizeElements.length) return;
- var element = this.helper || this.element;
-
- for (var i=0; i < this._proportionallyResizeElements.length; i++) {
-
- var prel = this._proportionallyResizeElements[i];
-
- if (!this.borderDif) {
- var b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')],
- p = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')];
-
- this.borderDif = $.map(b, function(v, i) {
- var border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0;
- return border + padding;
- });
- }
-
- if ($.browser.msie && !(!($(element).is(':hidden') || $(element).parents(':hidden').length)))
- continue;
-
- prel.css({
- height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,
- width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0
- });
-
- };
-
- },
-
- _renderProxy: function() {
-
- var el = this.element, o = this.options;
- this.elementOffset = el.offset();
-
- if(this._helper) {
-
- this.helper = this.helper || $('<div style="overflow:hidden;"></div>');
-
- // fix ie6 offset TODO: This seems broken
- var ie6 = $.browser.msie && $.browser.version < 7, ie6offset = (ie6 ? 1 : 0),
- pxyoffset = ( ie6 ? 2 : -1 );
-
- this.helper.addClass(this._helper).css({
- width: this.element.outerWidth() + pxyoffset,
- height: this.element.outerHeight() + pxyoffset,
- position: 'absolute',
- left: this.elementOffset.left - ie6offset +'px',
- top: this.elementOffset.top - ie6offset +'px',
- zIndex: ++o.zIndex //TODO: Don't modify option
- });
-
- this.helper
- .appendTo("body")
- .disableSelection();
-
- } else {
- this.helper = this.element;
- }
-
- },
-
- _change: {
- e: function(event, dx, dy) {
- return { width: this.originalSize.width + dx };
- },
- w: function(event, dx, dy) {
- var o = this.options, cs = this.originalSize, sp = this.originalPosition;
- return { left: sp.left + dx, width: cs.width - dx };
- },
- n: function(event, dx, dy) {
- var o = this.options, cs = this.originalSize, sp = this.originalPosition;
- return { top: sp.top + dy, height: cs.height - dy };
- },
- s: function(event, dx, dy) {
- return { height: this.originalSize.height + dy };
- },
- se: function(event, dx, dy) {
- return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
- },
- sw: function(event, dx, dy) {
- return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
- },
- ne: function(event, dx, dy) {
- return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
- },
- nw: function(event, dx, dy) {
- return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
- }
- },
-
- _propagate: function(n, event) {
- $.ui.plugin.call(this, n, [event, this.ui()]);
- (n != "resize" && this._trigger(n, event, this.ui()));
- },
-
- plugins: {},
-
- ui: function() {
- return {
- originalElement: this.originalElement,
- element: this.element,
- helper: this.helper,
- position: this.position,
- size: this.size,
- originalSize: this.originalSize,
- originalPosition: this.originalPosition
- };
- }
-
-});
-
-$.extend($.ui.resizable, {
- version: "1.8.2"
-});
-
-/*
- * Resizable Extensions
- */
-
-$.ui.plugin.add("resizable", "alsoResize", {
-
- start: function(event, ui) {
-
- var self = $(this).data("resizable"), o = self.options;
-
- var _store = function(exp) {
- $(exp).each(function() {
- $(this).data("resizable-alsoresize", {
- width: parseInt($(this).width(), 10), height: parseInt($(this).height(), 10),
- left: parseInt($(this).css('left'), 10), top: parseInt($(this).css('top'), 10)
- });
- });
- };
-
- if (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) {
- if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }
- else { $.each(o.alsoResize, function(exp, c) { _store(exp); }); }
- }else{
- _store(o.alsoResize);
- }
- },
-
- resize: function(event, ui){
- var self = $(this).data("resizable"), o = self.options, os = self.originalSize, op = self.originalPosition;
-
- var delta = {
- height: (self.size.height - os.height) || 0, width: (self.size.width - os.width) || 0,
- top: (self.position.top - op.top) || 0, left: (self.position.left - op.left) || 0
- },
-
- _alsoResize = function(exp, c) {
- $(exp).each(function() {
- var el = $(this), start = $(this).data("resizable-alsoresize"), style = {}, css = c && c.length ? c : ['width', 'height', 'top', 'left'];
-
- $.each(css || ['width', 'height', 'top', 'left'], function(i, prop) {
- var sum = (start[prop]||0) + (delta[prop]||0);
- if (sum && sum >= 0)
- style[prop] = sum || null;
- });
-
- //Opera fixing relative position
- if (/relative/.test(el.css('position')) && $.browser.opera) {
- self._revertToRelativePosition = true;
- el.css({ position: 'absolute', top: 'auto', left: 'auto' });
- }
-
- el.css(style);
- });
- };
-
- if (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {
- $.each(o.alsoResize, function(exp, c) { _alsoResize(exp, c); });
- }else{
- _alsoResize(o.alsoResize);
- }
- },
-
- stop: function(event, ui){
- var self = $(this).data("resizable");
-
- //Opera fixing relative position
- if (self._revertToRelativePosition && $.browser.opera) {
- self._revertToRelativePosition = false;
- el.css({ position: 'relative' });
- }
-
- $(this).removeData("resizable-alsoresize-start");
- }
-});
-
-$.ui.plugin.add("resizable", "animate", {
-
- stop: function(event, ui) {
- var self = $(this).data("resizable"), o = self.options;
-
- var pr = self._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),
- soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,
- soffsetw = ista ? 0 : self.sizeDiff.width;
-
- var style = { width: (self.size.width - soffsetw), height: (self.size.height - soffseth) },
- left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,
- top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;
-
- self.element.animate(
- $.extend(style, top && left ? { top: top, left: left } : {}), {
- duration: o.animateDuration,
- easing: o.animateEasing,
- step: function() {
-
- var data = {
- width: parseInt(self.element.css('width'), 10),
- height: parseInt(self.element.css('height'), 10),
- top: parseInt(self.element.css('top'), 10),
- left: parseInt(self.element.css('left'), 10)
- };
-
- if (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height });
-
- // propagating resize, and updating values for each animation step
- self._updateCache(data);
- self._propagate("resize", event);
-
- }
- }
- );
- }
-
-});
-
-$.ui.plugin.add("resizable", "containment", {
-
- start: function(event, ui) {
- var self = $(this).data("resizable"), o = self.options, el = self.element;
- var oc = o.containment, ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;
- if (!ce) return;
-
- self.containerElement = $(ce);
-
- if (/document/.test(oc) || oc == document) {
- self.containerOffset = { left: 0, top: 0 };
- self.containerPosition = { left: 0, top: 0 };
-
- self.parentData = {
- element: $(document), left: 0, top: 0,
- width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight
- };
- }
-
- // i'm a node, so compute top, left, right, bottom
- else {
- var element = $(ce), p = [];
- $([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); });
-
- self.containerOffset = element.offset();
- self.containerPosition = element.position();
- self.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };
-
- var co = self.containerOffset, ch = self.containerSize.height, cw = self.containerSize.width,
- width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw ), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);
-
- self.parentData = {
- element: ce, left: co.left, top: co.top, width: width, height: height
- };
- }
- },
-
- resize: function(event, ui) {
- var self = $(this).data("resizable"), o = self.options,
- ps = self.containerSize, co = self.containerOffset, cs = self.size, cp = self.position,
- pRatio = self._aspectRatio || event.shiftKey, cop = { top:0, left:0 }, ce = self.containerElement;
-
- if (ce[0] != document && (/static/).test(ce.css('position'))) cop = co;
-
- if (cp.left < (self._helper ? co.left : 0)) {
- self.size.width = self.size.width + (self._helper ? (self.position.left - co.left) : (self.position.left - cop.left));
- if (pRatio) self.size.height = self.size.width / o.aspectRatio;
- self.position.left = o.helper ? co.left : 0;
- }
-
- if (cp.top < (self._helper ? co.top : 0)) {
- self.size.height = self.size.height + (self._helper ? (self.position.top - co.top) : self.position.top);
- if (pRatio) self.size.width = self.size.height * o.aspectRatio;
- self.position.top = self._helper ? co.top : 0;
- }
-
- self.offset.left = self.parentData.left+self.position.left;
- self.offset.top = self.parentData.top+self.position.top;
-
- var woset = Math.abs( (self._helper ? self.offset.left - cop.left : (self.offset.left - cop.left)) + self.sizeDiff.width ),
- hoset = Math.abs( (self._helper ? self.offset.top - cop.top : (self.offset.top - co.top)) + self.sizeDiff.height );
-
- var isParent = self.containerElement.get(0) == self.element.parent().get(0),
- isOffsetRelative = /relative|absolute/.test(self.containerElement.css('position'));
-
- if(isParent && isOffsetRelative) woset -= self.parentData.left;
-
- if (woset + self.size.width >= self.parentData.width) {
- self.size.width = self.parentData.width - woset;
- if (pRatio) self.size.height = self.size.width / self.aspectRatio;
- }
-
- if (hoset + self.size.height >= self.parentData.height) {
- self.size.height = self.parentData.height - hoset;
- if (pRatio) self.size.width = self.size.height * self.aspectRatio;
- }
- },
-
- stop: function(event, ui){
- var self = $(this).data("resizable"), o = self.options, cp = self.position,
- co = self.containerOffset, cop = self.containerPosition, ce = self.containerElement;
-
- var helper = $(self.helper), ho = helper.offset(), w = helper.outerWidth() - self.sizeDiff.width, h = helper.outerHeight() - self.sizeDiff.height;
-
- if (self._helper && !o.animate && (/relative/).test(ce.css('position')))
- $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
-
- if (self._helper && !o.animate && (/static/).test(ce.css('position')))
- $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
-
- }
-});
-
-$.ui.plugin.add("resizable", "ghost", {
-
- start: function(event, ui) {
-
- var self = $(this).data("resizable"), o = self.options, cs = self.size;
-
- self.ghost = self.originalElement.clone();
- self.ghost
- .css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })
- .addClass('ui-resizable-ghost')
- .addClass(typeof o.ghost == 'string' ? o.ghost : '');
-
- self.ghost.appendTo(self.helper);
-
- },
-
- resize: function(event, ui){
- var self = $(this).data("resizable"), o = self.options;
- if (self.ghost) self.ghost.css({ position: 'relative', height: self.size.height, width: self.size.width });
- },
-
- stop: function(event, ui){
- var self = $(this).data("resizable"), o = self.options;
- if (self.ghost && self.helper) self.helper.get(0).removeChild(self.ghost.get(0));
- }
-
-});
-
-$.ui.plugin.add("resizable", "grid", {
-
- resize: function(event, ui) {
- var self = $(this).data("resizable"), o = self.options, cs = self.size, os = self.originalSize, op = self.originalPosition, a = self.axis, ratio = o._aspectRatio || event.shiftKey;
- o.grid = typeof o.grid == "number" ? [o.grid, o.grid] : o.grid;
- var ox = Math.round((cs.width - os.width) / (o.grid[0]||1)) * (o.grid[0]||1), oy = Math.round((cs.height - os.height) / (o.grid[1]||1)) * (o.grid[1]||1);
-
- if (/^(se|s|e)$/.test(a)) {
- self.size.width = os.width + ox;
- self.size.height = os.height + oy;
- }
- else if (/^(ne)$/.test(a)) {
- self.size.width = os.width + ox;
- self.size.height = os.height + oy;
- self.position.top = op.top - oy;
- }
- else if (/^(sw)$/.test(a)) {
- self.size.width = os.width + ox;
- self.size.height = os.height + oy;
- self.position.left = op.left - ox;
- }
- else {
- self.size.width = os.width + ox;
- self.size.height = os.height + oy;
- self.position.top = op.top - oy;
- self.position.left = op.left - ox;
- }
- }
-
-});
-
-var num = function(v) {
- return parseInt(v, 10) || 0;
-};
-
-var isNumber = function(value) {
- return !isNaN(parseInt(value, 10));
-};
-
-})(jQuery);
-
-/*
- * jQuery UI Selectable 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Selectables
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.mouse.js
- * jquery.ui.widget.js
- */
-(function($) {
-
-$.widget("ui.selectable", $.ui.mouse, {
- options: {
- appendTo: 'body',
- autoRefresh: true,
- distance: 0,
- filter: '*',
- tolerance: 'touch'
- },
- _create: function() {
- var self = this;
-
- this.element.addClass("ui-selectable");
-
- this.dragged = false;
-
- // cache selectee children based on filter
- var selectees;
- this.refresh = function() {
- selectees = $(self.options.filter, self.element[0]);
- selectees.each(function() {
- var $this = $(this);
- var pos = $this.offset();
- $.data(this, "selectable-item", {
- element: this,
- $element: $this,
- left: pos.left,
- top: pos.top,
- right: pos.left + $this.outerWidth(),
- bottom: pos.top + $this.outerHeight(),
- startselected: false,
- selected: $this.hasClass('ui-selected'),
- selecting: $this.hasClass('ui-selecting'),
- unselecting: $this.hasClass('ui-unselecting')
- });
- });
- };
- this.refresh();
-
- this.selectees = selectees.addClass("ui-selectee");
-
- this._mouseInit();
-
- this.helper = $("<div class='ui-selectable-helper'></div>");
- },
-
- destroy: function() {
- this.selectees
- .removeClass("ui-selectee")
- .removeData("selectable-item");
- this.element
- .removeClass("ui-selectable ui-selectable-disabled")
- .removeData("selectable")
- .unbind(".selectable");
- this._mouseDestroy();
-
- return this;
- },
-
- _mouseStart: function(event) {
- var self = this;
-
- this.opos = [event.pageX, event.pageY];
-
- if (this.options.disabled)
- return;
-
- var options = this.options;
-
- this.selectees = $(options.filter, this.element[0]);
-
- this._trigger("start", event);
-
- $(options.appendTo).append(this.helper);
- // position helper (lasso)
- this.helper.css({
- "z-index": 100,
- "position": "absolute",
- "left": event.clientX,
- "top": event.clientY,
- "width": 0,
- "height": 0
- });
-
- if (options.autoRefresh) {
- this.refresh();
- }
-
- this.selectees.filter('.ui-selected').each(function() {
- var selectee = $.data(this, "selectable-item");
- selectee.startselected = true;
- if (!event.metaKey) {
- selectee.$element.removeClass('ui-selected');
- selectee.selected = false;
- selectee.$element.addClass('ui-unselecting');
- selectee.unselecting = true;
- // selectable UNSELECTING callback
- self._trigger("unselecting", event, {
- unselecting: selectee.element
- });
- }
- });
-
- $(event.target).parents().andSelf().each(function() {
- var selectee = $.data(this, "selectable-item");
- if (selectee) {
- var doSelect = !event.metaKey || !selectee.$element.hasClass('ui-selected');
- selectee.$element
- .removeClass(doSelect ? "ui-unselecting" : "ui-selected")
- .addClass(doSelect ? "ui-selecting" : "ui-unselecting");
- selectee.unselecting = !doSelect;
- selectee.selecting = doSelect;
- selectee.selected = doSelect;
- // selectable (UN)SELECTING callback
- if (doSelect) {
- self._trigger("selecting", event, {
- selecting: selectee.element
- });
- } else {
- self._trigger("unselecting", event, {
- unselecting: selectee.element
- });
- }
- return false;
- }
- });
-
- },
-
- _mouseDrag: function(event) {
- var self = this;
- this.dragged = true;
-
- if (this.options.disabled)
- return;
-
- var options = this.options;
-
- var x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY;
- if (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; }
- if (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; }
- this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});
-
- this.selectees.each(function() {
- var selectee = $.data(this, "selectable-item");
- //prevent helper from being selected if appendTo: selectable
- if (!selectee || selectee.element == self.element[0])
- return;
- var hit = false;
- if (options.tolerance == 'touch') {
- hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );
- } else if (options.tolerance == 'fit') {
- hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);
- }
-
- if (hit) {
- // SELECT
- if (selectee.selected) {
- selectee.$element.removeClass('ui-selected');
- selectee.selected = false;
- }
- if (selectee.unselecting) {
- selectee.$element.removeClass('ui-unselecting');
- selectee.unselecting = false;
- }
- if (!selectee.selecting) {
- selectee.$element.addClass('ui-selecting');
- selectee.selecting = true;
- // selectable SELECTING callback
- self._trigger("selecting", event, {
- selecting: selectee.element
- });
- }
- } else {
- // UNSELECT
- if (selectee.selecting) {
- if (event.metaKey && selectee.startselected) {
- selectee.$element.removeClass('ui-selecting');
- selectee.selecting = false;
- selectee.$element.addClass('ui-selected');
- selectee.selected = true;
- } else {
- selectee.$element.removeClass('ui-selecting');
- selectee.selecting = false;
- if (selectee.startselected) {
- selectee.$element.addClass('ui-unselecting');
- selectee.unselecting = true;
- }
- // selectable UNSELECTING callback
- self._trigger("unselecting", event, {
- unselecting: selectee.element
- });
- }
- }
- if (selectee.selected) {
- if (!event.metaKey && !selectee.startselected) {
- selectee.$element.removeClass('ui-selected');
- selectee.selected = false;
-
- selectee.$element.addClass('ui-unselecting');
- selectee.unselecting = true;
- // selectable UNSELECTING callback
- self._trigger("unselecting", event, {
- unselecting: selectee.element
- });
- }
- }
- }
- });
-
- return false;
- },
-
- _mouseStop: function(event) {
- var self = this;
-
- this.dragged = false;
-
- var options = this.options;
-
- $('.ui-unselecting', this.element[0]).each(function() {
- var selectee = $.data(this, "selectable-item");
- selectee.$element.removeClass('ui-unselecting');
- selectee.unselecting = false;
- selectee.startselected = false;
- self._trigger("unselected", event, {
- unselected: selectee.element
- });
- });
- $('.ui-selecting', this.element[0]).each(function() {
- var selectee = $.data(this, "selectable-item");
- selectee.$element.removeClass('ui-selecting').addClass('ui-selected');
- selectee.selecting = false;
- selectee.selected = true;
- selectee.startselected = true;
- self._trigger("selected", event, {
- selected: selectee.element
- });
- });
- this._trigger("stop", event);
-
- this.helper.remove();
-
- return false;
- }
-
-});
-
-$.extend($.ui.selectable, {
- version: "1.8.2"
-});
-
-})(jQuery);
-/*
- * jQuery UI Sortable 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Sortables
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.mouse.js
- * jquery.ui.widget.js
- */
-(function($) {
-
-$.widget("ui.sortable", $.ui.mouse, {
- widgetEventPrefix: "sort",
- options: {
- appendTo: "parent",
- axis: false,
- connectWith: false,
- containment: false,
- cursor: 'auto',
- cursorAt: false,
- dropOnEmpty: true,
- forcePlaceholderSize: false,
- forceHelperSize: false,
- grid: false,
- handle: false,
- helper: "original",
- items: '> *',
- opacity: false,
- placeholder: false,
- revert: false,
- scroll: true,
- scrollSensitivity: 20,
- scrollSpeed: 20,
- scope: "default",
- tolerance: "intersect",
- zIndex: 1000
- },
- _create: function() {
-
- var o = this.options;
- this.containerCache = {};
- this.element.addClass("ui-sortable");
-
- //Get the items
- this.refresh();
-
- //Let's determine if the items are floating
- this.floating = this.items.length ? (/left|right/).test(this.items[0].item.css('float')) : false;
-
- //Let's determine the parent's offset
- this.offset = this.element.offset();
-
- //Initialize mouse events for interaction
- this._mouseInit();
-
- },
-
- destroy: function() {
- this.element
- .removeClass("ui-sortable ui-sortable-disabled")
- .removeData("sortable")
- .unbind(".sortable");
- this._mouseDestroy();
-
- for ( var i = this.items.length - 1; i >= 0; i-- )
- this.items[i].item.removeData("sortable-item");
-
- return this;
- },
-
- _setOption: function(key, value){
- if ( key === "disabled" ) {
- this.options[ key ] = value;
-
- this.widget()
- [ value ? "addClass" : "removeClass"]( "ui-sortable-disabled" );
- } else {
- // Don't call widget base _setOption for disable as it adds ui-state-disabled class
- $.Widget.prototype._setOption.apply(this, arguments);
- }
- },
-
- _mouseCapture: function(event, overrideHandle) {
-
- if (this.reverting) {
- return false;
- }
-
- if(this.options.disabled || this.options.type == 'static') return false;
-
- //We have to refresh the items data once first
- this._refreshItems(event);
-
- //Find out if the clicked node (or one of its parents) is a actual item in this.items
- var currentItem = null, self = this, nodes = $(event.target).parents().each(function() {
- if($.data(this, 'sortable-item') == self) {
- currentItem = $(this);
- return false;
- }
- });
- if($.data(event.target, 'sortable-item') == self) currentItem = $(event.target);
-
- if(!currentItem) return false;
- if(this.options.handle && !overrideHandle) {
- var validHandle = false;
-
- $(this.options.handle, currentItem).find("*").andSelf().each(function() { if(this == event.target) validHandle = true; });
- if(!validHandle) return false;
- }
-
- this.currentItem = currentItem;
- this._removeCurrentsFromItems();
- return true;
-
- },
-
- _mouseStart: function(event, overrideHandle, noActivation) {
-
- var o = this.options, self = this;
- this.currentContainer = this;
-
- //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture
- this.refreshPositions();
-
- //Create and append the visible helper
- this.helper = this._createHelper(event);
-
- //Cache the helper size
- this._cacheHelperProportions();
-
- /*
- * - Position generation -
- * This block generates everything position related - it's the core of draggables.
- */
-
- //Cache the margins of the original element
- this._cacheMargins();
-
- //Get the next scrolling parent
- this.scrollParent = this.helper.scrollParent();
-
- //The element's absolute position on the page minus margins
- this.offset = this.currentItem.offset();
- this.offset = {
- top: this.offset.top - this.margins.top,
- left: this.offset.left - this.margins.left
- };
-
- // Only after we got the offset, we can change the helper's position to absolute
- // TODO: Still need to figure out a way to make relative sorting possible
- this.helper.css("position", "absolute");
- this.cssPosition = this.helper.css("position");
-
- $.extend(this.offset, {
- click: { //Where the click happened, relative to the element
- left: event.pageX - this.offset.left,
- top: event.pageY - this.offset.top
- },
- parent: this._getParentOffset(),
- relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
- });
-
- //Generate the original position
- this.originalPosition = this._generatePosition(event);
- this.originalPageX = event.pageX;
- this.originalPageY = event.pageY;
-
- //Adjust the mouse offset relative to the helper if 'cursorAt' is supplied
- (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
-
- //Cache the former DOM position
- this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };
-
- //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way
- if(this.helper[0] != this.currentItem[0]) {
- this.currentItem.hide();
- }
-
- //Create the placeholder
- this._createPlaceholder();
-
- //Set a containment if given in the options
- if(o.containment)
- this._setContainment();
-
- if(o.cursor) { // cursor option
- if ($('body').css("cursor")) this._storedCursor = $('body').css("cursor");
- $('body').css("cursor", o.cursor);
- }
-
- if(o.opacity) { // opacity option
- if (this.helper.css("opacity")) this._storedOpacity = this.helper.css("opacity");
- this.helper.css("opacity", o.opacity);
- }
-
- if(o.zIndex) { // zIndex option
- if (this.helper.css("zIndex")) this._storedZIndex = this.helper.css("zIndex");
- this.helper.css("zIndex", o.zIndex);
- }
-
- //Prepare scrolling
- if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML')
- this.overflowOffset = this.scrollParent.offset();
-
- //Call callbacks
- this._trigger("start", event, this._uiHash());
-
- //Recache the helper size
- if(!this._preserveHelperProportions)
- this._cacheHelperProportions();
-
-
- //Post 'activate' events to possible containers
- if(!noActivation) {
- for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger("activate", event, self._uiHash(this)); }
- }
-
- //Prepare possible droppables
- if($.ui.ddmanager)
- $.ui.ddmanager.current = this;
-
- if ($.ui.ddmanager && !o.dropBehaviour)
- $.ui.ddmanager.prepareOffsets(this, event);
-
- this.dragging = true;
-
- this.helper.addClass("ui-sortable-helper");
- this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position
- return true;
-
- },
-
- _mouseDrag: function(event) {
-
- //Compute the helpers position
- this.position = this._generatePosition(event);
- this.positionAbs = this._convertPositionTo("absolute");
-
- if (!this.lastPositionAbs) {
- this.lastPositionAbs = this.positionAbs;
- }
-
- //Do scrolling
- if(this.options.scroll) {
- var o = this.options, scrolled = false;
- if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') {
-
- if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)
- this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;
- else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity)
- this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;
-
- if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)
- this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;
- else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity)
- this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;
-
- } else {
-
- if(event.pageY - $(document).scrollTop() < o.scrollSensitivity)
- scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
- else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)
- scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
-
- if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)
- scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
- else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)
- scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
-
- }
-
- if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)
- $.ui.ddmanager.prepareOffsets(this, event);
- }
-
- //Regenerate the absolute position used for position checks
- this.positionAbs = this._convertPositionTo("absolute");
-
- //Set the helper position
- if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px';
- if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px';
-
- //Rearrange
- for (var i = this.items.length - 1; i >= 0; i--) {
-
- //Cache variables and intersection, continue if no intersection
- var item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item);
- if (!intersection) continue;
-
- if(itemElement != this.currentItem[0] //cannot intersect with itself
- && this.placeholder[intersection == 1 ? "next" : "prev"]()[0] != itemElement //no useless actions that have been done before
- && !$.ui.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked
- && (this.options.type == 'semi-dynamic' ? !$.ui.contains(this.element[0], itemElement) : true)
- //&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container
- ) {
-
- this.direction = intersection == 1 ? "down" : "up";
-
- if (this.options.tolerance == "pointer" || this._intersectsWithSides(item)) {
- this._rearrange(event, item);
- } else {
- break;
- }
-
- this._trigger("change", event, this._uiHash());
- break;
- }
- }
-
- //Post events to containers
- this._contactContainers(event);
-
- //Interconnect with droppables
- if($.ui.ddmanager) $.ui.ddmanager.drag(this, event);
-
- //Call callbacks
- this._trigger('sort', event, this._uiHash());
-
- this.lastPositionAbs = this.positionAbs;
- return false;
-
- },
-
- _mouseStop: function(event, noPropagation) {
-
- if(!event) return;
-
- //If we are using droppables, inform the manager about the drop
- if ($.ui.ddmanager && !this.options.dropBehaviour)
- $.ui.ddmanager.drop(this, event);
-
- if(this.options.revert) {
- var self = this;
- var cur = self.placeholder.offset();
-
- self.reverting = true;
-
- $(this.helper).animate({
- left: cur.left - this.offset.parent.left - self.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),
- top: cur.top - this.offset.parent.top - self.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)
- }, parseInt(this.options.revert, 10) || 500, function() {
- self._clear(event);
- });
- } else {
- this._clear(event, noPropagation);
- }
-
- return false;
-
- },
-
- cancel: function() {
-
- var self = this;
-
- if(this.dragging) {
-
- this._mouseUp();
-
- if(this.options.helper == "original")
- this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
- else
- this.currentItem.show();
-
- //Post deactivating events to containers
- for (var i = this.containers.length - 1; i >= 0; i--){
- this.containers[i]._trigger("deactivate", null, self._uiHash(this));
- if(this.containers[i].containerCache.over) {
- this.containers[i]._trigger("out", null, self._uiHash(this));
- this.containers[i].containerCache.over = 0;
- }
- }
-
- }
-
- //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
- if(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
- if(this.options.helper != "original" && this.helper && this.helper[0].parentNode) this.helper.remove();
-
- $.extend(this, {
- helper: null,
- dragging: false,
- reverting: false,
- _noFinalSort: null
- });
-
- if(this.domPosition.prev) {
- $(this.domPosition.prev).after(this.currentItem);
- } else {
- $(this.domPosition.parent).prepend(this.currentItem);
- }
-
- return this;
-
- },
-
- serialize: function(o) {
-
- var items = this._getItemsAsjQuery(o && o.connected);
- var str = []; o = o || {};
-
- $(items).each(function() {
- var res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));
- if(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2]));
- });
-
- return str.join('&');
-
- },
-
- toArray: function(o) {
-
- var items = this._getItemsAsjQuery(o && o.connected);
- var ret = []; o = o || {};
-
- items.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); });
- return ret;
-
- },
-
- /* Be careful with the following core functions */
- _intersectsWith: function(item) {
-
- var x1 = this.positionAbs.left,
- x2 = x1 + this.helperProportions.width,
- y1 = this.positionAbs.top,
- y2 = y1 + this.helperProportions.height;
-
- var l = item.left,
- r = l + item.width,
- t = item.top,
- b = t + item.height;
-
- var dyClick = this.offset.click.top,
- dxClick = this.offset.click.left;
-
- var isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r;
-
- if( this.options.tolerance == "pointer"
- || this.options.forcePointerForContainers
- || (this.options.tolerance != "pointer" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height'])
- ) {
- return isOverElement;
- } else {
-
- return (l < x1 + (this.helperProportions.width / 2) // Right Half
- && x2 - (this.helperProportions.width / 2) < r // Left Half
- && t < y1 + (this.helperProportions.height / 2) // Bottom Half
- && y2 - (this.helperProportions.height / 2) < b ); // Top Half
-
- }
- },
-
- _intersectsWithPointer: function(item) {
-
- var isOverElementHeight = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),
- isOverElementWidth = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),
- isOverElement = isOverElementHeight && isOverElementWidth,
- verticalDirection = this._getDragVerticalDirection(),
- horizontalDirection = this._getDragHorizontalDirection();
-
- if (!isOverElement)
- return false;
-
- return this.floating ?
- ( ((horizontalDirection && horizontalDirection == "right") || verticalDirection == "down") ? 2 : 1 )
- : ( verticalDirection && (verticalDirection == "down" ? 2 : 1) );
-
- },
-
- _intersectsWithSides: function(item) {
-
- var isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),
- isOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),
- verticalDirection = this._getDragVerticalDirection(),
- horizontalDirection = this._getDragHorizontalDirection();
-
- if (this.floating && horizontalDirection) {
- return ((horizontalDirection == "right" && isOverRightHalf) || (horizontalDirection == "left" && !isOverRightHalf));
- } else {
- return verticalDirection && ((verticalDirection == "down" && isOverBottomHalf) || (verticalDirection == "up" && !isOverBottomHalf));
- }
-
- },
-
- _getDragVerticalDirection: function() {
- var delta = this.positionAbs.top - this.lastPositionAbs.top;
- return delta != 0 && (delta > 0 ? "down" : "up");
- },
-
- _getDragHorizontalDirection: function() {
- var delta = this.positionAbs.left - this.lastPositionAbs.left;
- return delta != 0 && (delta > 0 ? "right" : "left");
- },
-
- refresh: function(event) {
- this._refreshItems(event);
- this.refreshPositions();
- return this;
- },
-
- _connectWith: function() {
- var options = this.options;
- return options.connectWith.constructor == String
- ? [options.connectWith]
- : options.connectWith;
- },
-
- _getItemsAsjQuery: function(connected) {
-
- var self = this;
- var items = [];
- var queries = [];
- var connectWith = this._connectWith();
-
- if(connectWith && connected) {
- for (var i = connectWith.length - 1; i >= 0; i--){
- var cur = $(connectWith[i]);
- for (var j = cur.length - 1; j >= 0; j--){
- var inst = $.data(cur[j], 'sortable');
- if(inst && inst != this && !inst.options.disabled) {
- queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not('.ui-sortable-placeholder'), inst]);
- }
- };
- };
- }
-
- queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not('.ui-sortable-placeholder'), this]);
-
- for (var i = queries.length - 1; i >= 0; i--){
- queries[i][0].each(function() {
- items.push(this);
- });
- };
-
- return $(items);
-
- },
-
- _removeCurrentsFromItems: function() {
-
- var list = this.currentItem.find(":data(sortable-item)");
-
- for (var i=0; i < this.items.length; i++) {
-
- for (var j=0; j < list.length; j++) {
- if(list[j] == this.items[i].item[0])
- this.items.splice(i,1);
- };
-
- };
-
- },
-
- _refreshItems: function(event) {
-
- this.items = [];
- this.containers = [this];
- var items = this.items;
- var self = this;
- var queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]];
- var connectWith = this._connectWith();
-
- if(connectWith) {
- for (var i = connectWith.length - 1; i >= 0; i--){
- var cur = $(connectWith[i]);
- for (var j = cur.length - 1; j >= 0; j--){
- var inst = $.data(cur[j], 'sortable');
- if(inst && inst != this && !inst.options.disabled) {
- queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);
- this.containers.push(inst);
- }
- };
- };
- }
-
- for (var i = queries.length - 1; i >= 0; i--) {
- var targetData = queries[i][1];
- var _queries = queries[i][0];
-
- for (var j=0, queriesLength = _queries.length; j < queriesLength; j++) {
- var item = $(_queries[j]);
-
- item.data('sortable-item', targetData); // Data for target checking (mouse manager)
-
- items.push({
- item: item,
- instance: targetData,
- width: 0, height: 0,
- left: 0, top: 0
- });
- };
- };
-
- },
-
- refreshPositions: function(fast) {
-
- //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change
- if(this.offsetParent && this.helper) {
- this.offset.parent = this._getParentOffset();
- }
-
- for (var i = this.items.length - 1; i >= 0; i--){
- var item = this.items[i];
-
- var t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;
-
- if (!fast) {
- item.width = t.outerWidth();
- item.height = t.outerHeight();
- }
-
- var p = t.offset();
- item.left = p.left;
- item.top = p.top;
- };
-
- if(this.options.custom && this.options.custom.refreshContainers) {
- this.options.custom.refreshContainers.call(this);
- } else {
- for (var i = this.containers.length - 1; i >= 0; i--){
- var p = this.containers[i].element.offset();
- this.containers[i].containerCache.left = p.left;
- this.containers[i].containerCache.top = p.top;
- this.containers[i].containerCache.width = this.containers[i].element.outerWidth();
- this.containers[i].containerCache.height = this.containers[i].element.outerHeight();
- };
- }
-
- return this;
- },
-
- _createPlaceholder: function(that) {
-
- var self = that || this, o = self.options;
-
- if(!o.placeholder || o.placeholder.constructor == String) {
- var className = o.placeholder;
- o.placeholder = {
- element: function() {
-
- var el = $(document.createElement(self.currentItem[0].nodeName))
- .addClass(className || self.currentItem[0].className+" ui-sortable-placeholder")
- .removeClass("ui-sortable-helper")[0];
-
- if(!className)
- el.style.visibility = "hidden";
-
- return el;
- },
- update: function(container, p) {
-
- // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that
- // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified
- if(className && !o.forcePlaceholderSize) return;
-
- //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item
- if(!p.height()) { p.height(self.currentItem.innerHeight() - parseInt(self.currentItem.css('paddingTop')||0, 10) - parseInt(self.currentItem.css('paddingBottom')||0, 10)); };
- if(!p.width()) { p.width(self.currentItem.innerWidth() - parseInt(self.currentItem.css('paddingLeft')||0, 10) - parseInt(self.currentItem.css('paddingRight')||0, 10)); };
- }
- };
- }
-
- //Create the placeholder
- self.placeholder = $(o.placeholder.element.call(self.element, self.currentItem));
-
- //Append it after the actual current item
- self.currentItem.after(self.placeholder);
-
- //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
- o.placeholder.update(self, self.placeholder);
-
- },
-
- _contactContainers: function(event) {
-
- // get innermost container that intersects with item
- var innermostContainer = null, innermostIndex = null;
-
-
- for (var i = this.containers.length - 1; i >= 0; i--){
-
- // never consider a container that's located within the item itself
- if($.ui.contains(this.currentItem[0], this.containers[i].element[0]))
- continue;
-
- if(this._intersectsWith(this.containers[i].containerCache)) {
-
- // if we've already found a container and it's more "inner" than this, then continue
- if(innermostContainer && $.ui.contains(this.containers[i].element[0], innermostContainer.element[0]))
- continue;
-
- innermostContainer = this.containers[i];
- innermostIndex = i;
-
- } else {
- // container doesn't intersect. trigger "out" event if necessary
- if(this.containers[i].containerCache.over) {
- this.containers[i]._trigger("out", event, this._uiHash(this));
- this.containers[i].containerCache.over = 0;
- }
- }
-
- }
-
- // if no intersecting containers found, return
- if(!innermostContainer) return;
-
- // move the item into the container if it's not there already
- if(this.containers.length === 1) {
- this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
- this.containers[innermostIndex].containerCache.over = 1;
- } else if(this.currentContainer != this.containers[innermostIndex]) {
-
- //When entering a new container, we will find the item with the least distance and append our item near it
- var dist = 10000; var itemWithLeastDistance = null; var base = this.positionAbs[this.containers[innermostIndex].floating ? 'left' : 'top'];
- for (var j = this.items.length - 1; j >= 0; j--) {
- if(!$.ui.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;
- var cur = this.items[j][this.containers[innermostIndex].floating ? 'left' : 'top'];
- if(Math.abs(cur - base) < dist) {
- dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];
- }
- }
-
- if(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled
- return;
-
- this.currentContainer = this.containers[innermostIndex];
- itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);
- this._trigger("change", event, this._uiHash());
- this.containers[innermostIndex]._trigger("change", event, this._uiHash(this));
-
- //Update the placeholder
- this.options.placeholder.update(this.currentContainer, this.placeholder);
-
- this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
- this.containers[innermostIndex].containerCache.over = 1;
- }
-
-
- },
-
- _createHelper: function(event) {
-
- var o = this.options;
- var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem);
-
- if(!helper.parents('body').length) //Add the helper to the DOM if that didn't happen already
- $(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);
-
- if(helper[0] == this.currentItem[0])
- this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") };
-
- if(helper[0].style.width == '' || o.forceHelperSize) helper.width(this.currentItem.width());
- if(helper[0].style.height == '' || o.forceHelperSize) helper.height(this.currentItem.height());
-
- return helper;
-
- },
-
- _adjustOffsetFromHelper: function(obj) {
- if (typeof obj == 'string') {
- obj = obj.split(' ');
- }
- if ($.isArray(obj)) {
- obj = {left: +obj[0], top: +obj[1] || 0};
- }
- if ('left' in obj) {
- this.offset.click.left = obj.left + this.margins.left;
- }
- if ('right' in obj) {
- this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
- }
- if ('top' in obj) {
- this.offset.click.top = obj.top + this.margins.top;
- }
- if ('bottom' in obj) {
- this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
- }
- },
-
- _getParentOffset: function() {
-
-
- //Get the offsetParent and cache its position
- this.offsetParent = this.helper.offsetParent();
- var po = this.offsetParent.offset();
-
- // This is a special case where we need to modify a offset calculated on start, since the following happened:
- // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
- // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
- // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
- if(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) {
- po.left += this.scrollParent.scrollLeft();
- po.top += this.scrollParent.scrollTop();
- }
-
- if((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information
- || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) //Ugly IE fix
- po = { top: 0, left: 0 };
-
- return {
- top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
- left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
- };
-
- },
-
- _getRelativeOffset: function() {
-
- if(this.cssPosition == "relative") {
- var p = this.currentItem.position();
- return {
- top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
- left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
- };
- } else {
- return { top: 0, left: 0 };
- }
-
- },
-
- _cacheMargins: function() {
- this.margins = {
- left: (parseInt(this.currentItem.css("marginLeft"),10) || 0),
- top: (parseInt(this.currentItem.css("marginTop"),10) || 0)
- };
- },
-
- _cacheHelperProportions: function() {
- this.helperProportions = {
- width: this.helper.outerWidth(),
- height: this.helper.outerHeight()
- };
- },
-
- _setContainment: function() {
-
- var o = this.options;
- if(o.containment == 'parent') o.containment = this.helper[0].parentNode;
- if(o.containment == 'document' || o.containment == 'window') this.containment = [
- 0 - this.offset.relative.left - this.offset.parent.left,
- 0 - this.offset.relative.top - this.offset.parent.top,
- $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,
- ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
- ];
-
- if(!(/^(document|window|parent)$/).test(o.containment)) {
- var ce = $(o.containment)[0];
- var co = $(o.containment).offset();
- var over = ($(ce).css("overflow") != 'hidden');
-
- this.containment = [
- co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,
- co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,
- co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,
- co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top
- ];
- }
-
- },
-
- _convertPositionTo: function(d, pos) {
-
- if(!pos) pos = this.position;
- var mod = d == "absolute" ? 1 : -1;
- var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
-
- return {
- top: (
- pos.top // The absolute mouse position
- + this.offset.relative.top * mod // Only for relative positioned nodes: Relative offset from element to offset parent
- + this.offset.parent.top * mod // The offsetParent's offset without borders (offset + border)
- - ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
- ),
- left: (
- pos.left // The absolute mouse position
- + this.offset.relative.left * mod // Only for relative positioned nodes: Relative offset from element to offset parent
- + this.offset.parent.left * mod // The offsetParent's offset without borders (offset + border)
- - ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
- )
- };
-
- },
-
- _generatePosition: function(event) {
-
- var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
-
- // This is another very weird special case that only happens for relative elements:
- // 1. If the css position is relative
- // 2. and the scroll parent is the document or similar to the offset parent
- // we have to refresh the relative offset during the scroll so there are no jumps
- if(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {
- this.offset.relative = this._getRelativeOffset();
- }
-
- var pageX = event.pageX;
- var pageY = event.pageY;
-
- /*
- * - Position constraining -
- * Constrain the position to a mix of grid, containment.
- */
-
- if(this.originalPosition) { //If we are not dragging yet, we won't check for options
-
- if(this.containment) {
- if(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;
- if(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;
- if(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;
- if(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;
- }
-
- if(o.grid) {
- var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
- pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
-
- var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
- pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
- }
-
- }
-
- return {
- top: (
- pageY // The absolute mouse position
- - this.offset.click.top // Click offset (relative to the element)
- - this.offset.relative.top // Only for relative positioned nodes: Relative offset from element to offset parent
- - this.offset.parent.top // The offsetParent's offset without borders (offset + border)
- + ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
- ),
- left: (
- pageX // The absolute mouse position
- - this.offset.click.left // Click offset (relative to the element)
- - this.offset.relative.left // Only for relative positioned nodes: Relative offset from element to offset parent
- - this.offset.parent.left // The offsetParent's offset without borders (offset + border)
- + ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
- )
- };
-
- },
-
- _rearrange: function(event, i, a, hardRefresh) {
-
- a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling));
-
- //Various things done here to improve the performance:
- // 1. we create a setTimeout, that calls refreshPositions
- // 2. on the instance, we have a counter variable, that get's higher after every append
- // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same
- // 4. this lets only the last addition to the timeout stack through
- this.counter = this.counter ? ++this.counter : 1;
- var self = this, counter = this.counter;
-
- window.setTimeout(function() {
- if(counter == self.counter) self.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove
- },0);
-
- },
-
- _clear: function(event, noPropagation) {
-
- this.reverting = false;
- // We delay all events that have to be triggered to after the point where the placeholder has been removed and
- // everything else normalized again
- var delayedTriggers = [], self = this;
-
- // We first have to update the dom position of the actual currentItem
- // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)
- if(!this._noFinalSort && this.currentItem[0].parentNode) this.placeholder.before(this.currentItem);
- this._noFinalSort = null;
-
- if(this.helper[0] == this.currentItem[0]) {
- for(var i in this._storedCSS) {
- if(this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') this._storedCSS[i] = '';
- }
- this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
- } else {
- this.currentItem.show();
- }
-
- if(this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); });
- if((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed
- if(!$.ui.contains(this.element[0], this.currentItem[0])) { //Node was moved out of the current element
- if(!noPropagation) delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); });
- for (var i = this.containers.length - 1; i >= 0; i--){
- if($.ui.contains(this.containers[i].element[0], this.currentItem[0]) && !noPropagation) {
- delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.containers[i]));
- delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.containers[i]));
- }
- };
- };
-
- //Post events to containers
- for (var i = this.containers.length - 1; i >= 0; i--){
- if(!noPropagation) delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); }; }).call(this, this.containers[i]));
- if(this.containers[i].containerCache.over) {
- delayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); }; }).call(this, this.containers[i]));
- this.containers[i].containerCache.over = 0;
- }
- }
-
- //Do what was originally in plugins
- if(this._storedCursor) $('body').css("cursor", this._storedCursor); //Reset cursor
- if(this._storedOpacity) this.helper.css("opacity", this._storedOpacity); //Reset opacity
- if(this._storedZIndex) this.helper.css("zIndex", this._storedZIndex == 'auto' ? '' : this._storedZIndex); //Reset z-index
-
- this.dragging = false;
- if(this.cancelHelperRemoval) {
- if(!noPropagation) {
- this._trigger("beforeStop", event, this._uiHash());
- for (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events
- this._trigger("stop", event, this._uiHash());
- }
- return false;
- }
-
- if(!noPropagation) this._trigger("beforeStop", event, this._uiHash());
-
- //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
- this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
-
- if(this.helper[0] != this.currentItem[0]) this.helper.remove(); this.helper = null;
-
- if(!noPropagation) {
- for (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events
- this._trigger("stop", event, this._uiHash());
- }
-
- this.fromOutside = false;
- return true;
-
- },
-
- _trigger: function() {
- if ($.Widget.prototype._trigger.apply(this, arguments) === false) {
- this.cancel();
- }
- },
-
- _uiHash: function(inst) {
- var self = inst || this;
- return {
- helper: self.helper,
- placeholder: self.placeholder || $([]),
- position: self.position,
- originalPosition: self.originalPosition,
- offset: self.positionAbs,
- item: self.currentItem,
- sender: inst ? inst.element : null
- };
- }
-
-});
-
-$.extend($.ui.sortable, {
- version: "1.8.2"
-});
-
-})(jQuery);
-/*
- * jQuery UI Effects 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/
- */
-;jQuery.effects || (function($) {
-
-$.effects = {};
-
-
-
-/******************************************************************************/
-/****************************** COLOR ANIMATIONS ******************************/
-/******************************************************************************/
-
-// override the animation for color styles
-$.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor',
- 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'],
-function(i, attr) {
- $.fx.step[attr] = function(fx) {
- if (!fx.colorInit) {
- fx.start = getColor(fx.elem, attr);
- fx.end = getRGB(fx.end);
- fx.colorInit = true;
- }
-
- fx.elem.style[attr] = 'rgb(' +
- Math.max(Math.min(parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0], 10), 255), 0) + ',' +
- Math.max(Math.min(parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1], 10), 255), 0) + ',' +
- Math.max(Math.min(parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2], 10), 255), 0) + ')';
- };
-});
-
-// Color Conversion functions from highlightFade
-// By Blair Mitchelmore
-// http://jquery.offput.ca/highlightFade/
-
-// Parse strings looking for color tuples [255,255,255]
-function getRGB(color) {
- var result;
-
- // Check if we're already dealing with an array of colors
- if ( color && color.constructor == Array && color.length == 3 )
- return color;
-
- // Look for rgb(num,num,num)
- if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
- return [parseInt(result[1],10), parseInt(result[2],10), parseInt(result[3],10)];
-
- // Look for rgb(num%,num%,num%)
- if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
- return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];
-
- // Look for #a0b1c2
- if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
- return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];
-
- // Look for #fff
- if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
- return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];
-
- // Look for rgba(0, 0, 0, 0) == transparent in Safari 3
- if (result = /rgba\(0, 0, 0, 0\)/.exec(color))
- return colors['transparent'];
-
- // Otherwise, we're most likely dealing with a named color
- return colors[$.trim(color).toLowerCase()];
-}
-
-function getColor(elem, attr) {
- var color;
-
- do {
- color = $.curCSS(elem, attr);
-
- // Keep going until we find an element that has color, or we hit the body
- if ( color != '' && color != 'transparent' || $.nodeName(elem, "body") )
- break;
-
- attr = "backgroundColor";
- } while ( elem = elem.parentNode );
-
- return getRGB(color);
-};
-
-// Some named colors to work with
-// From Interface by Stefan Petre
-// http://interface.eyecon.ro/
-
-var colors = {
- aqua:[0,255,255],
- azure:[240,255,255],
- beige:[245,245,220],
- black:[0,0,0],
- blue:[0,0,255],
- brown:[165,42,42],
- cyan:[0,255,255],
- darkblue:[0,0,139],
- darkcyan:[0,139,139],
- darkgrey:[169,169,169],
- darkgreen:[0,100,0],
- darkkhaki:[189,183,107],
- darkmagenta:[139,0,139],
- darkolivegreen:[85,107,47],
- darkorange:[255,140,0],
- darkorchid:[153,50,204],
- darkred:[139,0,0],
- darksalmon:[233,150,122],
- darkviolet:[148,0,211],
- fuchsia:[255,0,255],
- gold:[255,215,0],
- green:[0,128,0],
- indigo:[75,0,130],
- khaki:[240,230,140],
- lightblue:[173,216,230],
- lightcyan:[224,255,255],
- lightgreen:[144,238,144],
- lightgrey:[211,211,211],
- lightpink:[255,182,193],
- lightyellow:[255,255,224],
- lime:[0,255,0],
- magenta:[255,0,255],
- maroon:[128,0,0],
- navy:[0,0,128],
- olive:[128,128,0],
- orange:[255,165,0],
- pink:[255,192,203],
- purple:[128,0,128],
- violet:[128,0,128],
- red:[255,0,0],
- silver:[192,192,192],
- white:[255,255,255],
- yellow:[255,255,0],
- transparent: [255,255,255]
-};
-
-
-
-/******************************************************************************/
-/****************************** CLASS ANIMATIONS ******************************/
-/******************************************************************************/
-
-var classAnimationActions = ['add', 'remove', 'toggle'],
- shorthandStyles = {
- border: 1,
- borderBottom: 1,
- borderColor: 1,
- borderLeft: 1,
- borderRight: 1,
- borderTop: 1,
- borderWidth: 1,
- margin: 1,
- padding: 1
- };
-
-function getElementStyles() {
- var style = document.defaultView
- ? document.defaultView.getComputedStyle(this, null)
- : this.currentStyle,
- newStyle = {},
- key,
- camelCase;
-
- // webkit enumerates style porperties
- if (style && style.length && style[0] && style[style[0]]) {
- var len = style.length;
- while (len--) {
- key = style[len];
- if (typeof style[key] == 'string') {
- camelCase = key.replace(/\-(\w)/g, function(all, letter){
- return letter.toUpperCase();
- });
- newStyle[camelCase] = style[key];
- }
- }
- } else {
- for (key in style) {
- if (typeof style[key] === 'string') {
- newStyle[key] = style[key];
- }
- }
- }
-
- return newStyle;
-}
-
-function filterStyles(styles) {
- var name, value;
- for (name in styles) {
- value = styles[name];
- if (
- // ignore null and undefined values
- value == null ||
- // ignore functions (when does this occur?)
- $.isFunction(value) ||
- // shorthand styles that need to be expanded
- name in shorthandStyles ||
- // ignore scrollbars (break in IE)
- (/scrollbar/).test(name) ||
-
- // only colors or values that can be converted to numbers
- (!(/color/i).test(name) && isNaN(parseFloat(value)))
- ) {
- delete styles[name];
- }
- }
-
- return styles;
-}
-
-function styleDifference(oldStyle, newStyle) {
- var diff = { _: 0 }, // http://dev.jquery.com/ticket/5459
- name;
-
- for (name in newStyle) {
- if (oldStyle[name] != newStyle[name]) {
- diff[name] = newStyle[name];
- }
- }
-
- return diff;
-}
-
-$.effects.animateClass = function(value, duration, easing, callback) {
- if ($.isFunction(easing)) {
- callback = easing;
- easing = null;
- }
-
- return this.each(function() {
-
- var that = $(this),
- originalStyleAttr = that.attr('style') || ' ',
- originalStyle = filterStyles(getElementStyles.call(this)),
- newStyle,
- className = that.attr('className');
-
- $.each(classAnimationActions, function(i, action) {
- if (value[action]) {
- that[action + 'Class'](value[action]);
- }
- });
- newStyle = filterStyles(getElementStyles.call(this));
- that.attr('className', className);
-
- that.animate(styleDifference(originalStyle, newStyle), duration, easing, function() {
- $.each(classAnimationActions, function(i, action) {
- if (value[action]) { that[action + 'Class'](value[action]); }
- });
- // work around bug in IE by clearing the cssText before setting it
- if (typeof that.attr('style') == 'object') {
- that.attr('style').cssText = '';
- that.attr('style').cssText = originalStyleAttr;
- } else {
- that.attr('style', originalStyleAttr);
- }
- if (callback) { callback.apply(this, arguments); }
- });
- });
-};
-
-$.fn.extend({
- _addClass: $.fn.addClass,
- addClass: function(classNames, speed, easing, callback) {
- return speed ? $.effects.animateClass.apply(this, [{ add: classNames },speed,easing,callback]) : this._addClass(classNames);
- },
-
- _removeClass: $.fn.removeClass,
- removeClass: function(classNames,speed,easing,callback) {
- return speed ? $.effects.animateClass.apply(this, [{ remove: classNames },speed,easing,callback]) : this._removeClass(classNames);
- },
-
- _toggleClass: $.fn.toggleClass,
- toggleClass: function(classNames, force, speed, easing, callback) {
- if ( typeof force == "boolean" || force === undefined ) {
- if ( !speed ) {
- // without speed parameter;
- return this._toggleClass(classNames, force);
- } else {
- return $.effects.animateClass.apply(this, [(force?{add:classNames}:{remove:classNames}),speed,easing,callback]);
- }
- } else {
- // without switch parameter;
- return $.effects.animateClass.apply(this, [{ toggle: classNames },force,speed,easing]);
- }
- },
-
- switchClass: function(remove,add,speed,easing,callback) {
- return $.effects.animateClass.apply(this, [{ add: add, remove: remove },speed,easing,callback]);
- }
-});
-
-
-
-/******************************************************************************/
-/*********************************** EFFECTS **********************************/
-/******************************************************************************/
-
-$.extend($.effects, {
- version: "1.8.2",
-
- // Saves a set of properties in a data storage
- save: function(element, set) {
- for(var i=0; i < set.length; i++) {
- if(set[i] !== null) element.data("ec.storage."+set[i], element[0].style[set[i]]);
- }
- },
-
- // Restores a set of previously saved properties from a data storage
- restore: function(element, set) {
- for(var i=0; i < set.length; i++) {
- if(set[i] !== null) element.css(set[i], element.data("ec.storage."+set[i]));
- }
- },
-
- setMode: function(el, mode) {
- if (mode == 'toggle') mode = el.is(':hidden') ? 'show' : 'hide'; // Set for toggle
- return mode;
- },
-
- getBaseline: function(origin, original) { // Translates a [top,left] array into a baseline value
- // this should be a little more flexible in the future to handle a string & hash
- var y, x;
- switch (origin[0]) {
- case 'top': y = 0; break;
- case 'middle': y = 0.5; break;
- case 'bottom': y = 1; break;
- default: y = origin[0] / original.height;
- };
- switch (origin[1]) {
- case 'left': x = 0; break;
- case 'center': x = 0.5; break;
- case 'right': x = 1; break;
- default: x = origin[1] / original.width;
- };
- return {x: x, y: y};
- },
-
- // Wraps the element around a wrapper that copies position properties
- createWrapper: function(element) {
-
- // if the element is already wrapped, return it
- if (element.parent().is('.ui-effects-wrapper')) {
- return element.parent();
- }
-
- // wrap the element
- var props = {
- width: element.outerWidth(true),
- height: element.outerHeight(true),
- 'float': element.css('float')
- },
- wrapper = $('<div></div>')
- .addClass('ui-effects-wrapper')
- .css({
- fontSize: '100%',
- background: 'transparent',
- border: 'none',
- margin: 0,
- padding: 0
- });
-
- element.wrap(wrapper);
- wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually loose the reference to the wrapped element
-
- // transfer positioning properties to the wrapper
- if (element.css('position') == 'static') {
- wrapper.css({ position: 'relative' });
- element.css({ position: 'relative' });
- } else {
- $.extend(props, {
- position: element.css('position'),
- zIndex: element.css('z-index')
- });
- $.each(['top', 'left', 'bottom', 'right'], function(i, pos) {
- props[pos] = element.css(pos);
- if (isNaN(parseInt(props[pos], 10))) {
- props[pos] = 'auto';
- }
- });
- element.css({position: 'relative', top: 0, left: 0 });
- }
-
- return wrapper.css(props).show();
- },
-
- removeWrapper: function(element) {
- if (element.parent().is('.ui-effects-wrapper'))
- return element.parent().replaceWith(element);
- return element;
- },
-
- setTransition: function(element, list, factor, value) {
- value = value || {};
- $.each(list, function(i, x){
- unit = element.cssUnit(x);
- if (unit[0] > 0) value[x] = unit[0] * factor + unit[1];
- });
- return value;
- }
-});
-
-
-function _normalizeArguments(effect, options, speed, callback) {
- // shift params for method overloading
- if (typeof effect == 'object') {
- callback = options;
- speed = null;
- options = effect;
- effect = options.effect;
- }
- if ($.isFunction(options)) {
- callback = options;
- speed = null;
- options = {};
- }
- if ($.isFunction(speed)) {
- callback = speed;
- speed = null;
- }
- if (typeof options == 'number' || $.fx.speeds[options]) {
- callback = speed;
- speed = options;
- options = {};
- }
-
- options = options || {};
-
- speed = speed || options.duration;
- speed = $.fx.off ? 0 : typeof speed == 'number'
- ? speed : $.fx.speeds[speed] || $.fx.speeds._default;
-
- callback = callback || options.complete;
-
- return [effect, options, speed, callback];
-}
-
-$.fn.extend({
- effect: function(effect, options, speed, callback) {
- var args = _normalizeArguments.apply(this, arguments),
- // TODO: make effects takes actual parameters instead of a hash
- args2 = {
- options: args[1],
- duration: args[2],
- callback: args[3]
- },
- effectMethod = $.effects[effect];
-
- return effectMethod && !$.fx.off ? effectMethod.call(this, args2) : this;
- },
-
- _show: $.fn.show,
- show: function(speed) {
- if (!speed || typeof speed == 'number' || $.fx.speeds[speed]) {
- return this._show.apply(this, arguments);
- } else {
- var args = _normalizeArguments.apply(this, arguments);
- args[1].mode = 'show';
- return this.effect.apply(this, args);
- }
- },
-
- _hide: $.fn.hide,
- hide: function(speed) {
- if (!speed || typeof speed == 'number' || $.fx.speeds[speed]) {
- return this._hide.apply(this, arguments);
- } else {
- var args = _normalizeArguments.apply(this, arguments);
- args[1].mode = 'hide';
- return this.effect.apply(this, args);
- }
- },
-
- // jQuery core overloads toggle and create _toggle
- __toggle: $.fn.toggle,
- toggle: function(speed) {
- if (!speed || typeof speed == 'number' || $.fx.speeds[speed] ||
- typeof speed == 'boolean' || $.isFunction(speed)) {
- return this.__toggle.apply(this, arguments);
- } else {
- var args = _normalizeArguments.apply(this, arguments);
- args[1].mode = 'toggle';
- return this.effect.apply(this, args);
- }
- },
-
- // helper functions
- cssUnit: function(key) {
- var style = this.css(key), val = [];
- $.each( ['em','px','%','pt'], function(i, unit){
- if(style.indexOf(unit) > 0)
- val = [parseFloat(style), unit];
- });
- return val;
- }
-});
-
-
-
-/******************************************************************************/
-/*********************************** EASING ***********************************/
-/******************************************************************************/
-
-/*
- * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
- *
- * Uses the built in easing capabilities added In jQuery 1.1
- * to offer multiple easing options
- *
- * TERMS OF USE - jQuery Easing
- *
- * Open source under the BSD License.
- *
- * Copyright 2008 George McGinley Smith
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * Neither the name of the author nor the names of contributors may be used to endorse
- * or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- *
-*/
-
-// t: current time, b: begInnIng value, c: change In value, d: duration
-$.easing.jswing = $.easing.swing;
-
-$.extend($.easing,
-{
- def: 'easeOutQuad',
- swing: function (x, t, b, c, d) {
- //alert($.easing.default);
- return $.easing[$.easing.def](x, t, b, c, d);
- },
- easeInQuad: function (x, t, b, c, d) {
- return c*(t/=d)*t + b;
- },
- easeOutQuad: function (x, t, b, c, d) {
- return -c *(t/=d)*(t-2) + b;
- },
- easeInOutQuad: function (x, t, b, c, d) {
- if ((t/=d/2) < 1) return c/2*t*t + b;
- return -c/2 * ((--t)*(t-2) - 1) + b;
- },
- easeInCubic: function (x, t, b, c, d) {
- return c*(t/=d)*t*t + b;
- },
- easeOutCubic: function (x, t, b, c, d) {
- return c*((t=t/d-1)*t*t + 1) + b;
- },
- easeInOutCubic: function (x, t, b, c, d) {
- if ((t/=d/2) < 1) return c/2*t*t*t + b;
- return c/2*((t-=2)*t*t + 2) + b;
- },
- easeInQuart: function (x, t, b, c, d) {
- return c*(t/=d)*t*t*t + b;
- },
- easeOutQuart: function (x, t, b, c, d) {
- return -c * ((t=t/d-1)*t*t*t - 1) + b;
- },
- easeInOutQuart: function (x, t, b, c, d) {
- if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
- return -c/2 * ((t-=2)*t*t*t - 2) + b;
- },
- easeInQuint: function (x, t, b, c, d) {
- return c*(t/=d)*t*t*t*t + b;
- },
- easeOutQuint: function (x, t, b, c, d) {
- return c*((t=t/d-1)*t*t*t*t + 1) + b;
- },
- easeInOutQuint: function (x, t, b, c, d) {
- if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
- return c/2*((t-=2)*t*t*t*t + 2) + b;
- },
- easeInSine: function (x, t, b, c, d) {
- return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
- },
- easeOutSine: function (x, t, b, c, d) {
- return c * Math.sin(t/d * (Math.PI/2)) + b;
- },
- easeInOutSine: function (x, t, b, c, d) {
- return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
- },
- easeInExpo: function (x, t, b, c, d) {
- return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
- },
- easeOutExpo: function (x, t, b, c, d) {
- return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
- },
- easeInOutExpo: function (x, t, b, c, d) {
- if (t==0) return b;
- if (t==d) return b+c;
- if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
- return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
- },
- easeInCirc: function (x, t, b, c, d) {
- return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
- },
- easeOutCirc: function (x, t, b, c, d) {
- return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
- },
- easeInOutCirc: function (x, t, b, c, d) {
- if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
- return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
- },
- easeInElastic: function (x, t, b, c, d) {
- var s=1.70158;var p=0;var a=c;
- if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
- if (a < Math.abs(c)) { a=c; var s=p/4; }
- else var s = p/(2*Math.PI) * Math.asin (c/a);
- return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
- },
- easeOutElastic: function (x, t, b, c, d) {
- var s=1.70158;var p=0;var a=c;
- if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
- if (a < Math.abs(c)) { a=c; var s=p/4; }
- else var s = p/(2*Math.PI) * Math.asin (c/a);
- return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
- },
- easeInOutElastic: function (x, t, b, c, d) {
- var s=1.70158;var p=0;var a=c;
- if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
- if (a < Math.abs(c)) { a=c; var s=p/4; }
- else var s = p/(2*Math.PI) * Math.asin (c/a);
- if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
- return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
- },
- easeInBack: function (x, t, b, c, d, s) {
- if (s == undefined) s = 1.70158;
- return c*(t/=d)*t*((s+1)*t - s) + b;
- },
- easeOutBack: function (x, t, b, c, d, s) {
- if (s == undefined) s = 1.70158;
- return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
- },
- easeInOutBack: function (x, t, b, c, d, s) {
- if (s == undefined) s = 1.70158;
- if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
- return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
- },
- easeInBounce: function (x, t, b, c, d) {
- return c - $.easing.easeOutBounce (x, d-t, 0, c, d) + b;
- },
- easeOutBounce: function (x, t, b, c, d) {
- if ((t/=d) < (1/2.75)) {
- return c*(7.5625*t*t) + b;
- } else if (t < (2/2.75)) {
- return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
- } else if (t < (2.5/2.75)) {
- return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
- } else {
- return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
- }
- },
- easeInOutBounce: function (x, t, b, c, d) {
- if (t < d/2) return $.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
- return $.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
- }
-});
-
-/*
- *
- * TERMS OF USE - EASING EQUATIONS
- *
- * Open source under the BSD License.
- *
- * Copyright 2001 Robert Penner
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * Neither the name of the author nor the names of contributors may be used to endorse
- * or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-})(jQuery);
-/*
- * jQuery UI Effects Blind 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/Blind
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function($) {
-
-$.effects.blind = function(o) {
-
- return this.queue(function() {
-
- // Create element
- var el = $(this), props = ['position','top','left'];
-
- // Set options
- var mode = $.effects.setMode(el, o.options.mode || 'hide'); // Set Mode
- var direction = o.options.direction || 'vertical'; // Default direction
-
- // Adjust
- $.effects.save(el, props); el.show(); // Save & Show
- var wrapper = $.effects.createWrapper(el).css({overflow:'hidden'}); // Create Wrapper
- var ref = (direction == 'vertical') ? 'height' : 'width';
- var distance = (direction == 'vertical') ? wrapper.height() : wrapper.width();
- if(mode == 'show') wrapper.css(ref, 0); // Shift
-
- // Animation
- var animation = {};
- animation[ref] = mode == 'show' ? distance : 0;
-
- // Animate
- wrapper.animate(animation, o.duration, o.options.easing, function() {
- if(mode == 'hide') el.hide(); // Hide
- $.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
- if(o.callback) o.callback.apply(el[0], arguments); // Callback
- el.dequeue();
- });
-
- });
-
-};
-
-})(jQuery);
-/*
- * jQuery UI Effects Bounce 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/Bounce
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function($) {
-
-$.effects.bounce = function(o) {
-
- return this.queue(function() {
-
- // Create element
- var el = $(this), props = ['position','top','left'];
-
- // Set options
- var mode = $.effects.setMode(el, o.options.mode || 'effect'); // Set Mode
- var direction = o.options.direction || 'up'; // Default direction
- var distance = o.options.distance || 20; // Default distance
- var times = o.options.times || 5; // Default # of times
- var speed = o.duration || 250; // Default speed per bounce
- if (/show|hide/.test(mode)) props.push('opacity'); // Avoid touching opacity to prevent clearType and PNG issues in IE
-
- // Adjust
- $.effects.save(el, props); el.show(); // Save & Show
- $.effects.createWrapper(el); // Create Wrapper
- var ref = (direction == 'up' || direction == 'down') ? 'top' : 'left';
- var motion = (direction == 'up' || direction == 'left') ? 'pos' : 'neg';
- var distance = o.options.distance || (ref == 'top' ? el.outerHeight({margin:true}) / 3 : el.outerWidth({margin:true}) / 3);
- if (mode == 'show') el.css('opacity', 0).css(ref, motion == 'pos' ? -distance : distance); // Shift
- if (mode == 'hide') distance = distance / (times * 2);
- if (mode != 'hide') times--;
-
- // Animate
- if (mode == 'show') { // Show Bounce
- var animation = {opacity: 1};
- animation[ref] = (motion == 'pos' ? '+=' : '-=') + distance;
- el.animate(animation, speed / 2, o.options.easing);
- distance = distance / 2;
- times--;
- };
- for (var i = 0; i < times; i++) { // Bounces
- var animation1 = {}, animation2 = {};
- animation1[ref] = (motion == 'pos' ? '-=' : '+=') + distance;
- animation2[ref] = (motion == 'pos' ? '+=' : '-=') + distance;
- el.animate(animation1, speed / 2, o.options.easing).animate(animation2, speed / 2, o.options.easing);
- distance = (mode == 'hide') ? distance * 2 : distance / 2;
- };
- if (mode == 'hide') { // Last Bounce
- var animation = {opacity: 0};
- animation[ref] = (motion == 'pos' ? '-=' : '+=') + distance;
- el.animate(animation, speed / 2, o.options.easing, function(){
- el.hide(); // Hide
- $.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
- if(o.callback) o.callback.apply(this, arguments); // Callback
- });
- } else {
- var animation1 = {}, animation2 = {};
- animation1[ref] = (motion == 'pos' ? '-=' : '+=') + distance;
- animation2[ref] = (motion == 'pos' ? '+=' : '-=') + distance;
- el.animate(animation1, speed / 2, o.options.easing).animate(animation2, speed / 2, o.options.easing, function(){
- $.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
- if(o.callback) o.callback.apply(this, arguments); // Callback
- });
- };
- el.queue('fx', function() { el.dequeue(); });
- el.dequeue();
- });
-
-};
-
-})(jQuery);
-/*
- * jQuery UI Effects Clip 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/Clip
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function($) {
-
-$.effects.clip = function(o) {
-
- return this.queue(function() {
-
- // Create element
- var el = $(this), props = ['position','top','left','height','width'];
-
- // Set options
- var mode = $.effects.setMode(el, o.options.mode || 'hide'); // Set Mode
- var direction = o.options.direction || 'vertical'; // Default direction
-
- // Adjust
- $.effects.save(el, props); el.show(); // Save & Show
- var wrapper = $.effects.createWrapper(el).css({overflow:'hidden'}); // Create Wrapper
- var animate = el[0].tagName == 'IMG' ? wrapper : el;
- var ref = {
- size: (direction == 'vertical') ? 'height' : 'width',
- position: (direction == 'vertical') ? 'top' : 'left'
- };
- var distance = (direction == 'vertical') ? animate.height() : animate.width();
- if(mode == 'show') { animate.css(ref.size, 0); animate.css(ref.position, distance / 2); } // Shift
-
- // Animation
- var animation = {};
- animation[ref.size] = mode == 'show' ? distance : 0;
- animation[ref.position] = mode == 'show' ? 0 : distance / 2;
-
- // Animate
- animate.animate(animation, { queue: false, duration: o.duration, easing: o.options.easing, complete: function() {
- if(mode == 'hide') el.hide(); // Hide
- $.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
- if(o.callback) o.callback.apply(el[0], arguments); // Callback
- el.dequeue();
- }});
-
- });
-
-};
-
-})(jQuery);
-/*
- * jQuery UI Effects Drop 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/Drop
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function($) {
-
-$.effects.drop = function(o) {
-
- return this.queue(function() {
-
- // Create element
- var el = $(this), props = ['position','top','left','opacity'];
-
- // Set options
- var mode = $.effects.setMode(el, o.options.mode || 'hide'); // Set Mode
- var direction = o.options.direction || 'left'; // Default Direction
-
- // Adjust
- $.effects.save(el, props); el.show(); // Save & Show
- $.effects.createWrapper(el); // Create Wrapper
- var ref = (direction == 'up' || direction == 'down') ? 'top' : 'left';
- var motion = (direction == 'up' || direction == 'left') ? 'pos' : 'neg';
- var distance = o.options.distance || (ref == 'top' ? el.outerHeight({margin:true}) / 2 : el.outerWidth({margin:true}) / 2);
- if (mode == 'show') el.css('opacity', 0).css(ref, motion == 'pos' ? -distance : distance); // Shift
-
- // Animation
- var animation = {opacity: mode == 'show' ? 1 : 0};
- animation[ref] = (mode == 'show' ? (motion == 'pos' ? '+=' : '-=') : (motion == 'pos' ? '-=' : '+=')) + distance;
-
- // Animate
- el.animate(animation, { queue: false, duration: o.duration, easing: o.options.easing, complete: function() {
- if(mode == 'hide') el.hide(); // Hide
- $.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
- if(o.callback) o.callback.apply(this, arguments); // Callback
- el.dequeue();
- }});
-
- });
-
-};
-
-})(jQuery);
-/*
- * jQuery UI Effects Explode 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/Explode
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function($) {
-
-$.effects.explode = function(o) {
-
- return this.queue(function() {
-
- var rows = o.options.pieces ? Math.round(Math.sqrt(o.options.pieces)) : 3;
- var cells = o.options.pieces ? Math.round(Math.sqrt(o.options.pieces)) : 3;
-
- o.options.mode = o.options.mode == 'toggle' ? ($(this).is(':visible') ? 'hide' : 'show') : o.options.mode;
- var el = $(this).show().css('visibility', 'hidden');
- var offset = el.offset();
-
- //Substract the margins - not fixing the problem yet.
- offset.top -= parseInt(el.css("marginTop"),10) || 0;
- offset.left -= parseInt(el.css("marginLeft"),10) || 0;
-
- var width = el.outerWidth(true);
- var height = el.outerHeight(true);
-
- for(var i=0;i<rows;i++) { // =
- for(var j=0;j<cells;j++) { // ||
- el
- .clone()
- .appendTo('body')
- .wrap('<div></div>')
- .css({
- position: 'absolute',
- visibility: 'visible',
- left: -j*(width/cells),
- top: -i*(height/rows)
- })
- .parent()
- .addClass('ui-effects-explode')
- .css({
- position: 'absolute',
- overflow: 'hidden',
- width: width/cells,
- height: height/rows,
- left: offset.left + j*(width/cells) + (o.options.mode == 'show' ? (j-Math.floor(cells/2))*(width/cells) : 0),
- top: offset.top + i*(height/rows) + (o.options.mode == 'show' ? (i-Math.floor(rows/2))*(height/rows) : 0),
- opacity: o.options.mode == 'show' ? 0 : 1
- }).animate({
- left: offset.left + j*(width/cells) + (o.options.mode == 'show' ? 0 : (j-Math.floor(cells/2))*(width/cells)),
- top: offset.top + i*(height/rows) + (o.options.mode == 'show' ? 0 : (i-Math.floor(rows/2))*(height/rows)),
- opacity: o.options.mode == 'show' ? 1 : 0
- }, o.duration || 500);
- }
- }
-
- // Set a timeout, to call the callback approx. when the other animations have finished
- setTimeout(function() {
-
- o.options.mode == 'show' ? el.css({ visibility: 'visible' }) : el.css({ visibility: 'visible' }).hide();
- if(o.callback) o.callback.apply(el[0]); // Callback
- el.dequeue();
-
- $('div.ui-effects-explode').remove();
-
- }, o.duration || 500);
-
-
- });
-
-};
-
-})(jQuery);
-/*
- * jQuery UI Effects Fade 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/Fade
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function($) {
-
-$.effects.fade = function(o) {
- return this.queue(function() {
- var elem = $(this),
- mode = $.effects.setMode(elem, o.options.mode || 'hide');
-
- elem.animate({ opacity: mode }, {
- queue: false,
- duration: o.duration,
- easing: o.options.easing,
- complete: function() {
- (o.callback && o.callback.apply(this, arguments));
- elem.dequeue();
- }
- });
- });
-};
-
-})(jQuery);
-/*
- * jQuery UI Effects Fold 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/Fold
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function($) {
-
-$.effects.fold = function(o) {
-
- return this.queue(function() {
-
- // Create element
- var el = $(this), props = ['position','top','left'];
-
- // Set options
- var mode = $.effects.setMode(el, o.options.mode || 'hide'); // Set Mode
- var size = o.options.size || 15; // Default fold size
- var horizFirst = !(!o.options.horizFirst); // Ensure a boolean value
- var duration = o.duration ? o.duration / 2 : $.fx.speeds._default / 2;
-
- // Adjust
- $.effects.save(el, props); el.show(); // Save & Show
- var wrapper = $.effects.createWrapper(el).css({overflow:'hidden'}); // Create Wrapper
- var widthFirst = ((mode == 'show') != horizFirst);
- var ref = widthFirst ? ['width', 'height'] : ['height', 'width'];
- var distance = widthFirst ? [wrapper.width(), wrapper.height()] : [wrapper.height(), wrapper.width()];
- var percent = /([0-9]+)%/.exec(size);
- if(percent) size = parseInt(percent[1],10) / 100 * distance[mode == 'hide' ? 0 : 1];
- if(mode == 'show') wrapper.css(horizFirst ? {height: 0, width: size} : {height: size, width: 0}); // Shift
-
- // Animation
- var animation1 = {}, animation2 = {};
- animation1[ref[0]] = mode == 'show' ? distance[0] : size;
- animation2[ref[1]] = mode == 'show' ? distance[1] : 0;
-
- // Animate
- wrapper.animate(animation1, duration, o.options.easing)
- .animate(animation2, duration, o.options.easing, function() {
- if(mode == 'hide') el.hide(); // Hide
- $.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
- if(o.callback) o.callback.apply(el[0], arguments); // Callback
- el.dequeue();
- });
-
- });
-
-};
-
-})(jQuery);
-/*
- * jQuery UI Effects Highlight 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/Highlight
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function($) {
-
-$.effects.highlight = function(o) {
- return this.queue(function() {
- var elem = $(this),
- props = ['backgroundImage', 'backgroundColor', 'opacity'],
- mode = $.effects.setMode(elem, o.options.mode || 'show'),
- animation = {
- backgroundColor: elem.css('backgroundColor')
- };
-
- if (mode == 'hide') {
- animation.opacity = 0;
- }
-
- $.effects.save(elem, props);
- elem
- .show()
- .css({
- backgroundImage: 'none',
- backgroundColor: o.options.color || '#ffff99'
- })
- .animate(animation, {
- queue: false,
- duration: o.duration,
- easing: o.options.easing,
- complete: function() {
- (mode == 'hide' && elem.hide());
- $.effects.restore(elem, props);
- (mode == 'show' && !$.support.opacity && this.style.removeAttribute('filter'));
- (o.callback && o.callback.apply(this, arguments));
- elem.dequeue();
- }
- });
- });
-};
-
-})(jQuery);
-/*
- * jQuery UI Effects Pulsate 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/Pulsate
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function($) {
-
-$.effects.pulsate = function(o) {
- return this.queue(function() {
- var elem = $(this),
- mode = $.effects.setMode(elem, o.options.mode || 'show');
- times = ((o.options.times || 5) * 2) - 1;
- duration = o.duration ? o.duration / 2 : $.fx.speeds._default / 2,
- isVisible = elem.is(':visible'),
- animateTo = 0;
-
- if (!isVisible) {
- elem.css('opacity', 0).show();
- animateTo = 1;
- }
-
- if ((mode == 'hide' && isVisible) || (mode == 'show' && !isVisible)) {
- times--;
- }
-
- for (var i = 0; i < times; i++) {
- elem.animate({ opacity: animateTo }, duration, o.options.easing);
- animateTo = (animateTo + 1) % 2;
- }
-
- elem.animate({ opacity: animateTo }, duration, o.options.easing, function() {
- if (animateTo == 0) {
- elem.hide();
- }
- (o.callback && o.callback.apply(this, arguments));
- });
-
- elem
- .queue('fx', function() { elem.dequeue(); })
- .dequeue();
- });
-};
-
-})(jQuery);
-/*
- * jQuery UI Effects Scale 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/Scale
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function($) {
-
-$.effects.puff = function(o) {
- return this.queue(function() {
- var elem = $(this),
- mode = $.effects.setMode(elem, o.options.mode || 'hide'),
- percent = parseInt(o.options.percent, 10) || 150,
- factor = percent / 100,
- original = { height: elem.height(), width: elem.width() };
-
- $.extend(o.options, {
- fade: true,
- mode: mode,
- percent: mode == 'hide' ? percent : 100,
- from: mode == 'hide'
- ? original
- : {
- height: original.height * factor,
- width: original.width * factor
- }
- });
-
- elem.effect('scale', o.options, o.duration, o.callback);
- elem.dequeue();
- });
-};
-
-$.effects.scale = function(o) {
-
- return this.queue(function() {
-
- // Create element
- var el = $(this);
-
- // Set options
- var options = $.extend(true, {}, o.options);
- var mode = $.effects.setMode(el, o.options.mode || 'effect'); // Set Mode
- var percent = parseInt(o.options.percent,10) || (parseInt(o.options.percent,10) == 0 ? 0 : (mode == 'hide' ? 0 : 100)); // Set default scaling percent
- var direction = o.options.direction || 'both'; // Set default axis
- var origin = o.options.origin; // The origin of the scaling
- if (mode != 'effect') { // Set default origin and restore for show/hide
- options.origin = origin || ['middle','center'];
- options.restore = true;
- }
- var original = {height: el.height(), width: el.width()}; // Save original
- el.from = o.options.from || (mode == 'show' ? {height: 0, width: 0} : original); // Default from state
-
- // Adjust
- var factor = { // Set scaling factor
- y: direction != 'horizontal' ? (percent / 100) : 1,
- x: direction != 'vertical' ? (percent / 100) : 1
- };
- el.to = {height: original.height * factor.y, width: original.width * factor.x}; // Set to state
-
- if (o.options.fade) { // Fade option to support puff
- if (mode == 'show') {el.from.opacity = 0; el.to.opacity = 1;};
- if (mode == 'hide') {el.from.opacity = 1; el.to.opacity = 0;};
- };
-
- // Animation
- options.from = el.from; options.to = el.to; options.mode = mode;
-
- // Animate
- el.effect('size', options, o.duration, o.callback);
- el.dequeue();
- });
-
-};
-
-$.effects.size = function(o) {
-
- return this.queue(function() {
-
- // Create element
- var el = $(this), props = ['position','top','left','width','height','overflow','opacity'];
- var props1 = ['position','top','left','overflow','opacity']; // Always restore
- var props2 = ['width','height','overflow']; // Copy for children
- var cProps = ['fontSize'];
- var vProps = ['borderTopWidth', 'borderBottomWidth', 'paddingTop', 'paddingBottom'];
- var hProps = ['borderLeftWidth', 'borderRightWidth', 'paddingLeft', 'paddingRight'];
-
- // Set options
- var mode = $.effects.setMode(el, o.options.mode || 'effect'); // Set Mode
- var restore = o.options.restore || false; // Default restore
- var scale = o.options.scale || 'both'; // Default scale mode
- var origin = o.options.origin; // The origin of the sizing
- var original = {height: el.height(), width: el.width()}; // Save original
- el.from = o.options.from || original; // Default from state
- el.to = o.options.to || original; // Default to state
- // Adjust
- if (origin) { // Calculate baseline shifts
- var baseline = $.effects.getBaseline(origin, original);
- el.from.top = (original.height - el.from.height) * baseline.y;
- el.from.left = (original.width - el.from.width) * baseline.x;
- el.to.top = (original.height - el.to.height) * baseline.y;
- el.to.left = (original.width - el.to.width) * baseline.x;
- };
- var factor = { // Set scaling factor
- from: {y: el.from.height / original.height, x: el.from.width / original.width},
- to: {y: el.to.height / original.height, x: el.to.width / original.width}
- };
- if (scale == 'box' || scale == 'both') { // Scale the css box
- if (factor.from.y != factor.to.y) { // Vertical props scaling
- props = props.concat(vProps);
- el.from = $.effects.setTransition(el, vProps, factor.from.y, el.from);
- el.to = $.effects.setTransition(el, vProps, factor.to.y, el.to);
- };
- if (factor.from.x != factor.to.x) { // Horizontal props scaling
- props = props.concat(hProps);
- el.from = $.effects.setTransition(el, hProps, factor.from.x, el.from);
- el.to = $.effects.setTransition(el, hProps, factor.to.x, el.to);
- };
- };
- if (scale == 'content' || scale == 'both') { // Scale the content
- if (factor.from.y != factor.to.y) { // Vertical props scaling
- props = props.concat(cProps);
- el.from = $.effects.setTransition(el, cProps, factor.from.y, el.from);
- el.to = $.effects.setTransition(el, cProps, factor.to.y, el.to);
- };
- };
- $.effects.save(el, restore ? props : props1); el.show(); // Save & Show
- $.effects.createWrapper(el); // Create Wrapper
- el.css('overflow','hidden').css(el.from); // Shift
-
- // Animate
- if (scale == 'content' || scale == 'both') { // Scale the children
- vProps = vProps.concat(['marginTop','marginBottom']).concat(cProps); // Add margins/font-size
- hProps = hProps.concat(['marginLeft','marginRight']); // Add margins
- props2 = props.concat(vProps).concat(hProps); // Concat
- el.find("*[width]").each(function(){
- child = $(this);
- if (restore) $.effects.save(child, props2);
- var c_original = {height: child.height(), width: child.width()}; // Save original
- child.from = {height: c_original.height * factor.from.y, width: c_original.width * factor.from.x};
- child.to = {height: c_original.height * factor.to.y, width: c_original.width * factor.to.x};
- if (factor.from.y != factor.to.y) { // Vertical props scaling
- child.from = $.effects.setTransition(child, vProps, factor.from.y, child.from);
- child.to = $.effects.setTransition(child, vProps, factor.to.y, child.to);
- };
- if (factor.from.x != factor.to.x) { // Horizontal props scaling
- child.from = $.effects.setTransition(child, hProps, factor.from.x, child.from);
- child.to = $.effects.setTransition(child, hProps, factor.to.x, child.to);
- };
- child.css(child.from); // Shift children
- child.animate(child.to, o.duration, o.options.easing, function(){
- if (restore) $.effects.restore(child, props2); // Restore children
- }); // Animate children
- });
- };
-
- // Animate
- el.animate(el.to, { queue: false, duration: o.duration, easing: o.options.easing, complete: function() {
- if (el.to.opacity === 0) {
- el.css('opacity', el.from.opacity);
- }
- if(mode == 'hide') el.hide(); // Hide
- $.effects.restore(el, restore ? props : props1); $.effects.removeWrapper(el); // Restore
- if(o.callback) o.callback.apply(this, arguments); // Callback
- el.dequeue();
- }});
-
- });
-
-};
-
-})(jQuery);
-/*
- * jQuery UI Effects Shake 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/Shake
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function($) {
-
-$.effects.shake = function(o) {
-
- return this.queue(function() {
-
- // Create element
- var el = $(this), props = ['position','top','left'];
-
- // Set options
- var mode = $.effects.setMode(el, o.options.mode || 'effect'); // Set Mode
- var direction = o.options.direction || 'left'; // Default direction
- var distance = o.options.distance || 20; // Default distance
- var times = o.options.times || 3; // Default # of times
- var speed = o.duration || o.options.duration || 140; // Default speed per shake
-
- // Adjust
- $.effects.save(el, props); el.show(); // Save & Show
- $.effects.createWrapper(el); // Create Wrapper
- var ref = (direction == 'up' || direction == 'down') ? 'top' : 'left';
- var motion = (direction == 'up' || direction == 'left') ? 'pos' : 'neg';
-
- // Animation
- var animation = {}, animation1 = {}, animation2 = {};
- animation[ref] = (motion == 'pos' ? '-=' : '+=') + distance;
- animation1[ref] = (motion == 'pos' ? '+=' : '-=') + distance * 2;
- animation2[ref] = (motion == 'pos' ? '-=' : '+=') + distance * 2;
-
- // Animate
- el.animate(animation, speed, o.options.easing);
- for (var i = 1; i < times; i++) { // Shakes
- el.animate(animation1, speed, o.options.easing).animate(animation2, speed, o.options.easing);
- };
- el.animate(animation1, speed, o.options.easing).
- animate(animation, speed / 2, o.options.easing, function(){ // Last shake
- $.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
- if(o.callback) o.callback.apply(this, arguments); // Callback
- });
- el.queue('fx', function() { el.dequeue(); });
- el.dequeue();
- });
-
-};
-
-})(jQuery);
-/*
- * jQuery UI Effects Slide 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/Slide
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function($) {
-
-$.effects.slide = function(o) {
-
- return this.queue(function() {
-
- // Create element
- var el = $(this), props = ['position','top','left'];
-
- // Set options
- var mode = $.effects.setMode(el, o.options.mode || 'show'); // Set Mode
- var direction = o.options.direction || 'left'; // Default Direction
-
- // Adjust
- $.effects.save(el, props); el.show(); // Save & Show
- $.effects.createWrapper(el).css({overflow:'hidden'}); // Create Wrapper
- var ref = (direction == 'up' || direction == 'down') ? 'top' : 'left';
- var motion = (direction == 'up' || direction == 'left') ? 'pos' : 'neg';
- var distance = o.options.distance || (ref == 'top' ? el.outerHeight({margin:true}) : el.outerWidth({margin:true}));
- if (mode == 'show') el.css(ref, motion == 'pos' ? -distance : distance); // Shift
-
- // Animation
- var animation = {};
- animation[ref] = (mode == 'show' ? (motion == 'pos' ? '+=' : '-=') : (motion == 'pos' ? '-=' : '+=')) + distance;
-
- // Animate
- el.animate(animation, { queue: false, duration: o.duration, easing: o.options.easing, complete: function() {
- if(mode == 'hide') el.hide(); // Hide
- $.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
- if(o.callback) o.callback.apply(this, arguments); // Callback
- el.dequeue();
- }});
-
- });
-
-};
-
-})(jQuery);
-/*
- * jQuery UI Effects Transfer 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/Transfer
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function($) {
-
-$.effects.transfer = function(o) {
- return this.queue(function() {
- var elem = $(this),
- target = $(o.options.to),
- endPosition = target.offset(),
- animation = {
- top: endPosition.top,
- left: endPosition.left,
- height: target.innerHeight(),
- width: target.innerWidth()
- },
- startPosition = elem.offset(),
- transfer = $('<div class="ui-effects-transfer"></div>')
- .appendTo(document.body)
- .addClass(o.options.className)
- .css({
- top: startPosition.top,
- left: startPosition.left,
- height: elem.innerHeight(),
- width: elem.innerWidth(),
- position: 'absolute'
- })
- .animate(animation, o.duration, o.options.easing, function() {
- transfer.remove();
- (o.callback && o.callback.apply(elem[0], arguments));
- elem.dequeue();
- });
- });
-};
-
-})(jQuery);
-/*
- * jQuery UI Accordion 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Accordion
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.widget.js
- */
-(function($) {
-
-$.widget("ui.accordion", {
- options: {
- active: 0,
- animated: 'slide',
- autoHeight: true,
- clearStyle: false,
- collapsible: false,
- event: "click",
- fillSpace: false,
- header: "> li > :first-child,> :not(li):even",
- icons: {
- header: "ui-icon-triangle-1-e",
- headerSelected: "ui-icon-triangle-1-s"
- },
- navigation: false,
- navigationFilter: function() {
- return this.href.toLowerCase() == location.href.toLowerCase();
- }
- },
- _create: function() {
-
- var o = this.options, self = this;
- this.running = 0;
-
- this.element.addClass("ui-accordion ui-widget ui-helper-reset");
-
- // in lack of child-selectors in CSS we need to mark top-LIs in a UL-accordion for some IE-fix
- this.element.children("li").addClass("ui-accordion-li-fix");
-
- this.headers = this.element.find(o.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all")
- .bind("mouseenter.accordion", function(){ $(this).addClass('ui-state-hover'); })
- .bind("mouseleave.accordion", function(){ $(this).removeClass('ui-state-hover'); })
- .bind("focus.accordion", function(){ $(this).addClass('ui-state-focus'); })
- .bind("blur.accordion", function(){ $(this).removeClass('ui-state-focus'); });
-
- this.headers
- .next()
- .addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
-
- if ( o.navigation ) {
- var current = this.element.find("a").filter(o.navigationFilter);
- if ( current.length ) {
- var header = current.closest(".ui-accordion-header");
- if ( header.length ) {
- // anchor within header
- this.active = header;
- } else {
- // anchor within content
- this.active = current.closest(".ui-accordion-content").prev();
- }
- }
- }
-
- this.active = this._findActive(this.active || o.active).toggleClass("ui-state-default").toggleClass("ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");
- this.active.next().addClass('ui-accordion-content-active');
-
- //Append icon elements
- this._createIcons();
-
- this.resize();
-
- //ARIA
- this.element.attr('role','tablist');
-
- this.headers
- .attr('role','tab')
- .bind('keydown', function(event) { return self._keydown(event); })
- .next()
- .attr('role','tabpanel');
-
- this.headers
- .not(this.active || "")
- .attr('aria-expanded','false')
- .attr("tabIndex", "-1")
- .next()
- .hide();
-
- // make sure at least one header is in the tab order
- if (!this.active.length) {
- this.headers.eq(0).attr('tabIndex','0');
- } else {
- this.active
- .attr('aria-expanded','true')
- .attr('tabIndex', '0');
- }
-
- // only need links in taborder for Safari
- if (!$.browser.safari)
- this.headers.find('a').attr('tabIndex','-1');
-
- if (o.event) {
- this.headers.bind((o.event) + ".accordion", function(event) {
- self._clickHandler.call(self, event, this);
- event.preventDefault();
- });
- }
-
- },
-
- _createIcons: function() {
- var o = this.options;
- if (o.icons) {
- $("<span/>").addClass("ui-icon " + o.icons.header).prependTo(this.headers);
- this.active.find(".ui-icon").toggleClass(o.icons.header).toggleClass(o.icons.headerSelected);
- this.element.addClass("ui-accordion-icons");
- }
- },
-
- _destroyIcons: function() {
- this.headers.children(".ui-icon").remove();
- this.element.removeClass("ui-accordion-icons");
- },
-
- destroy: function() {
- var o = this.options;
-
- this.element
- .removeClass("ui-accordion ui-widget ui-helper-reset")
- .removeAttr("role")
- .unbind('.accordion')
- .removeData('accordion');
-
- this.headers
- .unbind(".accordion")
- .removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top")
- .removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex");
-
- this.headers.find("a").removeAttr("tabIndex");
- this._destroyIcons();
- var contents = this.headers.next().css("display", "").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active");
- if (o.autoHeight || o.fillHeight) {
- contents.css("height", "");
- }
-
- return this;
- },
-
- _setOption: function(key, value) {
- $.Widget.prototype._setOption.apply(this, arguments);
-
- if (key == "active") {
- this.activate(value);
- }
- if (key == "icons") {
- this._destroyIcons();
- if (value) {
- this._createIcons();
- }
- }
-
- },
-
- _keydown: function(event) {
-
- var o = this.options, keyCode = $.ui.keyCode;
-
- if (o.disabled || event.altKey || event.ctrlKey)
- return;
-
- var length = this.headers.length;
- var currentIndex = this.headers.index(event.target);
- var toFocus = false;
-
- switch(event.keyCode) {
- case keyCode.RIGHT:
- case keyCode.DOWN:
- toFocus = this.headers[(currentIndex + 1) % length];
- break;
- case keyCode.LEFT:
- case keyCode.UP:
- toFocus = this.headers[(currentIndex - 1 + length) % length];
- break;
- case keyCode.SPACE:
- case keyCode.ENTER:
- this._clickHandler({ target: event.target }, event.target);
- event.preventDefault();
- }
-
- if (toFocus) {
- $(event.target).attr('tabIndex','-1');
- $(toFocus).attr('tabIndex','0');
- toFocus.focus();
- return false;
- }
-
- return true;
-
- },
-
- resize: function() {
-
- var o = this.options, maxHeight;
-
- if (o.fillSpace) {
-
- if($.browser.msie) { var defOverflow = this.element.parent().css('overflow'); this.element.parent().css('overflow', 'hidden'); }
- maxHeight = this.element.parent().height();
- if($.browser.msie) { this.element.parent().css('overflow', defOverflow); }
-
- this.headers.each(function() {
- maxHeight -= $(this).outerHeight(true);
- });
-
- this.headers.next().each(function() {
- $(this).height(Math.max(0, maxHeight - $(this).innerHeight() + $(this).height()));
- }).css('overflow', 'auto');
-
- } else if ( o.autoHeight ) {
- maxHeight = 0;
- this.headers.next().each(function() {
- maxHeight = Math.max(maxHeight, $(this).height());
- }).height(maxHeight);
- }
-
- return this;
- },
-
- activate: function(index) {
- // TODO this gets called on init, changing the option without an explicit call for that
- this.options.active = index;
- // call clickHandler with custom event
- var active = this._findActive(index)[0];
- this._clickHandler({ target: active }, active);
-
- return this;
- },
-
- _findActive: function(selector) {
- return selector
- ? typeof selector == "number"
- ? this.headers.filter(":eq(" + selector + ")")
- : this.headers.not(this.headers.not(selector))
- : selector === false
- ? $([])
- : this.headers.filter(":eq(0)");
- },
-
- // TODO isn't event.target enough? why the seperate target argument?
- _clickHandler: function(event, target) {
-
- var o = this.options;
- if (o.disabled)
- return;
-
- // called only when using activate(false) to close all parts programmatically
- if (!event.target) {
- if (!o.collapsible)
- return;
- this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all")
- .find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header);
- this.active.next().addClass('ui-accordion-content-active');
- var toHide = this.active.next(),
- data = {
- options: o,
- newHeader: $([]),
- oldHeader: o.active,
- newContent: $([]),
- oldContent: toHide
- },
- toShow = (this.active = $([]));
- this._toggle(toShow, toHide, data);
- return;
- }
-
- // get the click target
- var clicked = $(event.currentTarget || target);
- var clickedIsActive = clicked[0] == this.active[0];
-
- // TODO the option is changed, is that correct?
- // TODO if it is correct, shouldn't that happen after determining that the click is valid?
- o.active = o.collapsible && clickedIsActive ? false : $('.ui-accordion-header', this.element).index(clicked);
-
- // if animations are still active, or the active header is the target, ignore click
- if (this.running || (!o.collapsible && clickedIsActive)) {
- return;
- }
-
- // switch classes
- this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all")
- .find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header);
- if (!clickedIsActive) {
- clicked.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top")
- .find(".ui-icon").removeClass(o.icons.header).addClass(o.icons.headerSelected);
- clicked.next().addClass('ui-accordion-content-active');
- }
-
- // find elements to show and hide
- var toShow = clicked.next(),
- toHide = this.active.next(),
- data = {
- options: o,
- newHeader: clickedIsActive && o.collapsible ? $([]) : clicked,
- oldHeader: this.active,
- newContent: clickedIsActive && o.collapsible ? $([]) : toShow,
- oldContent: toHide
- },
- down = this.headers.index( this.active[0] ) > this.headers.index( clicked[0] );
-
- this.active = clickedIsActive ? $([]) : clicked;
- this._toggle(toShow, toHide, data, clickedIsActive, down);
-
- return;
-
- },
-
- _toggle: function(toShow, toHide, data, clickedIsActive, down) {
-
- var o = this.options, self = this;
-
- this.toShow = toShow;
- this.toHide = toHide;
- this.data = data;
-
- var complete = function() { if(!self) return; return self._completed.apply(self, arguments); };
-
- // trigger changestart event
- this._trigger("changestart", null, this.data);
-
- // count elements to animate
- this.running = toHide.size() === 0 ? toShow.size() : toHide.size();
-
- if (o.animated) {
-
- var animOptions = {};
-
- if ( o.collapsible && clickedIsActive ) {
- animOptions = {
- toShow: $([]),
- toHide: toHide,
- complete: complete,
- down: down,
- autoHeight: o.autoHeight || o.fillSpace
- };
- } else {
- animOptions = {
- toShow: toShow,
- toHide: toHide,
- complete: complete,
- down: down,
- autoHeight: o.autoHeight || o.fillSpace
- };
- }
-
- if (!o.proxied) {
- o.proxied = o.animated;
- }
-
- if (!o.proxiedDuration) {
- o.proxiedDuration = o.duration;
- }
-
- o.animated = $.isFunction(o.proxied) ?
- o.proxied(animOptions) : o.proxied;
-
- o.duration = $.isFunction(o.proxiedDuration) ?
- o.proxiedDuration(animOptions) : o.proxiedDuration;
-
- var animations = $.ui.accordion.animations,
- duration = o.duration,
- easing = o.animated;
-
- if (easing && !animations[easing] && !$.easing[easing]) {
- easing = 'slide';
- }
- if (!animations[easing]) {
- animations[easing] = function(options) {
- this.slide(options, {
- easing: easing,
- duration: duration || 700
- });
- };
- }
-
- animations[easing](animOptions);
-
- } else {
-
- if (o.collapsible && clickedIsActive) {
- toShow.toggle();
- } else {
- toHide.hide();
- toShow.show();
- }
-
- complete(true);
-
- }
-
- // TODO assert that the blur and focus triggers are really necessary, remove otherwise
- toHide.prev().attr('aria-expanded','false').attr("tabIndex", "-1").blur();
- toShow.prev().attr('aria-expanded','true').attr("tabIndex", "0").focus();
-
- },
-
- _completed: function(cancel) {
-
- var o = this.options;
-
- this.running = cancel ? 0 : --this.running;
- if (this.running) return;
-
- if (o.clearStyle) {
- this.toShow.add(this.toHide).css({
- height: "",
- overflow: ""
- });
- }
-
- // other classes are removed before the animation; this one needs to stay until completed
- this.toHide.removeClass("ui-accordion-content-active");
-
- this._trigger('change', null, this.data);
- }
-
-});
-
-
-$.extend($.ui.accordion, {
- version: "1.8.2",
- animations: {
- slide: function(options, additions) {
- options = $.extend({
- easing: "swing",
- duration: 300
- }, options, additions);
- if ( !options.toHide.size() ) {
- options.toShow.animate({height: "show"}, options);
- return;
- }
- if ( !options.toShow.size() ) {
- options.toHide.animate({height: "hide"}, options);
- return;
- }
- var overflow = options.toShow.css('overflow'),
- percentDone = 0,
- showProps = {},
- hideProps = {},
- fxAttrs = [ "height", "paddingTop", "paddingBottom" ],
- originalWidth;
- // fix width before calculating height of hidden element
- var s = options.toShow;
- originalWidth = s[0].style.width;
- s.width( parseInt(s.parent().width(),10) - parseInt(s.css("paddingLeft"),10) - parseInt(s.css("paddingRight"),10) - (parseInt(s.css("borderLeftWidth"),10) || 0) - (parseInt(s.css("borderRightWidth"),10) || 0) );
-
- $.each(fxAttrs, function(i, prop) {
- hideProps[prop] = 'hide';
-
- var parts = ('' + $.css(options.toShow[0], prop)).match(/^([\d+-.]+)(.*)$/);
- showProps[prop] = {
- value: parts[1],
- unit: parts[2] || 'px'
- };
- });
- options.toShow.css({ height: 0, overflow: 'hidden' }).show();
- options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate(hideProps,{
- step: function(now, settings) {
- // only calculate the percent when animating height
- // IE gets very inconsistent results when animating elements
- // with small values, which is common for padding
- if (settings.prop == 'height') {
- percentDone = ( settings.end - settings.start === 0 ) ? 0 :
- (settings.now - settings.start) / (settings.end - settings.start);
- }
-
- options.toShow[0].style[settings.prop] =
- (percentDone * showProps[settings.prop].value) + showProps[settings.prop].unit;
- },
- duration: options.duration,
- easing: options.easing,
- complete: function() {
- if ( !options.autoHeight ) {
- options.toShow.css("height", "");
- }
- options.toShow.css("width", originalWidth);
- options.toShow.css({overflow: overflow});
- options.complete();
- }
- });
- },
- bounceslide: function(options) {
- this.slide(options, {
- easing: options.down ? "easeOutBounce" : "swing",
- duration: options.down ? 1000 : 200
- });
- }
- }
-});
-
-})(jQuery);
-/*
- * jQuery UI Autocomplete 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Autocomplete
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.widget.js
- * jquery.ui.position.js
- */
-(function( $ ) {
-
-$.widget( "ui.autocomplete", {
- options: {
- minLength: 1,
- delay: 300
- },
- _create: function() {
- var self = this,
- doc = this.element[ 0 ].ownerDocument;
- this.element
- .addClass( "ui-autocomplete-input" )
- .attr( "autocomplete", "off" )
- // TODO verify these actually work as intended
- .attr({
- role: "textbox",
- "aria-autocomplete": "list",
- "aria-haspopup": "true"
- })
- .bind( "keydown.autocomplete", function( event ) {
- var keyCode = $.ui.keyCode;
- switch( event.keyCode ) {
- case keyCode.PAGE_UP:
- self._move( "previousPage", event );
- break;
- case keyCode.PAGE_DOWN:
- self._move( "nextPage", event );
- break;
- case keyCode.UP:
- self._move( "previous", event );
- // prevent moving cursor to beginning of text field in some browsers
- event.preventDefault();
- break;
- case keyCode.DOWN:
- self._move( "next", event );
- // prevent moving cursor to end of text field in some browsers
- event.preventDefault();
- break;
- case keyCode.ENTER:
- case keyCode.NUMPAD_ENTER:
- // when menu is open or has focus
- if ( self.menu.active ) {
- event.preventDefault();
- }
- //passthrough - ENTER and TAB both select the current element
- case keyCode.TAB:
- if ( !self.menu.active ) {
- return;
- }
- self.menu.select( event );
- break;
- case keyCode.ESCAPE:
- self.element.val( self.term );
- self.close( event );
- break;
- case keyCode.LEFT:
- case keyCode.RIGHT:
- case keyCode.SHIFT:
- case keyCode.CONTROL:
- case keyCode.ALT:
- case keyCode.COMMAND:
- case keyCode.COMMAND_RIGHT:
- case keyCode.INSERT:
- case keyCode.CAPS_LOCK:
- case keyCode.END:
- case keyCode.HOME:
- // ignore metakeys (shift, ctrl, alt)
- break;
- default:
- // keypress is triggered before the input value is changed
- clearTimeout( self.searching );
- self.searching = setTimeout(function() {
- self.search( null, event );
- }, self.options.delay );
- break;
- }
- })
- .bind( "focus.autocomplete", function() {
- self.selectedItem = null;
- self.previous = self.element.val();
- })
- .bind( "blur.autocomplete", function( event ) {
- clearTimeout( self.searching );
- // clicks on the menu (or a button to trigger a search) will cause a blur event
- self.closing = setTimeout(function() {
- self.close( event );
- self._change( event );
- }, 150 );
- });
- this._initSource();
- this.response = function() {
- return self._response.apply( self, arguments );
- };
- this.menu = $( "<ul></ul>" )
- .addClass( "ui-autocomplete" )
- .appendTo( "body", doc )
- // prevent the close-on-blur in case of a "slow" click on the menu (long mousedown)
- .mousedown(function() {
- // use another timeout to make sure the blur-event-handler on the input was already triggered
- setTimeout(function() {
- clearTimeout( self.closing );
- }, 13);
- })
- .menu({
- focus: function( event, ui ) {
- var item = ui.item.data( "item.autocomplete" );
- if ( false !== self._trigger( "focus", null, { item: item } ) ) {
- // use value to match what will end up in the input, if it was a key event
- if ( /^key/.test(event.originalEvent.type) ) {
- self.element.val( item.value );
- }
- }
- },
- selected: function( event, ui ) {
- var item = ui.item.data( "item.autocomplete" );
- if ( false !== self._trigger( "select", event, { item: item } ) ) {
- self.element.val( item.value );
- }
- self.close( event );
- // only trigger when focus was lost (click on menu)
- var previous = self.previous;
- if ( self.element[0] !== doc.activeElement ) {
- self.element.focus();
- self.previous = previous;
- }
- self.selectedItem = item;
- },
- blur: function( event, ui ) {
- if ( self.menu.element.is(":visible") ) {
- self.element.val( self.term );
- }
- }
- })
- .zIndex( this.element.zIndex() + 1 )
- // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781
- .css({ top: 0, left: 0 })
- .hide()
- .data( "menu" );
- if ( $.fn.bgiframe ) {
- this.menu.element.bgiframe();
- }
- },
-
- destroy: function() {
- this.element
- .removeClass( "ui-autocomplete-input" )
- .removeAttr( "autocomplete" )
- .removeAttr( "role" )
- .removeAttr( "aria-autocomplete" )
- .removeAttr( "aria-haspopup" );
- this.menu.element.remove();
- $.Widget.prototype.destroy.call( this );
- },
-
- _setOption: function( key ) {
- $.Widget.prototype._setOption.apply( this, arguments );
- if ( key === "source" ) {
- this._initSource();
- }
- },
-
- _initSource: function() {
- var array,
- url;
- if ( $.isArray(this.options.source) ) {
- array = this.options.source;
- this.source = function( request, response ) {
- response( $.ui.autocomplete.filter(array, request.term) );
- };
- } else if ( typeof this.options.source === "string" ) {
- url = this.options.source;
- this.source = function( request, response ) {
- $.getJSON( url, request, response );
- };
- } else {
- this.source = this.options.source;
- }
- },
-
- search: function( value, event ) {
- value = value != null ? value : this.element.val();
- if ( value.length < this.options.minLength ) {
- return this.close( event );
- }
-
- clearTimeout( this.closing );
- if ( this._trigger("search") === false ) {
- return;
- }
-
- return this._search( value );
- },
-
- _search: function( value ) {
- this.term = this.element
- .addClass( "ui-autocomplete-loading" )
- // always save the actual value, not the one passed as an argument
- .val();
-
- this.source( { term: value }, this.response );
- },
-
- _response: function( content ) {
- if ( content.length ) {
- content = this._normalize( content );
- this._suggest( content );
- this._trigger( "open" );
- } else {
- this.close();
- }
- this.element.removeClass( "ui-autocomplete-loading" );
- },
-
- close: function( event ) {
- clearTimeout( this.closing );
- if ( this.menu.element.is(":visible") ) {
- this._trigger( "close", event );
- this.menu.element.hide();
- this.menu.deactivate();
- }
- },
-
- _change: function( event ) {
- if ( this.previous !== this.element.val() ) {
- this._trigger( "change", event, { item: this.selectedItem } );
- }
- },
-
- _normalize: function( items ) {
- // assume all items have the right format when the first item is complete
- if ( items.length && items[0].label && items[0].value ) {
- return items;
- }
- return $.map( items, function(item) {
- if ( typeof item === "string" ) {
- return {
- label: item,
- value: item
- };
- }
- return $.extend({
- label: item.label || item.value,
- value: item.value || item.label
- }, item );
- });
- },
-
- _suggest: function( items ) {
- var ul = this.menu.element
- .empty()
- .zIndex( this.element.zIndex() + 1 ),
- menuWidth,
- textWidth;
- this._renderMenu( ul, items );
- // TODO refresh should check if the active item is still in the dom, removing the need for a manual deactivate
- this.menu.deactivate();
- this.menu.refresh();
- this.menu.element.show().position({
- my: "left top",
- at: "left bottom",
- of: this.element,
- collision: "none"
- });
-
- menuWidth = ul.width( "" ).width();
- textWidth = this.element.width();
- ul.width( Math.max( menuWidth, textWidth ) );
- },
-
- _renderMenu: function( ul, items ) {
- var self = this;
- $.each( items, function( index, item ) {
- self._renderItem( ul, item );
- });
- },
-
- _renderItem: function( ul, item) {
- return $( "<li></li>" )
- .data( "item.autocomplete", item )
- .append( "<a>" + item.label + "</a>" )
- .appendTo( ul );
- },
-
- _move: function( direction, event ) {
- if ( !this.menu.element.is(":visible") ) {
- this.search( null, event );
- return;
- }
- if ( this.menu.first() && /^previous/.test(direction) ||
- this.menu.last() && /^next/.test(direction) ) {
- this.element.val( this.term );
- this.menu.deactivate();
- return;
- }
- this.menu[ direction ]( event );
- },
-
- widget: function() {
- return this.menu.element;
- }
-});
-
-$.extend( $.ui.autocomplete, {
- escapeRegex: function( value ) {
- return value.replace( /([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1" );
- },
- filter: function(array, term) {
- var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
- return $.grep( array, function(value) {
- return matcher.test( value.label || value.value || value );
- });
- }
-});
-
-}( jQuery ));
-
-/*
- * jQuery UI Menu (not officially released)
- *
- * This widget isn't yet finished and the API is subject to change. We plan to finish
- * it for the next release. You're welcome to give it a try anyway and give us feedback,
- * as long as you're okay with migrating your code later on. We can help with that, too.
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Menu
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.widget.js
- */
-(function($) {
-
-$.widget("ui.menu", {
- _create: function() {
- var self = this;
- this.element
- .addClass("ui-menu ui-widget ui-widget-content ui-corner-all")
- .attr({
- role: "listbox",
- "aria-activedescendant": "ui-active-menuitem"
- })
- .click(function( event ) {
- if ( !$( event.target ).closest( ".ui-menu-item a" ).length ) {
- return;
- }
- // temporary
- event.preventDefault();
- self.select( event );
- });
- this.refresh();
- },
-
- refresh: function() {
- var self = this;
-
- // don't refresh list items that are already adapted
- var items = this.element.children("li:not(.ui-menu-item):has(a)")
- .addClass("ui-menu-item")
- .attr("role", "menuitem");
-
- items.children("a")
- .addClass("ui-corner-all")
- .attr("tabindex", -1)
- // mouseenter doesn't work with event delegation
- .mouseenter(function( event ) {
- self.activate( event, $(this).parent() );
- })
- .mouseleave(function() {
- self.deactivate();
- });
- },
-
- activate: function( event, item ) {
- this.deactivate();
- if (this.hasScroll()) {
- var offset = item.offset().top - this.element.offset().top,
- scroll = this.element.attr("scrollTop"),
- elementHeight = this.element.height();
- if (offset < 0) {
- this.element.attr("scrollTop", scroll + offset);
- } else if (offset > elementHeight) {
- this.element.attr("scrollTop", scroll + offset - elementHeight + item.height());
- }
- }
- this.active = item.eq(0)
- .children("a")
- .addClass("ui-state-hover")
- .attr("id", "ui-active-menuitem")
- .end();
- this._trigger("focus", event, { item: item });
- },
-
- deactivate: function() {
- if (!this.active) { return; }
-
- this.active.children("a")
- .removeClass("ui-state-hover")
- .removeAttr("id");
- this._trigger("blur");
- this.active = null;
- },
-
- next: function(event) {
- this.move("next", ".ui-menu-item:first", event);
- },
-
- previous: function(event) {
- this.move("prev", ".ui-menu-item:last", event);
- },
-
- first: function() {
- return this.active && !this.active.prev().length;
- },
-
- last: function() {
- return this.active && !this.active.next().length;
- },
-
- move: function(direction, edge, event) {
- if (!this.active) {
- this.activate(event, this.element.children(edge));
- return;
- }
- var next = this.active[direction + "All"](".ui-menu-item").eq(0);
- if (next.length) {
- this.activate(event, next);
- } else {
- this.activate(event, this.element.children(edge));
- }
- },
-
- // TODO merge with previousPage
- nextPage: function(event) {
- if (this.hasScroll()) {
- // TODO merge with no-scroll-else
- if (!this.active || this.last()) {
- this.activate(event, this.element.children(":first"));
- return;
- }
- var base = this.active.offset().top,
- height = this.element.height(),
- result = this.element.children("li").filter(function() {
- var close = $(this).offset().top - base - height + $(this).height();
- // TODO improve approximation
- return close < 10 && close > -10;
- });
-
- // TODO try to catch this earlier when scrollTop indicates the last page anyway
- if (!result.length) {
- result = this.element.children(":last");
- }
- this.activate(event, result);
- } else {
- this.activate(event, this.element.children(!this.active || this.last() ? ":first" : ":last"));
- }
- },
-
- // TODO merge with nextPage
- previousPage: function(event) {
- if (this.hasScroll()) {
- // TODO merge with no-scroll-else
- if (!this.active || this.first()) {
- this.activate(event, this.element.children(":last"));
- return;
- }
-
- var base = this.active.offset().top,
- height = this.element.height();
- result = this.element.children("li").filter(function() {
- var close = $(this).offset().top - base + height - $(this).height();
- // TODO improve approximation
- return close < 10 && close > -10;
- });
-
- // TODO try to catch this earlier when scrollTop indicates the last page anyway
- if (!result.length) {
- result = this.element.children(":first");
- }
- this.activate(event, result);
- } else {
- this.activate(event, this.element.children(!this.active || this.first() ? ":last" : ":first"));
- }
- },
-
- hasScroll: function() {
- return this.element.height() < this.element.attr("scrollHeight");
- },
-
- select: function( event ) {
- this._trigger("selected", event, { item: this.active });
- }
-});
-
-}(jQuery));
-/*
- * jQuery UI Button 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Button
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.widget.js
- */
-(function( $ ) {
-
-var lastActive,
- baseClasses = "ui-button ui-widget ui-state-default ui-corner-all",
- stateClasses = "ui-state-hover ui-state-active ",
- typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon ui-button-text-only",
- formResetHandler = function( event ) {
- $( ":ui-button", event.target.form ).each(function() {
- var inst = $( this ).data( "button" );
- setTimeout(function() {
- inst.refresh();
- }, 1 );
- });
- },
- radioGroup = function( radio ) {
- var name = radio.name,
- form = radio.form,
- radios = $( [] );
- if ( name ) {
- if ( form ) {
- radios = $( form ).find( "[name='" + name + "']" );
- } else {
- radios = $( "[name='" + name + "']", radio.ownerDocument )
- .filter(function() {
- return !this.form;
- });
- }
- }
- return radios;
- };
-
-$.widget( "ui.button", {
- options: {
- text: true,
- label: null,
- icons: {
- primary: null,
- secondary: null
- }
- },
- _create: function() {
- this.element.closest( "form" )
- .unbind( "reset.button" )
- .bind( "reset.button", formResetHandler );
-
- this._determineButtonType();
- this.hasTitle = !!this.buttonElement.attr( "title" );
-
- var self = this,
- options = this.options,
- toggleButton = this.type === "checkbox" || this.type === "radio",
- hoverClass = "ui-state-hover" + ( !toggleButton ? " ui-state-active" : "" ),
- focusClass = "ui-state-focus";
-
- if ( options.label === null ) {
- options.label = this.buttonElement.html();
- }
-
- if ( this.element.is( ":disabled" ) ) {
- options.disabled = true;
- }
-
- this.buttonElement
- .addClass( baseClasses )
- .attr( "role", "button" )
- .bind( "mouseenter.button", function() {
- if ( options.disabled ) {
- return;
- }
- $( this ).addClass( "ui-state-hover" );
- if ( this === lastActive ) {
- $( this ).addClass( "ui-state-active" );
- }
- })
- .bind( "mouseleave.button", function() {
- if ( options.disabled ) {
- return;
- }
- $( this ).removeClass( hoverClass );
- })
- .bind( "focus.button", function() {
- // no need to check disabled, focus won't be triggered anyway
- $( this ).addClass( focusClass );
- })
- .bind( "blur.button", function() {
- $( this ).removeClass( focusClass );
- });
-
- if ( toggleButton ) {
- this.element.bind( "change.button", function() {
- self.refresh();
- });
- }
-
- if ( this.type === "checkbox" ) {
- this.buttonElement.bind( "click.button", function() {
- if ( options.disabled ) {
- return false;
- }
- $( this ).toggleClass( "ui-state-active" );
- self.buttonElement.attr( "aria-pressed", self.element[0].checked );
- });
- } else if ( this.type === "radio" ) {
- this.buttonElement.bind( "click.button", function() {
- if ( options.disabled ) {
- return false;
- }
- $( this ).addClass( "ui-state-active" );
- self.buttonElement.attr( "aria-pressed", true );
-
- var radio = self.element[ 0 ];
- radioGroup( radio )
- .not( radio )
- .map(function() {
- return $( this ).button( "widget" )[ 0 ];
- })
- .removeClass( "ui-state-active" )
- .attr( "aria-pressed", false );
- });
- } else {
- this.buttonElement
- .bind( "mousedown.button", function() {
- if ( options.disabled ) {
- return false;
- }
- $( this ).addClass( "ui-state-active" );
- lastActive = this;
- $( document ).one( "mouseup", function() {
- lastActive = null;
- });
- })
- .bind( "mouseup.button", function() {
- if ( options.disabled ) {
- return false;
- }
- $( this ).removeClass( "ui-state-active" );
- })
- .bind( "keydown.button", function(event) {
- if ( options.disabled ) {
- return false;
- }
- if ( event.keyCode == $.ui.keyCode.SPACE || event.keyCode == $.ui.keyCode.ENTER ) {
- $( this ).addClass( "ui-state-active" );
- }
- })
- .bind( "keyup.button", function() {
- $( this ).removeClass( "ui-state-active" );
- });
-
- if ( this.buttonElement.is("a") ) {
- this.buttonElement.keyup(function(event) {
- if ( event.keyCode === $.ui.keyCode.SPACE ) {
- // TODO pass through original event correctly (just as 2nd argument doesn't work)
- $( this ).click();
- }
- });
- }
- }
-
- // TODO: pull out $.Widget's handling for the disabled option into
- // $.Widget.prototype._setOptionDisabled so it's easy to proxy and can
- // be overridden by individual plugins
- this._setOption( "disabled", options.disabled );
- },
-
- _determineButtonType: function() {
-
- if ( this.element.is(":checkbox") ) {
- this.type = "checkbox";
- } else {
- if ( this.element.is(":radio") ) {
- this.type = "radio";
- } else {
- if ( this.element.is("input") ) {
- this.type = "input";
- } else {
- this.type = "button";
- }
- }
- }
-
- if ( this.type === "checkbox" || this.type === "radio" ) {
- // we don't search against the document in case the element
- // is disconnected from the DOM
- this.buttonElement = this.element.parents().last()
- .find( "[for=" + this.element.attr("id") + "]" );
- this.element.addClass( "ui-helper-hidden-accessible" );
-
- var checked = this.element.is( ":checked" );
- if ( checked ) {
- this.buttonElement.addClass( "ui-state-active" );
- }
- this.buttonElement.attr( "aria-pressed", checked );
- } else {
- this.buttonElement = this.element;
- }
- },
-
- widget: function() {
- return this.buttonElement;
- },
-
- destroy: function() {
- this.element
- .removeClass( "ui-helper-hidden-accessible" );
- this.buttonElement
- .removeClass( baseClasses + " " + stateClasses + " " + typeClasses )
- .removeAttr( "role" )
- .removeAttr( "aria-pressed" )
- .html( this.buttonElement.find(".ui-button-text").html() );
-
- if ( !this.hasTitle ) {
- this.buttonElement.removeAttr( "title" );
- }
-
- $.Widget.prototype.destroy.call( this );
- },
-
- _setOption: function( key, value ) {
- $.Widget.prototype._setOption.apply( this, arguments );
- if ( key === "disabled" ) {
- if ( value ) {
- this.element.attr( "disabled", true );
- } else {
- this.element.removeAttr( "disabled" );
- }
- }
- this._resetButton();
- },
-
- refresh: function() {
- var isDisabled = this.element.is( ":disabled" );
- if ( isDisabled !== this.options.disabled ) {
- this._setOption( "disabled", isDisabled );
- }
- if ( this.type === "radio" ) {
- radioGroup( this.element[0] ).each(function() {
- if ( $( this ).is( ":checked" ) ) {
- $( this ).button( "widget" )
- .addClass( "ui-state-active" )
- .attr( "aria-pressed", true );
- } else {
- $( this ).button( "widget" )
- .removeClass( "ui-state-active" )
- .attr( "aria-pressed", false );
- }
- });
- } else if ( this.type === "checkbox" ) {
- if ( this.element.is( ":checked" ) ) {
- this.buttonElement
- .addClass( "ui-state-active" )
- .attr( "aria-pressed", true );
- } else {
- this.buttonElement
- .removeClass( "ui-state-active" )
- .attr( "aria-pressed", false );
- }
- }
- },
-
- _resetButton: function() {
- if ( this.type === "input" ) {
- if ( this.options.label ) {
- this.element.val( this.options.label );
- }
- return;
- }
- var buttonElement = this.buttonElement.removeClass( typeClasses ),
- buttonText = $( "<span></span>" )
- .addClass( "ui-button-text" )
- .html( this.options.label )
- .appendTo( buttonElement.empty() )
- .text(),
- icons = this.options.icons,
- multipleIcons = icons.primary && icons.secondary;
- if ( icons.primary || icons.secondary ) {
- buttonElement.addClass( "ui-button-text-icon" +
- ( multipleIcons ? "s" : "" ) );
- if ( icons.primary ) {
- buttonElement.prepend( "<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>" );
- }
- if ( icons.secondary ) {
- buttonElement.append( "<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>" );
- }
- if ( !this.options.text ) {
- buttonElement
- .addClass( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" )
- .removeClass( "ui-button-text-icons ui-button-text-icon" );
- if ( !this.hasTitle ) {
- buttonElement.attr( "title", buttonText );
- }
- }
- } else {
- buttonElement.addClass( "ui-button-text-only" );
- }
- }
-});
-
-$.widget( "ui.buttonset", {
- _create: function() {
- this.element.addClass( "ui-buttonset" );
- this._init();
- },
-
- _init: function() {
- this.refresh();
- },
-
- _setOption: function( key, value ) {
- if ( key === "disabled" ) {
- this.buttons.button( "option", key, value );
- }
-
- $.Widget.prototype._setOption.apply( this, arguments );
- },
-
- refresh: function() {
- this.buttons = this.element.find( ":button, :submit, :reset, :checkbox, :radio, a, :data(button)" )
- .filter( ":ui-button" )
- .button( "refresh" )
- .end()
- .not( ":ui-button" )
- .button()
- .end()
- .map(function() {
- return $( this ).button( "widget" )[ 0 ];
- })
- .removeClass( "ui-corner-all ui-corner-left ui-corner-right" )
- .filter( ":first" )
- .addClass( "ui-corner-left" )
- .end()
- .filter( ":last" )
- .addClass( "ui-corner-right" )
- .end()
- .end();
- },
-
- destroy: function() {
- this.element.removeClass( "ui-buttonset" );
- this.buttons
- .map(function() {
- return $( this ).button( "widget" )[ 0 ];
- })
- .removeClass( "ui-corner-left ui-corner-right" )
- .end()
- .button( "destroy" );
-
- $.Widget.prototype.destroy.call( this );
- }
-});
-
-}( jQuery ) );
-/*
- * jQuery UI Datepicker 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Datepicker
- *
- * Depends:
- * jquery.ui.core.js
- */
-
-(function($) { // hide the namespace
-
-$.extend($.ui, { datepicker: { version: "1.8.2" } });
-
-var PROP_NAME = 'datepicker';
-var dpuuid = new Date().getTime();
-
-/* Date picker manager.
- Use the singleton instance of this class, $.datepicker, to interact with the date picker.
- Settings for (groups of) date pickers are maintained in an instance object,
- allowing multiple different settings on the same page. */
-
-function Datepicker() {
- this.debug = false; // Change this to true to start debugging
- this._curInst = null; // The current instance in use
- this._keyEvent = false; // If the last event was a key event
- this._disabledInputs = []; // List of date picker inputs that have been disabled
- this._datepickerShowing = false; // True if the popup picker is showing , false if not
- this._inDialog = false; // True if showing within a "dialog", false if not
- this._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division
- this._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class
- this._appendClass = 'ui-datepicker-append'; // The name of the append marker class
- this._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class
- this._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class
- this._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class
- this._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class
- this._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class
- this._dayOverClass = 'ui-datepicker-days-cell-over'; // The name of the day hover marker class
- this.regional = []; // Available regional settings, indexed by language code
- this.regional[''] = { // Default regional settings
- closeText: 'Done', // Display text for close link
- prevText: 'Prev', // Display text for previous month link
- nextText: 'Next', // Display text for next month link
- currentText: 'Today', // Display text for current month link
- monthNames: ['January','February','March','April','May','June',
- 'July','August','September','October','November','December'], // Names of months for drop-down and formatting
- monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting
- dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting
- dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting
- dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday
- weekHeader: 'Wk', // Column header for week of the year
- dateFormat: 'mm/dd/yy', // See format options on parseDate
- firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
- isRTL: false, // True if right-to-left language, false if left-to-right
- showMonthAfterYear: false, // True if the year select precedes month, false for month then year
- yearSuffix: '' // Additional text to append to the year in the month headers
- };
- this._defaults = { // Global defaults for all the date picker instances
- showOn: 'focus', // 'focus' for popup on focus,
- // 'button' for trigger button, or 'both' for either
- showAnim: 'fadeIn', // Name of jQuery animation for popup
- showOptions: {}, // Options for enhanced animations
- defaultDate: null, // Used when field is blank: actual date,
- // +/-number for offset from today, null for today
- appendText: '', // Display text following the input box, e.g. showing the format
- buttonText: '...', // Text for trigger button
- buttonImage: '', // URL for trigger button image
- buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
- hideIfNoPrevNext: false, // True to hide next/previous month links
- // if not applicable, false to just disable them
- navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
- gotoCurrent: false, // True if today link goes back to current selection instead
- changeMonth: false, // True if month can be selected directly, false if only prev/next
- changeYear: false, // True if year can be selected directly, false if only prev/next
- yearRange: 'c-10:c+10', // Range of years to display in drop-down,
- // either relative to today's year (-nn:+nn), relative to currently displayed year
- // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
- showOtherMonths: false, // True to show dates in other months, false to leave blank
- selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
- showWeek: false, // True to show week of the year, false to not show it
- calculateWeek: this.iso8601Week, // How to calculate the week of the year,
- // takes a Date and returns the number of the week for it
- shortYearCutoff: '+10', // Short year values < this are in the current century,
- // > this are in the previous century,
- // string value starting with '+' for current year + value
- minDate: null, // The earliest selectable date, or null for no limit
- maxDate: null, // The latest selectable date, or null for no limit
- duration: 'fast', // Duration of display/closure
- beforeShowDay: null, // Function that takes a date and returns an array with
- // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '',
- // [2] = cell title (optional), e.g. $.datepicker.noWeekends
- beforeShow: null, // Function that takes an input field and
- // returns a set of custom settings for the date picker
- onSelect: null, // Define a callback function when a date is selected
- onChangeMonthYear: null, // Define a callback function when the month or year is changed
- onClose: null, // Define a callback function when the datepicker is closed
- numberOfMonths: 1, // Number of months to show at a time
- showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
- stepMonths: 1, // Number of months to step back/forward
- stepBigMonths: 12, // Number of months to step back/forward for the big links
- altField: '', // Selector for an alternate field to store selected dates into
- altFormat: '', // The date format to use for the alternate field
- constrainInput: true, // The input is constrained by the current date format
- showButtonPanel: false, // True to show button panel, false to not show it
- autoSize: false // True to size the input for the date format, false to leave as is
- };
- $.extend(this._defaults, this.regional['']);
- this.dpDiv = $('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>');
-}
-
-$.extend(Datepicker.prototype, {
- /* Class name added to elements to indicate already configured with a date picker. */
- markerClassName: 'hasDatepicker',
-
- /* Debug logging (if enabled). */
- log: function () {
- if (this.debug)
- console.log.apply('', arguments);
- },
-
- // TODO rename to "widget" when switching to widget factory
- _widgetDatepicker: function() {
- return this.dpDiv;
- },
-
- /* Override the default settings for all instances of the date picker.
- @param settings object - the new settings to use as defaults (anonymous object)
- @return the manager object */
- setDefaults: function(settings) {
- extendRemove(this._defaults, settings || {});
- return this;
- },
-
- /* Attach the date picker to a jQuery selection.
- @param target element - the target input field or division or span
- @param settings object - the new settings to use for this date picker instance (anonymous) */
- _attachDatepicker: function(target, settings) {
- // check for settings on the control itself - in namespace 'date:'
- var inlineSettings = null;
- for (var attrName in this._defaults) {
- var attrValue = target.getAttribute('date:' + attrName);
- if (attrValue) {
- inlineSettings = inlineSettings || {};
- try {
- inlineSettings[attrName] = eval(attrValue);
- } catch (err) {
- inlineSettings[attrName] = attrValue;
- }
- }
- }
- var nodeName = target.nodeName.toLowerCase();
- var inline = (nodeName == 'div' || nodeName == 'span');
- if (!target.id) {
- this.uuid += 1;
- target.id = 'dp' + this.uuid;
- }
- var inst = this._newInst($(target), inline);
- inst.settings = $.extend({}, settings || {}, inlineSettings || {});
- if (nodeName == 'input') {
- this._connectDatepicker(target, inst);
- } else if (inline) {
- this._inlineDatepicker(target, inst);
- }
- },
-
- /* Create a new instance object. */
- _newInst: function(target, inline) {
- var id = target[0].id.replace(/([^A-Za-z0-9_])/g, '\\\\$1'); // escape jQuery meta chars
- return {id: id, input: target, // associated target
- selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
- drawMonth: 0, drawYear: 0, // month being drawn
- inline: inline, // is datepicker inline or not
- dpDiv: (!inline ? this.dpDiv : // presentation div
- $('<div class="' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))};
- },
-
- /* Attach the date picker to an input field. */
- _connectDatepicker: function(target, inst) {
- var input = $(target);
- inst.append = $([]);
- inst.trigger = $([]);
- if (input.hasClass(this.markerClassName))
- return;
- this._attachments(input, inst);
- input.addClass(this.markerClassName).keydown(this._doKeyDown).
- keypress(this._doKeyPress).keyup(this._doKeyUp).
- bind("setData.datepicker", function(event, key, value) {
- inst.settings[key] = value;
- }).bind("getData.datepicker", function(event, key) {
- return this._get(inst, key);
- });
- this._autoSize(inst);
- $.data(target, PROP_NAME, inst);
- },
-
- /* Make attachments based on settings. */
- _attachments: function(input, inst) {
- var appendText = this._get(inst, 'appendText');
- var isRTL = this._get(inst, 'isRTL');
- if (inst.append)
- inst.append.remove();
- if (appendText) {
- inst.append = $('<span class="' + this._appendClass + '">' + appendText + '</span>');
- input[isRTL ? 'before' : 'after'](inst.append);
- }
- input.unbind('focus', this._showDatepicker);
- if (inst.trigger)
- inst.trigger.remove();
- var showOn = this._get(inst, 'showOn');
- if (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field
- input.focus(this._showDatepicker);
- if (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked
- var buttonText = this._get(inst, 'buttonText');
- var buttonImage = this._get(inst, 'buttonImage');
- inst.trigger = $(this._get(inst, 'buttonImageOnly') ?
- $('<img/>').addClass(this._triggerClass).
- attr({ src: buttonImage, alt: buttonText, title: buttonText }) :
- $('<button type="button"></button>').addClass(this._triggerClass).
- html(buttonImage == '' ? buttonText : $('<img/>').attr(
- { src:buttonImage, alt:buttonText, title:buttonText })));
- input[isRTL ? 'before' : 'after'](inst.trigger);
- inst.trigger.click(function() {
- if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])
- $.datepicker._hideDatepicker();
- else
- $.datepicker._showDatepicker(input[0]);
- return false;
- });
- }
- },
-
- /* Apply the maximum length for the date format. */
- _autoSize: function(inst) {
- if (this._get(inst, 'autoSize') && !inst.inline) {
- var date = new Date(2009, 12 - 1, 20); // Ensure double digits
- var dateFormat = this._get(inst, 'dateFormat');
- if (dateFormat.match(/[DM]/)) {
- var findMax = function(names) {
- var max = 0;
- var maxI = 0;
- for (var i = 0; i < names.length; i++) {
- if (names[i].length > max) {
- max = names[i].length;
- maxI = i;
- }
- }
- return maxI;
- };
- date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?
- 'monthNames' : 'monthNamesShort'))));
- date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?
- 'dayNames' : 'dayNamesShort'))) + 20 - date.getDay());
- }
- inst.input.attr('size', this._formatDate(inst, date).length);
- }
- },
-
- /* Attach an inline date picker to a div. */
- _inlineDatepicker: function(target, inst) {
- var divSpan = $(target);
- if (divSpan.hasClass(this.markerClassName))
- return;
- divSpan.addClass(this.markerClassName).append(inst.dpDiv).
- bind("setData.datepicker", function(event, key, value){
- inst.settings[key] = value;
- }).bind("getData.datepicker", function(event, key){
- return this._get(inst, key);
- });
- $.data(target, PROP_NAME, inst);
- this._setDate(inst, this._getDefaultDate(inst), true);
- this._updateDatepicker(inst);
- this._updateAlternate(inst);
- },
-
- /* Pop-up the date picker in a "dialog" box.
- @param input element - ignored
- @param date string or Date - the initial date to display
- @param onSelect function - the function to call when a date is selected
- @param settings object - update the dialog date picker instance's settings (anonymous object)
- @param pos int[2] - coordinates for the dialog's position within the screen or
- event - with x/y coordinates or
- leave empty for default (screen centre)
- @return the manager object */
- _dialogDatepicker: function(input, date, onSelect, settings, pos) {
- var inst = this._dialogInst; // internal instance
- if (!inst) {
- this.uuid += 1;
- var id = 'dp' + this.uuid;
- this._dialogInput = $('<input type="text" id="' + id +
- '" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');
- this._dialogInput.keydown(this._doKeyDown);
- $('body').append(this._dialogInput);
- inst = this._dialogInst = this._newInst(this._dialogInput, false);
- inst.settings = {};
- $.data(this._dialogInput[0], PROP_NAME, inst);
- }
- extendRemove(inst.settings, settings || {});
- date = (date && date.constructor == Date ? this._formatDate(inst, date) : date);
- this._dialogInput.val(date);
-
- this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);
- if (!this._pos) {
- var browserWidth = document.documentElement.clientWidth;
- var browserHeight = document.documentElement.clientHeight;
- var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
- var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
- this._pos = // should use actual width/height below
- [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];
- }
-
- // move input on screen for focus, but hidden behind dialog
- this._dialogInput.css('left', (this._pos[0] + 20) + 'px').css('top', this._pos[1] + 'px');
- inst.settings.onSelect = onSelect;
- this._inDialog = true;
- this.dpDiv.addClass(this._dialogClass);
- this._showDatepicker(this._dialogInput[0]);
- if ($.blockUI)
- $.blockUI(this.dpDiv);
- $.data(this._dialogInput[0], PROP_NAME, inst);
- return this;
- },
-
- /* Detach a datepicker from its control.
- @param target element - the target input field or division or span */
- _destroyDatepicker: function(target) {
- var $target = $(target);
- var inst = $.data(target, PROP_NAME);
- if (!$target.hasClass(this.markerClassName)) {
- return;
- }
- var nodeName = target.nodeName.toLowerCase();
- $.removeData(target, PROP_NAME);
- if (nodeName == 'input') {
- inst.append.remove();
- inst.trigger.remove();
- $target.removeClass(this.markerClassName).
- unbind('focus', this._showDatepicker).
- unbind('keydown', this._doKeyDown).
- unbind('keypress', this._doKeyPress).
- unbind('keyup', this._doKeyUp);
- } else if (nodeName == 'div' || nodeName == 'span')
- $target.removeClass(this.markerClassName).empty();
- },
-
- /* Enable the date picker to a jQuery selection.
- @param target element - the target input field or division or span */
- _enableDatepicker: function(target) {
- var $target = $(target);
- var inst = $.data(target, PROP_NAME);
- if (!$target.hasClass(this.markerClassName)) {
- return;
- }
- var nodeName = target.nodeName.toLowerCase();
- if (nodeName == 'input') {
- target.disabled = false;
- inst.trigger.filter('button').
- each(function() { this.disabled = false; }).end().
- filter('img').css({opacity: '1.0', cursor: ''});
- }
- else if (nodeName == 'div' || nodeName == 'span') {
- var inline = $target.children('.' + this._inlineClass);
- inline.children().removeClass('ui-state-disabled');
- }
- this._disabledInputs = $.map(this._disabledInputs,
- function(value) { return (value == target ? null : value); }); // delete entry
- },
-
- /* Disable the date picker to a jQuery selection.
- @param target element - the target input field or division or span */
- _disableDatepicker: function(target) {
- var $target = $(target);
- var inst = $.data(target, PROP_NAME);
- if (!$target.hasClass(this.markerClassName)) {
- return;
- }
- var nodeName = target.nodeName.toLowerCase();
- if (nodeName == 'input') {
- target.disabled = true;
- inst.trigger.filter('button').
- each(function() { this.disabled = true; }).end().
- filter('img').css({opacity: '0.5', cursor: 'default'});
- }
- else if (nodeName == 'div' || nodeName == 'span') {
- var inline = $target.children('.' + this._inlineClass);
- inline.children().addClass('ui-state-disabled');
- }
- this._disabledInputs = $.map(this._disabledInputs,
- function(value) { return (value == target ? null : value); }); // delete entry
- this._disabledInputs[this._disabledInputs.length] = target;
- },
-
- /* Is the first field in a jQuery collection disabled as a datepicker?
- @param target element - the target input field or division or span
- @return boolean - true if disabled, false if enabled */
- _isDisabledDatepicker: function(target) {
- if (!target) {
- return false;
- }
- for (var i = 0; i < this._disabledInputs.length; i++) {
- if (this._disabledInputs[i] == target)
- return true;
- }
- return false;
- },
-
- /* Retrieve the instance data for the target control.
- @param target element - the target input field or division or span
- @return object - the associated instance data
- @throws error if a jQuery problem getting data */
- _getInst: function(target) {
- try {
- return $.data(target, PROP_NAME);
- }
- catch (err) {
- throw 'Missing instance data for this datepicker';
- }
- },
-
- /* Update or retrieve the settings for a date picker attached to an input field or division.
- @param target element - the target input field or division or span
- @param name object - the new settings to update or
- string - the name of the setting to change or retrieve,
- when retrieving also 'all' for all instance settings or
- 'defaults' for all global defaults
- @param value any - the new value for the setting
- (omit if above is an object or to retrieve a value) */
- _optionDatepicker: function(target, name, value) {
- var inst = this._getInst(target);
- if (arguments.length == 2 && typeof name == 'string') {
- return (name == 'defaults' ? $.extend({}, $.datepicker._defaults) :
- (inst ? (name == 'all' ? $.extend({}, inst.settings) :
- this._get(inst, name)) : null));
- }
- var settings = name || {};
- if (typeof name == 'string') {
- settings = {};
- settings[name] = value;
- }
- if (inst) {
- if (this._curInst == inst) {
- this._hideDatepicker();
- }
- var date = this._getDateDatepicker(target, true);
- extendRemove(inst.settings, settings);
- this._attachments($(target), inst);
- this._autoSize(inst);
- this._setDateDatepicker(target, date);
- this._updateDatepicker(inst);
- }
- },
-
- // change method deprecated
- _changeDatepicker: function(target, name, value) {
- this._optionDatepicker(target, name, value);
- },
-
- /* Redraw the date picker attached to an input field or division.
- @param target element - the target input field or division or span */
- _refreshDatepicker: function(target) {
- var inst = this._getInst(target);
- if (inst) {
- this._updateDatepicker(inst);
- }
- },
-
- /* Set the dates for a jQuery selection.
- @param target element - the target input field or division or span
- @param date Date - the new date */
- _setDateDatepicker: function(target, date) {
- var inst = this._getInst(target);
- if (inst) {
- this._setDate(inst, date);
- this._updateDatepicker(inst);
- this._updateAlternate(inst);
- }
- },
-
- /* Get the date(s) for the first entry in a jQuery selection.
- @param target element - the target input field or division or span
- @param noDefault boolean - true if no default date is to be used
- @return Date - the current date */
- _getDateDatepicker: function(target, noDefault) {
- var inst = this._getInst(target);
- if (inst && !inst.inline)
- this._setDateFromField(inst, noDefault);
- return (inst ? this._getDate(inst) : null);
- },
-
- /* Handle keystrokes. */
- _doKeyDown: function(event) {
- var inst = $.datepicker._getInst(event.target);
- var handled = true;
- var isRTL = inst.dpDiv.is('.ui-datepicker-rtl');
- inst._keyEvent = true;
- if ($.datepicker._datepickerShowing)
- switch (event.keyCode) {
- case 9: $.datepicker._hideDatepicker();
- handled = false;
- break; // hide on tab out
- case 13: var sel = $('td.' + $.datepicker._dayOverClass, inst.dpDiv).
- add($('td.' + $.datepicker._currentClass, inst.dpDiv));
- if (sel[0])
- $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
- else
- $.datepicker._hideDatepicker();
- return false; // don't submit the form
- break; // select the value on enter
- case 27: $.datepicker._hideDatepicker();
- break; // hide on escape
- case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
- -$.datepicker._get(inst, 'stepBigMonths') :
- -$.datepicker._get(inst, 'stepMonths')), 'M');
- break; // previous month/year on page up/+ ctrl
- case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
- +$.datepicker._get(inst, 'stepBigMonths') :
- +$.datepicker._get(inst, 'stepMonths')), 'M');
- break; // next month/year on page down/+ ctrl
- case 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target);
- handled = event.ctrlKey || event.metaKey;
- break; // clear on ctrl or command +end
- case 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target);
- handled = event.ctrlKey || event.metaKey;
- break; // current on ctrl or command +home
- case 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D');
- handled = event.ctrlKey || event.metaKey;
- // -1 day on ctrl or command +left
- if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?
- -$.datepicker._get(inst, 'stepBigMonths') :
- -$.datepicker._get(inst, 'stepMonths')), 'M');
- // next month/year on alt +left on Mac
- break;
- case 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D');
- handled = event.ctrlKey || event.metaKey;
- break; // -1 week on ctrl or command +up
- case 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D');
- handled = event.ctrlKey || event.metaKey;
- // +1 day on ctrl or command +right
- if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?
- +$.datepicker._get(inst, 'stepBigMonths') :
- +$.datepicker._get(inst, 'stepMonths')), 'M');
- // next month/year on alt +right
- break;
- case 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D');
- handled = event.ctrlKey || event.metaKey;
- break; // +1 week on ctrl or command +down
- default: handled = false;
- }
- else if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home
- $.datepicker._showDatepicker(this);
- else {
- handled = false;
- }
- if (handled) {
- event.preventDefault();
- event.stopPropagation();
- }
- },
-
- /* Filter entered characters - based on date format. */
- _doKeyPress: function(event) {
- var inst = $.datepicker._getInst(event.target);
- if ($.datepicker._get(inst, 'constrainInput')) {
- var chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat'));
- var chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode);
- return event.ctrlKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1);
- }
- },
-
- /* Synchronise manual entry and field/alternate field. */
- _doKeyUp: function(event) {
- var inst = $.datepicker._getInst(event.target);
- if (inst.input.val() != inst.lastVal) {
- try {
- var date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),
- (inst.input ? inst.input.val() : null),
- $.datepicker._getFormatConfig(inst));
- if (date) { // only if valid
- $.datepicker._setDateFromField(inst);
- $.datepicker._updateAlternate(inst);
- $.datepicker._updateDatepicker(inst);
- }
- }
- catch (event) {
- $.datepicker.log(event);
- }
- }
- return true;
- },
-
- /* Pop-up the date picker for a given input field.
- @param input element - the input field attached to the date picker or
- event - if triggered by focus */
- _showDatepicker: function(input) {
- input = input.target || input;
- if (input.nodeName.toLowerCase() != 'input') // find from button/image trigger
- input = $('input', input.parentNode)[0];
- if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here
- return;
- var inst = $.datepicker._getInst(input);
- if ($.datepicker._curInst && $.datepicker._curInst != inst) {
- $.datepicker._curInst.dpDiv.stop(true, true);
- }
- var beforeShow = $.datepicker._get(inst, 'beforeShow');
- extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input, inst]) : {}));
- inst.lastVal = null;
- $.datepicker._lastInput = input;
- $.datepicker._setDateFromField(inst);
- if ($.datepicker._inDialog) // hide cursor
- input.value = '';
- if (!$.datepicker._pos) { // position below input
- $.datepicker._pos = $.datepicker._findPos(input);
- $.datepicker._pos[1] += input.offsetHeight; // add the height
- }
- var isFixed = false;
- $(input).parents().each(function() {
- isFixed |= $(this).css('position') == 'fixed';
- return !isFixed;
- });
- if (isFixed && $.browser.opera) { // correction for Opera when fixed and scrolled
- $.datepicker._pos[0] -= document.documentElement.scrollLeft;
- $.datepicker._pos[1] -= document.documentElement.scrollTop;
- }
- var offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};
- $.datepicker._pos = null;
- // determine sizing offscreen
- inst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'});
- $.datepicker._updateDatepicker(inst);
- // fix width for dynamic number of date pickers
- // and adjust position before showing
- offset = $.datepicker._checkOffset(inst, offset, isFixed);
- inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?
- 'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none',
- left: offset.left + 'px', top: offset.top + 'px'});
- if (!inst.inline) {
- var showAnim = $.datepicker._get(inst, 'showAnim');
- var duration = $.datepicker._get(inst, 'duration');
- var postProcess = function() {
- $.datepicker._datepickerShowing = true;
- var borders = $.datepicker._getBorders(inst.dpDiv);
- inst.dpDiv.find('iframe.ui-datepicker-cover'). // IE6- only
- css({left: -borders[0], top: -borders[1],
- width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()});
- };
- inst.dpDiv.zIndex($(input).zIndex()+1);
- if ($.effects && $.effects[showAnim])
- inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);
- else
- inst.dpDiv[showAnim || 'show']((showAnim ? duration : null), postProcess);
- if (!showAnim || !duration)
- postProcess();
- if (inst.input.is(':visible') && !inst.input.is(':disabled'))
- inst.input.focus();
- $.datepicker._curInst = inst;
- }
- },
-
- /* Generate the date picker content. */
- _updateDatepicker: function(inst) {
- var self = this;
- var borders = $.datepicker._getBorders(inst.dpDiv);
- inst.dpDiv.empty().append(this._generateHTML(inst))
- .find('iframe.ui-datepicker-cover') // IE6- only
- .css({left: -borders[0], top: -borders[1],
- width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()})
- .end()
- .find('button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a')
- .bind('mouseout', function(){
- $(this).removeClass('ui-state-hover');
- if(this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover');
- if(this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover');
- })
- .bind('mouseover', function(){
- if (!self._isDisabledDatepicker( inst.inline ? inst.dpDiv.parent()[0] : inst.input[0])) {
- $(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');
- $(this).addClass('ui-state-hover');
- if(this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover');
- if(this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover');
- }
- })
- .end()
- .find('.' + this._dayOverClass + ' a')
- .trigger('mouseover')
- .end();
- var numMonths = this._getNumberOfMonths(inst);
- var cols = numMonths[1];
- var width = 17;
- if (cols > 1)
- inst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em');
- else
- inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width('');
- inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') +
- 'Class']('ui-datepicker-multi');
- inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') +
- 'Class']('ui-datepicker-rtl');
- if (inst == $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input &&
- inst.input.is(':visible') && !inst.input.is(':disabled'))
- inst.input.focus();
- },
-
- /* Retrieve the size of left and top borders for an element.
- @param elem (jQuery object) the element of interest
- @return (number[2]) the left and top borders */
- _getBorders: function(elem) {
- var convert = function(value) {
- return {thin: 1, medium: 2, thick: 3}[value] || value;
- };
- return [parseFloat(convert(elem.css('border-left-width'))),
- parseFloat(convert(elem.css('border-top-width')))];
- },
-
- /* Check positioning to remain on screen. */
- _checkOffset: function(inst, offset, isFixed) {
- var dpWidth = inst.dpDiv.outerWidth();
- var dpHeight = inst.dpDiv.outerHeight();
- var inputWidth = inst.input ? inst.input.outerWidth() : 0;
- var inputHeight = inst.input ? inst.input.outerHeight() : 0;
- var viewWidth = document.documentElement.clientWidth + $(document).scrollLeft();
- var viewHeight = document.documentElement.clientHeight + $(document).scrollTop();
-
- offset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0);
- offset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0;
- offset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;
-
- // now check if datepicker is showing outside window viewport - move to a better place if so.
- offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?
- Math.abs(offset.left + dpWidth - viewWidth) : 0);
- offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?
- Math.abs(dpHeight + inputHeight) : 0);
-
- return offset;
- },
-
- /* Find an object's position on the screen. */
- _findPos: function(obj) {
- var inst = this._getInst(obj);
- var isRTL = this._get(inst, 'isRTL');
- while (obj && (obj.type == 'hidden' || obj.nodeType != 1)) {
- obj = obj[isRTL ? 'previousSibling' : 'nextSibling'];
- }
- var position = $(obj).offset();
- return [position.left, position.top];
- },
-
- /* Hide the date picker from view.
- @param input element - the input field attached to the date picker */
- _hideDatepicker: function(input) {
- var inst = this._curInst;
- if (!inst || (input && inst != $.data(input, PROP_NAME)))
- return;
- if (this._datepickerShowing) {
- var showAnim = this._get(inst, 'showAnim');
- var duration = this._get(inst, 'duration');
- var postProcess = function() {
- $.datepicker._tidyDialog(inst);
- this._curInst = null;
- };
- if ($.effects && $.effects[showAnim])
- inst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);
- else
- inst.dpDiv[(showAnim == 'slideDown' ? 'slideUp' :
- (showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess);
- if (!showAnim)
- postProcess();
- var onClose = this._get(inst, 'onClose');
- if (onClose)
- onClose.apply((inst.input ? inst.input[0] : null),
- [(inst.input ? inst.input.val() : ''), inst]); // trigger custom callback
- this._datepickerShowing = false;
- this._lastInput = null;
- if (this._inDialog) {
- this._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' });
- if ($.blockUI) {
- $.unblockUI();
- $('body').append(this.dpDiv);
- }
- }
- this._inDialog = false;
- }
- },
-
- /* Tidy up after a dialog display. */
- _tidyDialog: function(inst) {
- inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar');
- },
-
- /* Close date picker if clicked elsewhere. */
- _checkExternalClick: function(event) {
- if (!$.datepicker._curInst)
- return;
- var $target = $(event.target);
- if ($target[0].id != $.datepicker._mainDivId &&
- $target.parents('#' + $.datepicker._mainDivId).length == 0 &&
- !$target.hasClass($.datepicker.markerClassName) &&
- !$target.hasClass($.datepicker._triggerClass) &&
- $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI))
- $.datepicker._hideDatepicker();
- },
-
- /* Adjust one of the date sub-fields. */
- _adjustDate: function(id, offset, period) {
- var target = $(id);
- var inst = this._getInst(target[0]);
- if (this._isDisabledDatepicker(target[0])) {
- return;
- }
- this._adjustInstDate(inst, offset +
- (period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), // undo positioning
- period);
- this._updateDatepicker(inst);
- },
-
- /* Action for current link. */
- _gotoToday: function(id) {
- var target = $(id);
- var inst = this._getInst(target[0]);
- if (this._get(inst, 'gotoCurrent') && inst.currentDay) {
- inst.selectedDay = inst.currentDay;
- inst.drawMonth = inst.selectedMonth = inst.currentMonth;
- inst.drawYear = inst.selectedYear = inst.currentYear;
- }
- else {
- var date = new Date();
- inst.selectedDay = date.getDate();
- inst.drawMonth = inst.selectedMonth = date.getMonth();
- inst.drawYear = inst.selectedYear = date.getFullYear();
- }
- this._notifyChange(inst);
- this._adjustDate(target);
- },
-
- /* Action for selecting a new month/year. */
- _selectMonthYear: function(id, select, period) {
- var target = $(id);
- var inst = this._getInst(target[0]);
- inst._selectingMonthYear = false;
- inst['selected' + (period == 'M' ? 'Month' : 'Year')] =
- inst['draw' + (period == 'M' ? 'Month' : 'Year')] =
- parseInt(select.options[select.selectedIndex].value,10);
- this._notifyChange(inst);
- this._adjustDate(target);
- },
-
- /* Restore input focus after not changing month/year. */
- _clickMonthYear: function(id) {
- var target = $(id);
- var inst = this._getInst(target[0]);
- if (inst.input && inst._selectingMonthYear && !$.browser.msie)
- inst.input.focus();
- inst._selectingMonthYear = !inst._selectingMonthYear;
- },
-
- /* Action for selecting a day. */
- _selectDay: function(id, month, year, td) {
- var target = $(id);
- if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {
- return;
- }
- var inst = this._getInst(target[0]);
- inst.selectedDay = inst.currentDay = $('a', td).html();
- inst.selectedMonth = inst.currentMonth = month;
- inst.selectedYear = inst.currentYear = year;
- this._selectDate(id, this._formatDate(inst,
- inst.currentDay, inst.currentMonth, inst.currentYear));
- },
-
- /* Erase the input field and hide the date picker. */
- _clearDate: function(id) {
- var target = $(id);
- var inst = this._getInst(target[0]);
- this._selectDate(target, '');
- },
-
- /* Update the input field with the selected date. */
- _selectDate: function(id, dateStr) {
- var target = $(id);
- var inst = this._getInst(target[0]);
- dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
- if (inst.input)
- inst.input.val(dateStr);
- this._updateAlternate(inst);
- var onSelect = this._get(inst, 'onSelect');
- if (onSelect)
- onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback
- else if (inst.input)
- inst.input.trigger('change'); // fire the change event
- if (inst.inline)
- this._updateDatepicker(inst);
- else {
- this._hideDatepicker();
- this._lastInput = inst.input[0];
- if (typeof(inst.input[0]) != 'object')
- inst.input.focus(); // restore focus
- this._lastInput = null;
- }
- },
-
- /* Update any alternate field to synchronise with the main field. */
- _updateAlternate: function(inst) {
- var altField = this._get(inst, 'altField');
- if (altField) { // update alternate field too
- var altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat');
- var date = this._getDate(inst);
- var dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));
- $(altField).each(function() { $(this).val(dateStr); });
- }
- },
-
- /* Set as beforeShowDay function to prevent selection of weekends.
- @param date Date - the date to customise
- @return [boolean, string] - is this date selectable?, what is its CSS class? */
- noWeekends: function(date) {
- var day = date.getDay();
- return [(day > 0 && day < 6), ''];
- },
-
- /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
- @param date Date - the date to get the week for
- @return number - the number of the week within the year that contains this date */
- iso8601Week: function(date) {
- var checkDate = new Date(date.getTime());
- // Find Thursday of this week starting on Monday
- checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
- var time = checkDate.getTime();
- checkDate.setMonth(0); // Compare with Jan 1
- checkDate.setDate(1);
- return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;
- },
-
- /* Parse a string value into a date object.
- See formatDate below for the possible formats.
-
- @param format string - the expected format of the date
- @param value string - the date in the above format
- @param settings Object - attributes include:
- shortYearCutoff number - the cutoff year for determining the century (optional)
- dayNamesShort string[7] - abbreviated names of the days from Sunday (optional)
- dayNames string[7] - names of the days from Sunday (optional)
- monthNamesShort string[12] - abbreviated names of the months (optional)
- monthNames string[12] - names of the months (optional)
- @return Date - the extracted date value or null if value is blank */
- parseDate: function (format, value, settings) {
- if (format == null || value == null)
- throw 'Invalid arguments';
- value = (typeof value == 'object' ? value.toString() : value + '');
- if (value == '')
- return null;
- var shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff;
- var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;
- var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;
- var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;
- var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;
- var year = -1;
- var month = -1;
- var day = -1;
- var doy = -1;
- var literal = false;
- // Check whether a format character is doubled
- var lookAhead = function(match) {
- var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
- if (matches)
- iFormat++;
- return matches;
- };
- // Extract a number from the string value
- var getNumber = function(match) {
- lookAhead(match);
- var size = (match == '@' ? 14 : (match == '!' ? 20 :
- (match == 'y' ? 4 : (match == 'o' ? 3 : 2))));
- var digits = new RegExp('^\\d{1,' + size + '}');
- var num = value.substring(iValue).match(digits);
- if (!num)
- throw 'Missing number at position ' + iValue;
- iValue += num[0].length;
- return parseInt(num[0], 10);
- };
- // Extract a name from the string value and convert to an index
- var getName = function(match, shortNames, longNames) {
- var names = (lookAhead(match) ? longNames : shortNames);
- for (var i = 0; i < names.length; i++) {
- if (value.substr(iValue, names[i].length) == names[i]) {
- iValue += names[i].length;
- return i + 1;
- }
- }
- throw 'Unknown name at position ' + iValue;
- };
- // Confirm that a literal character matches the string value
- var checkLiteral = function() {
- if (value.charAt(iValue) != format.charAt(iFormat))
- throw 'Unexpected literal at position ' + iValue;
- iValue++;
- };
- var iValue = 0;
- for (var iFormat = 0; iFormat < format.length; iFormat++) {
- if (literal)
- if (format.charAt(iFormat) == "'" && !lookAhead("'"))
- literal = false;
- else
- checkLiteral();
- else
- switch (format.charAt(iFormat)) {
- case 'd':
- day = getNumber('d');
- break;
- case 'D':
- getName('D', dayNamesShort, dayNames);
- break;
- case 'o':
- doy = getNumber('o');
- break;
- case 'm':
- month = getNumber('m');
- break;
- case 'M':
- month = getName('M', monthNamesShort, monthNames);
- break;
- case 'y':
- year = getNumber('y');
- break;
- case '@':
- var date = new Date(getNumber('@'));
- year = date.getFullYear();
- month = date.getMonth() + 1;
- day = date.getDate();
- break;
- case '!':
- var date = new Date((getNumber('!') - this._ticksTo1970) / 10000);
- year = date.getFullYear();
- month = date.getMonth() + 1;
- day = date.getDate();
- break;
- case "'":
- if (lookAhead("'"))
- checkLiteral();
- else
- literal = true;
- break;
- default:
- checkLiteral();
- }
- }
- if (year == -1)
- year = new Date().getFullYear();
- else if (year < 100)
- year += new Date().getFullYear() - new Date().getFullYear() % 100 +
- (year <= shortYearCutoff ? 0 : -100);
- if (doy > -1) {
- month = 1;
- day = doy;
- do {
- var dim = this._getDaysInMonth(year, month - 1);
- if (day <= dim)
- break;
- month++;
- day -= dim;
- } while (true);
- }
- var date = this._daylightSavingAdjust(new Date(year, month - 1, day));
- if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day)
- throw 'Invalid date'; // E.g. 31/02/*
- return date;
- },
-
- /* Standard date formats. */
- ATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601)
- COOKIE: 'D, dd M yy',
- ISO_8601: 'yy-mm-dd',
- RFC_822: 'D, d M y',
- RFC_850: 'DD, dd-M-y',
- RFC_1036: 'D, d M y',
- RFC_1123: 'D, d M yy',
- RFC_2822: 'D, d M yy',
- RSS: 'D, d M y', // RFC 822
- TICKS: '!',
- TIMESTAMP: '@',
- W3C: 'yy-mm-dd', // ISO 8601
-
- _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +
- Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),
-
- /* Format a date object into a string value.
- The format can be combinations of the following:
- d - day of month (no leading zero)
- dd - day of month (two digit)
- o - day of year (no leading zeros)
- oo - day of year (three digit)
- D - day name short
- DD - day name long
- m - month of year (no leading zero)
- mm - month of year (two digit)
- M - month name short
- MM - month name long
- y - year (two digit)
- yy - year (four digit)
- @ - Unix timestamp (ms since 01/01/1970)
- ! - Windows ticks (100ns since 01/01/0001)
- '...' - literal text
- '' - single quote
-
- @param format string - the desired format of the date
- @param date Date - the date value to format
- @param settings Object - attributes include:
- dayNamesShort string[7] - abbreviated names of the days from Sunday (optional)
- dayNames string[7] - names of the days from Sunday (optional)
- monthNamesShort string[12] - abbreviated names of the months (optional)
- monthNames string[12] - names of the months (optional)
- @return string - the date in the above format */
- formatDate: function (format, date, settings) {
- if (!date)
- return '';
- var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;
- var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;
- var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;
- var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;
- // Check whether a format character is doubled
- var lookAhead = function(match) {
- var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
- if (matches)
- iFormat++;
- return matches;
- };
- // Format a number, with leading zero if necessary
- var formatNumber = function(match, value, len) {
- var num = '' + value;
- if (lookAhead(match))
- while (num.length < len)
- num = '0' + num;
- return num;
- };
- // Format a name, short or long as requested
- var formatName = function(match, value, shortNames, longNames) {
- return (lookAhead(match) ? longNames[value] : shortNames[value]);
- };
- var output = '';
- var literal = false;
- if (date)
- for (var iFormat = 0; iFormat < format.length; iFormat++) {
- if (literal)
- if (format.charAt(iFormat) == "'" && !lookAhead("'"))
- literal = false;
- else
- output += format.charAt(iFormat);
- else
- switch (format.charAt(iFormat)) {
- case 'd':
- output += formatNumber('d', date.getDate(), 2);
- break;
- case 'D':
- output += formatName('D', date.getDay(), dayNamesShort, dayNames);
- break;
- case 'o':
- output += formatNumber('o',
- (date.getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000, 3);
- break;
- case 'm':
- output += formatNumber('m', date.getMonth() + 1, 2);
- break;
- case 'M':
- output += formatName('M', date.getMonth(), monthNamesShort, monthNames);
- break;
- case 'y':
- output += (lookAhead('y') ? date.getFullYear() :
- (date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100);
- break;
- case '@':
- output += date.getTime();
- break;
- case '!':
- output += date.getTime() * 10000 + this._ticksTo1970;
- break;
- case "'":
- if (lookAhead("'"))
- output += "'";
- else
- literal = true;
- break;
- default:
- output += format.charAt(iFormat);
- }
- }
- return output;
- },
-
- /* Extract all possible characters from the date format. */
- _possibleChars: function (format) {
- var chars = '';
- var literal = false;
- // Check whether a format character is doubled
- var lookAhead = function(match) {
- var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
- if (matches)
- iFormat++;
- return matches;
- };
- for (var iFormat = 0; iFormat < format.length; iFormat++)
- if (literal)
- if (format.charAt(iFormat) == "'" && !lookAhead("'"))
- literal = false;
- else
- chars += format.charAt(iFormat);
- else
- switch (format.charAt(iFormat)) {
- case 'd': case 'm': case 'y': case '@':
- chars += '0123456789';
- break;
- case 'D': case 'M':
- return null; // Accept anything
- case "'":
- if (lookAhead("'"))
- chars += "'";
- else
- literal = true;
- break;
- default:
- chars += format.charAt(iFormat);
- }
- return chars;
- },
-
- /* Get a setting value, defaulting if necessary. */
- _get: function(inst, name) {
- return inst.settings[name] !== undefined ?
- inst.settings[name] : this._defaults[name];
- },
-
- /* Parse existing date and initialise date picker. */
- _setDateFromField: function(inst, noDefault) {
- if (inst.input.val() == inst.lastVal) {
- return;
- }
- var dateFormat = this._get(inst, 'dateFormat');
- var dates = inst.lastVal = inst.input ? inst.input.val() : null;
- var date, defaultDate;
- date = defaultDate = this._getDefaultDate(inst);
- var settings = this._getFormatConfig(inst);
- try {
- date = this.parseDate(dateFormat, dates, settings) || defaultDate;
- } catch (event) {
- this.log(event);
- dates = (noDefault ? '' : dates);
- }
- inst.selectedDay = date.getDate();
- inst.drawMonth = inst.selectedMonth = date.getMonth();
- inst.drawYear = inst.selectedYear = date.getFullYear();
- inst.currentDay = (dates ? date.getDate() : 0);
- inst.currentMonth = (dates ? date.getMonth() : 0);
- inst.currentYear = (dates ? date.getFullYear() : 0);
- this._adjustInstDate(inst);
- },
-
- /* Retrieve the default date shown on opening. */
- _getDefaultDate: function(inst) {
- return this._restrictMinMax(inst,
- this._determineDate(inst, this._get(inst, 'defaultDate'), new Date()));
- },
-
- /* A date may be specified as an exact value or a relative one. */
- _determineDate: function(inst, date, defaultDate) {
- var offsetNumeric = function(offset) {
- var date = new Date();
- date.setDate(date.getDate() + offset);
- return date;
- };
- var offsetString = function(offset) {
- try {
- return $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),
- offset, $.datepicker._getFormatConfig(inst));
- }
- catch (e) {
- // Ignore
- }
- var date = (offset.toLowerCase().match(/^c/) ?
- $.datepicker._getDate(inst) : null) || new Date();
- var year = date.getFullYear();
- var month = date.getMonth();
- var day = date.getDate();
- var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;
- var matches = pattern.exec(offset);
- while (matches) {
- switch (matches[2] || 'd') {
- case 'd' : case 'D' :
- day += parseInt(matches[1],10); break;
- case 'w' : case 'W' :
- day += parseInt(matches[1],10) * 7; break;
- case 'm' : case 'M' :
- month += parseInt(matches[1],10);
- day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
- break;
- case 'y': case 'Y' :
- year += parseInt(matches[1],10);
- day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
- break;
- }
- matches = pattern.exec(offset);
- }
- return new Date(year, month, day);
- };
- date = (date == null ? defaultDate : (typeof date == 'string' ? offsetString(date) :
- (typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : date)));
- date = (date && date.toString() == 'Invalid Date' ? defaultDate : date);
- if (date) {
- date.setHours(0);
- date.setMinutes(0);
- date.setSeconds(0);
- date.setMilliseconds(0);
- }
- return this._daylightSavingAdjust(date);
- },
-
- /* Handle switch to/from daylight saving.
- Hours may be non-zero on daylight saving cut-over:
- > 12 when midnight changeover, but then cannot generate
- midnight datetime, so jump to 1AM, otherwise reset.
- @param date (Date) the date to check
- @return (Date) the corrected date */
- _daylightSavingAdjust: function(date) {
- if (!date) return null;
- date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
- return date;
- },
-
- /* Set the date(s) directly. */
- _setDate: function(inst, date, noChange) {
- var clear = !(date);
- var origMonth = inst.selectedMonth;
- var origYear = inst.selectedYear;
- date = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));
- inst.selectedDay = inst.currentDay = date.getDate();
- inst.drawMonth = inst.selectedMonth = inst.currentMonth = date.getMonth();
- inst.drawYear = inst.selectedYear = inst.currentYear = date.getFullYear();
- if ((origMonth != inst.selectedMonth || origYear != inst.selectedYear) && !noChange)
- this._notifyChange(inst);
- this._adjustInstDate(inst);
- if (inst.input) {
- inst.input.val(clear ? '' : this._formatDate(inst));
- }
- },
-
- /* Retrieve the date(s) directly. */
- _getDate: function(inst) {
- var startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null :
- this._daylightSavingAdjust(new Date(
- inst.currentYear, inst.currentMonth, inst.currentDay)));
- return startDate;
- },
-
- /* Generate the HTML for the current state of the date picker. */
- _generateHTML: function(inst) {
- var today = new Date();
- today = this._daylightSavingAdjust(
- new Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time
- var isRTL = this._get(inst, 'isRTL');
- var showButtonPanel = this._get(inst, 'showButtonPanel');
- var hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext');
- var navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat');
- var numMonths = this._getNumberOfMonths(inst);
- var showCurrentAtPos = this._get(inst, 'showCurrentAtPos');
- var stepMonths = this._get(inst, 'stepMonths');
- var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);
- var currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :
- new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
- var minDate = this._getMinMaxDate(inst, 'min');
- var maxDate = this._getMinMaxDate(inst, 'max');
- var drawMonth = inst.drawMonth - showCurrentAtPos;
- var drawYear = inst.drawYear;
- if (drawMonth < 0) {
- drawMonth += 12;
- drawYear--;
- }
- if (maxDate) {
- var maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),
- maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));
- maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);
- while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {
- drawMonth--;
- if (drawMonth < 0) {
- drawMonth = 11;
- drawYear--;
- }
- }
- }
- inst.drawMonth = drawMonth;
- inst.drawYear = drawYear;
- var prevText = this._get(inst, 'prevText');
- prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,
- this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),
- this._getFormatConfig(inst)));
- var prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?
- '<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_' + dpuuid +
- '.datepicker._adjustDate(\'#' + inst.id + '\', -' + stepMonths + ', \'M\');"' +
- ' title="' + prevText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>' :
- (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+ prevText +'"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>'));
- var nextText = this._get(inst, 'nextText');
- nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,
- this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),
- this._getFormatConfig(inst)));
- var next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?
- '<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_' + dpuuid +
- '.datepicker._adjustDate(\'#' + inst.id + '\', +' + stepMonths + ', \'M\');"' +
- ' title="' + nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>' :
- (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+ nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>'));
- var currentText = this._get(inst, 'currentText');
- var gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today);
- currentText = (!navigationAsDateFormat ? currentText :
- this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));
- var controls = (!inst.inline ? '<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_' + dpuuid +
- '.datepicker._hideDatepicker();">' + this._get(inst, 'closeText') + '</button>' : '');
- var buttonPanel = (showButtonPanel) ? '<div class="ui-datepicker-buttonpane ui-widget-content">' + (isRTL ? controls : '') +
- (this._isInRange(inst, gotoDate) ? '<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_' + dpuuid +
- '.datepicker._gotoToday(\'#' + inst.id + '\');"' +
- '>' + currentText + '</button>' : '') + (isRTL ? '' : controls) + '</div>' : '';
- var firstDay = parseInt(this._get(inst, 'firstDay'),10);
- firstDay = (isNaN(firstDay) ? 0 : firstDay);
- var showWeek = this._get(inst, 'showWeek');
- var dayNames = this._get(inst, 'dayNames');
- var dayNamesShort = this._get(inst, 'dayNamesShort');
- var dayNamesMin = this._get(inst, 'dayNamesMin');
- var monthNames = this._get(inst, 'monthNames');
- var monthNamesShort = this._get(inst, 'monthNamesShort');
- var beforeShowDay = this._get(inst, 'beforeShowDay');
- var showOtherMonths = this._get(inst, 'showOtherMonths');
- var selectOtherMonths = this._get(inst, 'selectOtherMonths');
- var calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week;
- var defaultDate = this._getDefaultDate(inst);
- var html = '';
- for (var row = 0; row < numMonths[0]; row++) {
- var group = '';
- for (var col = 0; col < numMonths[1]; col++) {
- var selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));
- var cornerClass = ' ui-corner-all';
- var calender = '';
- if (isMultiMonth) {
- calender += '<div class="ui-datepicker-group';
- if (numMonths[1] > 1)
- switch (col) {
- case 0: calender += ' ui-datepicker-group-first';
- cornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); break;
- case numMonths[1]-1: calender += ' ui-datepicker-group-last';
- cornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); break;
- default: calender += ' ui-datepicker-group-middle'; cornerClass = ''; break;
- }
- calender += '">';
- }
- calender += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '">' +
- (/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') +
- (/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') +
- this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
- row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers
- '</div><table class="ui-datepicker-calendar"><thead>' +
- '<tr>';
- var thead = (showWeek ? '<th class="ui-datepicker-week-col">' + this._get(inst, 'weekHeader') + '</th>' : '');
- for (var dow = 0; dow < 7; dow++) { // days of the week
- var day = (dow + firstDay) % 7;
- thead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end"' : '') + '>' +
- '<span title="' + dayNames[day] + '">' + dayNamesMin[day] + '</span></th>';
- }
- calender += thead + '</tr></thead><tbody>';
- var daysInMonth = this._getDaysInMonth(drawYear, drawMonth);
- if (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth)
- inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);
- var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
- var numRows = (isMultiMonth ? 6 : Math.ceil((leadDays + daysInMonth) / 7)); // calculate the number of rows to generate
- var printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));
- for (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows
- calender += '<tr>';
- var tbody = (!showWeek ? '' : '<td class="ui-datepicker-week-col">' +
- this._get(inst, 'calculateWeek')(printDate) + '</td>');
- for (var dow = 0; dow < 7; dow++) { // create date picker days
- var daySettings = (beforeShowDay ?
- beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']);
- var otherMonth = (printDate.getMonth() != drawMonth);
- var unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||
- (minDate && printDate < minDate) || (maxDate && printDate > maxDate);
- tbody += '<td class="' +
- ((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + // highlight weekends
- (otherMonth ? ' ui-datepicker-other-month' : '') + // highlight days from other months
- ((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || // user pressed key
- (defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ?
- // or defaultDate is current printedDate and defaultDate is selectedDate
- ' ' + this._dayOverClass : '') + // highlight selected day
- (unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled': '') + // highlight unselectable days
- (otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + // highlight custom dates
- (printDate.getTime() == currentDate.getTime() ? ' ' + this._currentClass : '') + // highlight selected day
- (printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '"' + // highlight today (if different)
- ((!otherMonth || showOtherMonths) && daySettings[2] ? ' title="' + daySettings[2] + '"' : '') + // cell title
- (unselectable ? '' : ' onclick="DP_jQuery_' + dpuuid + '.datepicker._selectDay(\'#' +
- inst.id + '\',' + printDate.getMonth() + ',' + printDate.getFullYear() + ', this);return false;"') + '>' + // actions
- (otherMonth && !showOtherMonths ? '&#xa0;' : // display for other months
- (unselectable ? '<span class="ui-state-default">' + printDate.getDate() + '</span>' : '<a class="ui-state-default' +
- (printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') +
- (printDate.getTime() == currentDate.getTime() ? ' ui-state-active' : '') + // highlight selected day
- (otherMonth ? ' ui-priority-secondary' : '') + // distinguish dates from other months
- '" href="#">' + printDate.getDate() + '</a>')) + '</td>'; // display selectable date
- printDate.setDate(printDate.getDate() + 1);
- printDate = this._daylightSavingAdjust(printDate);
- }
- calender += tbody + '</tr>';
- }
- drawMonth++;
- if (drawMonth > 11) {
- drawMonth = 0;
- drawYear++;
- }
- calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
- ((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : '');
- group += calender;
- }
- html += group;
- }
- html += buttonPanel + ($.browser.msie && parseInt($.browser.version,10) < 7 && !inst.inline ?
- '<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>' : '');
- inst._keyEvent = false;
- return html;
- },
-
- /* Generate the month and year header. */
- _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,
- secondary, monthNames, monthNamesShort) {
- var changeMonth = this._get(inst, 'changeMonth');
- var changeYear = this._get(inst, 'changeYear');
- var showMonthAfterYear = this._get(inst, 'showMonthAfterYear');
- var html = '<div class="ui-datepicker-title">';
- var monthHtml = '';
- // month selection
- if (secondary || !changeMonth)
- monthHtml += '<span class="ui-datepicker-month">' + monthNames[drawMonth] + '</span>';
- else {
- var inMinYear = (minDate && minDate.getFullYear() == drawYear);
- var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);
- monthHtml += '<select class="ui-datepicker-month" ' +
- 'onchange="DP_jQuery_' + dpuuid + '.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'M\');" ' +
- 'onclick="DP_jQuery_' + dpuuid + '.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
- '>';
- for (var month = 0; month < 12; month++) {
- if ((!inMinYear || month >= minDate.getMonth()) &&
- (!inMaxYear || month <= maxDate.getMonth()))
- monthHtml += '<option value="' + month + '"' +
- (month == drawMonth ? ' selected="selected"' : '') +
- '>' + monthNamesShort[month] + '</option>';
- }
- monthHtml += '</select>';
- }
- if (!showMonthAfterYear)
- html += monthHtml + (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '');
- // year selection
- if (secondary || !changeYear)
- html += '<span class="ui-datepicker-year">' + drawYear + '</span>';
- else {
- // determine range of years to display
- var years = this._get(inst, 'yearRange').split(':');
- var thisYear = new Date().getFullYear();
- var determineYear = function(value) {
- var year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) :
- (value.match(/[+-].*/) ? thisYear + parseInt(value, 10) :
- parseInt(value, 10)));
- return (isNaN(year) ? thisYear : year);
- };
- var year = determineYear(years[0]);
- var endYear = Math.max(year, determineYear(years[1] || ''));
- year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
- endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
- html += '<select class="ui-datepicker-year" ' +
- 'onchange="DP_jQuery_' + dpuuid + '.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'Y\');" ' +
- 'onclick="DP_jQuery_' + dpuuid + '.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
- '>';
- for (; year <= endYear; year++) {
- html += '<option value="' + year + '"' +
- (year == drawYear ? ' selected="selected"' : '') +
- '>' + year + '</option>';
- }
- html += '</select>';
- }
- html += this._get(inst, 'yearSuffix');
- if (showMonthAfterYear)
- html += (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '') + monthHtml;
- html += '</div>'; // Close datepicker_header
- return html;
- },
-
- /* Adjust one of the date sub-fields. */
- _adjustInstDate: function(inst, offset, period) {
- var year = inst.drawYear + (period == 'Y' ? offset : 0);
- var month = inst.drawMonth + (period == 'M' ? offset : 0);
- var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) +
- (period == 'D' ? offset : 0);
- var date = this._restrictMinMax(inst,
- this._daylightSavingAdjust(new Date(year, month, day)));
- inst.selectedDay = date.getDate();
- inst.drawMonth = inst.selectedMonth = date.getMonth();
- inst.drawYear = inst.selectedYear = date.getFullYear();
- if (period == 'M' || period == 'Y')
- this._notifyChange(inst);
- },
-
- /* Ensure a date is within any min/max bounds. */
- _restrictMinMax: function(inst, date) {
- var minDate = this._getMinMaxDate(inst, 'min');
- var maxDate = this._getMinMaxDate(inst, 'max');
- date = (minDate && date < minDate ? minDate : date);
- date = (maxDate && date > maxDate ? maxDate : date);
- return date;
- },
-
- /* Notify change of month/year. */
- _notifyChange: function(inst) {
- var onChange = this._get(inst, 'onChangeMonthYear');
- if (onChange)
- onChange.apply((inst.input ? inst.input[0] : null),
- [inst.selectedYear, inst.selectedMonth + 1, inst]);
- },
-
- /* Determine the number of months to show. */
- _getNumberOfMonths: function(inst) {
- var numMonths = this._get(inst, 'numberOfMonths');
- return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths));
- },
-
- /* Determine the current maximum date - ensure no time components are set. */
- _getMinMaxDate: function(inst, minMax) {
- return this._determineDate(inst, this._get(inst, minMax + 'Date'), null);
- },
-
- /* Find the number of days in a given month. */
- _getDaysInMonth: function(year, month) {
- return 32 - new Date(year, month, 32).getDate();
- },
-
- /* Find the day of the week of the first of a month. */
- _getFirstDayOfMonth: function(year, month) {
- return new Date(year, month, 1).getDay();
- },
-
- /* Determines if we should allow a "next/prev" month display change. */
- _canAdjustMonth: function(inst, offset, curYear, curMonth) {
- var numMonths = this._getNumberOfMonths(inst);
- var date = this._daylightSavingAdjust(new Date(curYear,
- curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));
- if (offset < 0)
- date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));
- return this._isInRange(inst, date);
- },
-
- /* Is the given date in the accepted range? */
- _isInRange: function(inst, date) {
- var minDate = this._getMinMaxDate(inst, 'min');
- var maxDate = this._getMinMaxDate(inst, 'max');
- return ((!minDate || date.getTime() >= minDate.getTime()) &&
- (!maxDate || date.getTime() <= maxDate.getTime()));
- },
-
- /* Provide the configuration settings for formatting/parsing. */
- _getFormatConfig: function(inst) {
- var shortYearCutoff = this._get(inst, 'shortYearCutoff');
- shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :
- new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
- return {shortYearCutoff: shortYearCutoff,
- dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'),
- monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')};
- },
-
- /* Format the given date for display. */
- _formatDate: function(inst, day, month, year) {
- if (!day) {
- inst.currentDay = inst.selectedDay;
- inst.currentMonth = inst.selectedMonth;
- inst.currentYear = inst.selectedYear;
- }
- var date = (day ? (typeof day == 'object' ? day :
- this._daylightSavingAdjust(new Date(year, month, day))) :
- this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
- return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst));
- }
-});
-
-/* jQuery extend now ignores nulls! */
-function extendRemove(target, props) {
- $.extend(target, props);
- for (var name in props)
- if (props[name] == null || props[name] == undefined)
- target[name] = props[name];
- return target;
-};
-
-/* Determine whether an object is an array. */
-function isArray(a) {
- return (a && (($.browser.safari && typeof a == 'object' && a.length) ||
- (a.constructor && a.constructor.toString().match(/\Array\(\)/))));
-};
-
-/* Invoke the datepicker functionality.
- @param options string - a command, optionally followed by additional parameters or
- Object - settings for attaching new datepicker functionality
- @return jQuery object */
-$.fn.datepicker = function(options){
-
- /* Initialise the date picker. */
- if (!$.datepicker.initialized) {
- $(document).mousedown($.datepicker._checkExternalClick).
- find('body').append($.datepicker.dpDiv);
- $.datepicker.initialized = true;
- }
-
- var otherArgs = Array.prototype.slice.call(arguments, 1);
- if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget'))
- return $.datepicker['_' + options + 'Datepicker'].
- apply($.datepicker, [this[0]].concat(otherArgs));
- if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string')
- return $.datepicker['_' + options + 'Datepicker'].
- apply($.datepicker, [this[0]].concat(otherArgs));
- return this.each(function() {
- typeof options == 'string' ?
- $.datepicker['_' + options + 'Datepicker'].
- apply($.datepicker, [this].concat(otherArgs)) :
- $.datepicker._attachDatepicker(this, options);
- });
-};
-
-$.datepicker = new Datepicker(); // singleton instance
-$.datepicker.initialized = false;
-$.datepicker.uuid = new Date().getTime();
-$.datepicker.version = "1.8.2";
-
-// Workaround for #4055
-// Add another global to avoid noConflict issues with inline event handlers
-window['DP_jQuery_' + dpuuid] = $;
-
-})(jQuery);
-/*
- * jQuery UI Dialog 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Dialog
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.widget.js
- * jquery.ui.button.js
- * jquery.ui.draggable.js
- * jquery.ui.mouse.js
- * jquery.ui.position.js
- * jquery.ui.resizable.js
- */
-(function($) {
-
-var uiDialogClasses =
- 'ui-dialog ' +
- 'ui-widget ' +
- 'ui-widget-content ' +
- 'ui-corner-all ';
-
-$.widget("ui.dialog", {
- options: {
- autoOpen: true,
- buttons: {},
- closeOnEscape: true,
- closeText: 'close',
- dialogClass: '',
- draggable: true,
- hide: null,
- height: 'auto',
- maxHeight: false,
- maxWidth: false,
- minHeight: 150,
- minWidth: 150,
- modal: false,
- position: 'center',
- resizable: true,
- show: null,
- stack: true,
- title: '',
- width: 300,
- zIndex: 1000
- },
- _create: function() {
- this.originalTitle = this.element.attr('title');
-
- var self = this,
- options = self.options,
-
- title = options.title || self.originalTitle || '&#160;',
- titleId = $.ui.dialog.getTitleId(self.element),
-
- uiDialog = (self.uiDialog = $('<div></div>'))
- .appendTo(document.body)
- .hide()
- .addClass(uiDialogClasses + options.dialogClass)
- .css({
- zIndex: options.zIndex
- })
- // setting tabIndex makes the div focusable
- // setting outline to 0 prevents a border on focus in Mozilla
- .attr('tabIndex', -1).css('outline', 0).keydown(function(event) {
- if (options.closeOnEscape && event.keyCode &&
- event.keyCode === $.ui.keyCode.ESCAPE) {
-
- self.close(event);
- event.preventDefault();
- }
- })
- .attr({
- role: 'dialog',
- 'aria-labelledby': titleId
- })
- .mousedown(function(event) {
- self.moveToTop(false, event);
- }),
-
- uiDialogContent = self.element
- .show()
- .removeAttr('title')
- .addClass(
- 'ui-dialog-content ' +
- 'ui-widget-content')
- .appendTo(uiDialog),
-
- uiDialogTitlebar = (self.uiDialogTitlebar = $('<div></div>'))
- .addClass(
- 'ui-dialog-titlebar ' +
- 'ui-widget-header ' +
- 'ui-corner-all ' +
- 'ui-helper-clearfix'
- )
- .prependTo(uiDialog),
-
- uiDialogTitlebarClose = $('<a href="#"></a>')
- .addClass(
- 'ui-dialog-titlebar-close ' +
- 'ui-corner-all'
- )
- .attr('role', 'button')
- .hover(
- function() {
- uiDialogTitlebarClose.addClass('ui-state-hover');
- },
- function() {
- uiDialogTitlebarClose.removeClass('ui-state-hover');
- }
- )
- .focus(function() {
- uiDialogTitlebarClose.addClass('ui-state-focus');
- })
- .blur(function() {
- uiDialogTitlebarClose.removeClass('ui-state-focus');
- })
- .click(function(event) {
- self.close(event);
- return false;
- })
- .appendTo(uiDialogTitlebar),
-
- uiDialogTitlebarCloseText = (self.uiDialogTitlebarCloseText = $('<span></span>'))
- .addClass(
- 'ui-icon ' +
- 'ui-icon-closethick'
- )
- .text(options.closeText)
- .appendTo(uiDialogTitlebarClose),
-
- uiDialogTitle = $('<span></span>')
- .addClass('ui-dialog-title')
- .attr('id', titleId)
- .html(title)
- .prependTo(uiDialogTitlebar);
-
- //handling of deprecated beforeclose (vs beforeClose) option
- //Ticket #4669 http://dev.jqueryui.com/ticket/4669
- //TODO: remove in 1.9pre
- if ($.isFunction(options.beforeclose) && !$.isFunction(options.beforeClose)) {
- options.beforeClose = options.beforeclose;
- }
-
- uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection();
-
- if (options.draggable && $.fn.draggable) {
- self._makeDraggable();
- }
- if (options.resizable && $.fn.resizable) {
- self._makeResizable();
- }
-
- self._createButtons(options.buttons);
- self._isOpen = false;
-
- if ($.fn.bgiframe) {
- uiDialog.bgiframe();
- }
- },
- _init: function() {
- if ( this.options.autoOpen ) {
- this.open();
- }
- },
-
- destroy: function() {
- var self = this;
-
- if (self.overlay) {
- self.overlay.destroy();
- }
- self.uiDialog.hide();
- self.element
- .unbind('.dialog')
- .removeData('dialog')
- .removeClass('ui-dialog-content ui-widget-content')
- .hide().appendTo('body');
- self.uiDialog.remove();
-
- if (self.originalTitle) {
- self.element.attr('title', self.originalTitle);
- }
-
- return self;
- },
-
- widget: function() {
- return this.uiDialog;
- },
-
- close: function(event) {
- var self = this,
- maxZ;
-
- if (false === self._trigger('beforeClose', event)) {
- return;
- }
-
- if (self.overlay) {
- self.overlay.destroy();
- }
- self.uiDialog.unbind('keypress.ui-dialog');
-
- self._isOpen = false;
-
- if (self.options.hide) {
- self.uiDialog.hide(self.options.hide, function() {
- self._trigger('close', event);
- });
- } else {
- self.uiDialog.hide();
- self._trigger('close', event);
- }
-
- $.ui.dialog.overlay.resize();
-
- // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
- if (self.options.modal) {
- maxZ = 0;
- $('.ui-dialog').each(function() {
- if (this !== self.uiDialog[0]) {
- maxZ = Math.max(maxZ, $(this).css('z-index'));
- }
- });
- $.ui.dialog.maxZ = maxZ;
- }
-
- return self;
- },
-
- isOpen: function() {
- return this._isOpen;
- },
-
- // the force parameter allows us to move modal dialogs to their correct
- // position on open
- moveToTop: function(force, event) {
- var self = this,
- options = self.options,
- saveScroll;
-
- if ((options.modal && !force) ||
- (!options.stack && !options.modal)) {
- return self._trigger('focus', event);
- }
-
- if (options.zIndex > $.ui.dialog.maxZ) {
- $.ui.dialog.maxZ = options.zIndex;
- }
- if (self.overlay) {
- $.ui.dialog.maxZ += 1;
- self.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ);
- }
-
- //Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed.
- // http://ui.jquery.com/bugs/ticket/3193
- saveScroll = { scrollTop: self.element.attr('scrollTop'), scrollLeft: self.element.attr('scrollLeft') };
- $.ui.dialog.maxZ += 1;
- self.uiDialog.css('z-index', $.ui.dialog.maxZ);
- self.element.attr(saveScroll);
- self._trigger('focus', event);
-
- return self;
- },
-
- open: function() {
- if (this._isOpen) { return; }
-
- var self = this,
- options = self.options,
- uiDialog = self.uiDialog;
-
- self.overlay = options.modal ? new $.ui.dialog.overlay(self) : null;
- if (uiDialog.next().length) {
- uiDialog.appendTo('body');
- }
- self._size();
- self._position(options.position);
- uiDialog.show(options.show);
- self.moveToTop(true);
-
- // prevent tabbing out of modal dialogs
- if (options.modal) {
- uiDialog.bind('keypress.ui-dialog', function(event) {
- if (event.keyCode !== $.ui.keyCode.TAB) {
- return;
- }
-
- var tabbables = $(':tabbable', this),
- first = tabbables.filter(':first'),
- last = tabbables.filter(':last');
-
- if (event.target === last[0] && !event.shiftKey) {
- first.focus(1);
- return false;
- } else if (event.target === first[0] && event.shiftKey) {
- last.focus(1);
- return false;
- }
- });
- }
-
- // set focus to the first tabbable element in the content area or the first button
- // if there are no tabbable elements, set focus on the dialog itself
- $([])
- .add(uiDialog.find('.ui-dialog-content :tabbable:first'))
- .add(uiDialog.find('.ui-dialog-buttonpane :tabbable:first'))
- .add(uiDialog)
- .filter(':first')
- .focus();
-
- self._trigger('open');
- self._isOpen = true;
-
- return self;
- },
-
- _createButtons: function(buttons) {
- var self = this,
- hasButtons = false,
- uiDialogButtonPane = $('<div></div>')
- .addClass(
- 'ui-dialog-buttonpane ' +
- 'ui-widget-content ' +
- 'ui-helper-clearfix'
- );
-
- // if we already have a button pane, remove it
- self.uiDialog.find('.ui-dialog-buttonpane').remove();
-
- if (typeof buttons === 'object' && buttons !== null) {
- $.each(buttons, function() {
- return !(hasButtons = true);
- });
- }
- if (hasButtons) {
- $.each(buttons, function(name, fn) {
- var button = $('<button type="button"></button>')
- .text(name)
- .click(function() { fn.apply(self.element[0], arguments); })
- .appendTo(uiDialogButtonPane);
- if ($.fn.button) {
- button.button();
- }
- });
- uiDialogButtonPane.appendTo(self.uiDialog);
- }
- },
-
- _makeDraggable: function() {
- var self = this,
- options = self.options,
- doc = $(document),
- heightBeforeDrag;
-
- function filteredUi(ui) {
- return {
- position: ui.position,
- offset: ui.offset
- };
- }
-
- self.uiDialog.draggable({
- cancel: '.ui-dialog-content, .ui-dialog-titlebar-close',
- handle: '.ui-dialog-titlebar',
- containment: 'document',
- start: function(event, ui) {
- heightBeforeDrag = options.height === "auto" ? "auto" : $(this).height();
- $(this).height($(this).height()).addClass("ui-dialog-dragging");
- self._trigger('dragStart', event, filteredUi(ui));
- },
- drag: function(event, ui) {
- self._trigger('drag', event, filteredUi(ui));
- },
- stop: function(event, ui) {
- options.position = [ui.position.left - doc.scrollLeft(),
- ui.position.top - doc.scrollTop()];
- $(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag);
- self._trigger('dragStop', event, filteredUi(ui));
- $.ui.dialog.overlay.resize();
- }
- });
- },
-
- _makeResizable: function(handles) {
- handles = (handles === undefined ? this.options.resizable : handles);
- var self = this,
- options = self.options,
- // .ui-resizable has position: relative defined in the stylesheet
- // but dialogs have to use absolute or fixed positioning
- position = self.uiDialog.css('position'),
- resizeHandles = (typeof handles === 'string' ?
- handles :
- 'n,e,s,w,se,sw,ne,nw'
- );
-
- function filteredUi(ui) {
- return {
- originalPosition: ui.originalPosition,
- originalSize: ui.originalSize,
- position: ui.position,
- size: ui.size
- };
- }
-
- self.uiDialog.resizable({
- cancel: '.ui-dialog-content',
- containment: 'document',
- alsoResize: self.element,
- maxWidth: options.maxWidth,
- maxHeight: options.maxHeight,
- minWidth: options.minWidth,
- minHeight: self._minHeight(),
- handles: resizeHandles,
- start: function(event, ui) {
- $(this).addClass("ui-dialog-resizing");
- self._trigger('resizeStart', event, filteredUi(ui));
- },
- resize: function(event, ui) {
- self._trigger('resize', event, filteredUi(ui));
- },
- stop: function(event, ui) {
- $(this).removeClass("ui-dialog-resizing");
- options.height = $(this).height();
- options.width = $(this).width();
- self._trigger('resizeStop', event, filteredUi(ui));
- $.ui.dialog.overlay.resize();
- }
- })
- .css('position', position)
- .find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se');
- },
-
- _minHeight: function() {
- var options = this.options;
-
- if (options.height === 'auto') {
- return options.minHeight;
- } else {
- return Math.min(options.minHeight, options.height);
- }
- },
-
- _position: function(position) {
- var myAt = [],
- offset = [0, 0],
- isVisible;
-
- position = position || $.ui.dialog.prototype.options.position;
-
- // deep extending converts arrays to objects in jQuery <= 1.3.2 :-(
-// if (typeof position == 'string' || $.isArray(position)) {
-// myAt = $.isArray(position) ? position : position.split(' ');
-
- if (typeof position === 'string' || (typeof position === 'object' && '0' in position)) {
- myAt = position.split ? position.split(' ') : [position[0], position[1]];
- if (myAt.length === 1) {
- myAt[1] = myAt[0];
- }
-
- $.each(['left', 'top'], function(i, offsetPosition) {
- if (+myAt[i] === myAt[i]) {
- offset[i] = myAt[i];
- myAt[i] = offsetPosition;
- }
- });
- } else if (typeof position === 'object') {
- if ('left' in position) {
- myAt[0] = 'left';
- offset[0] = position.left;
- } else if ('right' in position) {
- myAt[0] = 'right';
- offset[0] = -position.right;
- }
-
- if ('top' in position) {
- myAt[1] = 'top';
- offset[1] = position.top;
- } else if ('bottom' in position) {
- myAt[1] = 'bottom';
- offset[1] = -position.bottom;
- }
- }
-
- // need to show the dialog to get the actual offset in the position plugin
- isVisible = this.uiDialog.is(':visible');
- if (!isVisible) {
- this.uiDialog.show();
- }
- this.uiDialog
- // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781
- .css({ top: 0, left: 0 })
- .position({
- my: myAt.join(' '),
- at: myAt.join(' '),
- offset: offset.join(' '),
- of: window,
- collision: 'fit',
- // ensure that the titlebar is never outside the document
- using: function(pos) {
- var topOffset = $(this).css(pos).offset().top;
- if (topOffset < 0) {
- $(this).css('top', pos.top - topOffset);
- }
- }
- });
- if (!isVisible) {
- this.uiDialog.hide();
- }
- },
-
- _setOption: function(key, value){
- var self = this,
- uiDialog = self.uiDialog,
- isResizable = uiDialog.is(':data(resizable)'),
- resize = false;
-
- switch (key) {
- //handling of deprecated beforeclose (vs beforeClose) option
- //Ticket #4669 http://dev.jqueryui.com/ticket/4669
- //TODO: remove in 1.9pre
- case "beforeclose":
- key = "beforeClose";
- break;
- case "buttons":
- self._createButtons(value);
- break;
- case "closeText":
- // convert whatever was passed in to a string, for text() to not throw up
- self.uiDialogTitlebarCloseText.text("" + value);
- break;
- case "dialogClass":
- uiDialog
- .removeClass(self.options.dialogClass)
- .addClass(uiDialogClasses + value);
- break;
- case "disabled":
- if (value) {
- uiDialog.addClass('ui-dialog-disabled');
- } else {
- uiDialog.removeClass('ui-dialog-disabled');
- }
- break;
- case "draggable":
- if (value) {
- self._makeDraggable();
- } else {
- uiDialog.draggable('destroy');
- }
- break;
- case "height":
- resize = true;
- break;
- case "maxHeight":
- if (isResizable) {
- uiDialog.resizable('option', 'maxHeight', value);
- }
- resize = true;
- break;
- case "maxWidth":
- if (isResizable) {
- uiDialog.resizable('option', 'maxWidth', value);
- }
- resize = true;
- break;
- case "minHeight":
- if (isResizable) {
- uiDialog.resizable('option', 'minHeight', value);
- }
- resize = true;
- break;
- case "minWidth":
- if (isResizable) {
- uiDialog.resizable('option', 'minWidth', value);
- }
- resize = true;
- break;
- case "position":
- self._position(value);
- break;
- case "resizable":
- // currently resizable, becoming non-resizable
- if (isResizable && !value) {
- uiDialog.resizable('destroy');
- }
-
- // currently resizable, changing handles
- if (isResizable && typeof value === 'string') {
- uiDialog.resizable('option', 'handles', value);
- }
-
- // currently non-resizable, becoming resizable
- if (!isResizable && value !== false) {
- self._makeResizable(value);
- }
- break;
- case "title":
- // convert whatever was passed in o a string, for html() to not throw up
- $(".ui-dialog-title", self.uiDialogTitlebar).html("" + (value || '&#160;'));
- break;
- case "width":
- resize = true;
- break;
- }
-
- $.Widget.prototype._setOption.apply(self, arguments);
- if (resize) {
- self._size();
- }
- },
-
- _size: function() {
- /* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
- * divs will both have width and height set, so we need to reset them
- */
- var options = this.options,
- nonContentHeight;
-
- // reset content sizing
- // hide for non content measurement because height: 0 doesn't work in IE quirks mode (see #4350)
- this.element.css({
- width: 'auto',
- minHeight: 0,
- height: 0
- });
-
- // reset wrapper sizing
- // determine the height of all the non-content elements
- nonContentHeight = this.uiDialog.css({
- height: 'auto',
- width: options.width
- })
- .height();
-
- this.element
- .css(options.height === 'auto' ? {
- minHeight: Math.max(options.minHeight - nonContentHeight, 0),
- height: 'auto'
- } : {
- minHeight: 0,
- height: Math.max(options.height - nonContentHeight, 0)
- })
- .show();
-
- if (this.uiDialog.is(':data(resizable)')) {
- this.uiDialog.resizable('option', 'minHeight', this._minHeight());
- }
- }
-});
-
-$.extend($.ui.dialog, {
- version: "1.8.2",
-
- uuid: 0,
- maxZ: 0,
-
- getTitleId: function($el) {
- var id = $el.attr('id');
- if (!id) {
- this.uuid += 1;
- id = this.uuid;
- }
- return 'ui-dialog-title-' + id;
- },
-
- overlay: function(dialog) {
- this.$el = $.ui.dialog.overlay.create(dialog);
- }
-});
-
-$.extend($.ui.dialog.overlay, {
- instances: [],
- // reuse old instances due to IE memory leak with alpha transparency (see #5185)
- oldInstances: [],
- maxZ: 0,
- events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),
- function(event) { return event + '.dialog-overlay'; }).join(' '),
- create: function(dialog) {
- if (this.instances.length === 0) {
- // prevent use of anchors and inputs
- // we use a setTimeout in case the overlay is created from an
- // event that we're going to be cancelling (see #2804)
- setTimeout(function() {
- // handle $(el).dialog().dialog('close') (see #4065)
- if ($.ui.dialog.overlay.instances.length) {
- $(document).bind($.ui.dialog.overlay.events, function(event) {
- // stop events if the z-index of the target is < the z-index of the overlay
- return ($(event.target).zIndex() >= $.ui.dialog.overlay.maxZ);
- });
- }
- }, 1);
-
- // allow closing by pressing the escape key
- $(document).bind('keydown.dialog-overlay', function(event) {
- if (dialog.options.closeOnEscape && event.keyCode &&
- event.keyCode === $.ui.keyCode.ESCAPE) {
-
- dialog.close(event);
- event.preventDefault();
- }
- });
-
- // handle window resize
- $(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize);
- }
-
- var $el = (this.oldInstances.pop() || $('<div></div>').addClass('ui-widget-overlay'))
- .appendTo(document.body)
- .css({
- width: this.width(),
- height: this.height()
- });
-
- if ($.fn.bgiframe) {
- $el.bgiframe();
- }
-
- this.instances.push($el);
- return $el;
- },
-
- destroy: function($el) {
- this.oldInstances.push(this.instances.splice($.inArray($el, this.instances), 1)[0]);
-
- if (this.instances.length === 0) {
- $([document, window]).unbind('.dialog-overlay');
- }
-
- $el.remove();
-
- // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
- var maxZ = 0;
- $.each(this.instances, function() {
- maxZ = Math.max(maxZ, this.css('z-index'));
- });
- this.maxZ = maxZ;
- },
-
- height: function() {
- var scrollHeight,
- offsetHeight;
- // handle IE 6
- if ($.browser.msie && $.browser.version < 7) {
- scrollHeight = Math.max(
- document.documentElement.scrollHeight,
- document.body.scrollHeight
- );
- offsetHeight = Math.max(
- document.documentElement.offsetHeight,
- document.body.offsetHeight
- );
-
- if (scrollHeight < offsetHeight) {
- return $(window).height() + 'px';
- } else {
- return scrollHeight + 'px';
- }
- // handle "good" browsers
- } else {
- return $(document).height() + 'px';
- }
- },
-
- width: function() {
- var scrollWidth,
- offsetWidth;
- // handle IE 6
- if ($.browser.msie && $.browser.version < 7) {
- scrollWidth = Math.max(
- document.documentElement.scrollWidth,
- document.body.scrollWidth
- );
- offsetWidth = Math.max(
- document.documentElement.offsetWidth,
- document.body.offsetWidth
- );
-
- if (scrollWidth < offsetWidth) {
- return $(window).width() + 'px';
- } else {
- return scrollWidth + 'px';
- }
- // handle "good" browsers
- } else {
- return $(document).width() + 'px';
- }
- },
-
- resize: function() {
- /* If the dialog is draggable and the user drags it past the
- * right edge of the window, the document becomes wider so we
- * need to stretch the overlay. If the user then drags the
- * dialog back to the left, the document will become narrower,
- * so we need to shrink the overlay to the appropriate size.
- * This is handled by shrinking the overlay before setting it
- * to the full document size.
- */
- var $overlays = $([]);
- $.each($.ui.dialog.overlay.instances, function() {
- $overlays = $overlays.add(this);
- });
-
- $overlays.css({
- width: 0,
- height: 0
- }).css({
- width: $.ui.dialog.overlay.width(),
- height: $.ui.dialog.overlay.height()
- });
- }
-});
-
-$.extend($.ui.dialog.overlay.prototype, {
- destroy: function() {
- $.ui.dialog.overlay.destroy(this.$el);
- }
-});
-
-}(jQuery));
-/*
- * jQuery UI Position 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Position
- */
-(function( $ ) {
-
-$.ui = $.ui || {};
-
-var horizontalPositions = /left|center|right/,
- horizontalDefault = "center",
- verticalPositions = /top|center|bottom/,
- verticalDefault = "center",
- _position = $.fn.position,
- _offset = $.fn.offset;
-
-$.fn.position = function( options ) {
- if ( !options || !options.of ) {
- return _position.apply( this, arguments );
- }
-
- // make a copy, we don't want to modify arguments
- options = $.extend( {}, options );
-
- var target = $( options.of ),
- collision = ( options.collision || "flip" ).split( " " ),
- offset = options.offset ? options.offset.split( " " ) : [ 0, 0 ],
- targetWidth,
- targetHeight,
- basePosition;
-
- if ( options.of.nodeType === 9 ) {
- targetWidth = target.width();
- targetHeight = target.height();
- basePosition = { top: 0, left: 0 };
- } else if ( options.of.scrollTo && options.of.document ) {
- targetWidth = target.width();
- targetHeight = target.height();
- basePosition = { top: target.scrollTop(), left: target.scrollLeft() };
- } else if ( options.of.preventDefault ) {
- // force left top to allow flipping
- options.at = "left top";
- targetWidth = targetHeight = 0;
- basePosition = { top: options.of.pageY, left: options.of.pageX };
- } else {
- targetWidth = target.outerWidth();
- targetHeight = target.outerHeight();
- basePosition = target.offset();
- }
-
- // force my and at to have valid horizontal and veritcal positions
- // if a value is missing or invalid, it will be converted to center
- $.each( [ "my", "at" ], function() {
- var pos = ( options[this] || "" ).split( " " );
- if ( pos.length === 1) {
- pos = horizontalPositions.test( pos[0] ) ?
- pos.concat( [verticalDefault] ) :
- verticalPositions.test( pos[0] ) ?
- [ horizontalDefault ].concat( pos ) :
- [ horizontalDefault, verticalDefault ];
- }
- pos[ 0 ] = horizontalPositions.test( pos[0] ) ? pos[ 0 ] : horizontalDefault;
- pos[ 1 ] = verticalPositions.test( pos[1] ) ? pos[ 1 ] : verticalDefault;
- options[ this ] = pos;
- });
-
- // normalize collision option
- if ( collision.length === 1 ) {
- collision[ 1 ] = collision[ 0 ];
- }
-
- // normalize offset option
- offset[ 0 ] = parseInt( offset[0], 10 ) || 0;
- if ( offset.length === 1 ) {
- offset[ 1 ] = offset[ 0 ];
- }
- offset[ 1 ] = parseInt( offset[1], 10 ) || 0;
-
- if ( options.at[0] === "right" ) {
- basePosition.left += targetWidth;
- } else if (options.at[0] === horizontalDefault ) {
- basePosition.left += targetWidth / 2;
- }
-
- if ( options.at[1] === "bottom" ) {
- basePosition.top += targetHeight;
- } else if ( options.at[1] === verticalDefault ) {
- basePosition.top += targetHeight / 2;
- }
-
- basePosition.left += offset[ 0 ];
- basePosition.top += offset[ 1 ];
-
- return this.each(function() {
- var elem = $( this ),
- elemWidth = elem.outerWidth(),
- elemHeight = elem.outerHeight(),
- position = $.extend( {}, basePosition );
-
- if ( options.my[0] === "right" ) {
- position.left -= elemWidth;
- } else if ( options.my[0] === horizontalDefault ) {
- position.left -= elemWidth / 2;
- }
-
- if ( options.my[1] === "bottom" ) {
- position.top -= elemHeight;
- } else if ( options.my[1] === verticalDefault ) {
- position.top -= elemHeight / 2;
- }
-
- // prevent fractions (see #5280)
- position.left = parseInt( position.left );
- position.top = parseInt( position.top );
-
- $.each( [ "left", "top" ], function( i, dir ) {
- if ( $.ui.position[ collision[i] ] ) {
- $.ui.position[ collision[i] ][ dir ]( position, {
- targetWidth: targetWidth,
- targetHeight: targetHeight,
- elemWidth: elemWidth,
- elemHeight: elemHeight,
- offset: offset,
- my: options.my,
- at: options.at
- });
- }
- });
-
- if ( $.fn.bgiframe ) {
- elem.bgiframe();
- }
- elem.offset( $.extend( position, { using: options.using } ) );
- });
-};
-
-$.ui.position = {
- fit: {
- left: function( position, data ) {
- var win = $( window ),
- over = position.left + data.elemWidth - win.width() - win.scrollLeft();
- position.left = over > 0 ? position.left - over : Math.max( 0, position.left );
- },
- top: function( position, data ) {
- var win = $( window ),
- over = position.top + data.elemHeight - win.height() - win.scrollTop();
- position.top = over > 0 ? position.top - over : Math.max( 0, position.top );
- }
- },
-
- flip: {
- left: function( position, data ) {
- if ( data.at[0] === "center" ) {
- return;
- }
- var win = $( window ),
- over = position.left + data.elemWidth - win.width() - win.scrollLeft(),
- myOffset = data.my[ 0 ] === "left" ?
- -data.elemWidth :
- data.my[ 0 ] === "right" ?
- data.elemWidth :
- 0,
- offset = -2 * data.offset[ 0 ];
- position.left += position.left < 0 ?
- myOffset + data.targetWidth + offset :
- over > 0 ?
- myOffset - data.targetWidth + offset :
- 0;
- },
- top: function( position, data ) {
- if ( data.at[1] === "center" ) {
- return;
- }
- var win = $( window ),
- over = position.top + data.elemHeight - win.height() - win.scrollTop(),
- myOffset = data.my[ 1 ] === "top" ?
- -data.elemHeight :
- data.my[ 1 ] === "bottom" ?
- data.elemHeight :
- 0,
- atOffset = data.at[ 1 ] === "top" ?
- data.targetHeight :
- -data.targetHeight,
- offset = -2 * data.offset[ 1 ];
- position.top += position.top < 0 ?
- myOffset + data.targetHeight + offset :
- over > 0 ?
- myOffset + atOffset + offset :
- 0;
- }
- }
-};
-
-// offset setter from jQuery 1.4
-if ( !$.offset.setOffset ) {
- $.offset.setOffset = function( elem, options ) {
- // set position first, in-case top/left are set even on static elem
- if ( /static/.test( $.curCSS( elem, "position" ) ) ) {
- elem.style.position = "relative";
- }
- var curElem = $( elem ),
- curOffset = curElem.offset(),
- curTop = parseInt( $.curCSS( elem, "top", true ), 10 ) || 0,
- curLeft = parseInt( $.curCSS( elem, "left", true ), 10) || 0,
- props = {
- top: (options.top - curOffset.top) + curTop,
- left: (options.left - curOffset.left) + curLeft
- };
-
- if ( 'using' in options ) {
- options.using.call( elem, props );
- } else {
- curElem.css( props );
- }
- };
-
- $.fn.offset = function( options ) {
- var elem = this[ 0 ];
- if ( !elem || !elem.ownerDocument ) { return null; }
- if ( options ) {
- return this.each(function() {
- $.offset.setOffset( this, options );
- });
- }
- return _offset.call( this );
- };
-}
-
-}( jQuery ));
-/*
- * jQuery UI Progressbar 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Progressbar
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.widget.js
- */
-(function( $ ) {
-
-$.widget( "ui.progressbar", {
- options: {
- value: 0
- },
- _create: function() {
- this.element
- .addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
- .attr({
- role: "progressbar",
- "aria-valuemin": this._valueMin(),
- "aria-valuemax": this._valueMax(),
- "aria-valuenow": this._value()
- });
-
- this.valueDiv = $( "<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>" )
- .appendTo( this.element );
-
- this._refreshValue();
- },
-
- destroy: function() {
- this.element
- .removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
- .removeAttr( "role" )
- .removeAttr( "aria-valuemin" )
- .removeAttr( "aria-valuemax" )
- .removeAttr( "aria-valuenow" );
-
- this.valueDiv.remove();
-
- $.Widget.prototype.destroy.apply( this, arguments );
- },
-
- value: function( newValue ) {
- if ( newValue === undefined ) {
- return this._value();
- }
-
- this._setOption( "value", newValue );
- return this;
- },
-
- _setOption: function( key, value ) {
- switch ( key ) {
- case "value":
- this.options.value = value;
- this._refreshValue();
- this._trigger( "change" );
- break;
- }
-
- $.Widget.prototype._setOption.apply( this, arguments );
- },
-
- _value: function() {
- var val = this.options.value;
- // normalize invalid value
- if ( typeof val !== "number" ) {
- val = 0;
- }
- if ( val < this._valueMin() ) {
- val = this._valueMin();
- }
- if ( val > this._valueMax() ) {
- val = this._valueMax();
- }
-
- return val;
- },
-
- _valueMin: function() {
- return 0;
- },
-
- _valueMax: function() {
- return 100;
- },
-
- _refreshValue: function() {
- var value = this.value();
- this.valueDiv
- [ value === this._valueMax() ? "addClass" : "removeClass"]( "ui-corner-right" )
- .width( value + "%" );
- this.element.attr( "aria-valuenow", value );
- }
-});
-
-$.extend( $.ui.progressbar, {
- version: "1.8.2"
-});
-
-})( jQuery );
-/*
- * jQuery UI Slider 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Slider
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.mouse.js
- * jquery.ui.widget.js
- */
-
-(function( $ ) {
-
-// number of pages in a slider
-// (how many times can you page up/down to go through the whole range)
-var numPages = 5;
-
-$.widget( "ui.slider", $.ui.mouse, {
-
- widgetEventPrefix: "slide",
-
- options: {
- animate: false,
- distance: 0,
- max: 100,
- min: 0,
- orientation: "horizontal",
- range: false,
- step: 1,
- value: 0,
- values: null
- },
-
- _create: function() {
- var self = this,
- o = this.options;
-
- this._keySliding = false;
- this._mouseSliding = false;
- this._animateOff = true;
- this._handleIndex = null;
- this._detectOrientation();
- this._mouseInit();
-
- this.element
- .addClass( "ui-slider" +
- " ui-slider-" + this.orientation +
- " ui-widget" +
- " ui-widget-content" +
- " ui-corner-all" );
-
- if ( o.disabled ) {
- this.element.addClass( "ui-slider-disabled ui-disabled" );
- }
-
- this.range = $([]);
-
- if ( o.range ) {
- if ( o.range === true ) {
- this.range = $( "<div></div>" );
- if ( !o.values ) {
- o.values = [ this._valueMin(), this._valueMin() ];
- }
- if ( o.values.length && o.values.length !== 2 ) {
- o.values = [ o.values[0], o.values[0] ];
- }
- } else {
- this.range = $( "<div></div>" );
- }
-
- this.range
- .appendTo( this.element )
- .addClass( "ui-slider-range" );
-
- if ( o.range === "min" || o.range === "max" ) {
- this.range.addClass( "ui-slider-range-" + o.range );
- }
-
- // note: this isn't the most fittingly semantic framework class for this element,
- // but worked best visually with a variety of themes
- this.range.addClass( "ui-widget-header" );
- }
-
- if ( $( ".ui-slider-handle", this.element ).length === 0 ) {
- $( "<a href='#'></a>" )
- .appendTo( this.element )
- .addClass( "ui-slider-handle" );
- }
-
- if ( o.values && o.values.length ) {
- while ( $(".ui-slider-handle", this.element).length < o.values.length ) {
- $( "<a href='#'></a>" )
- .appendTo( this.element )
- .addClass( "ui-slider-handle" );
- }
- }
-
- this.handles = $( ".ui-slider-handle", this.element )
- .addClass( "ui-state-default" +
- " ui-corner-all" );
-
- this.handle = this.handles.eq( 0 );
-
- this.handles.add( this.range ).filter( "a" )
- .click(function( event ) {
- event.preventDefault();
- })
- .hover(function() {
- if ( !o.disabled ) {
- $( this ).addClass( "ui-state-hover" );
- }
- }, function() {
- $( this ).removeClass( "ui-state-hover" );
- })
- .focus(function() {
- if ( !o.disabled ) {
- $( ".ui-slider .ui-state-focus" ).removeClass( "ui-state-focus" );
- $( this ).addClass( "ui-state-focus" );
- } else {
- $( this ).blur();
- }
- })
- .blur(function() {
- $( this ).removeClass( "ui-state-focus" );
- });
-
- this.handles.each(function( i ) {
- $( this ).data( "index.ui-slider-handle", i );
- });
-
- this.handles
- .keydown(function( event ) {
- var ret = true,
- index = $( this ).data( "index.ui-slider-handle" ),
- allowed,
- curVal,
- newVal,
- step;
-
- if ( self.options.disabled ) {
- return;
- }
-
- switch ( event.keyCode ) {
- case $.ui.keyCode.HOME:
- case $.ui.keyCode.END:
- case $.ui.keyCode.PAGE_UP:
- case $.ui.keyCode.PAGE_DOWN:
- case $.ui.keyCode.UP:
- case $.ui.keyCode.RIGHT:
- case $.ui.keyCode.DOWN:
- case $.ui.keyCode.LEFT:
- ret = false;
- if ( !self._keySliding ) {
- self._keySliding = true;
- $( this ).addClass( "ui-state-active" );
- allowed = self._start( event, index );
- if ( allowed === false ) {
- return;
- }
- }
- break;
- }
-
- step = self.options.step;
- if ( self.options.values && self.options.values.length ) {
- curVal = newVal = self.values( index );
- } else {
- curVal = newVal = self.value();
- }
-
- switch ( event.keyCode ) {
- case $.ui.keyCode.HOME:
- newVal = self._valueMin();
- break;
- case $.ui.keyCode.END:
- newVal = self._valueMax();
- break;
- case $.ui.keyCode.PAGE_UP:
- newVal = self._trimAlignValue( curVal + ( (self._valueMax() - self._valueMin()) / numPages ) );
- break;
- case $.ui.keyCode.PAGE_DOWN:
- newVal = self._trimAlignValue( curVal - ( (self._valueMax() - self._valueMin()) / numPages ) );
- break;
- case $.ui.keyCode.UP:
- case $.ui.keyCode.RIGHT:
- if ( curVal === self._valueMax() ) {
- return;
- }
- newVal = self._trimAlignValue( curVal + step );
- break;
- case $.ui.keyCode.DOWN:
- case $.ui.keyCode.LEFT:
- if ( curVal === self._valueMin() ) {
- return;
- }
- newVal = self._trimAlignValue( curVal - step );
- break;
- }
-
- self._slide( event, index, newVal );
-
- return ret;
-
- })
- .keyup(function( event ) {
- var index = $( this ).data( "index.ui-slider-handle" );
-
- if ( self._keySliding ) {
- self._keySliding = false;
- self._stop( event, index );
- self._change( event, index );
- $( this ).removeClass( "ui-state-active" );
- }
-
- });
-
- this._refreshValue();
-
- this._animateOff = false;
- },
-
- destroy: function() {
- this.handles.remove();
- this.range.remove();
-
- this.element
- .removeClass( "ui-slider" +
- " ui-slider-horizontal" +
- " ui-slider-vertical" +
- " ui-slider-disabled" +
- " ui-widget" +
- " ui-widget-content" +
- " ui-corner-all" )
- .removeData( "slider" )
- .unbind( ".slider" );
-
- this._mouseDestroy();
-
- return this;
- },
-
- _mouseCapture: function( event ) {
- var o = this.options,
- position,
- normValue,
- distance,
- closestHandle,
- self,
- index,
- allowed,
- offset,
- mouseOverHandle;
-
- if ( o.disabled ) {
- return false;
- }
-
- this.elementSize = {
- width: this.element.outerWidth(),
- height: this.element.outerHeight()
- };
- this.elementOffset = this.element.offset();
-
- position = { x: event.pageX, y: event.pageY };
- normValue = this._normValueFromMouse( position );
- distance = this._valueMax() - this._valueMin() + 1;
- self = this;
- this.handles.each(function( i ) {
- var thisDistance = Math.abs( normValue - self.values(i) );
- if ( distance > thisDistance ) {
- distance = thisDistance;
- closestHandle = $( this );
- index = i;
- }
- });
-
- // workaround for bug #3736 (if both handles of a range are at 0,
- // the first is always used as the one with least distance,
- // and moving it is obviously prevented by preventing negative ranges)
- if( o.range === true && this.values(1) === o.min ) {
- index += 1;
- closestHandle = $( this.handles[index] );
- }
-
- allowed = this._start( event, index );
- if ( allowed === false ) {
- return false;
- }
- this._mouseSliding = true;
-
- self._handleIndex = index;
-
- closestHandle
- .addClass( "ui-state-active" )
- .focus();
-
- offset = closestHandle.offset();
- mouseOverHandle = !$( event.target ).parents().andSelf().is( ".ui-slider-handle" );
- this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
- left: event.pageX - offset.left - ( closestHandle.width() / 2 ),
- top: event.pageY - offset.top -
- ( closestHandle.height() / 2 ) -
- ( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) -
- ( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) +
- ( parseInt( closestHandle.css("marginTop"), 10 ) || 0)
- };
-
- normValue = this._normValueFromMouse( position );
- this._slide( event, index, normValue );
- this._animateOff = true;
- return true;
- },
-
- _mouseStart: function( event ) {
- return true;
- },
-
- _mouseDrag: function( event ) {
- var position = { x: event.pageX, y: event.pageY },
- normValue = this._normValueFromMouse( position );
-
- this._slide( event, this._handleIndex, normValue );
-
- return false;
- },
-
- _mouseStop: function( event ) {
- this.handles.removeClass( "ui-state-active" );
- this._mouseSliding = false;
-
- this._stop( event, this._handleIndex );
- this._change( event, this._handleIndex );
-
- this._handleIndex = null;
- this._clickOffset = null;
- this._animateOff = false;
-
- return false;
- },
-
- _detectOrientation: function() {
- this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal";
- },
-
- _normValueFromMouse: function( position ) {
- var pixelTotal,
- pixelMouse,
- percentMouse,
- valueTotal,
- valueMouse;
-
- if ( this.orientation === "horizontal" ) {
- pixelTotal = this.elementSize.width;
- pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );
- } else {
- pixelTotal = this.elementSize.height;
- pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );
- }
-
- percentMouse = ( pixelMouse / pixelTotal );
- if ( percentMouse > 1 ) {
- percentMouse = 1;
- }
- if ( percentMouse < 0 ) {
- percentMouse = 0;
- }
- if ( this.orientation === "vertical" ) {
- percentMouse = 1 - percentMouse;
- }
-
- valueTotal = this._valueMax() - this._valueMin();
- valueMouse = this._valueMin() + percentMouse * valueTotal;
-
- return this._trimAlignValue( valueMouse );
- },
-
- _start: function( event, index ) {
- var uiHash = {
- handle: this.handles[ index ],
- value: this.value()
- };
- if ( this.options.values && this.options.values.length ) {
- uiHash.value = this.values( index );
- uiHash.values = this.values();
- }
- return this._trigger( "start", event, uiHash );
- },
-
- _slide: function( event, index, newVal ) {
- var otherVal,
- newValues,
- allowed;
-
- if ( this.options.values && this.options.values.length ) {
- otherVal = this.values( index ? 0 : 1 );
-
- if ( ( this.options.values.length === 2 && this.options.range === true ) &&
- ( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )
- ) {
- newVal = otherVal;
- }
-
- if ( newVal !== this.values( index ) ) {
- newValues = this.values();
- newValues[ index ] = newVal;
- // A slide can be canceled by returning false from the slide callback
- allowed = this._trigger( "slide", event, {
- handle: this.handles[ index ],
- value: newVal,
- values: newValues
- } );
- otherVal = this.values( index ? 0 : 1 );
- if ( allowed !== false ) {
- this.values( index, newVal, true );
- }
- }
- } else {
- if ( newVal !== this.value() ) {
- // A slide can be canceled by returning false from the slide callback
- allowed = this._trigger( "slide", event, {
- handle: this.handles[ index ],
- value: newVal
- } );
- if ( allowed !== false ) {
- this.value( newVal );
- }
- }
- }
- },
-
- _stop: function( event, index ) {
- var uiHash = {
- handle: this.handles[ index ],
- value: this.value()
- };
- if ( this.options.values && this.options.values.length ) {
- uiHash.value = this.values( index );
- uiHash.values = this.values();
- }
-
- this._trigger( "stop", event, uiHash );
- },
-
- _change: function( event, index ) {
- if ( !this._keySliding && !this._mouseSliding ) {
- var uiHash = {
- handle: this.handles[ index ],
- value: this.value()
- };
- if ( this.options.values && this.options.values.length ) {
- uiHash.value = this.values( index );
- uiHash.values = this.values();
- }
-
- this._trigger( "change", event, uiHash );
- }
- },
-
- value: function( newValue ) {
- if ( arguments.length ) {
- this.options.value = this._trimAlignValue( newValue );
- this._refreshValue();
- this._change( null, 0 );
- }
-
- return this._value();
- },
-
- values: function( index, newValue ) {
- var vals,
- newValues,
- i;
-
- if ( arguments.length > 1 ) {
- this.options.values[ index ] = this._trimAlignValue( newValue );
- this._refreshValue();
- this._change( null, index );
- }
-
- if ( arguments.length ) {
- if ( $.isArray( arguments[ 0 ] ) ) {
- vals = this.options.values;
- newValues = arguments[ 0 ];
- for ( i = 0; i < vals.length; i += 1 ) {
- vals[ i ] = this._trimAlignValue( newValues[ i ] );
- this._change( null, i );
- }
- this._refreshValue();
- } else {
- if ( this.options.values && this.options.values.length ) {
- return this._values( index );
- } else {
- return this.value();
- }
- }
- } else {
- return this._values();
- }
- },
-
- _setOption: function( key, value ) {
- var i,
- valsLength = 0;
-
- if ( $.isArray( this.options.values ) ) {
- valsLength = this.options.values.length;
- }
-
- $.Widget.prototype._setOption.apply( this, arguments );
-
- switch ( key ) {
- case "disabled":
- if ( value ) {
- this.handles.filter( ".ui-state-focus" ).blur();
- this.handles.removeClass( "ui-state-hover" );
- this.handles.attr( "disabled", "disabled" );
- this.element.addClass( "ui-disabled" );
- } else {
- this.handles.removeAttr( "disabled" );
- this.element.removeClass( "ui-disabled" );
- }
- break;
- case "orientation":
- this._detectOrientation();
- this.element
- .removeClass( "ui-slider-horizontal ui-slider-vertical" )
- .addClass( "ui-slider-" + this.orientation );
- this._refreshValue();
- break;
- case "value":
- this._animateOff = true;
- this._refreshValue();
- this._change( null, 0 );
- this._animateOff = false;
- break;
- case "values":
- this._animateOff = true;
- this._refreshValue();
- for ( i = 0; i < valsLength; i += 1 ) {
- this._change( null, i );
- }
- this._animateOff = false;
- break;
- }
- },
-
- //internal value getter
- // _value() returns value trimmed by min and max, aligned by step
- _value: function() {
- var val = this.options.value;
- val = this._trimAlignValue( val );
-
- return val;
- },
-
- //internal values getter
- // _values() returns array of values trimmed by min and max, aligned by step
- // _values( index ) returns single value trimmed by min and max, aligned by step
- _values: function( index ) {
- var val,
- vals,
- i;
-
- if ( arguments.length ) {
- val = this.options.values[ index ];
- val = this._trimAlignValue( val );
-
- return val;
- } else {
- // .slice() creates a copy of the array
- // this copy gets trimmed by min and max and then returned
- vals = this.options.values.slice();
- for ( i = 0; i < vals.length; i+= 1) {
- vals[ i ] = this._trimAlignValue( vals[ i ] );
- }
-
- return vals;
- }
- },
-
- // returns the step-aligned value that val is closest to, between (inclusive) min and max
- _trimAlignValue: function( val ) {
- if ( val < this._valueMin() ) {
- return this._valueMin();
- }
- if ( val > this._valueMax() ) {
- return this._valueMax();
- }
- var step = ( this.options.step > 0 ) ? this.options.step : 1,
- valModStep = val % step,
- alignValue = val - valModStep;
-
- if ( Math.abs(valModStep) * 2 >= step ) {
- alignValue += ( valModStep > 0 ) ? step : ( -step );
- }
-
- // Since JavaScript has problems with large floats, round
- // the final value to 5 digits after the decimal point (see #4124)
- return parseFloat( alignValue.toFixed(5) );
- },
-
- _valueMin: function() {
- return this.options.min;
- },
-
- _valueMax: function() {
- return this.options.max;
- },
-
- _refreshValue: function() {
- var oRange = this.options.range,
- o = this.options,
- self = this,
- animate = ( !this._animateOff ) ? o.animate : false,
- valPercent,
- _set = {},
- lastValPercent,
- value,
- valueMin,
- valueMax;
-
- if ( this.options.values && this.options.values.length ) {
- this.handles.each(function( i, j ) {
- valPercent = ( self.values(i) - self._valueMin() ) / ( self._valueMax() - self._valueMin() ) * 100;
- _set[ self.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
- $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
- if ( self.options.range === true ) {
- if ( self.orientation === "horizontal" ) {
- if ( i === 0 ) {
- self.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate );
- }
- if ( i === 1 ) {
- self.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );
- }
- } else {
- if ( i === 0 ) {
- self.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate );
- }
- if ( i === 1 ) {
- self.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );
- }
- }
- }
- lastValPercent = valPercent;
- });
- } else {
- value = this.value();
- valueMin = this._valueMin();
- valueMax = this._valueMax();
- valPercent = ( valueMax !== valueMin ) ?
- ( value - valueMin ) / ( valueMax - valueMin ) * 100 :
- 0;
- _set[ self.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
- this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
-
- if ( oRange === "min" && this.orientation === "horizontal" ) {
- this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate );
- }
- if ( oRange === "max" && this.orientation === "horizontal" ) {
- this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );
- }
- if ( oRange === "min" && this.orientation === "vertical" ) {
- this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate );
- }
- if ( oRange === "max" && this.orientation === "vertical" ) {
- this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );
- }
- }
- }
-
-});
-
-$.extend( $.ui.slider, {
- version: "1.8.2"
-});
-
-}(jQuery));
-/*
- * jQuery UI Tabs 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Tabs
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.widget.js
- */
-(function($) {
-
-var tabId = 0,
- listId = 0;
-
-function getNextTabId() {
- return ++tabId;
-}
-
-function getNextListId() {
- return ++listId;
-}
-
-$.widget("ui.tabs", {
- options: {
- add: null,
- ajaxOptions: null,
- cache: false,
- cookie: null, // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true }
- collapsible: false,
- disable: null,
- disabled: [],
- enable: null,
- event: 'click',
- fx: null, // e.g. { height: 'toggle', opacity: 'toggle', duration: 200 }
- idPrefix: 'ui-tabs-',
- load: null,
- panelTemplate: '<div></div>',
- remove: null,
- select: null,
- show: null,
- spinner: '<em>Loading&#8230;</em>',
- tabTemplate: '<li><a href="#{href}"><span>#{label}</span></a></li>'
- },
- _create: function() {
- this._tabify(true);
- },
-
- _setOption: function(key, value) {
- if (key == 'selected') {
- if (this.options.collapsible && value == this.options.selected) {
- return;
- }
- this.select(value);
- }
- else {
- this.options[key] = value;
- this._tabify();
- }
- },
-
- _tabId: function(a) {
- return a.title && a.title.replace(/\s/g, '_').replace(/[^A-Za-z0-9\-_:\.]/g, '') ||
- this.options.idPrefix + getNextTabId();
- },
-
- _sanitizeSelector: function(hash) {
- return hash.replace(/:/g, '\\:'); // we need this because an id may contain a ":"
- },
-
- _cookie: function() {
- var cookie = this.cookie || (this.cookie = this.options.cookie.name || 'ui-tabs-' + getNextListId());
- return $.cookie.apply(null, [cookie].concat($.makeArray(arguments)));
- },
-
- _ui: function(tab, panel) {
- return {
- tab: tab,
- panel: panel,
- index: this.anchors.index(tab)
- };
- },
-
- _cleanup: function() {
- // restore all former loading tabs labels
- this.lis.filter('.ui-state-processing').removeClass('ui-state-processing')
- .find('span:data(label.tabs)')
- .each(function() {
- var el = $(this);
- el.html(el.data('label.tabs')).removeData('label.tabs');
- });
- },
-
- _tabify: function(init) {
-
- this.list = this.element.find('ol,ul').eq(0);
- this.lis = $('li:has(a[href])', this.list);
- this.anchors = this.lis.map(function() { return $('a', this)[0]; });
- this.panels = $([]);
-
- var self = this, o = this.options;
-
- var fragmentId = /^#.+/; // Safari 2 reports '#' for an empty hash
- this.anchors.each(function(i, a) {
- var href = $(a).attr('href');
-
- // For dynamically created HTML that contains a hash as href IE < 8 expands
- // such href to the full page url with hash and then misinterprets tab as ajax.
- // Same consideration applies for an added tab with a fragment identifier
- // since a[href=#fragment-identifier] does unexpectedly not match.
- // Thus normalize href attribute...
- var hrefBase = href.split('#')[0], baseEl;
- if (hrefBase && (hrefBase === location.toString().split('#')[0] ||
- (baseEl = $('base')[0]) && hrefBase === baseEl.href)) {
- href = a.hash;
- a.href = href;
- }
-
- // inline tab
- if (fragmentId.test(href)) {
- self.panels = self.panels.add(self._sanitizeSelector(href));
- }
-
- // remote tab
- else if (href != '#') { // prevent loading the page itself if href is just "#"
- $.data(a, 'href.tabs', href); // required for restore on destroy
-
- // TODO until #3808 is fixed strip fragment identifier from url
- // (IE fails to load from such url)
- $.data(a, 'load.tabs', href.replace(/#.*$/, '')); // mutable data
-
- var id = self._tabId(a);
- a.href = '#' + id;
- var $panel = $('#' + id);
- if (!$panel.length) {
- $panel = $(o.panelTemplate).attr('id', id).addClass('ui-tabs-panel ui-widget-content ui-corner-bottom')
- .insertAfter(self.panels[i - 1] || self.list);
- $panel.data('destroy.tabs', true);
- }
- self.panels = self.panels.add($panel);
- }
-
- // invalid tab href
- else {
- o.disabled.push(i);
- }
- });
-
- // initialization from scratch
- if (init) {
-
- // attach necessary classes for styling
- this.element.addClass('ui-tabs ui-widget ui-widget-content ui-corner-all');
- this.list.addClass('ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all');
- this.lis.addClass('ui-state-default ui-corner-top');
- this.panels.addClass('ui-tabs-panel ui-widget-content ui-corner-bottom');
-
- // Selected tab
- // use "selected" option or try to retrieve:
- // 1. from fragment identifier in url
- // 2. from cookie
- // 3. from selected class attribute on <li>
- if (o.selected === undefined) {
- if (location.hash) {
- this.anchors.each(function(i, a) {
- if (a.hash == location.hash) {
- o.selected = i;
- return false; // break
- }
- });
- }
- if (typeof o.selected != 'number' && o.cookie) {
- o.selected = parseInt(self._cookie(), 10);
- }
- if (typeof o.selected != 'number' && this.lis.filter('.ui-tabs-selected').length) {
- o.selected = this.lis.index(this.lis.filter('.ui-tabs-selected'));
- }
- o.selected = o.selected || (this.lis.length ? 0 : -1);
- }
- else if (o.selected === null) { // usage of null is deprecated, TODO remove in next release
- o.selected = -1;
- }
-
- // sanity check - default to first tab...
- o.selected = ((o.selected >= 0 && this.anchors[o.selected]) || o.selected < 0) ? o.selected : 0;
-
- // Take disabling tabs via class attribute from HTML
- // into account and update option properly.
- // A selected tab cannot become disabled.
- o.disabled = $.unique(o.disabled.concat(
- $.map(this.lis.filter('.ui-state-disabled'),
- function(n, i) { return self.lis.index(n); } )
- )).sort();
-
- if ($.inArray(o.selected, o.disabled) != -1) {
- o.disabled.splice($.inArray(o.selected, o.disabled), 1);
- }
-
- // highlight selected tab
- this.panels.addClass('ui-tabs-hide');
- this.lis.removeClass('ui-tabs-selected ui-state-active');
- if (o.selected >= 0 && this.anchors.length) { // check for length avoids error when initializing empty list
- this.panels.eq(o.selected).removeClass('ui-tabs-hide');
- this.lis.eq(o.selected).addClass('ui-tabs-selected ui-state-active');
-
- // seems to be expected behavior that the show callback is fired
- self.element.queue("tabs", function() {
- self._trigger('show', null, self._ui(self.anchors[o.selected], self.panels[o.selected]));
- });
-
- this.load(o.selected);
- }
-
- // clean up to avoid memory leaks in certain versions of IE 6
- $(window).bind('unload', function() {
- self.lis.add(self.anchors).unbind('.tabs');
- self.lis = self.anchors = self.panels = null;
- });
-
- }
- // update selected after add/remove
- else {
- o.selected = this.lis.index(this.lis.filter('.ui-tabs-selected'));
- }
-
- // update collapsible
- this.element[o.collapsible ? 'addClass' : 'removeClass']('ui-tabs-collapsible');
-
- // set or update cookie after init and add/remove respectively
- if (o.cookie) {
- this._cookie(o.selected, o.cookie);
- }
-
- // disable tabs
- for (var i = 0, li; (li = this.lis[i]); i++) {
- $(li)[$.inArray(i, o.disabled) != -1 &&
- !$(li).hasClass('ui-tabs-selected') ? 'addClass' : 'removeClass']('ui-state-disabled');
- }
-
- // reset cache if switching from cached to not cached
- if (o.cache === false) {
- this.anchors.removeData('cache.tabs');
- }
-
- // remove all handlers before, tabify may run on existing tabs after add or option change
- this.lis.add(this.anchors).unbind('.tabs');
-
- if (o.event != 'mouseover') {
- var addState = function(state, el) {
- if (el.is(':not(.ui-state-disabled)')) {
- el.addClass('ui-state-' + state);
- }
- };
- var removeState = function(state, el) {
- el.removeClass('ui-state-' + state);
- };
- this.lis.bind('mouseover.tabs', function() {
- addState('hover', $(this));
- });
- this.lis.bind('mouseout.tabs', function() {
- removeState('hover', $(this));
- });
- this.anchors.bind('focus.tabs', function() {
- addState('focus', $(this).closest('li'));
- });
- this.anchors.bind('blur.tabs', function() {
- removeState('focus', $(this).closest('li'));
- });
- }
-
- // set up animations
- var hideFx, showFx;
- if (o.fx) {
- if ($.isArray(o.fx)) {
- hideFx = o.fx[0];
- showFx = o.fx[1];
- }
- else {
- hideFx = showFx = o.fx;
- }
- }
-
- // Reset certain styles left over from animation
- // and prevent IE's ClearType bug...
- function resetStyle($el, fx) {
- $el.css({ display: '' });
- if (!$.support.opacity && fx.opacity) {
- $el[0].style.removeAttribute('filter');
- }
- }
-
- // Show a tab...
- var showTab = showFx ?
- function(clicked, $show) {
- $(clicked).closest('li').addClass('ui-tabs-selected ui-state-active');
- $show.hide().removeClass('ui-tabs-hide') // avoid flicker that way
- .animate(showFx, showFx.duration || 'normal', function() {
- resetStyle($show, showFx);
- self._trigger('show', null, self._ui(clicked, $show[0]));
- });
- } :
- function(clicked, $show) {
- $(clicked).closest('li').addClass('ui-tabs-selected ui-state-active');
- $show.removeClass('ui-tabs-hide');
- self._trigger('show', null, self._ui(clicked, $show[0]));
- };
-
- // Hide a tab, $show is optional...
- var hideTab = hideFx ?
- function(clicked, $hide) {
- $hide.animate(hideFx, hideFx.duration || 'normal', function() {
- self.lis.removeClass('ui-tabs-selected ui-state-active');
- $hide.addClass('ui-tabs-hide');
- resetStyle($hide, hideFx);
- self.element.dequeue("tabs");
- });
- } :
- function(clicked, $hide, $show) {
- self.lis.removeClass('ui-tabs-selected ui-state-active');
- $hide.addClass('ui-tabs-hide');
- self.element.dequeue("tabs");
- };
-
- // attach tab event handler, unbind to avoid duplicates from former tabifying...
- this.anchors.bind(o.event + '.tabs', function() {
- var el = this, $li = $(this).closest('li'), $hide = self.panels.filter(':not(.ui-tabs-hide)'),
- $show = $(self._sanitizeSelector(this.hash));
-
- // If tab is already selected and not collapsible or tab disabled or
- // or is already loading or click callback returns false stop here.
- // Check if click handler returns false last so that it is not executed
- // for a disabled or loading tab!
- if (($li.hasClass('ui-tabs-selected') && !o.collapsible) ||
- $li.hasClass('ui-state-disabled') ||
- $li.hasClass('ui-state-processing') ||
- self._trigger('select', null, self._ui(this, $show[0])) === false) {
- this.blur();
- return false;
- }
-
- o.selected = self.anchors.index(this);
-
- self.abort();
-
- // if tab may be closed
- if (o.collapsible) {
- if ($li.hasClass('ui-tabs-selected')) {
- o.selected = -1;
-
- if (o.cookie) {
- self._cookie(o.selected, o.cookie);
- }
-
- self.element.queue("tabs", function() {
- hideTab(el, $hide);
- }).dequeue("tabs");
-
- this.blur();
- return false;
- }
- else if (!$hide.length) {
- if (o.cookie) {
- self._cookie(o.selected, o.cookie);
- }
-
- self.element.queue("tabs", function() {
- showTab(el, $show);
- });
-
- self.load(self.anchors.index(this)); // TODO make passing in node possible, see also http://dev.jqueryui.com/ticket/3171
-
- this.blur();
- return false;
- }
- }
-
- if (o.cookie) {
- self._cookie(o.selected, o.cookie);
- }
-
- // show new tab
- if ($show.length) {
- if ($hide.length) {
- self.element.queue("tabs", function() {
- hideTab(el, $hide);
- });
- }
- self.element.queue("tabs", function() {
- showTab(el, $show);
- });
-
- self.load(self.anchors.index(this));
- }
- else {
- throw 'jQuery UI Tabs: Mismatching fragment identifier.';
- }
-
- // Prevent IE from keeping other link focussed when using the back button
- // and remove dotted border from clicked link. This is controlled via CSS
- // in modern browsers; blur() removes focus from address bar in Firefox
- // which can become a usability and annoying problem with tabs('rotate').
- if ($.browser.msie) {
- this.blur();
- }
-
- });
-
- // disable click in any case
- this.anchors.bind('click.tabs', function(){return false;});
-
- },
-
- destroy: function() {
- var o = this.options;
-
- this.abort();
-
- this.element.unbind('.tabs')
- .removeClass('ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible')
- .removeData('tabs');
-
- this.list.removeClass('ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all');
-
- this.anchors.each(function() {
- var href = $.data(this, 'href.tabs');
- if (href) {
- this.href = href;
- }
- var $this = $(this).unbind('.tabs');
- $.each(['href', 'load', 'cache'], function(i, prefix) {
- $this.removeData(prefix + '.tabs');
- });
- });
-
- this.lis.unbind('.tabs').add(this.panels).each(function() {
- if ($.data(this, 'destroy.tabs')) {
- $(this).remove();
- }
- else {
- $(this).removeClass([
- 'ui-state-default',
- 'ui-corner-top',
- 'ui-tabs-selected',
- 'ui-state-active',
- 'ui-state-hover',
- 'ui-state-focus',
- 'ui-state-disabled',
- 'ui-tabs-panel',
- 'ui-widget-content',
- 'ui-corner-bottom',
- 'ui-tabs-hide'
- ].join(' '));
- }
- });
-
- if (o.cookie) {
- this._cookie(null, o.cookie);
- }
-
- return this;
- },
-
- add: function(url, label, index) {
- if (index === undefined) {
- index = this.anchors.length; // append by default
- }
-
- var self = this, o = this.options,
- $li = $(o.tabTemplate.replace(/#\{href\}/g, url).replace(/#\{label\}/g, label)),
- id = !url.indexOf('#') ? url.replace('#', '') : this._tabId($('a', $li)[0]);
-
- $li.addClass('ui-state-default ui-corner-top').data('destroy.tabs', true);
-
- // try to find an existing element before creating a new one
- var $panel = $('#' + id);
- if (!$panel.length) {
- $panel = $(o.panelTemplate).attr('id', id).data('destroy.tabs', true);
- }
- $panel.addClass('ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide');
-
- if (index >= this.lis.length) {
- $li.appendTo(this.list);
- $panel.appendTo(this.list[0].parentNode);
- }
- else {
- $li.insertBefore(this.lis[index]);
- $panel.insertBefore(this.panels[index]);
- }
-
- o.disabled = $.map(o.disabled,
- function(n, i) { return n >= index ? ++n : n; });
-
- this._tabify();
-
- if (this.anchors.length == 1) { // after tabify
- o.selected = 0;
- $li.addClass('ui-tabs-selected ui-state-active');
- $panel.removeClass('ui-tabs-hide');
- this.element.queue("tabs", function() {
- self._trigger('show', null, self._ui(self.anchors[0], self.panels[0]));
- });
-
- this.load(0);
- }
-
- // callback
- this._trigger('add', null, this._ui(this.anchors[index], this.panels[index]));
- return this;
- },
-
- remove: function(index) {
- var o = this.options, $li = this.lis.eq(index).remove(),
- $panel = this.panels.eq(index).remove();
-
- // If selected tab was removed focus tab to the right or
- // in case the last tab was removed the tab to the left.
- if ($li.hasClass('ui-tabs-selected') && this.anchors.length > 1) {
- this.select(index + (index + 1 < this.anchors.length ? 1 : -1));
- }
-
- o.disabled = $.map($.grep(o.disabled, function(n, i) { return n != index; }),
- function(n, i) { return n >= index ? --n : n; });
-
- this._tabify();
-
- // callback
- this._trigger('remove', null, this._ui($li.find('a')[0], $panel[0]));
- return this;
- },
-
- enable: function(index) {
- var o = this.options;
- if ($.inArray(index, o.disabled) == -1) {
- return;
- }
-
- this.lis.eq(index).removeClass('ui-state-disabled');
- o.disabled = $.grep(o.disabled, function(n, i) { return n != index; });
-
- // callback
- this._trigger('enable', null, this._ui(this.anchors[index], this.panels[index]));
- return this;
- },
-
- disable: function(index) {
- var self = this, o = this.options;
- if (index != o.selected) { // cannot disable already selected tab
- this.lis.eq(index).addClass('ui-state-disabled');
-
- o.disabled.push(index);
- o.disabled.sort();
-
- // callback
- this._trigger('disable', null, this._ui(this.anchors[index], this.panels[index]));
- }
-
- return this;
- },
-
- select: function(index) {
- if (typeof index == 'string') {
- index = this.anchors.index(this.anchors.filter('[href$=' + index + ']'));
- }
- else if (index === null) { // usage of null is deprecated, TODO remove in next release
- index = -1;
- }
- if (index == -1 && this.options.collapsible) {
- index = this.options.selected;
- }
-
- this.anchors.eq(index).trigger(this.options.event + '.tabs');
- return this;
- },
-
- load: function(index) {
- var self = this, o = this.options, a = this.anchors.eq(index)[0], url = $.data(a, 'load.tabs');
-
- this.abort();
-
- // not remote or from cache
- if (!url || this.element.queue("tabs").length !== 0 && $.data(a, 'cache.tabs')) {
- this.element.dequeue("tabs");
- return;
- }
-
- // load remote from here on
- this.lis.eq(index).addClass('ui-state-processing');
-
- if (o.spinner) {
- var span = $('span', a);
- span.data('label.tabs', span.html()).html(o.spinner);
- }
-
- this.xhr = $.ajax($.extend({}, o.ajaxOptions, {
- url: url,
- success: function(r, s) {
- $(self._sanitizeSelector(a.hash)).html(r);
-
- // take care of tab labels
- self._cleanup();
-
- if (o.cache) {
- $.data(a, 'cache.tabs', true); // if loaded once do not load them again
- }
-
- // callbacks
- self._trigger('load', null, self._ui(self.anchors[index], self.panels[index]));
- try {
- o.ajaxOptions.success(r, s);
- }
- catch (e) {}
- },
- error: function(xhr, s, e) {
- // take care of tab labels
- self._cleanup();
-
- // callbacks
- self._trigger('load', null, self._ui(self.anchors[index], self.panels[index]));
- try {
- // Passing index avoid a race condition when this method is
- // called after the user has selected another tab.
- // Pass the anchor that initiated this request allows
- // loadError to manipulate the tab content panel via $(a.hash)
- o.ajaxOptions.error(xhr, s, index, a);
- }
- catch (e) {}
- }
- }));
-
- // last, so that load event is fired before show...
- self.element.dequeue("tabs");
-
- return this;
- },
-
- abort: function() {
- // stop possibly running animations
- this.element.queue([]);
- this.panels.stop(false, true);
-
- // "tabs" queue must not contain more than two elements,
- // which are the callbacks for the latest clicked tab...
- this.element.queue("tabs", this.element.queue("tabs").splice(-2, 2));
-
- // terminate pending requests from other tabs
- if (this.xhr) {
- this.xhr.abort();
- delete this.xhr;
- }
-
- // take care of tab labels
- this._cleanup();
- return this;
- },
-
- url: function(index, url) {
- this.anchors.eq(index).removeData('cache.tabs').data('load.tabs', url);
- return this;
- },
-
- length: function() {
- return this.anchors.length;
- }
-
-});
-
-$.extend($.ui.tabs, {
- version: '1.8.2'
-});
-
-/*
- * Tabs Extensions
- */
-
-/*
- * Rotate
- */
-$.extend($.ui.tabs.prototype, {
- rotation: null,
- rotate: function(ms, continuing) {
-
- var self = this, o = this.options;
-
- var rotate = self._rotate || (self._rotate = function(e) {
- clearTimeout(self.rotation);
- self.rotation = setTimeout(function() {
- var t = o.selected;
- self.select( ++t < self.anchors.length ? t : 0 );
- }, ms);
-
- if (e) {
- e.stopPropagation();
- }
- });
-
- var stop = self._unrotate || (self._unrotate = !continuing ?
- function(e) {
- if (e.clientX) { // in case of a true click
- self.rotate(null);
- }
- } :
- function(e) {
- t = o.selected;
- rotate();
- });
-
- // start rotation
- if (ms) {
- this.element.bind('tabsshow', rotate);
- this.anchors.bind(o.event + '.tabs', stop);
- rotate();
- }
- // stop rotation
- else {
- clearTimeout(self.rotation);
- this.element.unbind('tabsshow', rotate);
- this.anchors.unbind(o.event + '.tabs', stop);
- delete this._rotate;
- delete this._unrotate;
- }
-
- return this;
- }
-});
-
-})(jQuery);
-/*!
- * jQuery UI Widget 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Widget
- */
-(function( $ ) {
-
-var _remove = $.fn.remove;
-
-$.fn.remove = function( selector, keepData ) {
- return this.each(function() {
- if ( !keepData ) {
- if ( !selector || $.filter( selector, [ this ] ).length ) {
- $( "*", this ).add( this ).each(function() {
- $( this ).triggerHandler( "remove" );
- });
- }
- }
- return _remove.call( $(this), selector, keepData );
- });
-};
-
-$.widget = function( name, base, prototype ) {
- var namespace = name.split( "." )[ 0 ],
- fullName;
- name = name.split( "." )[ 1 ];
- fullName = namespace + "-" + name;
-
- if ( !prototype ) {
- prototype = base;
- base = $.Widget;
- }
-
- // create selector for plugin
- $.expr[ ":" ][ fullName ] = function( elem ) {
- return !!$.data( elem, name );
- };
-
- $[ namespace ] = $[ namespace ] || {};
- $[ namespace ][ name ] = function( options, element ) {
- // allow instantiation without initializing for simple inheritance
- if ( arguments.length ) {
- this._createWidget( options, element );
- }
- };
-
- var basePrototype = new base();
- // we need to make the options hash a property directly on the new instance
- // otherwise we'll modify the options hash on the prototype that we're
- // inheriting from
-// $.each( basePrototype, function( key, val ) {
-// if ( $.isPlainObject(val) ) {
-// basePrototype[ key ] = $.extend( {}, val );
-// }
-// });
- basePrototype.options = $.extend( {}, basePrototype.options );
- $[ namespace ][ name ].prototype = $.extend( true, basePrototype, {
- namespace: namespace,
- widgetName: name,
- widgetEventPrefix: $[ namespace ][ name ].prototype.widgetEventPrefix || name,
- widgetBaseClass: fullName
- }, prototype );
-
- $.widget.bridge( name, $[ namespace ][ name ] );
-};
-
-$.widget.bridge = function( name, object ) {
- $.fn[ name ] = function( options ) {
- var isMethodCall = typeof options === "string",
- args = Array.prototype.slice.call( arguments, 1 ),
- returnValue = this;
-
- // allow multiple hashes to be passed on init
- options = !isMethodCall && args.length ?
- $.extend.apply( null, [ true, options ].concat(args) ) :
- options;
-
- // prevent calls to internal methods
- if ( isMethodCall && options.substring( 0, 1 ) === "_" ) {
- return returnValue;
- }
-
- if ( isMethodCall ) {
- this.each(function() {
- var instance = $.data( this, name ),
- methodValue = instance && $.isFunction( instance[options] ) ?
- instance[ options ].apply( instance, args ) :
- instance;
- if ( methodValue !== instance && methodValue !== undefined ) {
- returnValue = methodValue;
- return false;
- }
- });
- } else {
- this.each(function() {
- var instance = $.data( this, name );
- if ( instance ) {
- if ( options ) {
- instance.option( options );
- }
- instance._init();
- } else {
- $.data( this, name, new object( options, this ) );
- }
- });
- }
-
- return returnValue;
- };
-};
-
-$.Widget = function( options, element ) {
- // allow instantiation without initializing for simple inheritance
- if ( arguments.length ) {
- this._createWidget( options, element );
- }
-};
-
-$.Widget.prototype = {
- widgetName: "widget",
- widgetEventPrefix: "",
- options: {
- disabled: false
- },
- _createWidget: function( options, element ) {
- // $.widget.bridge stores the plugin instance, but we do it anyway
- // so that it's stored even before the _create function runs
- this.element = $( element ).data( this.widgetName, this );
- this.options = $.extend( true, {},
- this.options,
- $.metadata && $.metadata.get( element )[ this.widgetName ],
- options );
-
- var self = this;
- this.element.bind( "remove." + this.widgetName, function() {
- self.destroy();
- });
-
- this._create();
- this._init();
- },
- _create: function() {},
- _init: function() {},
-
- destroy: function() {
- this.element
- .unbind( "." + this.widgetName )
- .removeData( this.widgetName );
- this.widget()
- .unbind( "." + this.widgetName )
- .removeAttr( "aria-disabled" )
- .removeClass(
- this.widgetBaseClass + "-disabled " +
- "ui-state-disabled" );
- },
-
- widget: function() {
- return this.element;
- },
-
- option: function( key, value ) {
- var options = key,
- self = this;
-
- if ( arguments.length === 0 ) {
- // don't return a reference to the internal hash
- return $.extend( {}, self.options );
- }
-
- if (typeof key === "string" ) {
- if ( value === undefined ) {
- return this.options[ key ];
- }
- options = {};
- options[ key ] = value;
- }
-
- $.each( options, function( key, value ) {
- self._setOption( key, value );
- });
-
- return self;
- },
- _setOption: function( key, value ) {
- this.options[ key ] = value;
-
- if ( key === "disabled" ) {
- this.widget()
- [ value ? "addClass" : "removeClass"](
- this.widgetBaseClass + "-disabled" + " " +
- "ui-state-disabled" )
- .attr( "aria-disabled", value );
- }
-
- return this;
- },
-
- enable: function() {
- return this._setOption( "disabled", false );
- },
- disable: function() {
- return this._setOption( "disabled", true );
- },
-
- _trigger: function( type, event, data ) {
- var callback = this.options[ type ];
-
- event = $.Event( event );
- event.type = ( type === this.widgetEventPrefix ?
- type :
- this.widgetEventPrefix + type ).toLowerCase();
- data = data || {};
-
- // copy original event properties over to the new event
- // this would happen if we could call $.event.fix instead of $.Event
- // but we don't have a way to force an event to be fixed multiple times
- if ( event.originalEvent ) {
- for ( var i = $.event.props.length, prop; i; ) {
- prop = $.event.props[ --i ];
- event[ prop ] = event.originalEvent[ prop ];
- }
- }
-
- this.element.trigger( event, data );
-
- return !( $.isFunction(callback) &&
- callback.call( this.element[0], event, data ) === false ||
- event.isDefaultPrevented() );
- }
-};
-
-})( jQuery );
-/*!
- * jQuery UI Mouse 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Mouse
- *
- * Depends:
- * jquery.ui.widget.js
- */
-(function($) {
-
-$.widget("ui.mouse", {
- options: {
- cancel: ':input,option',
- distance: 1,
- delay: 0
- },
- _mouseInit: function() {
- var self = this;
-
- this.element
- .bind('mousedown.'+this.widgetName, function(event) {
- return self._mouseDown(event);
- })
- .bind('click.'+this.widgetName, function(event) {
- if(self._preventClickEvent) {
- self._preventClickEvent = false;
- event.stopImmediatePropagation();
- return false;
- }
- });
-
- this.started = false;
- },
-
- // TODO: make sure destroying one instance of mouse doesn't mess with
- // other instances of mouse
- _mouseDestroy: function() {
- this.element.unbind('.'+this.widgetName);
- },
-
- _mouseDown: function(event) {
- // don't let more than one widget handle mouseStart
- // TODO: figure out why we have to use originalEvent
- event.originalEvent = event.originalEvent || {};
- if (event.originalEvent.mouseHandled) { return; }
-
- // we may have missed mouseup (out of window)
- (this._mouseStarted && this._mouseUp(event));
-
- this._mouseDownEvent = event;
-
- var self = this,
- btnIsLeft = (event.which == 1),
- elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);
- if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
- return true;
- }
-
- this.mouseDelayMet = !this.options.delay;
- if (!this.mouseDelayMet) {
- this._mouseDelayTimer = setTimeout(function() {
- self.mouseDelayMet = true;
- }, this.options.delay);
- }
-
- if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
- this._mouseStarted = (this._mouseStart(event) !== false);
- if (!this._mouseStarted) {
- event.preventDefault();
- return true;
- }
- }
-
- // these delegates are required to keep context
- this._mouseMoveDelegate = function(event) {
- return self._mouseMove(event);
- };
- this._mouseUpDelegate = function(event) {
- return self._mouseUp(event);
- };
- $(document)
- .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
- .bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
-
- // preventDefault() is used to prevent the selection of text here -
- // however, in Safari, this causes select boxes not to be selectable
- // anymore, so this fix is needed
- ($.browser.safari || event.preventDefault());
-
- event.originalEvent.mouseHandled = true;
- return true;
- },
-
- _mouseMove: function(event) {
- // IE mouseup check - mouseup happened when mouse was out of window
- if ($.browser.msie && !event.button) {
- return this._mouseUp(event);
- }
-
- if (this._mouseStarted) {
- this._mouseDrag(event);
- return event.preventDefault();
- }
-
- if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
- this._mouseStarted =
- (this._mouseStart(this._mouseDownEvent, event) !== false);
- (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
- }
-
- return !this._mouseStarted;
- },
-
- _mouseUp: function(event) {
- $(document)
- .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
- .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);
-
- if (this._mouseStarted) {
- this._mouseStarted = false;
- this._preventClickEvent = (event.target == this._mouseDownEvent.target);
- this._mouseStop(event);
- }
-
- return false;
- },
-
- _mouseDistanceMet: function(event) {
- return (Math.max(
- Math.abs(this._mouseDownEvent.pageX - event.pageX),
- Math.abs(this._mouseDownEvent.pageY - event.pageY)
- ) >= this.options.distance
- );
- },
-
- _mouseDelayMet: function(event) {
- return this.mouseDelayMet;
- },
-
- // These are placeholder methods, to be overriden by extending plugin
- _mouseStart: function(event) {},
- _mouseDrag: function(event) {},
- _mouseStop: function(event) {},
- _mouseCapture: function(event) { return true; }
-});
-
-})(jQuery);
-/*
- * jQuery UI Position 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Position
- */
-(function( $ ) {
-
-$.ui = $.ui || {};
-
-var horizontalPositions = /left|center|right/,
- horizontalDefault = "center",
- verticalPositions = /top|center|bottom/,
- verticalDefault = "center",
- _position = $.fn.position,
- _offset = $.fn.offset;
-
-$.fn.position = function( options ) {
- if ( !options || !options.of ) {
- return _position.apply( this, arguments );
- }
-
- // make a copy, we don't want to modify arguments
- options = $.extend( {}, options );
-
- var target = $( options.of ),
- collision = ( options.collision || "flip" ).split( " " ),
- offset = options.offset ? options.offset.split( " " ) : [ 0, 0 ],
- targetWidth,
- targetHeight,
- basePosition;
-
- if ( options.of.nodeType === 9 ) {
- targetWidth = target.width();
- targetHeight = target.height();
- basePosition = { top: 0, left: 0 };
- } else if ( options.of.scrollTo && options.of.document ) {
- targetWidth = target.width();
- targetHeight = target.height();
- basePosition = { top: target.scrollTop(), left: target.scrollLeft() };
- } else if ( options.of.preventDefault ) {
- // force left top to allow flipping
- options.at = "left top";
- targetWidth = targetHeight = 0;
- basePosition = { top: options.of.pageY, left: options.of.pageX };
- } else {
- targetWidth = target.outerWidth();
- targetHeight = target.outerHeight();
- basePosition = target.offset();
- }
-
- // force my and at to have valid horizontal and veritcal positions
- // if a value is missing or invalid, it will be converted to center
- $.each( [ "my", "at" ], function() {
- var pos = ( options[this] || "" ).split( " " );
- if ( pos.length === 1) {
- pos = horizontalPositions.test( pos[0] ) ?
- pos.concat( [verticalDefault] ) :
- verticalPositions.test( pos[0] ) ?
- [ horizontalDefault ].concat( pos ) :
- [ horizontalDefault, verticalDefault ];
- }
- pos[ 0 ] = horizontalPositions.test( pos[0] ) ? pos[ 0 ] : horizontalDefault;
- pos[ 1 ] = verticalPositions.test( pos[1] ) ? pos[ 1 ] : verticalDefault;
- options[ this ] = pos;
- });
-
- // normalize collision option
- if ( collision.length === 1 ) {
- collision[ 1 ] = collision[ 0 ];
- }
-
- // normalize offset option
- offset[ 0 ] = parseInt( offset[0], 10 ) || 0;
- if ( offset.length === 1 ) {
- offset[ 1 ] = offset[ 0 ];
- }
- offset[ 1 ] = parseInt( offset[1], 10 ) || 0;
-
- if ( options.at[0] === "right" ) {
- basePosition.left += targetWidth;
- } else if (options.at[0] === horizontalDefault ) {
- basePosition.left += targetWidth / 2;
- }
-
- if ( options.at[1] === "bottom" ) {
- basePosition.top += targetHeight;
- } else if ( options.at[1] === verticalDefault ) {
- basePosition.top += targetHeight / 2;
- }
-
- basePosition.left += offset[ 0 ];
- basePosition.top += offset[ 1 ];
-
- return this.each(function() {
- var elem = $( this ),
- elemWidth = elem.outerWidth(),
- elemHeight = elem.outerHeight(),
- position = $.extend( {}, basePosition );
-
- if ( options.my[0] === "right" ) {
- position.left -= elemWidth;
- } else if ( options.my[0] === horizontalDefault ) {
- position.left -= elemWidth / 2;
- }
-
- if ( options.my[1] === "bottom" ) {
- position.top -= elemHeight;
- } else if ( options.my[1] === verticalDefault ) {
- position.top -= elemHeight / 2;
- }
-
- // prevent fractions (see #5280)
- position.left = parseInt( position.left );
- position.top = parseInt( position.top );
-
- $.each( [ "left", "top" ], function( i, dir ) {
- if ( $.ui.position[ collision[i] ] ) {
- $.ui.position[ collision[i] ][ dir ]( position, {
- targetWidth: targetWidth,
- targetHeight: targetHeight,
- elemWidth: elemWidth,
- elemHeight: elemHeight,
- offset: offset,
- my: options.my,
- at: options.at
- });
- }
- });
-
- if ( $.fn.bgiframe ) {
- elem.bgiframe();
- }
- elem.offset( $.extend( position, { using: options.using } ) );
- });
-};
-
-$.ui.position = {
- fit: {
- left: function( position, data ) {
- var win = $( window ),
- over = position.left + data.elemWidth - win.width() - win.scrollLeft();
- position.left = over > 0 ? position.left - over : Math.max( 0, position.left );
- },
- top: function( position, data ) {
- var win = $( window ),
- over = position.top + data.elemHeight - win.height() - win.scrollTop();
- position.top = over > 0 ? position.top - over : Math.max( 0, position.top );
- }
- },
-
- flip: {
- left: function( position, data ) {
- if ( data.at[0] === "center" ) {
- return;
- }
- var win = $( window ),
- over = position.left + data.elemWidth - win.width() - win.scrollLeft(),
- myOffset = data.my[ 0 ] === "left" ?
- -data.elemWidth :
- data.my[ 0 ] === "right" ?
- data.elemWidth :
- 0,
- offset = -2 * data.offset[ 0 ];
- position.left += position.left < 0 ?
- myOffset + data.targetWidth + offset :
- over > 0 ?
- myOffset - data.targetWidth + offset :
- 0;
- },
- top: function( position, data ) {
- if ( data.at[1] === "center" ) {
- return;
- }
- var win = $( window ),
- over = position.top + data.elemHeight - win.height() - win.scrollTop(),
- myOffset = data.my[ 1 ] === "top" ?
- -data.elemHeight :
- data.my[ 1 ] === "bottom" ?
- data.elemHeight :
- 0,
- atOffset = data.at[ 1 ] === "top" ?
- data.targetHeight :
- -data.targetHeight,
- offset = -2 * data.offset[ 1 ];
- position.top += position.top < 0 ?
- myOffset + data.targetHeight + offset :
- over > 0 ?
- myOffset + atOffset + offset :
- 0;
- }
- }
-};
-
-// offset setter from jQuery 1.4
-if ( !$.offset.setOffset ) {
- $.offset.setOffset = function( elem, options ) {
- // set position first, in-case top/left are set even on static elem
- if ( /static/.test( $.curCSS( elem, "position" ) ) ) {
- elem.style.position = "relative";
- }
- var curElem = $( elem ),
- curOffset = curElem.offset(),
- curTop = parseInt( $.curCSS( elem, "top", true ), 10 ) || 0,
- curLeft = parseInt( $.curCSS( elem, "left", true ), 10) || 0,
- props = {
- top: (options.top - curOffset.top) + curTop,
- left: (options.left - curOffset.left) + curLeft
- };
-
- if ( 'using' in options ) {
- options.using.call( elem, props );
- } else {
- curElem.css( props );
- }
- };
-
- $.fn.offset = function( options ) {
- var elem = this[ 0 ];
- if ( !elem || !elem.ownerDocument ) { return null; }
- if ( options ) {
- return this.each(function() {
- $.offset.setOffset( this, options );
- });
- }
- return _offset.call( this );
- };
-}
-
-}( jQuery ));
-/*
- * jQuery UI Resizable 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Resizables
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.mouse.js
- * jquery.ui.widget.js
- */
-(function($) {
-
-$.widget("ui.resizable", $.ui.mouse, {
- widgetEventPrefix: "resize",
- options: {
- alsoResize: false,
- animate: false,
- animateDuration: "slow",
- animateEasing: "swing",
- aspectRatio: false,
- autoHide: false,
- containment: false,
- ghost: false,
- grid: false,
- handles: "e,s,se",
- helper: false,
- maxHeight: null,
- maxWidth: null,
- minHeight: 10,
- minWidth: 10,
- zIndex: 1000
- },
- _create: function() {
-
- var self = this, o = this.options;
- this.element.addClass("ui-resizable");
-
- $.extend(this, {
- _aspectRatio: !!(o.aspectRatio),
- aspectRatio: o.aspectRatio,
- originalElement: this.element,
- _proportionallyResizeElements: [],
- _helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null
- });
-
- //Wrap the element if it cannot hold child nodes
- if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {
-
- //Opera fix for relative positioning
- if (/relative/.test(this.element.css('position')) && $.browser.opera)
- this.element.css({ position: 'relative', top: 'auto', left: 'auto' });
-
- //Create a wrapper element and set the wrapper to the new current internal element
- this.element.wrap(
- $('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({
- position: this.element.css('position'),
- width: this.element.outerWidth(),
- height: this.element.outerHeight(),
- top: this.element.css('top'),
- left: this.element.css('left')
- })
- );
-
- //Overwrite the original this.element
- this.element = this.element.parent().data(
- "resizable", this.element.data('resizable')
- );
-
- this.elementIsWrapper = true;
-
- //Move margins to the wrapper
- this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") });
- this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});
-
- //Prevent Safari textarea resize
- this.originalResizeStyle = this.originalElement.css('resize');
- this.originalElement.css('resize', 'none');
-
- //Push the actual element to our proportionallyResize internal array
- this._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' }));
-
- // avoid IE jump (hard set the margin)
- this.originalElement.css({ margin: this.originalElement.css('margin') });
-
- // fix handlers offset
- this._proportionallyResize();
-
- }
-
- this.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? "e,s,se" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' });
- if(this.handles.constructor == String) {
-
- if(this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw';
- var n = this.handles.split(","); this.handles = {};
-
- for(var i = 0; i < n.length; i++) {
-
- var handle = $.trim(n[i]), hname = 'ui-resizable-'+handle;
- var axis = $('<div class="ui-resizable-handle ' + hname + '"></div>');
-
- // increase zIndex of sw, se, ne, nw axis
- //TODO : this modifies original option
- if(/sw|se|ne|nw/.test(handle)) axis.css({ zIndex: ++o.zIndex });
-
- //TODO : What's going on here?
- if ('se' == handle) {
- axis.addClass('ui-icon ui-icon-gripsmall-diagonal-se');
- };
-
- //Insert into internal handles object and append to element
- this.handles[handle] = '.ui-resizable-'+handle;
- this.element.append(axis);
- }
-
- }
-
- this._renderAxis = function(target) {
-
- target = target || this.element;
-
- for(var i in this.handles) {
-
- if(this.handles[i].constructor == String)
- this.handles[i] = $(this.handles[i], this.element).show();
-
- //Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)
- if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {
-
- var axis = $(this.handles[i], this.element), padWrapper = 0;
-
- //Checking the correct pad and border
- padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();
-
- //The padding type i have to apply...
- var padPos = [ 'padding',
- /ne|nw|n/.test(i) ? 'Top' :
- /se|sw|s/.test(i) ? 'Bottom' :
- /^e$/.test(i) ? 'Right' : 'Left' ].join("");
-
- target.css(padPos, padWrapper);
-
- this._proportionallyResize();
-
- }
-
- //TODO: What's that good for? There's not anything to be executed left
- if(!$(this.handles[i]).length)
- continue;
-
- }
- };
-
- //TODO: make renderAxis a prototype function
- this._renderAxis(this.element);
-
- this._handles = $('.ui-resizable-handle', this.element)
- .disableSelection();
-
- //Matching axis name
- this._handles.mouseover(function() {
- if (!self.resizing) {
- if (this.className)
- var axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
- //Axis, default = se
- self.axis = axis && axis[1] ? axis[1] : 'se';
- }
- });
-
- //If we want to auto hide the elements
- if (o.autoHide) {
- this._handles.hide();
- $(this.element)
- .addClass("ui-resizable-autohide")
- .hover(function() {
- $(this).removeClass("ui-resizable-autohide");
- self._handles.show();
- },
- function(){
- if (!self.resizing) {
- $(this).addClass("ui-resizable-autohide");
- self._handles.hide();
- }
- });
- }
-
- //Initialize the mouse interaction
- this._mouseInit();
-
- },
-
- destroy: function() {
-
- this._mouseDestroy();
-
- var _destroy = function(exp) {
- $(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")
- .removeData("resizable").unbind(".resizable").find('.ui-resizable-handle').remove();
- };
-
- //TODO: Unwrap at same DOM position
- if (this.elementIsWrapper) {
- _destroy(this.element);
- var wrapper = this.element;
- wrapper.after(
- this.originalElement.css({
- position: wrapper.css('position'),
- width: wrapper.outerWidth(),
- height: wrapper.outerHeight(),
- top: wrapper.css('top'),
- left: wrapper.css('left')
- })
- ).remove();
- }
-
- this.originalElement.css('resize', this.originalResizeStyle);
- _destroy(this.originalElement);
-
- return this;
- },
-
- _mouseCapture: function(event) {
- var handle = false;
- for (var i in this.handles) {
- if ($(this.handles[i])[0] == event.target) {
- handle = true;
- }
- }
-
- return !this.options.disabled && handle;
- },
-
- _mouseStart: function(event) {
-
- var o = this.options, iniPos = this.element.position(), el = this.element;
-
- this.resizing = true;
- this.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };
-
- // bugfix for http://dev.jquery.com/ticket/1749
- if (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) {
- el.css({ position: 'absolute', top: iniPos.top, left: iniPos.left });
- }
-
- //Opera fixing relative position
- if ($.browser.opera && (/relative/).test(el.css('position')))
- el.css({ position: 'relative', top: 'auto', left: 'auto' });
-
- this._renderProxy();
-
- var curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top'));
-
- if (o.containment) {
- curleft += $(o.containment).scrollLeft() || 0;
- curtop += $(o.containment).scrollTop() || 0;
- }
-
- //Store needed variables
- this.offset = this.helper.offset();
- this.position = { left: curleft, top: curtop };
- this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
- this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
- this.originalPosition = { left: curleft, top: curtop };
- this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };
- this.originalMousePosition = { left: event.pageX, top: event.pageY };
-
- //Aspect Ratio
- this.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);
-
- var cursor = $('.ui-resizable-' + this.axis).css('cursor');
- $('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor);
-
- el.addClass("ui-resizable-resizing");
- this._propagate("start", event);
- return true;
- },
-
- _mouseDrag: function(event) {
-
- //Increase performance, avoid regex
- var el = this.helper, o = this.options, props = {},
- self = this, smp = this.originalMousePosition, a = this.axis;
-
- var dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0;
- var trigger = this._change[a];
- if (!trigger) return false;
-
- // Calculate the attrs that will be change
- var data = trigger.apply(this, [event, dx, dy]), ie6 = $.browser.msie && $.browser.version < 7, csdif = this.sizeDiff;
-
- if (this._aspectRatio || event.shiftKey)
- data = this._updateRatio(data, event);
-
- data = this._respectSize(data, event);
-
- // plugins callbacks need to be called first
- this._propagate("resize", event);
-
- el.css({
- top: this.position.top + "px", left: this.position.left + "px",
- width: this.size.width + "px", height: this.size.height + "px"
- });
-
- if (!this._helper && this._proportionallyResizeElements.length)
- this._proportionallyResize();
-
- this._updateCache(data);
-
- // calling the user callback at the end
- this._trigger('resize', event, this.ui());
-
- return false;
- },
-
- _mouseStop: function(event) {
-
- this.resizing = false;
- var o = this.options, self = this;
-
- if(this._helper) {
- var pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),
- soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,
- soffsetw = ista ? 0 : self.sizeDiff.width;
-
- var s = { width: (self.size.width - soffsetw), height: (self.size.height - soffseth) },
- left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,
- top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;
-
- if (!o.animate)
- this.element.css($.extend(s, { top: top, left: left }));
-
- self.helper.height(self.size.height);
- self.helper.width(self.size.width);
-
- if (this._helper && !o.animate) this._proportionallyResize();
- }
-
- $('body').css('cursor', 'auto');
-
- this.element.removeClass("ui-resizable-resizing");
-
- this._propagate("stop", event);
-
- if (this._helper) this.helper.remove();
- return false;
-
- },
-
- _updateCache: function(data) {
- var o = this.options;
- this.offset = this.helper.offset();
- if (isNumber(data.left)) this.position.left = data.left;
- if (isNumber(data.top)) this.position.top = data.top;
- if (isNumber(data.height)) this.size.height = data.height;
- if (isNumber(data.width)) this.size.width = data.width;
- },
-
- _updateRatio: function(data, event) {
-
- var o = this.options, cpos = this.position, csize = this.size, a = this.axis;
-
- if (data.height) data.width = (csize.height * this.aspectRatio);
- else if (data.width) data.height = (csize.width / this.aspectRatio);
-
- if (a == 'sw') {
- data.left = cpos.left + (csize.width - data.width);
- data.top = null;
- }
- if (a == 'nw') {
- data.top = cpos.top + (csize.height - data.height);
- data.left = cpos.left + (csize.width - data.width);
- }
-
- return data;
- },
-
- _respectSize: function(data, event) {
-
- var el = this.helper, o = this.options, pRatio = this._aspectRatio || event.shiftKey, a = this.axis,
- ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),
- isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height);
-
- if (isminw) data.width = o.minWidth;
- if (isminh) data.height = o.minHeight;
- if (ismaxw) data.width = o.maxWidth;
- if (ismaxh) data.height = o.maxHeight;
-
- var dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height;
- var cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);
-
- if (isminw && cw) data.left = dw - o.minWidth;
- if (ismaxw && cw) data.left = dw - o.maxWidth;
- if (isminh && ch) data.top = dh - o.minHeight;
- if (ismaxh && ch) data.top = dh - o.maxHeight;
-
- // fixing jump error on top/left - bug #2330
- var isNotwh = !data.width && !data.height;
- if (isNotwh && !data.left && data.top) data.top = null;
- else if (isNotwh && !data.top && data.left) data.left = null;
-
- return data;
- },
-
- _proportionallyResize: function() {
-
- var o = this.options;
- if (!this._proportionallyResizeElements.length) return;
- var element = this.helper || this.element;
-
- for (var i=0; i < this._proportionallyResizeElements.length; i++) {
-
- var prel = this._proportionallyResizeElements[i];
-
- if (!this.borderDif) {
- var b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')],
- p = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')];
-
- this.borderDif = $.map(b, function(v, i) {
- var border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0;
- return border + padding;
- });
- }
-
- if ($.browser.msie && !(!($(element).is(':hidden') || $(element).parents(':hidden').length)))
- continue;
-
- prel.css({
- height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,
- width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0
- });
-
- };
-
- },
-
- _renderProxy: function() {
-
- var el = this.element, o = this.options;
- this.elementOffset = el.offset();
-
- if(this._helper) {
-
- this.helper = this.helper || $('<div style="overflow:hidden;"></div>');
-
- // fix ie6 offset TODO: This seems broken
- var ie6 = $.browser.msie && $.browser.version < 7, ie6offset = (ie6 ? 1 : 0),
- pxyoffset = ( ie6 ? 2 : -1 );
-
- this.helper.addClass(this._helper).css({
- width: this.element.outerWidth() + pxyoffset,
- height: this.element.outerHeight() + pxyoffset,
- position: 'absolute',
- left: this.elementOffset.left - ie6offset +'px',
- top: this.elementOffset.top - ie6offset +'px',
- zIndex: ++o.zIndex //TODO: Don't modify option
- });
-
- this.helper
- .appendTo("body")
- .disableSelection();
-
- } else {
- this.helper = this.element;
- }
-
- },
-
- _change: {
- e: function(event, dx, dy) {
- return { width: this.originalSize.width + dx };
- },
- w: function(event, dx, dy) {
- var o = this.options, cs = this.originalSize, sp = this.originalPosition;
- return { left: sp.left + dx, width: cs.width - dx };
- },
- n: function(event, dx, dy) {
- var o = this.options, cs = this.originalSize, sp = this.originalPosition;
- return { top: sp.top + dy, height: cs.height - dy };
- },
- s: function(event, dx, dy) {
- return { height: this.originalSize.height + dy };
- },
- se: function(event, dx, dy) {
- return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
- },
- sw: function(event, dx, dy) {
- return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
- },
- ne: function(event, dx, dy) {
- return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
- },
- nw: function(event, dx, dy) {
- return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
- }
- },
-
- _propagate: function(n, event) {
- $.ui.plugin.call(this, n, [event, this.ui()]);
- (n != "resize" && this._trigger(n, event, this.ui()));
- },
-
- plugins: {},
-
- ui: function() {
- return {
- originalElement: this.originalElement,
- element: this.element,
- helper: this.helper,
- position: this.position,
- size: this.size,
- originalSize: this.originalSize,
- originalPosition: this.originalPosition
- };
- }
-
-});
-
-$.extend($.ui.resizable, {
- version: "1.8.2"
-});
-
-/*
- * Resizable Extensions
- */
-
-$.ui.plugin.add("resizable", "alsoResize", {
-
- start: function(event, ui) {
-
- var self = $(this).data("resizable"), o = self.options;
-
- var _store = function(exp) {
- $(exp).each(function() {
- $(this).data("resizable-alsoresize", {
- width: parseInt($(this).width(), 10), height: parseInt($(this).height(), 10),
- left: parseInt($(this).css('left'), 10), top: parseInt($(this).css('top'), 10)
- });
- });
- };
-
- if (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) {
- if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }
- else { $.each(o.alsoResize, function(exp, c) { _store(exp); }); }
- }else{
- _store(o.alsoResize);
- }
- },
-
- resize: function(event, ui){
- var self = $(this).data("resizable"), o = self.options, os = self.originalSize, op = self.originalPosition;
-
- var delta = {
- height: (self.size.height - os.height) || 0, width: (self.size.width - os.width) || 0,
- top: (self.position.top - op.top) || 0, left: (self.position.left - op.left) || 0
- },
-
- _alsoResize = function(exp, c) {
- $(exp).each(function() {
- var el = $(this), start = $(this).data("resizable-alsoresize"), style = {}, css = c && c.length ? c : ['width', 'height', 'top', 'left'];
-
- $.each(css || ['width', 'height', 'top', 'left'], function(i, prop) {
- var sum = (start[prop]||0) + (delta[prop]||0);
- if (sum && sum >= 0)
- style[prop] = sum || null;
- });
-
- //Opera fixing relative position
- if (/relative/.test(el.css('position')) && $.browser.opera) {
- self._revertToRelativePosition = true;
- el.css({ position: 'absolute', top: 'auto', left: 'auto' });
- }
-
- el.css(style);
- });
- };
-
- if (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {
- $.each(o.alsoResize, function(exp, c) { _alsoResize(exp, c); });
- }else{
- _alsoResize(o.alsoResize);
- }
- },
-
- stop: function(event, ui){
- var self = $(this).data("resizable");
-
- //Opera fixing relative position
- if (self._revertToRelativePosition && $.browser.opera) {
- self._revertToRelativePosition = false;
- el.css({ position: 'relative' });
- }
-
- $(this).removeData("resizable-alsoresize-start");
- }
-});
-
-$.ui.plugin.add("resizable", "animate", {
-
- stop: function(event, ui) {
- var self = $(this).data("resizable"), o = self.options;
-
- var pr = self._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),
- soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,
- soffsetw = ista ? 0 : self.sizeDiff.width;
-
- var style = { width: (self.size.width - soffsetw), height: (self.size.height - soffseth) },
- left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,
- top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;
-
- self.element.animate(
- $.extend(style, top && left ? { top: top, left: left } : {}), {
- duration: o.animateDuration,
- easing: o.animateEasing,
- step: function() {
-
- var data = {
- width: parseInt(self.element.css('width'), 10),
- height: parseInt(self.element.css('height'), 10),
- top: parseInt(self.element.css('top'), 10),
- left: parseInt(self.element.css('left'), 10)
- };
-
- if (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height });
-
- // propagating resize, and updating values for each animation step
- self._updateCache(data);
- self._propagate("resize", event);
-
- }
- }
- );
- }
-
-});
-
-$.ui.plugin.add("resizable", "containment", {
-
- start: function(event, ui) {
- var self = $(this).data("resizable"), o = self.options, el = self.element;
- var oc = o.containment, ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;
- if (!ce) return;
-
- self.containerElement = $(ce);
-
- if (/document/.test(oc) || oc == document) {
- self.containerOffset = { left: 0, top: 0 };
- self.containerPosition = { left: 0, top: 0 };
-
- self.parentData = {
- element: $(document), left: 0, top: 0,
- width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight
- };
- }
-
- // i'm a node, so compute top, left, right, bottom
- else {
- var element = $(ce), p = [];
- $([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); });
-
- self.containerOffset = element.offset();
- self.containerPosition = element.position();
- self.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };
-
- var co = self.containerOffset, ch = self.containerSize.height, cw = self.containerSize.width,
- width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw ), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);
-
- self.parentData = {
- element: ce, left: co.left, top: co.top, width: width, height: height
- };
- }
- },
-
- resize: function(event, ui) {
- var self = $(this).data("resizable"), o = self.options,
- ps = self.containerSize, co = self.containerOffset, cs = self.size, cp = self.position,
- pRatio = self._aspectRatio || event.shiftKey, cop = { top:0, left:0 }, ce = self.containerElement;
-
- if (ce[0] != document && (/static/).test(ce.css('position'))) cop = co;
-
- if (cp.left < (self._helper ? co.left : 0)) {
- self.size.width = self.size.width + (self._helper ? (self.position.left - co.left) : (self.position.left - cop.left));
- if (pRatio) self.size.height = self.size.width / o.aspectRatio;
- self.position.left = o.helper ? co.left : 0;
- }
-
- if (cp.top < (self._helper ? co.top : 0)) {
- self.size.height = self.size.height + (self._helper ? (self.position.top - co.top) : self.position.top);
- if (pRatio) self.size.width = self.size.height * o.aspectRatio;
- self.position.top = self._helper ? co.top : 0;
- }
-
- self.offset.left = self.parentData.left+self.position.left;
- self.offset.top = self.parentData.top+self.position.top;
-
- var woset = Math.abs( (self._helper ? self.offset.left - cop.left : (self.offset.left - cop.left)) + self.sizeDiff.width ),
- hoset = Math.abs( (self._helper ? self.offset.top - cop.top : (self.offset.top - co.top)) + self.sizeDiff.height );
-
- var isParent = self.containerElement.get(0) == self.element.parent().get(0),
- isOffsetRelative = /relative|absolute/.test(self.containerElement.css('position'));
-
- if(isParent && isOffsetRelative) woset -= self.parentData.left;
-
- if (woset + self.size.width >= self.parentData.width) {
- self.size.width = self.parentData.width - woset;
- if (pRatio) self.size.height = self.size.width / self.aspectRatio;
- }
-
- if (hoset + self.size.height >= self.parentData.height) {
- self.size.height = self.parentData.height - hoset;
- if (pRatio) self.size.width = self.size.height * self.aspectRatio;
- }
- },
-
- stop: function(event, ui){
- var self = $(this).data("resizable"), o = self.options, cp = self.position,
- co = self.containerOffset, cop = self.containerPosition, ce = self.containerElement;
-
- var helper = $(self.helper), ho = helper.offset(), w = helper.outerWidth() - self.sizeDiff.width, h = helper.outerHeight() - self.sizeDiff.height;
-
- if (self._helper && !o.animate && (/relative/).test(ce.css('position')))
- $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
-
- if (self._helper && !o.animate && (/static/).test(ce.css('position')))
- $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
-
- }
-});
-
-$.ui.plugin.add("resizable", "ghost", {
-
- start: function(event, ui) {
-
- var self = $(this).data("resizable"), o = self.options, cs = self.size;
-
- self.ghost = self.originalElement.clone();
- self.ghost
- .css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })
- .addClass('ui-resizable-ghost')
- .addClass(typeof o.ghost == 'string' ? o.ghost : '');
-
- self.ghost.appendTo(self.helper);
-
- },
-
- resize: function(event, ui){
- var self = $(this).data("resizable"), o = self.options;
- if (self.ghost) self.ghost.css({ position: 'relative', height: self.size.height, width: self.size.width });
- },
-
- stop: function(event, ui){
- var self = $(this).data("resizable"), o = self.options;
- if (self.ghost && self.helper) self.helper.get(0).removeChild(self.ghost.get(0));
- }
-
-});
-
-$.ui.plugin.add("resizable", "grid", {
-
- resize: function(event, ui) {
- var self = $(this).data("resizable"), o = self.options, cs = self.size, os = self.originalSize, op = self.originalPosition, a = self.axis, ratio = o._aspectRatio || event.shiftKey;
- o.grid = typeof o.grid == "number" ? [o.grid, o.grid] : o.grid;
- var ox = Math.round((cs.width - os.width) / (o.grid[0]||1)) * (o.grid[0]||1), oy = Math.round((cs.height - os.height) / (o.grid[1]||1)) * (o.grid[1]||1);
-
- if (/^(se|s|e)$/.test(a)) {
- self.size.width = os.width + ox;
- self.size.height = os.height + oy;
- }
- else if (/^(ne)$/.test(a)) {
- self.size.width = os.width + ox;
- self.size.height = os.height + oy;
- self.position.top = op.top - oy;
- }
- else if (/^(sw)$/.test(a)) {
- self.size.width = os.width + ox;
- self.size.height = os.height + oy;
- self.position.left = op.left - ox;
- }
- else {
- self.size.width = os.width + ox;
- self.size.height = os.height + oy;
- self.position.top = op.top - oy;
- self.position.left = op.left - ox;
- }
- }
-
-});
-
-var num = function(v) {
- return parseInt(v, 10) || 0;
-};
-
-var isNumber = function(value) {
- return !isNaN(parseInt(value, 10));
-};
-
-})(jQuery);
-
-/*
- * jQuery UI Selectable 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Selectables
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.mouse.js
- * jquery.ui.widget.js
- */
-(function($) {
-
-$.widget("ui.selectable", $.ui.mouse, {
- options: {
- appendTo: 'body',
- autoRefresh: true,
- distance: 0,
- filter: '*',
- tolerance: 'touch'
- },
- _create: function() {
- var self = this;
-
- this.element.addClass("ui-selectable");
-
- this.dragged = false;
-
- // cache selectee children based on filter
- var selectees;
- this.refresh = function() {
- selectees = $(self.options.filter, self.element[0]);
- selectees.each(function() {
- var $this = $(this);
- var pos = $this.offset();
- $.data(this, "selectable-item", {
- element: this,
- $element: $this,
- left: pos.left,
- top: pos.top,
- right: pos.left + $this.outerWidth(),
- bottom: pos.top + $this.outerHeight(),
- startselected: false,
- selected: $this.hasClass('ui-selected'),
- selecting: $this.hasClass('ui-selecting'),
- unselecting: $this.hasClass('ui-unselecting')
- });
- });
- };
- this.refresh();
-
- this.selectees = selectees.addClass("ui-selectee");
-
- this._mouseInit();
-
- this.helper = $("<div class='ui-selectable-helper'></div>");
- },
-
- destroy: function() {
- this.selectees
- .removeClass("ui-selectee")
- .removeData("selectable-item");
- this.element
- .removeClass("ui-selectable ui-selectable-disabled")
- .removeData("selectable")
- .unbind(".selectable");
- this._mouseDestroy();
-
- return this;
- },
-
- _mouseStart: function(event) {
- var self = this;
-
- this.opos = [event.pageX, event.pageY];
-
- if (this.options.disabled)
- return;
-
- var options = this.options;
-
- this.selectees = $(options.filter, this.element[0]);
-
- this._trigger("start", event);
-
- $(options.appendTo).append(this.helper);
- // position helper (lasso)
- this.helper.css({
- "z-index": 100,
- "position": "absolute",
- "left": event.clientX,
- "top": event.clientY,
- "width": 0,
- "height": 0
- });
-
- if (options.autoRefresh) {
- this.refresh();
- }
-
- this.selectees.filter('.ui-selected').each(function() {
- var selectee = $.data(this, "selectable-item");
- selectee.startselected = true;
- if (!event.metaKey) {
- selectee.$element.removeClass('ui-selected');
- selectee.selected = false;
- selectee.$element.addClass('ui-unselecting');
- selectee.unselecting = true;
- // selectable UNSELECTING callback
- self._trigger("unselecting", event, {
- unselecting: selectee.element
- });
- }
- });
-
- $(event.target).parents().andSelf().each(function() {
- var selectee = $.data(this, "selectable-item");
- if (selectee) {
- var doSelect = !event.metaKey || !selectee.$element.hasClass('ui-selected');
- selectee.$element
- .removeClass(doSelect ? "ui-unselecting" : "ui-selected")
- .addClass(doSelect ? "ui-selecting" : "ui-unselecting");
- selectee.unselecting = !doSelect;
- selectee.selecting = doSelect;
- selectee.selected = doSelect;
- // selectable (UN)SELECTING callback
- if (doSelect) {
- self._trigger("selecting", event, {
- selecting: selectee.element
- });
- } else {
- self._trigger("unselecting", event, {
- unselecting: selectee.element
- });
- }
- return false;
- }
- });
-
- },
-
- _mouseDrag: function(event) {
- var self = this;
- this.dragged = true;
-
- if (this.options.disabled)
- return;
-
- var options = this.options;
-
- var x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY;
- if (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; }
- if (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; }
- this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});
-
- this.selectees.each(function() {
- var selectee = $.data(this, "selectable-item");
- //prevent helper from being selected if appendTo: selectable
- if (!selectee || selectee.element == self.element[0])
- return;
- var hit = false;
- if (options.tolerance == 'touch') {
- hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );
- } else if (options.tolerance == 'fit') {
- hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);
- }
-
- if (hit) {
- // SELECT
- if (selectee.selected) {
- selectee.$element.removeClass('ui-selected');
- selectee.selected = false;
- }
- if (selectee.unselecting) {
- selectee.$element.removeClass('ui-unselecting');
- selectee.unselecting = false;
- }
- if (!selectee.selecting) {
- selectee.$element.addClass('ui-selecting');
- selectee.selecting = true;
- // selectable SELECTING callback
- self._trigger("selecting", event, {
- selecting: selectee.element
- });
- }
- } else {
- // UNSELECT
- if (selectee.selecting) {
- if (event.metaKey && selectee.startselected) {
- selectee.$element.removeClass('ui-selecting');
- selectee.selecting = false;
- selectee.$element.addClass('ui-selected');
- selectee.selected = true;
- } else {
- selectee.$element.removeClass('ui-selecting');
- selectee.selecting = false;
- if (selectee.startselected) {
- selectee.$element.addClass('ui-unselecting');
- selectee.unselecting = true;
- }
- // selectable UNSELECTING callback
- self._trigger("unselecting", event, {
- unselecting: selectee.element
- });
- }
- }
- if (selectee.selected) {
- if (!event.metaKey && !selectee.startselected) {
- selectee.$element.removeClass('ui-selected');
- selectee.selected = false;
-
- selectee.$element.addClass('ui-unselecting');
- selectee.unselecting = true;
- // selectable UNSELECTING callback
- self._trigger("unselecting", event, {
- unselecting: selectee.element
- });
- }
- }
- }
- });
-
- return false;
- },
-
- _mouseStop: function(event) {
- var self = this;
-
- this.dragged = false;
-
- var options = this.options;
-
- $('.ui-unselecting', this.element[0]).each(function() {
- var selectee = $.data(this, "selectable-item");
- selectee.$element.removeClass('ui-unselecting');
- selectee.unselecting = false;
- selectee.startselected = false;
- self._trigger("unselected", event, {
- unselected: selectee.element
- });
- });
- $('.ui-selecting', this.element[0]).each(function() {
- var selectee = $.data(this, "selectable-item");
- selectee.$element.removeClass('ui-selecting').addClass('ui-selected');
- selectee.selecting = false;
- selectee.selected = true;
- selectee.startselected = true;
- self._trigger("selected", event, {
- selected: selectee.element
- });
- });
- this._trigger("stop", event);
-
- this.helper.remove();
-
- return false;
- }
-
-});
-
-$.extend($.ui.selectable, {
- version: "1.8.2"
-});
-
-})(jQuery);
-/*
- * jQuery UI Autocomplete 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Autocomplete
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.widget.js
- * jquery.ui.position.js
- */
-(function( $ ) {
-
-$.widget( "ui.autocomplete", {
- options: {
- minLength: 1,
- delay: 300
- },
- _create: function() {
- var self = this,
- doc = this.element[ 0 ].ownerDocument;
- this.element
- .addClass( "ui-autocomplete-input" )
- .attr( "autocomplete", "off" )
- // TODO verify these actually work as intended
- .attr({
- role: "textbox",
- "aria-autocomplete": "list",
- "aria-haspopup": "true"
- })
- .bind( "keydown.autocomplete", function( event ) {
- var keyCode = $.ui.keyCode;
- switch( event.keyCode ) {
- case keyCode.PAGE_UP:
- self._move( "previousPage", event );
- break;
- case keyCode.PAGE_DOWN:
- self._move( "nextPage", event );
- break;
- case keyCode.UP:
- self._move( "previous", event );
- // prevent moving cursor to beginning of text field in some browsers
- event.preventDefault();
- break;
- case keyCode.DOWN:
- self._move( "next", event );
- // prevent moving cursor to end of text field in some browsers
- event.preventDefault();
- break;
- case keyCode.ENTER:
- case keyCode.NUMPAD_ENTER:
- // when menu is open or has focus
- if ( self.menu.active ) {
- event.preventDefault();
- }
- //passthrough - ENTER and TAB both select the current element
- case keyCode.TAB:
- if ( !self.menu.active ) {
- return;
- }
- self.menu.select( event );
- break;
- case keyCode.ESCAPE:
- self.element.val( self.term );
- self.close( event );
- break;
- case keyCode.LEFT:
- case keyCode.RIGHT:
- case keyCode.SHIFT:
- case keyCode.CONTROL:
- case keyCode.ALT:
- case keyCode.COMMAND:
- case keyCode.COMMAND_RIGHT:
- case keyCode.INSERT:
- case keyCode.CAPS_LOCK:
- case keyCode.END:
- case keyCode.HOME:
- // ignore metakeys (shift, ctrl, alt)
- break;
- default:
- // keypress is triggered before the input value is changed
- clearTimeout( self.searching );
- self.searching = setTimeout(function() {
- self.search( null, event );
- }, self.options.delay );
- break;
- }
- })
- .bind( "focus.autocomplete", function() {
- self.selectedItem = null;
- self.previous = self.element.val();
- })
- .bind( "blur.autocomplete", function( event ) {
- clearTimeout( self.searching );
- // clicks on the menu (or a button to trigger a search) will cause a blur event
- self.closing = setTimeout(function() {
- self.close( event );
- self._change( event );
- }, 150 );
- });
- this._initSource();
- this.response = function() {
- return self._response.apply( self, arguments );
- };
- this.menu = $( "<ul></ul>" )
- .addClass( "ui-autocomplete" )
- .appendTo( "body", doc )
- // prevent the close-on-blur in case of a "slow" click on the menu (long mousedown)
- .mousedown(function() {
- // use another timeout to make sure the blur-event-handler on the input was already triggered
- setTimeout(function() {
- clearTimeout( self.closing );
- }, 13);
- })
- .menu({
- focus: function( event, ui ) {
- var item = ui.item.data( "item.autocomplete" );
- if ( false !== self._trigger( "focus", null, { item: item } ) ) {
- // use value to match what will end up in the input, if it was a key event
- if ( /^key/.test(event.originalEvent.type) ) {
- self.element.val( item.value );
- }
- }
- },
- selected: function( event, ui ) {
- var item = ui.item.data( "item.autocomplete" );
- if ( false !== self._trigger( "select", event, { item: item } ) ) {
- self.element.val( item.value );
- }
- self.close( event );
- // only trigger when focus was lost (click on menu)
- var previous = self.previous;
- if ( self.element[0] !== doc.activeElement ) {
- self.element.focus();
- self.previous = previous;
- }
- self.selectedItem = item;
- },
- blur: function( event, ui ) {
- if ( self.menu.element.is(":visible") ) {
- self.element.val( self.term );
- }
- }
- })
- .zIndex( this.element.zIndex() + 1 )
- // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781
- .css({ top: 0, left: 0 })
- .hide()
- .data( "menu" );
- if ( $.fn.bgiframe ) {
- this.menu.element.bgiframe();
- }
- },
-
- destroy: function() {
- this.element
- .removeClass( "ui-autocomplete-input" )
- .removeAttr( "autocomplete" )
- .removeAttr( "role" )
- .removeAttr( "aria-autocomplete" )
- .removeAttr( "aria-haspopup" );
- this.menu.element.remove();
- $.Widget.prototype.destroy.call( this );
- },
-
- _setOption: function( key ) {
- $.Widget.prototype._setOption.apply( this, arguments );
- if ( key === "source" ) {
- this._initSource();
- }
- },
-
- _initSource: function() {
- var array,
- url;
- if ( $.isArray(this.options.source) ) {
- array = this.options.source;
- this.source = function( request, response ) {
- response( $.ui.autocomplete.filter(array, request.term) );
- };
- } else if ( typeof this.options.source === "string" ) {
- url = this.options.source;
- this.source = function( request, response ) {
- $.getJSON( url, request, response );
- };
- } else {
- this.source = this.options.source;
- }
- },
-
- search: function( value, event ) {
- value = value != null ? value : this.element.val();
- if ( value.length < this.options.minLength ) {
- return this.close( event );
- }
-
- clearTimeout( this.closing );
- if ( this._trigger("search") === false ) {
- return;
- }
-
- return this._search( value );
- },
-
- _search: function( value ) {
- this.term = this.element
- .addClass( "ui-autocomplete-loading" )
- // always save the actual value, not the one passed as an argument
- .val();
-
- this.source( { term: value }, this.response );
- },
-
- _response: function( content ) {
- if ( content.length ) {
- content = this._normalize( content );
- this._suggest( content );
- this._trigger( "open" );
- } else {
- this.close();
- }
- this.element.removeClass( "ui-autocomplete-loading" );
- },
-
- close: function( event ) {
- clearTimeout( this.closing );
- if ( this.menu.element.is(":visible") ) {
- this._trigger( "close", event );
- this.menu.element.hide();
- this.menu.deactivate();
- }
- },
-
- _change: function( event ) {
- if ( this.previous !== this.element.val() ) {
- this._trigger( "change", event, { item: this.selectedItem } );
- }
- },
-
- _normalize: function( items ) {
- // assume all items have the right format when the first item is complete
- if ( items.length && items[0].label && items[0].value ) {
- return items;
- }
- return $.map( items, function(item) {
- if ( typeof item === "string" ) {
- return {
- label: item,
- value: item
- };
- }
- return $.extend({
- label: item.label || item.value,
- value: item.value || item.label
- }, item );
- });
- },
-
- _suggest: function( items ) {
- var ul = this.menu.element
- .empty()
- .zIndex( this.element.zIndex() + 1 ),
- menuWidth,
- textWidth;
- this._renderMenu( ul, items );
- // TODO refresh should check if the active item is still in the dom, removing the need for a manual deactivate
- this.menu.deactivate();
- this.menu.refresh();
- this.menu.element.show().position({
- my: "left top",
- at: "left bottom",
- of: this.element,
- collision: "none"
- });
-
- menuWidth = ul.width( "" ).width();
- textWidth = this.element.width();
- ul.width( Math.max( menuWidth, textWidth ) );
- },
-
- _renderMenu: function( ul, items ) {
- var self = this;
- $.each( items, function( index, item ) {
- self._renderItem( ul, item );
- });
- },
-
- _renderItem: function( ul, item) {
- return $( "<li></li>" )
- .data( "item.autocomplete", item )
- .append( "<a>" + item.label + "</a>" )
- .appendTo( ul );
- },
-
- _move: function( direction, event ) {
- if ( !this.menu.element.is(":visible") ) {
- this.search( null, event );
- return;
- }
- if ( this.menu.first() && /^previous/.test(direction) ||
- this.menu.last() && /^next/.test(direction) ) {
- this.element.val( this.term );
- this.menu.deactivate();
- return;
- }
- this.menu[ direction ]( event );
- },
-
- widget: function() {
- return this.menu.element;
- }
-});
-
-$.extend( $.ui.autocomplete, {
- escapeRegex: function( value ) {
- return value.replace( /([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1" );
- },
- filter: function(array, term) {
- var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
- return $.grep( array, function(value) {
- return matcher.test( value.label || value.value || value );
- });
- }
-});
-
-}( jQuery ));
-
-/*
- * jQuery UI Menu (not officially released)
- *
- * This widget isn't yet finished and the API is subject to change. We plan to finish
- * it for the next release. You're welcome to give it a try anyway and give us feedback,
- * as long as you're okay with migrating your code later on. We can help with that, too.
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Menu
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.widget.js
- */
-(function($) {
-
-$.widget("ui.menu", {
- _create: function() {
- var self = this;
- this.element
- .addClass("ui-menu ui-widget ui-widget-content ui-corner-all")
- .attr({
- role: "listbox",
- "aria-activedescendant": "ui-active-menuitem"
- })
- .click(function( event ) {
- if ( !$( event.target ).closest( ".ui-menu-item a" ).length ) {
- return;
- }
- // temporary
- event.preventDefault();
- self.select( event );
- });
- this.refresh();
- },
-
- refresh: function() {
- var self = this;
-
- // don't refresh list items that are already adapted
- var items = this.element.children("li:not(.ui-menu-item):has(a)")
- .addClass("ui-menu-item")
- .attr("role", "menuitem");
-
- items.children("a")
- .addClass("ui-corner-all")
- .attr("tabindex", -1)
- // mouseenter doesn't work with event delegation
- .mouseenter(function( event ) {
- self.activate( event, $(this).parent() );
- })
- .mouseleave(function() {
- self.deactivate();
- });
- },
-
- activate: function( event, item ) {
- this.deactivate();
- if (this.hasScroll()) {
- var offset = item.offset().top - this.element.offset().top,
- scroll = this.element.attr("scrollTop"),
- elementHeight = this.element.height();
- if (offset < 0) {
- this.element.attr("scrollTop", scroll + offset);
- } else if (offset > elementHeight) {
- this.element.attr("scrollTop", scroll + offset - elementHeight + item.height());
- }
- }
- this.active = item.eq(0)
- .children("a")
- .addClass("ui-state-hover")
- .attr("id", "ui-active-menuitem")
- .end();
- this._trigger("focus", event, { item: item });
- },
-
- deactivate: function() {
- if (!this.active) { return; }
-
- this.active.children("a")
- .removeClass("ui-state-hover")
- .removeAttr("id");
- this._trigger("blur");
- this.active = null;
- },
-
- next: function(event) {
- this.move("next", ".ui-menu-item:first", event);
- },
-
- previous: function(event) {
- this.move("prev", ".ui-menu-item:last", event);
- },
-
- first: function() {
- return this.active && !this.active.prev().length;
- },
-
- last: function() {
- return this.active && !this.active.next().length;
- },
-
- move: function(direction, edge, event) {
- if (!this.active) {
- this.activate(event, this.element.children(edge));
- return;
- }
- var next = this.active[direction + "All"](".ui-menu-item").eq(0);
- if (next.length) {
- this.activate(event, next);
- } else {
- this.activate(event, this.element.children(edge));
- }
- },
-
- // TODO merge with previousPage
- nextPage: function(event) {
- if (this.hasScroll()) {
- // TODO merge with no-scroll-else
- if (!this.active || this.last()) {
- this.activate(event, this.element.children(":first"));
- return;
- }
- var base = this.active.offset().top,
- height = this.element.height(),
- result = this.element.children("li").filter(function() {
- var close = $(this).offset().top - base - height + $(this).height();
- // TODO improve approximation
- return close < 10 && close > -10;
- });
-
- // TODO try to catch this earlier when scrollTop indicates the last page anyway
- if (!result.length) {
- result = this.element.children(":last");
- }
- this.activate(event, result);
- } else {
- this.activate(event, this.element.children(!this.active || this.last() ? ":first" : ":last"));
- }
- },
-
- // TODO merge with nextPage
- previousPage: function(event) {
- if (this.hasScroll()) {
- // TODO merge with no-scroll-else
- if (!this.active || this.first()) {
- this.activate(event, this.element.children(":last"));
- return;
- }
-
- var base = this.active.offset().top,
- height = this.element.height();
- result = this.element.children("li").filter(function() {
- var close = $(this).offset().top - base + height - $(this).height();
- // TODO improve approximation
- return close < 10 && close > -10;
- });
-
- // TODO try to catch this earlier when scrollTop indicates the last page anyway
- if (!result.length) {
- result = this.element.children(":first");
- }
- this.activate(event, result);
- } else {
- this.activate(event, this.element.children(!this.active || this.first() ? ":last" : ":first"));
- }
- },
-
- hasScroll: function() {
- return this.element.height() < this.element.attr("scrollHeight");
- },
-
- select: function( event ) {
- this._trigger("selected", event, { item: this.active });
- }
-});
-
-}(jQuery));
-/*
- * jQuery UI Button 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Button
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.widget.js
- */
-(function( $ ) {
-
-var lastActive,
- baseClasses = "ui-button ui-widget ui-state-default ui-corner-all",
- stateClasses = "ui-state-hover ui-state-active ",
- typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon ui-button-text-only",
- formResetHandler = function( event ) {
- $( ":ui-button", event.target.form ).each(function() {
- var inst = $( this ).data( "button" );
- setTimeout(function() {
- inst.refresh();
- }, 1 );
- });
- },
- radioGroup = function( radio ) {
- var name = radio.name,
- form = radio.form,
- radios = $( [] );
- if ( name ) {
- if ( form ) {
- radios = $( form ).find( "[name='" + name + "']" );
- } else {
- radios = $( "[name='" + name + "']", radio.ownerDocument )
- .filter(function() {
- return !this.form;
- });
- }
- }
- return radios;
- };
-
-$.widget( "ui.button", {
- options: {
- text: true,
- label: null,
- icons: {
- primary: null,
- secondary: null
- }
- },
- _create: function() {
- this.element.closest( "form" )
- .unbind( "reset.button" )
- .bind( "reset.button", formResetHandler );
-
- this._determineButtonType();
- this.hasTitle = !!this.buttonElement.attr( "title" );
-
- var self = this,
- options = this.options,
- toggleButton = this.type === "checkbox" || this.type === "radio",
- hoverClass = "ui-state-hover" + ( !toggleButton ? " ui-state-active" : "" ),
- focusClass = "ui-state-focus";
-
- if ( options.label === null ) {
- options.label = this.buttonElement.html();
- }
-
- if ( this.element.is( ":disabled" ) ) {
- options.disabled = true;
- }
-
- this.buttonElement
- .addClass( baseClasses )
- .attr( "role", "button" )
- .bind( "mouseenter.button", function() {
- if ( options.disabled ) {
- return;
- }
- $( this ).addClass( "ui-state-hover" );
- if ( this === lastActive ) {
- $( this ).addClass( "ui-state-active" );
- }
- })
- .bind( "mouseleave.button", function() {
- if ( options.disabled ) {
- return;
- }
- $( this ).removeClass( hoverClass );
- })
- .bind( "focus.button", function() {
- // no need to check disabled, focus won't be triggered anyway
- $( this ).addClass( focusClass );
- })
- .bind( "blur.button", function() {
- $( this ).removeClass( focusClass );
- });
-
- if ( toggleButton ) {
- this.element.bind( "change.button", function() {
- self.refresh();
- });
- }
-
- if ( this.type === "checkbox" ) {
- this.buttonElement.bind( "click.button", function() {
- if ( options.disabled ) {
- return false;
- }
- $( this ).toggleClass( "ui-state-active" );
- self.buttonElement.attr( "aria-pressed", self.element[0].checked );
- });
- } else if ( this.type === "radio" ) {
- this.buttonElement.bind( "click.button", function() {
- if ( options.disabled ) {
- return false;
- }
- $( this ).addClass( "ui-state-active" );
- self.buttonElement.attr( "aria-pressed", true );
-
- var radio = self.element[ 0 ];
- radioGroup( radio )
- .not( radio )
- .map(function() {
- return $( this ).button( "widget" )[ 0 ];
- })
- .removeClass( "ui-state-active" )
- .attr( "aria-pressed", false );
- });
- } else {
- this.buttonElement
- .bind( "mousedown.button", function() {
- if ( options.disabled ) {
- return false;
- }
- $( this ).addClass( "ui-state-active" );
- lastActive = this;
- $( document ).one( "mouseup", function() {
- lastActive = null;
- });
- })
- .bind( "mouseup.button", function() {
- if ( options.disabled ) {
- return false;
- }
- $( this ).removeClass( "ui-state-active" );
- })
- .bind( "keydown.button", function(event) {
- if ( options.disabled ) {
- return false;
- }
- if ( event.keyCode == $.ui.keyCode.SPACE || event.keyCode == $.ui.keyCode.ENTER ) {
- $( this ).addClass( "ui-state-active" );
- }
- })
- .bind( "keyup.button", function() {
- $( this ).removeClass( "ui-state-active" );
- });
-
- if ( this.buttonElement.is("a") ) {
- this.buttonElement.keyup(function(event) {
- if ( event.keyCode === $.ui.keyCode.SPACE ) {
- // TODO pass through original event correctly (just as 2nd argument doesn't work)
- $( this ).click();
- }
- });
- }
- }
-
- // TODO: pull out $.Widget's handling for the disabled option into
- // $.Widget.prototype._setOptionDisabled so it's easy to proxy and can
- // be overridden by individual plugins
- this._setOption( "disabled", options.disabled );
- },
-
- _determineButtonType: function() {
-
- if ( this.element.is(":checkbox") ) {
- this.type = "checkbox";
- } else {
- if ( this.element.is(":radio") ) {
- this.type = "radio";
- } else {
- if ( this.element.is("input") ) {
- this.type = "input";
- } else {
- this.type = "button";
- }
- }
- }
-
- if ( this.type === "checkbox" || this.type === "radio" ) {
- // we don't search against the document in case the element
- // is disconnected from the DOM
- this.buttonElement = this.element.parents().last()
- .find( "[for=" + this.element.attr("id") + "]" );
- this.element.addClass( "ui-helper-hidden-accessible" );
-
- var checked = this.element.is( ":checked" );
- if ( checked ) {
- this.buttonElement.addClass( "ui-state-active" );
- }
- this.buttonElement.attr( "aria-pressed", checked );
- } else {
- this.buttonElement = this.element;
- }
- },
-
- widget: function() {
- return this.buttonElement;
- },
-
- destroy: function() {
- this.element
- .removeClass( "ui-helper-hidden-accessible" );
- this.buttonElement
- .removeClass( baseClasses + " " + stateClasses + " " + typeClasses )
- .removeAttr( "role" )
- .removeAttr( "aria-pressed" )
- .html( this.buttonElement.find(".ui-button-text").html() );
-
- if ( !this.hasTitle ) {
- this.buttonElement.removeAttr( "title" );
- }
-
- $.Widget.prototype.destroy.call( this );
- },
-
- _setOption: function( key, value ) {
- $.Widget.prototype._setOption.apply( this, arguments );
- if ( key === "disabled" ) {
- if ( value ) {
- this.element.attr( "disabled", true );
- } else {
- this.element.removeAttr( "disabled" );
- }
- }
- this._resetButton();
- },
-
- refresh: function() {
- var isDisabled = this.element.is( ":disabled" );
- if ( isDisabled !== this.options.disabled ) {
- this._setOption( "disabled", isDisabled );
- }
- if ( this.type === "radio" ) {
- radioGroup( this.element[0] ).each(function() {
- if ( $( this ).is( ":checked" ) ) {
- $( this ).button( "widget" )
- .addClass( "ui-state-active" )
- .attr( "aria-pressed", true );
- } else {
- $( this ).button( "widget" )
- .removeClass( "ui-state-active" )
- .attr( "aria-pressed", false );
- }
- });
- } else if ( this.type === "checkbox" ) {
- if ( this.element.is( ":checked" ) ) {
- this.buttonElement
- .addClass( "ui-state-active" )
- .attr( "aria-pressed", true );
- } else {
- this.buttonElement
- .removeClass( "ui-state-active" )
- .attr( "aria-pressed", false );
- }
- }
- },
-
- _resetButton: function() {
- if ( this.type === "input" ) {
- if ( this.options.label ) {
- this.element.val( this.options.label );
- }
- return;
- }
- var buttonElement = this.buttonElement.removeClass( typeClasses ),
- buttonText = $( "<span></span>" )
- .addClass( "ui-button-text" )
- .html( this.options.label )
- .appendTo( buttonElement.empty() )
- .text(),
- icons = this.options.icons,
- multipleIcons = icons.primary && icons.secondary;
- if ( icons.primary || icons.secondary ) {
- buttonElement.addClass( "ui-button-text-icon" +
- ( multipleIcons ? "s" : "" ) );
- if ( icons.primary ) {
- buttonElement.prepend( "<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>" );
- }
- if ( icons.secondary ) {
- buttonElement.append( "<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>" );
- }
- if ( !this.options.text ) {
- buttonElement
- .addClass( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" )
- .removeClass( "ui-button-text-icons ui-button-text-icon" );
- if ( !this.hasTitle ) {
- buttonElement.attr( "title", buttonText );
- }
- }
- } else {
- buttonElement.addClass( "ui-button-text-only" );
- }
- }
-});
-
-$.widget( "ui.buttonset", {
- _create: function() {
- this.element.addClass( "ui-buttonset" );
- this._init();
- },
-
- _init: function() {
- this.refresh();
- },
-
- _setOption: function( key, value ) {
- if ( key === "disabled" ) {
- this.buttons.button( "option", key, value );
- }
-
- $.Widget.prototype._setOption.apply( this, arguments );
- },
-
- refresh: function() {
- this.buttons = this.element.find( ":button, :submit, :reset, :checkbox, :radio, a, :data(button)" )
- .filter( ":ui-button" )
- .button( "refresh" )
- .end()
- .not( ":ui-button" )
- .button()
- .end()
- .map(function() {
- return $( this ).button( "widget" )[ 0 ];
- })
- .removeClass( "ui-corner-all ui-corner-left ui-corner-right" )
- .filter( ":first" )
- .addClass( "ui-corner-left" )
- .end()
- .filter( ":last" )
- .addClass( "ui-corner-right" )
- .end()
- .end();
- },
-
- destroy: function() {
- this.element.removeClass( "ui-buttonset" );
- this.buttons
- .map(function() {
- return $( this ).button( "widget" )[ 0 ];
- })
- .removeClass( "ui-corner-left ui-corner-right" )
- .end()
- .button( "destroy" );
-
- $.Widget.prototype.destroy.call( this );
- }
-});
-
-}( jQuery ) );
-/*
- * jQuery UI Dialog 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Dialog
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.widget.js
- * jquery.ui.button.js
- * jquery.ui.draggable.js
- * jquery.ui.mouse.js
- * jquery.ui.position.js
- * jquery.ui.resizable.js
- */
-(function($) {
-
-var uiDialogClasses =
- 'ui-dialog ' +
- 'ui-widget ' +
- 'ui-widget-content ' +
- 'ui-corner-all ';
-
-$.widget("ui.dialog", {
- options: {
- autoOpen: true,
- buttons: {},
- closeOnEscape: true,
- closeText: 'close',
- dialogClass: '',
- draggable: true,
- hide: null,
- height: 'auto',
- maxHeight: false,
- maxWidth: false,
- minHeight: 150,
- minWidth: 150,
- modal: false,
- position: 'center',
- resizable: true,
- show: null,
- stack: true,
- title: '',
- width: 300,
- zIndex: 1000
- },
- _create: function() {
- this.originalTitle = this.element.attr('title');
-
- var self = this,
- options = self.options,
-
- title = options.title || self.originalTitle || '&#160;',
- titleId = $.ui.dialog.getTitleId(self.element),
-
- uiDialog = (self.uiDialog = $('<div></div>'))
- .appendTo(document.body)
- .hide()
- .addClass(uiDialogClasses + options.dialogClass)
- .css({
- zIndex: options.zIndex
- })
- // setting tabIndex makes the div focusable
- // setting outline to 0 prevents a border on focus in Mozilla
- .attr('tabIndex', -1).css('outline', 0).keydown(function(event) {
- if (options.closeOnEscape && event.keyCode &&
- event.keyCode === $.ui.keyCode.ESCAPE) {
-
- self.close(event);
- event.preventDefault();
- }
- })
- .attr({
- role: 'dialog',
- 'aria-labelledby': titleId
- })
- .mousedown(function(event) {
- self.moveToTop(false, event);
- }),
-
- uiDialogContent = self.element
- .show()
- .removeAttr('title')
- .addClass(
- 'ui-dialog-content ' +
- 'ui-widget-content')
- .appendTo(uiDialog),
-
- uiDialogTitlebar = (self.uiDialogTitlebar = $('<div></div>'))
- .addClass(
- 'ui-dialog-titlebar ' +
- 'ui-widget-header ' +
- 'ui-corner-all ' +
- 'ui-helper-clearfix'
- )
- .prependTo(uiDialog),
-
- uiDialogTitlebarClose = $('<a href="#"></a>')
- .addClass(
- 'ui-dialog-titlebar-close ' +
- 'ui-corner-all'
- )
- .attr('role', 'button')
- .hover(
- function() {
- uiDialogTitlebarClose.addClass('ui-state-hover');
- },
- function() {
- uiDialogTitlebarClose.removeClass('ui-state-hover');
- }
- )
- .focus(function() {
- uiDialogTitlebarClose.addClass('ui-state-focus');
- })
- .blur(function() {
- uiDialogTitlebarClose.removeClass('ui-state-focus');
- })
- .click(function(event) {
- self.close(event);
- return false;
- })
- .appendTo(uiDialogTitlebar),
-
- uiDialogTitlebarCloseText = (self.uiDialogTitlebarCloseText = $('<span></span>'))
- .addClass(
- 'ui-icon ' +
- 'ui-icon-closethick'
- )
- .text(options.closeText)
- .appendTo(uiDialogTitlebarClose),
-
- uiDialogTitle = $('<span></span>')
- .addClass('ui-dialog-title')
- .attr('id', titleId)
- .html(title)
- .prependTo(uiDialogTitlebar);
-
- //handling of deprecated beforeclose (vs beforeClose) option
- //Ticket #4669 http://dev.jqueryui.com/ticket/4669
- //TODO: remove in 1.9pre
- if ($.isFunction(options.beforeclose) && !$.isFunction(options.beforeClose)) {
- options.beforeClose = options.beforeclose;
- }
-
- uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection();
-
- if (options.draggable && $.fn.draggable) {
- self._makeDraggable();
- }
- if (options.resizable && $.fn.resizable) {
- self._makeResizable();
- }
-
- self._createButtons(options.buttons);
- self._isOpen = false;
-
- if ($.fn.bgiframe) {
- uiDialog.bgiframe();
- }
- },
- _init: function() {
- if ( this.options.autoOpen ) {
- this.open();
- }
- },
-
- destroy: function() {
- var self = this;
-
- if (self.overlay) {
- self.overlay.destroy();
- }
- self.uiDialog.hide();
- self.element
- .unbind('.dialog')
- .removeData('dialog')
- .removeClass('ui-dialog-content ui-widget-content')
- .hide().appendTo('body');
- self.uiDialog.remove();
-
- if (self.originalTitle) {
- self.element.attr('title', self.originalTitle);
- }
-
- return self;
- },
-
- widget: function() {
- return this.uiDialog;
- },
-
- close: function(event) {
- var self = this,
- maxZ;
-
- if (false === self._trigger('beforeClose', event)) {
- return;
- }
-
- if (self.overlay) {
- self.overlay.destroy();
- }
- self.uiDialog.unbind('keypress.ui-dialog');
-
- self._isOpen = false;
-
- if (self.options.hide) {
- self.uiDialog.hide(self.options.hide, function() {
- self._trigger('close', event);
- });
- } else {
- self.uiDialog.hide();
- self._trigger('close', event);
- }
-
- $.ui.dialog.overlay.resize();
-
- // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
- if (self.options.modal) {
- maxZ = 0;
- $('.ui-dialog').each(function() {
- if (this !== self.uiDialog[0]) {
- maxZ = Math.max(maxZ, $(this).css('z-index'));
- }
- });
- $.ui.dialog.maxZ = maxZ;
- }
-
- return self;
- },
-
- isOpen: function() {
- return this._isOpen;
- },
-
- // the force parameter allows us to move modal dialogs to their correct
- // position on open
- moveToTop: function(force, event) {
- var self = this,
- options = self.options,
- saveScroll;
-
- if ((options.modal && !force) ||
- (!options.stack && !options.modal)) {
- return self._trigger('focus', event);
- }
-
- if (options.zIndex > $.ui.dialog.maxZ) {
- $.ui.dialog.maxZ = options.zIndex;
- }
- if (self.overlay) {
- $.ui.dialog.maxZ += 1;
- self.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ);
- }
-
- //Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed.
- // http://ui.jquery.com/bugs/ticket/3193
- saveScroll = { scrollTop: self.element.attr('scrollTop'), scrollLeft: self.element.attr('scrollLeft') };
- $.ui.dialog.maxZ += 1;
- self.uiDialog.css('z-index', $.ui.dialog.maxZ);
- self.element.attr(saveScroll);
- self._trigger('focus', event);
-
- return self;
- },
-
- open: function() {
- if (this._isOpen) { return; }
-
- var self = this,
- options = self.options,
- uiDialog = self.uiDialog;
-
- self.overlay = options.modal ? new $.ui.dialog.overlay(self) : null;
- if (uiDialog.next().length) {
- uiDialog.appendTo('body');
- }
- self._size();
- self._position(options.position);
- uiDialog.show(options.show);
- self.moveToTop(true);
-
- // prevent tabbing out of modal dialogs
- if (options.modal) {
- uiDialog.bind('keypress.ui-dialog', function(event) {
- if (event.keyCode !== $.ui.keyCode.TAB) {
- return;
- }
-
- var tabbables = $(':tabbable', this),
- first = tabbables.filter(':first'),
- last = tabbables.filter(':last');
-
- if (event.target === last[0] && !event.shiftKey) {
- first.focus(1);
- return false;
- } else if (event.target === first[0] && event.shiftKey) {
- last.focus(1);
- return false;
- }
- });
- }
-
- // set focus to the first tabbable element in the content area or the first button
- // if there are no tabbable elements, set focus on the dialog itself
- $([])
- .add(uiDialog.find('.ui-dialog-content :tabbable:first'))
- .add(uiDialog.find('.ui-dialog-buttonpane :tabbable:first'))
- .add(uiDialog)
- .filter(':first')
- .focus();
-
- self._trigger('open');
- self._isOpen = true;
-
- return self;
- },
-
- _createButtons: function(buttons) {
- var self = this,
- hasButtons = false,
- uiDialogButtonPane = $('<div></div>')
- .addClass(
- 'ui-dialog-buttonpane ' +
- 'ui-widget-content ' +
- 'ui-helper-clearfix'
- );
-
- // if we already have a button pane, remove it
- self.uiDialog.find('.ui-dialog-buttonpane').remove();
-
- if (typeof buttons === 'object' && buttons !== null) {
- $.each(buttons, function() {
- return !(hasButtons = true);
- });
- }
- if (hasButtons) {
- $.each(buttons, function(name, fn) {
- var button = $('<button type="button"></button>')
- .text(name)
- .click(function() { fn.apply(self.element[0], arguments); })
- .appendTo(uiDialogButtonPane);
- if ($.fn.button) {
- button.button();
- }
- });
- uiDialogButtonPane.appendTo(self.uiDialog);
- }
- },
-
- _makeDraggable: function() {
- var self = this,
- options = self.options,
- doc = $(document),
- heightBeforeDrag;
-
- function filteredUi(ui) {
- return {
- position: ui.position,
- offset: ui.offset
- };
- }
-
- self.uiDialog.draggable({
- cancel: '.ui-dialog-content, .ui-dialog-titlebar-close',
- handle: '.ui-dialog-titlebar',
- containment: 'document',
- start: function(event, ui) {
- heightBeforeDrag = options.height === "auto" ? "auto" : $(this).height();
- $(this).height($(this).height()).addClass("ui-dialog-dragging");
- self._trigger('dragStart', event, filteredUi(ui));
- },
- drag: function(event, ui) {
- self._trigger('drag', event, filteredUi(ui));
- },
- stop: function(event, ui) {
- options.position = [ui.position.left - doc.scrollLeft(),
- ui.position.top - doc.scrollTop()];
- $(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag);
- self._trigger('dragStop', event, filteredUi(ui));
- $.ui.dialog.overlay.resize();
- }
- });
- },
-
- _makeResizable: function(handles) {
- handles = (handles === undefined ? this.options.resizable : handles);
- var self = this,
- options = self.options,
- // .ui-resizable has position: relative defined in the stylesheet
- // but dialogs have to use absolute or fixed positioning
- position = self.uiDialog.css('position'),
- resizeHandles = (typeof handles === 'string' ?
- handles :
- 'n,e,s,w,se,sw,ne,nw'
- );
-
- function filteredUi(ui) {
- return {
- originalPosition: ui.originalPosition,
- originalSize: ui.originalSize,
- position: ui.position,
- size: ui.size
- };
- }
-
- self.uiDialog.resizable({
- cancel: '.ui-dialog-content',
- containment: 'document',
- alsoResize: self.element,
- maxWidth: options.maxWidth,
- maxHeight: options.maxHeight,
- minWidth: options.minWidth,
- minHeight: self._minHeight(),
- handles: resizeHandles,
- start: function(event, ui) {
- $(this).addClass("ui-dialog-resizing");
- self._trigger('resizeStart', event, filteredUi(ui));
- },
- resize: function(event, ui) {
- self._trigger('resize', event, filteredUi(ui));
- },
- stop: function(event, ui) {
- $(this).removeClass("ui-dialog-resizing");
- options.height = $(this).height();
- options.width = $(this).width();
- self._trigger('resizeStop', event, filteredUi(ui));
- $.ui.dialog.overlay.resize();
- }
- })
- .css('position', position)
- .find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se');
- },
-
- _minHeight: function() {
- var options = this.options;
-
- if (options.height === 'auto') {
- return options.minHeight;
- } else {
- return Math.min(options.minHeight, options.height);
- }
- },
-
- _position: function(position) {
- var myAt = [],
- offset = [0, 0],
- isVisible;
-
- position = position || $.ui.dialog.prototype.options.position;
-
- // deep extending converts arrays to objects in jQuery <= 1.3.2 :-(
-// if (typeof position == 'string' || $.isArray(position)) {
-// myAt = $.isArray(position) ? position : position.split(' ');
-
- if (typeof position === 'string' || (typeof position === 'object' && '0' in position)) {
- myAt = position.split ? position.split(' ') : [position[0], position[1]];
- if (myAt.length === 1) {
- myAt[1] = myAt[0];
- }
-
- $.each(['left', 'top'], function(i, offsetPosition) {
- if (+myAt[i] === myAt[i]) {
- offset[i] = myAt[i];
- myAt[i] = offsetPosition;
- }
- });
- } else if (typeof position === 'object') {
- if ('left' in position) {
- myAt[0] = 'left';
- offset[0] = position.left;
- } else if ('right' in position) {
- myAt[0] = 'right';
- offset[0] = -position.right;
- }
-
- if ('top' in position) {
- myAt[1] = 'top';
- offset[1] = position.top;
- } else if ('bottom' in position) {
- myAt[1] = 'bottom';
- offset[1] = -position.bottom;
- }
- }
-
- // need to show the dialog to get the actual offset in the position plugin
- isVisible = this.uiDialog.is(':visible');
- if (!isVisible) {
- this.uiDialog.show();
- }
- this.uiDialog
- // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781
- .css({ top: 0, left: 0 })
- .position({
- my: myAt.join(' '),
- at: myAt.join(' '),
- offset: offset.join(' '),
- of: window,
- collision: 'fit',
- // ensure that the titlebar is never outside the document
- using: function(pos) {
- var topOffset = $(this).css(pos).offset().top;
- if (topOffset < 0) {
- $(this).css('top', pos.top - topOffset);
- }
- }
- });
- if (!isVisible) {
- this.uiDialog.hide();
- }
- },
-
- _setOption: function(key, value){
- var self = this,
- uiDialog = self.uiDialog,
- isResizable = uiDialog.is(':data(resizable)'),
- resize = false;
-
- switch (key) {
- //handling of deprecated beforeclose (vs beforeClose) option
- //Ticket #4669 http://dev.jqueryui.com/ticket/4669
- //TODO: remove in 1.9pre
- case "beforeclose":
- key = "beforeClose";
- break;
- case "buttons":
- self._createButtons(value);
- break;
- case "closeText":
- // convert whatever was passed in to a string, for text() to not throw up
- self.uiDialogTitlebarCloseText.text("" + value);
- break;
- case "dialogClass":
- uiDialog
- .removeClass(self.options.dialogClass)
- .addClass(uiDialogClasses + value);
- break;
- case "disabled":
- if (value) {
- uiDialog.addClass('ui-dialog-disabled');
- } else {
- uiDialog.removeClass('ui-dialog-disabled');
- }
- break;
- case "draggable":
- if (value) {
- self._makeDraggable();
- } else {
- uiDialog.draggable('destroy');
- }
- break;
- case "height":
- resize = true;
- break;
- case "maxHeight":
- if (isResizable) {
- uiDialog.resizable('option', 'maxHeight', value);
- }
- resize = true;
- break;
- case "maxWidth":
- if (isResizable) {
- uiDialog.resizable('option', 'maxWidth', value);
- }
- resize = true;
- break;
- case "minHeight":
- if (isResizable) {
- uiDialog.resizable('option', 'minHeight', value);
- }
- resize = true;
- break;
- case "minWidth":
- if (isResizable) {
- uiDialog.resizable('option', 'minWidth', value);
- }
- resize = true;
- break;
- case "position":
- self._position(value);
- break;
- case "resizable":
- // currently resizable, becoming non-resizable
- if (isResizable && !value) {
- uiDialog.resizable('destroy');
- }
-
- // currently resizable, changing handles
- if (isResizable && typeof value === 'string') {
- uiDialog.resizable('option', 'handles', value);
- }
-
- // currently non-resizable, becoming resizable
- if (!isResizable && value !== false) {
- self._makeResizable(value);
- }
- break;
- case "title":
- // convert whatever was passed in o a string, for html() to not throw up
- $(".ui-dialog-title", self.uiDialogTitlebar).html("" + (value || '&#160;'));
- break;
- case "width":
- resize = true;
- break;
- }
-
- $.Widget.prototype._setOption.apply(self, arguments);
- if (resize) {
- self._size();
- }
- },
-
- _size: function() {
- /* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
- * divs will both have width and height set, so we need to reset them
- */
- var options = this.options,
- nonContentHeight;
-
- // reset content sizing
- // hide for non content measurement because height: 0 doesn't work in IE quirks mode (see #4350)
- this.element.css({
- width: 'auto',
- minHeight: 0,
- height: 0
- });
-
- // reset wrapper sizing
- // determine the height of all the non-content elements
- nonContentHeight = this.uiDialog.css({
- height: 'auto',
- width: options.width
- })
- .height();
-
- this.element
- .css(options.height === 'auto' ? {
- minHeight: Math.max(options.minHeight - nonContentHeight, 0),
- height: 'auto'
- } : {
- minHeight: 0,
- height: Math.max(options.height - nonContentHeight, 0)
- })
- .show();
-
- if (this.uiDialog.is(':data(resizable)')) {
- this.uiDialog.resizable('option', 'minHeight', this._minHeight());
- }
- }
-});
-
-$.extend($.ui.dialog, {
- version: "1.8.2",
-
- uuid: 0,
- maxZ: 0,
-
- getTitleId: function($el) {
- var id = $el.attr('id');
- if (!id) {
- this.uuid += 1;
- id = this.uuid;
- }
- return 'ui-dialog-title-' + id;
- },
-
- overlay: function(dialog) {
- this.$el = $.ui.dialog.overlay.create(dialog);
- }
-});
-
-$.extend($.ui.dialog.overlay, {
- instances: [],
- // reuse old instances due to IE memory leak with alpha transparency (see #5185)
- oldInstances: [],
- maxZ: 0,
- events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),
- function(event) { return event + '.dialog-overlay'; }).join(' '),
- create: function(dialog) {
- if (this.instances.length === 0) {
- // prevent use of anchors and inputs
- // we use a setTimeout in case the overlay is created from an
- // event that we're going to be cancelling (see #2804)
- setTimeout(function() {
- // handle $(el).dialog().dialog('close') (see #4065)
- if ($.ui.dialog.overlay.instances.length) {
- $(document).bind($.ui.dialog.overlay.events, function(event) {
- // stop events if the z-index of the target is < the z-index of the overlay
- return ($(event.target).zIndex() >= $.ui.dialog.overlay.maxZ);
- });
- }
- }, 1);
-
- // allow closing by pressing the escape key
- $(document).bind('keydown.dialog-overlay', function(event) {
- if (dialog.options.closeOnEscape && event.keyCode &&
- event.keyCode === $.ui.keyCode.ESCAPE) {
-
- dialog.close(event);
- event.preventDefault();
- }
- });
-
- // handle window resize
- $(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize);
- }
-
- var $el = (this.oldInstances.pop() || $('<div></div>').addClass('ui-widget-overlay'))
- .appendTo(document.body)
- .css({
- width: this.width(),
- height: this.height()
- });
-
- if ($.fn.bgiframe) {
- $el.bgiframe();
- }
-
- this.instances.push($el);
- return $el;
- },
-
- destroy: function($el) {
- this.oldInstances.push(this.instances.splice($.inArray($el, this.instances), 1)[0]);
-
- if (this.instances.length === 0) {
- $([document, window]).unbind('.dialog-overlay');
- }
-
- $el.remove();
-
- // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
- var maxZ = 0;
- $.each(this.instances, function() {
- maxZ = Math.max(maxZ, this.css('z-index'));
- });
- this.maxZ = maxZ;
- },
-
- height: function() {
- var scrollHeight,
- offsetHeight;
- // handle IE 6
- if ($.browser.msie && $.browser.version < 7) {
- scrollHeight = Math.max(
- document.documentElement.scrollHeight,
- document.body.scrollHeight
- );
- offsetHeight = Math.max(
- document.documentElement.offsetHeight,
- document.body.offsetHeight
- );
-
- if (scrollHeight < offsetHeight) {
- return $(window).height() + 'px';
- } else {
- return scrollHeight + 'px';
- }
- // handle "good" browsers
- } else {
- return $(document).height() + 'px';
- }
- },
-
- width: function() {
- var scrollWidth,
- offsetWidth;
- // handle IE 6
- if ($.browser.msie && $.browser.version < 7) {
- scrollWidth = Math.max(
- document.documentElement.scrollWidth,
- document.body.scrollWidth
- );
- offsetWidth = Math.max(
- document.documentElement.offsetWidth,
- document.body.offsetWidth
- );
-
- if (scrollWidth < offsetWidth) {
- return $(window).width() + 'px';
- } else {
- return scrollWidth + 'px';
- }
- // handle "good" browsers
- } else {
- return $(document).width() + 'px';
- }
- },
-
- resize: function() {
- /* If the dialog is draggable and the user drags it past the
- * right edge of the window, the document becomes wider so we
- * need to stretch the overlay. If the user then drags the
- * dialog back to the left, the document will become narrower,
- * so we need to shrink the overlay to the appropriate size.
- * This is handled by shrinking the overlay before setting it
- * to the full document size.
- */
- var $overlays = $([]);
- $.each($.ui.dialog.overlay.instances, function() {
- $overlays = $overlays.add(this);
- });
-
- $overlays.css({
- width: 0,
- height: 0
- }).css({
- width: $.ui.dialog.overlay.width(),
- height: $.ui.dialog.overlay.height()
- });
- }
-});
-
-$.extend($.ui.dialog.overlay.prototype, {
- destroy: function() {
- $.ui.dialog.overlay.destroy(this.$el);
- }
-});
-
-}(jQuery));
-/*
- * jQuery UI Tabs 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Tabs
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.widget.js
- */
-(function($) {
-
-var tabId = 0,
- listId = 0;
-
-function getNextTabId() {
- return ++tabId;
-}
-
-function getNextListId() {
- return ++listId;
-}
-
-$.widget("ui.tabs", {
- options: {
- add: null,
- ajaxOptions: null,
- cache: false,
- cookie: null, // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true }
- collapsible: false,
- disable: null,
- disabled: [],
- enable: null,
- event: 'click',
- fx: null, // e.g. { height: 'toggle', opacity: 'toggle', duration: 200 }
- idPrefix: 'ui-tabs-',
- load: null,
- panelTemplate: '<div></div>',
- remove: null,
- select: null,
- show: null,
- spinner: '<em>Loading&#8230;</em>',
- tabTemplate: '<li><a href="#{href}"><span>#{label}</span></a></li>'
- },
- _create: function() {
- this._tabify(true);
- },
-
- _setOption: function(key, value) {
- if (key == 'selected') {
- if (this.options.collapsible && value == this.options.selected) {
- return;
- }
- this.select(value);
- }
- else {
- this.options[key] = value;
- this._tabify();
- }
- },
-
- _tabId: function(a) {
- return a.title && a.title.replace(/\s/g, '_').replace(/[^A-Za-z0-9\-_:\.]/g, '') ||
- this.options.idPrefix + getNextTabId();
- },
-
- _sanitizeSelector: function(hash) {
- return hash.replace(/:/g, '\\:'); // we need this because an id may contain a ":"
- },
-
- _cookie: function() {
- var cookie = this.cookie || (this.cookie = this.options.cookie.name || 'ui-tabs-' + getNextListId());
- return $.cookie.apply(null, [cookie].concat($.makeArray(arguments)));
- },
-
- _ui: function(tab, panel) {
- return {
- tab: tab,
- panel: panel,
- index: this.anchors.index(tab)
- };
- },
-
- _cleanup: function() {
- // restore all former loading tabs labels
- this.lis.filter('.ui-state-processing').removeClass('ui-state-processing')
- .find('span:data(label.tabs)')
- .each(function() {
- var el = $(this);
- el.html(el.data('label.tabs')).removeData('label.tabs');
- });
- },
-
- _tabify: function(init) {
-
- this.list = this.element.find('ol,ul').eq(0);
- this.lis = $('li:has(a[href])', this.list);
- this.anchors = this.lis.map(function() { return $('a', this)[0]; });
- this.panels = $([]);
-
- var self = this, o = this.options;
-
- var fragmentId = /^#.+/; // Safari 2 reports '#' for an empty hash
- this.anchors.each(function(i, a) {
- var href = $(a).attr('href');
-
- // For dynamically created HTML that contains a hash as href IE < 8 expands
- // such href to the full page url with hash and then misinterprets tab as ajax.
- // Same consideration applies for an added tab with a fragment identifier
- // since a[href=#fragment-identifier] does unexpectedly not match.
- // Thus normalize href attribute...
- var hrefBase = href.split('#')[0], baseEl;
- if (hrefBase && (hrefBase === location.toString().split('#')[0] ||
- (baseEl = $('base')[0]) && hrefBase === baseEl.href)) {
- href = a.hash;
- a.href = href;
- }
-
- // inline tab
- if (fragmentId.test(href)) {
- self.panels = self.panels.add(self._sanitizeSelector(href));
- }
-
- // remote tab
- else if (href != '#') { // prevent loading the page itself if href is just "#"
- $.data(a, 'href.tabs', href); // required for restore on destroy
-
- // TODO until #3808 is fixed strip fragment identifier from url
- // (IE fails to load from such url)
- $.data(a, 'load.tabs', href.replace(/#.*$/, '')); // mutable data
-
- var id = self._tabId(a);
- a.href = '#' + id;
- var $panel = $('#' + id);
- if (!$panel.length) {
- $panel = $(o.panelTemplate).attr('id', id).addClass('ui-tabs-panel ui-widget-content ui-corner-bottom')
- .insertAfter(self.panels[i - 1] || self.list);
- $panel.data('destroy.tabs', true);
- }
- self.panels = self.panels.add($panel);
- }
-
- // invalid tab href
- else {
- o.disabled.push(i);
- }
- });
-
- // initialization from scratch
- if (init) {
-
- // attach necessary classes for styling
- this.element.addClass('ui-tabs ui-widget ui-widget-content ui-corner-all');
- this.list.addClass('ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all');
- this.lis.addClass('ui-state-default ui-corner-top');
- this.panels.addClass('ui-tabs-panel ui-widget-content ui-corner-bottom');
-
- // Selected tab
- // use "selected" option or try to retrieve:
- // 1. from fragment identifier in url
- // 2. from cookie
- // 3. from selected class attribute on <li>
- if (o.selected === undefined) {
- if (location.hash) {
- this.anchors.each(function(i, a) {
- if (a.hash == location.hash) {
- o.selected = i;
- return false; // break
- }
- });
- }
- if (typeof o.selected != 'number' && o.cookie) {
- o.selected = parseInt(self._cookie(), 10);
- }
- if (typeof o.selected != 'number' && this.lis.filter('.ui-tabs-selected').length) {
- o.selected = this.lis.index(this.lis.filter('.ui-tabs-selected'));
- }
- o.selected = o.selected || (this.lis.length ? 0 : -1);
- }
- else if (o.selected === null) { // usage of null is deprecated, TODO remove in next release
- o.selected = -1;
- }
-
- // sanity check - default to first tab...
- o.selected = ((o.selected >= 0 && this.anchors[o.selected]) || o.selected < 0) ? o.selected : 0;
-
- // Take disabling tabs via class attribute from HTML
- // into account and update option properly.
- // A selected tab cannot become disabled.
- o.disabled = $.unique(o.disabled.concat(
- $.map(this.lis.filter('.ui-state-disabled'),
- function(n, i) { return self.lis.index(n); } )
- )).sort();
-
- if ($.inArray(o.selected, o.disabled) != -1) {
- o.disabled.splice($.inArray(o.selected, o.disabled), 1);
- }
-
- // highlight selected tab
- this.panels.addClass('ui-tabs-hide');
- this.lis.removeClass('ui-tabs-selected ui-state-active');
- if (o.selected >= 0 && this.anchors.length) { // check for length avoids error when initializing empty list
- this.panels.eq(o.selected).removeClass('ui-tabs-hide');
- this.lis.eq(o.selected).addClass('ui-tabs-selected ui-state-active');
-
- // seems to be expected behavior that the show callback is fired
- self.element.queue("tabs", function() {
- self._trigger('show', null, self._ui(self.anchors[o.selected], self.panels[o.selected]));
- });
-
- this.load(o.selected);
- }
-
- // clean up to avoid memory leaks in certain versions of IE 6
- $(window).bind('unload', function() {
- self.lis.add(self.anchors).unbind('.tabs');
- self.lis = self.anchors = self.panels = null;
- });
-
- }
- // update selected after add/remove
- else {
- o.selected = this.lis.index(this.lis.filter('.ui-tabs-selected'));
- }
-
- // update collapsible
- this.element[o.collapsible ? 'addClass' : 'removeClass']('ui-tabs-collapsible');
-
- // set or update cookie after init and add/remove respectively
- if (o.cookie) {
- this._cookie(o.selected, o.cookie);
- }
-
- // disable tabs
- for (var i = 0, li; (li = this.lis[i]); i++) {
- $(li)[$.inArray(i, o.disabled) != -1 &&
- !$(li).hasClass('ui-tabs-selected') ? 'addClass' : 'removeClass']('ui-state-disabled');
- }
-
- // reset cache if switching from cached to not cached
- if (o.cache === false) {
- this.anchors.removeData('cache.tabs');
- }
-
- // remove all handlers before, tabify may run on existing tabs after add or option change
- this.lis.add(this.anchors).unbind('.tabs');
-
- if (o.event != 'mouseover') {
- var addState = function(state, el) {
- if (el.is(':not(.ui-state-disabled)')) {
- el.addClass('ui-state-' + state);
- }
- };
- var removeState = function(state, el) {
- el.removeClass('ui-state-' + state);
- };
- this.lis.bind('mouseover.tabs', function() {
- addState('hover', $(this));
- });
- this.lis.bind('mouseout.tabs', function() {
- removeState('hover', $(this));
- });
- this.anchors.bind('focus.tabs', function() {
- addState('focus', $(this).closest('li'));
- });
- this.anchors.bind('blur.tabs', function() {
- removeState('focus', $(this).closest('li'));
- });
- }
-
- // set up animations
- var hideFx, showFx;
- if (o.fx) {
- if ($.isArray(o.fx)) {
- hideFx = o.fx[0];
- showFx = o.fx[1];
- }
- else {
- hideFx = showFx = o.fx;
- }
- }
-
- // Reset certain styles left over from animation
- // and prevent IE's ClearType bug...
- function resetStyle($el, fx) {
- $el.css({ display: '' });
- if (!$.support.opacity && fx.opacity) {
- $el[0].style.removeAttribute('filter');
- }
- }
-
- // Show a tab...
- var showTab = showFx ?
- function(clicked, $show) {
- $(clicked).closest('li').addClass('ui-tabs-selected ui-state-active');
- $show.hide().removeClass('ui-tabs-hide') // avoid flicker that way
- .animate(showFx, showFx.duration || 'normal', function() {
- resetStyle($show, showFx);
- self._trigger('show', null, self._ui(clicked, $show[0]));
- });
- } :
- function(clicked, $show) {
- $(clicked).closest('li').addClass('ui-tabs-selected ui-state-active');
- $show.removeClass('ui-tabs-hide');
- self._trigger('show', null, self._ui(clicked, $show[0]));
- };
-
- // Hide a tab, $show is optional...
- var hideTab = hideFx ?
- function(clicked, $hide) {
- $hide.animate(hideFx, hideFx.duration || 'normal', function() {
- self.lis.removeClass('ui-tabs-selected ui-state-active');
- $hide.addClass('ui-tabs-hide');
- resetStyle($hide, hideFx);
- self.element.dequeue("tabs");
- });
- } :
- function(clicked, $hide, $show) {
- self.lis.removeClass('ui-tabs-selected ui-state-active');
- $hide.addClass('ui-tabs-hide');
- self.element.dequeue("tabs");
- };
-
- // attach tab event handler, unbind to avoid duplicates from former tabifying...
- this.anchors.bind(o.event + '.tabs', function() {
- var el = this, $li = $(this).closest('li'), $hide = self.panels.filter(':not(.ui-tabs-hide)'),
- $show = $(self._sanitizeSelector(this.hash));
-
- // If tab is already selected and not collapsible or tab disabled or
- // or is already loading or click callback returns false stop here.
- // Check if click handler returns false last so that it is not executed
- // for a disabled or loading tab!
- if (($li.hasClass('ui-tabs-selected') && !o.collapsible) ||
- $li.hasClass('ui-state-disabled') ||
- $li.hasClass('ui-state-processing') ||
- self._trigger('select', null, self._ui(this, $show[0])) === false) {
- this.blur();
- return false;
- }
-
- o.selected = self.anchors.index(this);
-
- self.abort();
-
- // if tab may be closed
- if (o.collapsible) {
- if ($li.hasClass('ui-tabs-selected')) {
- o.selected = -1;
-
- if (o.cookie) {
- self._cookie(o.selected, o.cookie);
- }
-
- self.element.queue("tabs", function() {
- hideTab(el, $hide);
- }).dequeue("tabs");
-
- this.blur();
- return false;
- }
- else if (!$hide.length) {
- if (o.cookie) {
- self._cookie(o.selected, o.cookie);
- }
-
- self.element.queue("tabs", function() {
- showTab(el, $show);
- });
-
- self.load(self.anchors.index(this)); // TODO make passing in node possible, see also http://dev.jqueryui.com/ticket/3171
-
- this.blur();
- return false;
- }
- }
-
- if (o.cookie) {
- self._cookie(o.selected, o.cookie);
- }
-
- // show new tab
- if ($show.length) {
- if ($hide.length) {
- self.element.queue("tabs", function() {
- hideTab(el, $hide);
- });
- }
- self.element.queue("tabs", function() {
- showTab(el, $show);
- });
-
- self.load(self.anchors.index(this));
- }
- else {
- throw 'jQuery UI Tabs: Mismatching fragment identifier.';
- }
-
- // Prevent IE from keeping other link focussed when using the back button
- // and remove dotted border from clicked link. This is controlled via CSS
- // in modern browsers; blur() removes focus from address bar in Firefox
- // which can become a usability and annoying problem with tabs('rotate').
- if ($.browser.msie) {
- this.blur();
- }
-
- });
-
- // disable click in any case
- this.anchors.bind('click.tabs', function(){return false;});
-
- },
-
- destroy: function() {
- var o = this.options;
-
- this.abort();
-
- this.element.unbind('.tabs')
- .removeClass('ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible')
- .removeData('tabs');
-
- this.list.removeClass('ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all');
-
- this.anchors.each(function() {
- var href = $.data(this, 'href.tabs');
- if (href) {
- this.href = href;
- }
- var $this = $(this).unbind('.tabs');
- $.each(['href', 'load', 'cache'], function(i, prefix) {
- $this.removeData(prefix + '.tabs');
- });
- });
-
- this.lis.unbind('.tabs').add(this.panels).each(function() {
- if ($.data(this, 'destroy.tabs')) {
- $(this).remove();
- }
- else {
- $(this).removeClass([
- 'ui-state-default',
- 'ui-corner-top',
- 'ui-tabs-selected',
- 'ui-state-active',
- 'ui-state-hover',
- 'ui-state-focus',
- 'ui-state-disabled',
- 'ui-tabs-panel',
- 'ui-widget-content',
- 'ui-corner-bottom',
- 'ui-tabs-hide'
- ].join(' '));
- }
- });
-
- if (o.cookie) {
- this._cookie(null, o.cookie);
- }
-
- return this;
- },
-
- add: function(url, label, index) {
- if (index === undefined) {
- index = this.anchors.length; // append by default
- }
-
- var self = this, o = this.options,
- $li = $(o.tabTemplate.replace(/#\{href\}/g, url).replace(/#\{label\}/g, label)),
- id = !url.indexOf('#') ? url.replace('#', '') : this._tabId($('a', $li)[0]);
-
- $li.addClass('ui-state-default ui-corner-top').data('destroy.tabs', true);
-
- // try to find an existing element before creating a new one
- var $panel = $('#' + id);
- if (!$panel.length) {
- $panel = $(o.panelTemplate).attr('id', id).data('destroy.tabs', true);
- }
- $panel.addClass('ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide');
-
- if (index >= this.lis.length) {
- $li.appendTo(this.list);
- $panel.appendTo(this.list[0].parentNode);
- }
- else {
- $li.insertBefore(this.lis[index]);
- $panel.insertBefore(this.panels[index]);
- }
-
- o.disabled = $.map(o.disabled,
- function(n, i) { return n >= index ? ++n : n; });
-
- this._tabify();
-
- if (this.anchors.length == 1) { // after tabify
- o.selected = 0;
- $li.addClass('ui-tabs-selected ui-state-active');
- $panel.removeClass('ui-tabs-hide');
- this.element.queue("tabs", function() {
- self._trigger('show', null, self._ui(self.anchors[0], self.panels[0]));
- });
-
- this.load(0);
- }
-
- // callback
- this._trigger('add', null, this._ui(this.anchors[index], this.panels[index]));
- return this;
- },
-
- remove: function(index) {
- var o = this.options, $li = this.lis.eq(index).remove(),
- $panel = this.panels.eq(index).remove();
-
- // If selected tab was removed focus tab to the right or
- // in case the last tab was removed the tab to the left.
- if ($li.hasClass('ui-tabs-selected') && this.anchors.length > 1) {
- this.select(index + (index + 1 < this.anchors.length ? 1 : -1));
- }
-
- o.disabled = $.map($.grep(o.disabled, function(n, i) { return n != index; }),
- function(n, i) { return n >= index ? --n : n; });
-
- this._tabify();
-
- // callback
- this._trigger('remove', null, this._ui($li.find('a')[0], $panel[0]));
- return this;
- },
-
- enable: function(index) {
- var o = this.options;
- if ($.inArray(index, o.disabled) == -1) {
- return;
- }
-
- this.lis.eq(index).removeClass('ui-state-disabled');
- o.disabled = $.grep(o.disabled, function(n, i) { return n != index; });
-
- // callback
- this._trigger('enable', null, this._ui(this.anchors[index], this.panels[index]));
- return this;
- },
-
- disable: function(index) {
- var self = this, o = this.options;
- if (index != o.selected) { // cannot disable already selected tab
- this.lis.eq(index).addClass('ui-state-disabled');
-
- o.disabled.push(index);
- o.disabled.sort();
-
- // callback
- this._trigger('disable', null, this._ui(this.anchors[index], this.panels[index]));
- }
-
- return this;
- },
-
- select: function(index) {
- if (typeof index == 'string') {
- index = this.anchors.index(this.anchors.filter('[href$=' + index + ']'));
- }
- else if (index === null) { // usage of null is deprecated, TODO remove in next release
- index = -1;
- }
- if (index == -1 && this.options.collapsible) {
- index = this.options.selected;
- }
-
- this.anchors.eq(index).trigger(this.options.event + '.tabs');
- return this;
- },
-
- load: function(index) {
- var self = this, o = this.options, a = this.anchors.eq(index)[0], url = $.data(a, 'load.tabs');
-
- this.abort();
-
- // not remote or from cache
- if (!url || this.element.queue("tabs").length !== 0 && $.data(a, 'cache.tabs')) {
- this.element.dequeue("tabs");
- return;
- }
-
- // load remote from here on
- this.lis.eq(index).addClass('ui-state-processing');
-
- if (o.spinner) {
- var span = $('span', a);
- span.data('label.tabs', span.html()).html(o.spinner);
- }
-
- this.xhr = $.ajax($.extend({}, o.ajaxOptions, {
- url: url,
- success: function(r, s) {
- $(self._sanitizeSelector(a.hash)).html(r);
-
- // take care of tab labels
- self._cleanup();
-
- if (o.cache) {
- $.data(a, 'cache.tabs', true); // if loaded once do not load them again
- }
-
- // callbacks
- self._trigger('load', null, self._ui(self.anchors[index], self.panels[index]));
- try {
- o.ajaxOptions.success(r, s);
- }
- catch (e) {}
- },
- error: function(xhr, s, e) {
- // take care of tab labels
- self._cleanup();
-
- // callbacks
- self._trigger('load', null, self._ui(self.anchors[index], self.panels[index]));
- try {
- // Passing index avoid a race condition when this method is
- // called after the user has selected another tab.
- // Pass the anchor that initiated this request allows
- // loadError to manipulate the tab content panel via $(a.hash)
- o.ajaxOptions.error(xhr, s, index, a);
- }
- catch (e) {}
- }
- }));
-
- // last, so that load event is fired before show...
- self.element.dequeue("tabs");
-
- return this;
- },
-
- abort: function() {
- // stop possibly running animations
- this.element.queue([]);
- this.panels.stop(false, true);
-
- // "tabs" queue must not contain more than two elements,
- // which are the callbacks for the latest clicked tab...
- this.element.queue("tabs", this.element.queue("tabs").splice(-2, 2));
-
- // terminate pending requests from other tabs
- if (this.xhr) {
- this.xhr.abort();
- delete this.xhr;
- }
-
- // take care of tab labels
- this._cleanup();
- return this;
- },
-
- url: function(index, url) {
- this.anchors.eq(index).removeData('cache.tabs').data('load.tabs', url);
- return this;
- },
-
- length: function() {
- return this.anchors.length;
- }
-
-});
-
-$.extend($.ui.tabs, {
- version: '1.8.2'
-});
-
-/*
- * Tabs Extensions
- */
-
-/*
- * Rotate
- */
-$.extend($.ui.tabs.prototype, {
- rotation: null,
- rotate: function(ms, continuing) {
-
- var self = this, o = this.options;
-
- var rotate = self._rotate || (self._rotate = function(e) {
- clearTimeout(self.rotation);
- self.rotation = setTimeout(function() {
- var t = o.selected;
- self.select( ++t < self.anchors.length ? t : 0 );
- }, ms);
-
- if (e) {
- e.stopPropagation();
- }
- });
-
- var stop = self._unrotate || (self._unrotate = !continuing ?
- function(e) {
- if (e.clientX) { // in case of a true click
- self.rotate(null);
- }
- } :
- function(e) {
- t = o.selected;
- rotate();
- });
-
- // start rotation
- if (ms) {
- this.element.bind('tabsshow', rotate);
- this.anchors.bind(o.event + '.tabs', stop);
- rotate();
- }
- // stop rotation
- else {
- clearTimeout(self.rotation);
- this.element.unbind('tabsshow', rotate);
- this.anchors.unbind(o.event + '.tabs', stop);
- delete this._rotate;
- delete this._unrotate;
- }
-
- return this;
- }
-});
-
-})(jQuery);
-/*
- * jQuery UI Effects 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/
- */
-;jQuery.effects || (function($) {
-
-$.effects = {};
-
-
-
-/******************************************************************************/
-/****************************** COLOR ANIMATIONS ******************************/
-/******************************************************************************/
-
-// override the animation for color styles
-$.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor',
- 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'],
-function(i, attr) {
- $.fx.step[attr] = function(fx) {
- if (!fx.colorInit) {
- fx.start = getColor(fx.elem, attr);
- fx.end = getRGB(fx.end);
- fx.colorInit = true;
- }
-
- fx.elem.style[attr] = 'rgb(' +
- Math.max(Math.min(parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0], 10), 255), 0) + ',' +
- Math.max(Math.min(parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1], 10), 255), 0) + ',' +
- Math.max(Math.min(parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2], 10), 255), 0) + ')';
- };
-});
-
-// Color Conversion functions from highlightFade
-// By Blair Mitchelmore
-// http://jquery.offput.ca/highlightFade/
-
-// Parse strings looking for color tuples [255,255,255]
-function getRGB(color) {
- var result;
-
- // Check if we're already dealing with an array of colors
- if ( color && color.constructor == Array && color.length == 3 )
- return color;
-
- // Look for rgb(num,num,num)
- if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
- return [parseInt(result[1],10), parseInt(result[2],10), parseInt(result[3],10)];
-
- // Look for rgb(num%,num%,num%)
- if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
- return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];
-
- // Look for #a0b1c2
- if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
- return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];
-
- // Look for #fff
- if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
- return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];
-
- // Look for rgba(0, 0, 0, 0) == transparent in Safari 3
- if (result = /rgba\(0, 0, 0, 0\)/.exec(color))
- return colors['transparent'];
-
- // Otherwise, we're most likely dealing with a named color
- return colors[$.trim(color).toLowerCase()];
-}
-
-function getColor(elem, attr) {
- var color;
-
- do {
- color = $.curCSS(elem, attr);
-
- // Keep going until we find an element that has color, or we hit the body
- if ( color != '' && color != 'transparent' || $.nodeName(elem, "body") )
- break;
-
- attr = "backgroundColor";
- } while ( elem = elem.parentNode );
-
- return getRGB(color);
-};
-
-// Some named colors to work with
-// From Interface by Stefan Petre
-// http://interface.eyecon.ro/
-
-var colors = {
- aqua:[0,255,255],
- azure:[240,255,255],
- beige:[245,245,220],
- black:[0,0,0],
- blue:[0,0,255],
- brown:[165,42,42],
- cyan:[0,255,255],
- darkblue:[0,0,139],
- darkcyan:[0,139,139],
- darkgrey:[169,169,169],
- darkgreen:[0,100,0],
- darkkhaki:[189,183,107],
- darkmagenta:[139,0,139],
- darkolivegreen:[85,107,47],
- darkorange:[255,140,0],
- darkorchid:[153,50,204],
- darkred:[139,0,0],
- darksalmon:[233,150,122],
- darkviolet:[148,0,211],
- fuchsia:[255,0,255],
- gold:[255,215,0],
- green:[0,128,0],
- indigo:[75,0,130],
- khaki:[240,230,140],
- lightblue:[173,216,230],
- lightcyan:[224,255,255],
- lightgreen:[144,238,144],
- lightgrey:[211,211,211],
- lightpink:[255,182,193],
- lightyellow:[255,255,224],
- lime:[0,255,0],
- magenta:[255,0,255],
- maroon:[128,0,0],
- navy:[0,0,128],
- olive:[128,128,0],
- orange:[255,165,0],
- pink:[255,192,203],
- purple:[128,0,128],
- violet:[128,0,128],
- red:[255,0,0],
- silver:[192,192,192],
- white:[255,255,255],
- yellow:[255,255,0],
- transparent: [255,255,255]
-};
-
-
-
-/******************************************************************************/
-/****************************** CLASS ANIMATIONS ******************************/
-/******************************************************************************/
-
-var classAnimationActions = ['add', 'remove', 'toggle'],
- shorthandStyles = {
- border: 1,
- borderBottom: 1,
- borderColor: 1,
- borderLeft: 1,
- borderRight: 1,
- borderTop: 1,
- borderWidth: 1,
- margin: 1,
- padding: 1
- };
-
-function getElementStyles() {
- var style = document.defaultView
- ? document.defaultView.getComputedStyle(this, null)
- : this.currentStyle,
- newStyle = {},
- key,
- camelCase;
-
- // webkit enumerates style porperties
- if (style && style.length && style[0] && style[style[0]]) {
- var len = style.length;
- while (len--) {
- key = style[len];
- if (typeof style[key] == 'string') {
- camelCase = key.replace(/\-(\w)/g, function(all, letter){
- return letter.toUpperCase();
- });
- newStyle[camelCase] = style[key];
- }
- }
- } else {
- for (key in style) {
- if (typeof style[key] === 'string') {
- newStyle[key] = style[key];
- }
- }
- }
-
- return newStyle;
-}
-
-function filterStyles(styles) {
- var name, value;
- for (name in styles) {
- value = styles[name];
- if (
- // ignore null and undefined values
- value == null ||
- // ignore functions (when does this occur?)
- $.isFunction(value) ||
- // shorthand styles that need to be expanded
- name in shorthandStyles ||
- // ignore scrollbars (break in IE)
- (/scrollbar/).test(name) ||
-
- // only colors or values that can be converted to numbers
- (!(/color/i).test(name) && isNaN(parseFloat(value)))
- ) {
- delete styles[name];
- }
- }
-
- return styles;
-}
-
-function styleDifference(oldStyle, newStyle) {
- var diff = { _: 0 }, // http://dev.jquery.com/ticket/5459
- name;
-
- for (name in newStyle) {
- if (oldStyle[name] != newStyle[name]) {
- diff[name] = newStyle[name];
- }
- }
-
- return diff;
-}
-
-$.effects.animateClass = function(value, duration, easing, callback) {
- if ($.isFunction(easing)) {
- callback = easing;
- easing = null;
- }
-
- return this.each(function() {
-
- var that = $(this),
- originalStyleAttr = that.attr('style') || ' ',
- originalStyle = filterStyles(getElementStyles.call(this)),
- newStyle,
- className = that.attr('className');
-
- $.each(classAnimationActions, function(i, action) {
- if (value[action]) {
- that[action + 'Class'](value[action]);
- }
- });
- newStyle = filterStyles(getElementStyles.call(this));
- that.attr('className', className);
-
- that.animate(styleDifference(originalStyle, newStyle), duration, easing, function() {
- $.each(classAnimationActions, function(i, action) {
- if (value[action]) { that[action + 'Class'](value[action]); }
- });
- // work around bug in IE by clearing the cssText before setting it
- if (typeof that.attr('style') == 'object') {
- that.attr('style').cssText = '';
- that.attr('style').cssText = originalStyleAttr;
- } else {
- that.attr('style', originalStyleAttr);
- }
- if (callback) { callback.apply(this, arguments); }
- });
- });
-};
-
-$.fn.extend({
- _addClass: $.fn.addClass,
- addClass: function(classNames, speed, easing, callback) {
- return speed ? $.effects.animateClass.apply(this, [{ add: classNames },speed,easing,callback]) : this._addClass(classNames);
- },
-
- _removeClass: $.fn.removeClass,
- removeClass: function(classNames,speed,easing,callback) {
- return speed ? $.effects.animateClass.apply(this, [{ remove: classNames },speed,easing,callback]) : this._removeClass(classNames);
- },
-
- _toggleClass: $.fn.toggleClass,
- toggleClass: function(classNames, force, speed, easing, callback) {
- if ( typeof force == "boolean" || force === undefined ) {
- if ( !speed ) {
- // without speed parameter;
- return this._toggleClass(classNames, force);
- } else {
- return $.effects.animateClass.apply(this, [(force?{add:classNames}:{remove:classNames}),speed,easing,callback]);
- }
- } else {
- // without switch parameter;
- return $.effects.animateClass.apply(this, [{ toggle: classNames },force,speed,easing]);
- }
- },
-
- switchClass: function(remove,add,speed,easing,callback) {
- return $.effects.animateClass.apply(this, [{ add: add, remove: remove },speed,easing,callback]);
- }
-});
-
-
-
-/******************************************************************************/
-/*********************************** EFFECTS **********************************/
-/******************************************************************************/
-
-$.extend($.effects, {
- version: "1.8.2",
-
- // Saves a set of properties in a data storage
- save: function(element, set) {
- for(var i=0; i < set.length; i++) {
- if(set[i] !== null) element.data("ec.storage."+set[i], element[0].style[set[i]]);
- }
- },
-
- // Restores a set of previously saved properties from a data storage
- restore: function(element, set) {
- for(var i=0; i < set.length; i++) {
- if(set[i] !== null) element.css(set[i], element.data("ec.storage."+set[i]));
- }
- },
-
- setMode: function(el, mode) {
- if (mode == 'toggle') mode = el.is(':hidden') ? 'show' : 'hide'; // Set for toggle
- return mode;
- },
-
- getBaseline: function(origin, original) { // Translates a [top,left] array into a baseline value
- // this should be a little more flexible in the future to handle a string & hash
- var y, x;
- switch (origin[0]) {
- case 'top': y = 0; break;
- case 'middle': y = 0.5; break;
- case 'bottom': y = 1; break;
- default: y = origin[0] / original.height;
- };
- switch (origin[1]) {
- case 'left': x = 0; break;
- case 'center': x = 0.5; break;
- case 'right': x = 1; break;
- default: x = origin[1] / original.width;
- };
- return {x: x, y: y};
- },
-
- // Wraps the element around a wrapper that copies position properties
- createWrapper: function(element) {
-
- // if the element is already wrapped, return it
- if (element.parent().is('.ui-effects-wrapper')) {
- return element.parent();
- }
-
- // wrap the element
- var props = {
- width: element.outerWidth(true),
- height: element.outerHeight(true),
- 'float': element.css('float')
- },
- wrapper = $('<div></div>')
- .addClass('ui-effects-wrapper')
- .css({
- fontSize: '100%',
- background: 'transparent',
- border: 'none',
- margin: 0,
- padding: 0
- });
-
- element.wrap(wrapper);
- wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually loose the reference to the wrapped element
-
- // transfer positioning properties to the wrapper
- if (element.css('position') == 'static') {
- wrapper.css({ position: 'relative' });
- element.css({ position: 'relative' });
- } else {
- $.extend(props, {
- position: element.css('position'),
- zIndex: element.css('z-index')
- });
- $.each(['top', 'left', 'bottom', 'right'], function(i, pos) {
- props[pos] = element.css(pos);
- if (isNaN(parseInt(props[pos], 10))) {
- props[pos] = 'auto';
- }
- });
- element.css({position: 'relative', top: 0, left: 0 });
- }
-
- return wrapper.css(props).show();
- },
-
- removeWrapper: function(element) {
- if (element.parent().is('.ui-effects-wrapper'))
- return element.parent().replaceWith(element);
- return element;
- },
-
- setTransition: function(element, list, factor, value) {
- value = value || {};
- $.each(list, function(i, x){
- unit = element.cssUnit(x);
- if (unit[0] > 0) value[x] = unit[0] * factor + unit[1];
- });
- return value;
- }
-});
-
-
-function _normalizeArguments(effect, options, speed, callback) {
- // shift params for method overloading
- if (typeof effect == 'object') {
- callback = options;
- speed = null;
- options = effect;
- effect = options.effect;
- }
- if ($.isFunction(options)) {
- callback = options;
- speed = null;
- options = {};
- }
- if ($.isFunction(speed)) {
- callback = speed;
- speed = null;
- }
- if (typeof options == 'number' || $.fx.speeds[options]) {
- callback = speed;
- speed = options;
- options = {};
- }
-
- options = options || {};
-
- speed = speed || options.duration;
- speed = $.fx.off ? 0 : typeof speed == 'number'
- ? speed : $.fx.speeds[speed] || $.fx.speeds._default;
-
- callback = callback || options.complete;
-
- return [effect, options, speed, callback];
-}
-
-$.fn.extend({
- effect: function(effect, options, speed, callback) {
- var args = _normalizeArguments.apply(this, arguments),
- // TODO: make effects takes actual parameters instead of a hash
- args2 = {
- options: args[1],
- duration: args[2],
- callback: args[3]
- },
- effectMethod = $.effects[effect];
-
- return effectMethod && !$.fx.off ? effectMethod.call(this, args2) : this;
- },
-
- _show: $.fn.show,
- show: function(speed) {
- if (!speed || typeof speed == 'number' || $.fx.speeds[speed]) {
- return this._show.apply(this, arguments);
- } else {
- var args = _normalizeArguments.apply(this, arguments);
- args[1].mode = 'show';
- return this.effect.apply(this, args);
- }
- },
-
- _hide: $.fn.hide,
- hide: function(speed) {
- if (!speed || typeof speed == 'number' || $.fx.speeds[speed]) {
- return this._hide.apply(this, arguments);
- } else {
- var args = _normalizeArguments.apply(this, arguments);
- args[1].mode = 'hide';
- return this.effect.apply(this, args);
- }
- },
-
- // jQuery core overloads toggle and create _toggle
- __toggle: $.fn.toggle,
- toggle: function(speed) {
- if (!speed || typeof speed == 'number' || $.fx.speeds[speed] ||
- typeof speed == 'boolean' || $.isFunction(speed)) {
- return this.__toggle.apply(this, arguments);
- } else {
- var args = _normalizeArguments.apply(this, arguments);
- args[1].mode = 'toggle';
- return this.effect.apply(this, args);
- }
- },
-
- // helper functions
- cssUnit: function(key) {
- var style = this.css(key), val = [];
- $.each( ['em','px','%','pt'], function(i, unit){
- if(style.indexOf(unit) > 0)
- val = [parseFloat(style), unit];
- });
- return val;
- }
-});
-
-
-
-/******************************************************************************/
-/*********************************** EASING ***********************************/
-/******************************************************************************/
-
-/*
- * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
- *
- * Uses the built in easing capabilities added In jQuery 1.1
- * to offer multiple easing options
- *
- * TERMS OF USE - jQuery Easing
- *
- * Open source under the BSD License.
- *
- * Copyright 2008 George McGinley Smith
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * Neither the name of the author nor the names of contributors may be used to endorse
- * or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- *
-*/
-
-// t: current time, b: begInnIng value, c: change In value, d: duration
-$.easing.jswing = $.easing.swing;
-
-$.extend($.easing,
-{
- def: 'easeOutQuad',
- swing: function (x, t, b, c, d) {
- //alert($.easing.default);
- return $.easing[$.easing.def](x, t, b, c, d);
- },
- easeInQuad: function (x, t, b, c, d) {
- return c*(t/=d)*t + b;
- },
- easeOutQuad: function (x, t, b, c, d) {
- return -c *(t/=d)*(t-2) + b;
- },
- easeInOutQuad: function (x, t, b, c, d) {
- if ((t/=d/2) < 1) return c/2*t*t + b;
- return -c/2 * ((--t)*(t-2) - 1) + b;
- },
- easeInCubic: function (x, t, b, c, d) {
- return c*(t/=d)*t*t + b;
- },
- easeOutCubic: function (x, t, b, c, d) {
- return c*((t=t/d-1)*t*t + 1) + b;
- },
- easeInOutCubic: function (x, t, b, c, d) {
- if ((t/=d/2) < 1) return c/2*t*t*t + b;
- return c/2*((t-=2)*t*t + 2) + b;
- },
- easeInQuart: function (x, t, b, c, d) {
- return c*(t/=d)*t*t*t + b;
- },
- easeOutQuart: function (x, t, b, c, d) {
- return -c * ((t=t/d-1)*t*t*t - 1) + b;
- },
- easeInOutQuart: function (x, t, b, c, d) {
- if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
- return -c/2 * ((t-=2)*t*t*t - 2) + b;
- },
- easeInQuint: function (x, t, b, c, d) {
- return c*(t/=d)*t*t*t*t + b;
- },
- easeOutQuint: function (x, t, b, c, d) {
- return c*((t=t/d-1)*t*t*t*t + 1) + b;
- },
- easeInOutQuint: function (x, t, b, c, d) {
- if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
- return c/2*((t-=2)*t*t*t*t + 2) + b;
- },
- easeInSine: function (x, t, b, c, d) {
- return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
- },
- easeOutSine: function (x, t, b, c, d) {
- return c * Math.sin(t/d * (Math.PI/2)) + b;
- },
- easeInOutSine: function (x, t, b, c, d) {
- return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
- },
- easeInExpo: function (x, t, b, c, d) {
- return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
- },
- easeOutExpo: function (x, t, b, c, d) {
- return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
- },
- easeInOutExpo: function (x, t, b, c, d) {
- if (t==0) return b;
- if (t==d) return b+c;
- if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
- return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
- },
- easeInCirc: function (x, t, b, c, d) {
- return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
- },
- easeOutCirc: function (x, t, b, c, d) {
- return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
- },
- easeInOutCirc: function (x, t, b, c, d) {
- if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
- return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
- },
- easeInElastic: function (x, t, b, c, d) {
- var s=1.70158;var p=0;var a=c;
- if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
- if (a < Math.abs(c)) { a=c; var s=p/4; }
- else var s = p/(2*Math.PI) * Math.asin (c/a);
- return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
- },
- easeOutElastic: function (x, t, b, c, d) {
- var s=1.70158;var p=0;var a=c;
- if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
- if (a < Math.abs(c)) { a=c; var s=p/4; }
- else var s = p/(2*Math.PI) * Math.asin (c/a);
- return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
- },
- easeInOutElastic: function (x, t, b, c, d) {
- var s=1.70158;var p=0;var a=c;
- if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
- if (a < Math.abs(c)) { a=c; var s=p/4; }
- else var s = p/(2*Math.PI) * Math.asin (c/a);
- if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
- return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
- },
- easeInBack: function (x, t, b, c, d, s) {
- if (s == undefined) s = 1.70158;
- return c*(t/=d)*t*((s+1)*t - s) + b;
- },
- easeOutBack: function (x, t, b, c, d, s) {
- if (s == undefined) s = 1.70158;
- return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
- },
- easeInOutBack: function (x, t, b, c, d, s) {
- if (s == undefined) s = 1.70158;
- if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
- return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
- },
- easeInBounce: function (x, t, b, c, d) {
- return c - $.easing.easeOutBounce (x, d-t, 0, c, d) + b;
- },
- easeOutBounce: function (x, t, b, c, d) {
- if ((t/=d) < (1/2.75)) {
- return c*(7.5625*t*t) + b;
- } else if (t < (2/2.75)) {
- return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
- } else if (t < (2.5/2.75)) {
- return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
- } else {
- return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
- }
- },
- easeInOutBounce: function (x, t, b, c, d) {
- if (t < d/2) return $.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
- return $.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
- }
-});
-
-/*
- *
- * TERMS OF USE - EASING EQUATIONS
- *
- * Open source under the BSD License.
- *
- * Copyright 2001 Robert Penner
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * Neither the name of the author nor the names of contributors may be used to endorse
- * or promote products derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-})(jQuery);
-/*
- * jQuery UI Effects Fold 1.8.2
- *
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Effects/Fold
- *
- * Depends:
- * jquery.effects.core.js
- */
-(function($) {
-
-$.effects.fold = function(o) {
-
- return this.queue(function() {
-
- // Create element
- var el = $(this), props = ['position','top','left'];
-
- // Set options
- var mode = $.effects.setMode(el, o.options.mode || 'hide'); // Set Mode
- var size = o.options.size || 15; // Default fold size
- var horizFirst = !(!o.options.horizFirst); // Ensure a boolean value
- var duration = o.duration ? o.duration / 2 : $.fx.speeds._default / 2;
-
- // Adjust
- $.effects.save(el, props); el.show(); // Save & Show
- var wrapper = $.effects.createWrapper(el).css({overflow:'hidden'}); // Create Wrapper
- var widthFirst = ((mode == 'show') != horizFirst);
- var ref = widthFirst ? ['width', 'height'] : ['height', 'width'];
- var distance = widthFirst ? [wrapper.width(), wrapper.height()] : [wrapper.height(), wrapper.width()];
- var percent = /([0-9]+)%/.exec(size);
- if(percent) size = parseInt(percent[1],10) / 100 * distance[mode == 'hide' ? 0 : 1];
- if(mode == 'show') wrapper.css(horizFirst ? {height: 0, width: size} : {height: size, width: 0}); // Shift
-
- // Animation
- var animation1 = {}, animation2 = {};
- animation1[ref[0]] = mode == 'show' ? distance[0] : size;
- animation2[ref[1]] = mode == 'show' ? distance[1] : 0;
-
- // Animate
- wrapper.animate(animation1, duration, o.options.easing)
- .animate(animation2, duration, o.options.easing, function() {
- if(mode == 'hide') el.hide(); // Hide
- $.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
- if(o.callback) o.callback.apply(el[0], arguments); // Callback
- el.dequeue();
- });
-
- });
-
-};
-
-})(jQuery);
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index 8914f1d..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1 +0,0 @@
-user_guide.patch
diff --git a/debian/patches/user_guide.patch b/debian/patches/user_guide.patch
deleted file mode 100644
index f2e143f..0000000
--- a/debian/patches/user_guide.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Description: Build User Guide only
-Author: Luca Falavigna <dktrkranz@debian.org>
-Forwarded: not-needed
-
-Index: scons-doc/doc/SConscript
-===================================================================
---- scons-doc.orig/doc/SConscript 2014-04-27 11:39:43.567063643 +0200
-+++ scons-doc/doc/SConscript 2014-04-27 11:39:59.097875647 +0200
-@@ -195,12 +195,12 @@
- # of the outputs get installed to the build folder and added to
- # the different source and binary packages in the end.
- #
-- docs = {'design' : ['chtml','pdf'],
-+ docs = {#'design' : ['chtml','pdf'],
- #'python10' : ['chtml','html','pdf'],
-- 'reference' : ['chtml','html','pdf'],
-+ #'reference' : ['chtml','html','pdf'],
- #'developer' : ['chtml','html','pdf'],
- 'user' : ['chtml','html','pdf','epub'],
-- 'man' : ['man','epub']
-+ #'man' : ['man','epub']
- }
- # The names of the target files for the MAN pages
- man_page_list = ['scons.1','scons-time.1','sconsign.1']
diff --git a/debian/rules b/debian/rules
deleted file mode 100755
index 1f18a5a..0000000
--- a/debian/rules
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/make -f
-
-VERSION = $(shell head -n1 debian/changelog | sed -e 's/.*(//;s/-.*).*//;s/\+/\-/')
-
-%:
- dh $@
-
-override_dh_auto_clean:
- scons -c
- rm -fr build
- find -name "*.pyc" -delete
-
-override_dh_auto_install:
- scons doc
- rm -fr $(CURDIR)/build/doc/HTML/scons-user
-
-get-orig-source:
- wget http://downloads.sourceforge.net/project/scons/scons-src/${VERSION}/scons-src-${VERSION}.tar.gz -O ../scons-src-${VERSION}.tar.gz
- tar fxz ../scons-src-${VERSION}.tar.gz -C ../ && mv ../scons-src-${VERSION} ../scons-doc-${VERSION}
- tar czf ../scons-doc_${VERSION}.orig.tar.gz ../scons-doc-${VERSION}/bin ../scons-doc-${VERSION}/bootstrap.py \
- ../scons-doc-${VERSION}/config ../scons-doc-${VERSION}/doc ../scons-doc-${VERSION}/LICENSE \
- ../scons-doc-${VERSION}/QMTest ../scons-doc-${VERSION}/SConstruct ../scons-doc-${VERSION}/src
- rm -fr ../scons-doc-${VERSION} ../scons-src-${VERSION}.tar.gz
diff --git a/debian/source/format b/debian/source/format
deleted file mode 100644
index 163aaf8..0000000
--- a/debian/source/format
+++ /dev/null
@@ -1 +0,0 @@
-3.0 (quilt)
diff --git a/debian/watch b/debian/watch
deleted file mode 100644
index 4a3f16b..0000000
--- a/debian/watch
+++ /dev/null
@@ -1,2 +0,0 @@
-version=3
-http://sf.net/scons/scons-([0-9.]+)\.tar\.gz
diff --git a/doc/SConscript b/doc/SConscript
index 6b9d726..9c24aaa 100644
--- a/doc/SConscript
+++ b/doc/SConscript
@@ -3,7 +3,7 @@
#
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -42,6 +42,7 @@ fop = whereis('fop')
xep = whereis('xep')
epydoc_cli = whereis('epydoc')
gs = whereis('gs')
+lynx = whereis('lynx')
#
#
@@ -96,6 +97,9 @@ if not fop and not xep:
if skip_doc:
print "doc: ...skipping building User Guide."
else:
+ if not lynx:
+ print "doc: Warning, lynx is not installed...created release packages won't be complete!"
+
#
# Always create a version.xml file containing the version information
# for this run. Ignore it for dependency purposes so we don't
@@ -104,7 +108,65 @@ else:
date, ver, rev = env.Dictionary('DATE', 'VERSION', 'REVISION')
version_xml = File(os.path.join(build, "version.xml"))
writeVersionXml(str(version_xml), date, ver, rev)
-
+
+ import shutil
+ import SCons.Builder
+ import SCons.Util
+ #
+ # Builder for copying files to an Install dir, based
+ # on their extension (better: glob matching pattern)...
+ #
+ def _glob_install_action(target, source, env):
+ if not SCons.Util.is_List(target):
+ target = [target]
+ if not SCons.Util.is_List(source):
+ source = [source]
+ for t, s in zip(target, source):
+ shutil.copy(str(s), str(t))
+ def _glob_install_emitter(target, source, env):
+ if not SCons.Util.is_List(target):
+ target = [target]
+ if not SCons.Util.is_List(source):
+ source = [source]
+
+ res = []
+ res_src = []
+ tdir = env.Dir(target[0])
+ for g in glob.glob(str(source[0])):
+ head, tail = os.path.split(g)
+ res.append(os.path.join(str(tdir), tail))
+ res_src.append(g)
+ return res, res_src
+ _glob_install_builder = SCons.Builder.Builder(action=_glob_install_action,
+ emitter=_glob_install_emitter)
+ env['BUILDERS']['GlobInstall'] = _glob_install_builder
+
+ #
+ # Builder for copying ChunkedHTML files to an Install dir...
+ #
+ def _chunked_install_action(target, source, env):
+ if not SCons.Util.is_List(target):
+ target = [target]
+ if not SCons.Util.is_List(source):
+ source = [source]
+ tdir, tail = os.path.split(str(target[0]))
+ spattern = os.path.join(os.path.split(str(source[0]))[0], '*.html')
+ for g in glob.glob(spattern):
+ shutil.copy(g, tdir)
+
+ def _chunked_install_emitter(target, source, env):
+ if not SCons.Util.is_List(target):
+ target = [target]
+ if not SCons.Util.is_List(source):
+ source = [source]
+
+ tdir = env.Dir(target[0])
+ head, tail = os.path.split(str(source[0]))
+ return os.path.join(str(tdir), tail), source
+ _chunked_install_builder = SCons.Builder.Builder(action=_chunked_install_action,
+ emitter=_chunked_install_emitter)
+ env['BUILDERS']['ChunkedInstall'] = _chunked_install_builder
+
if not env.GetOption('clean'):
#
# Ensure that all XML files are valid against our XSD, and
@@ -124,84 +186,94 @@ else:
print "Not all example names and suffixes are unique! Please correct the errors listed above and try again."
sys.exit(0)
- #
- # Copy generated files (.gen/.mod/.xml) to the build folder
- #
- env.Execute(Mkdir(os.path.join(build, 'generated')))
- env.Execute(Mkdir(os.path.join(build, 'generated', 'examples')))
- for g in glob.glob(os.path.join('generated', '*.gen')):
- env.Execute(Copy(os.path.join(build, 'generated'), g))
- for g in glob.glob(os.path.join('generated', '*.mod')):
- env.Execute(Copy(os.path.join(build, 'generated'), g))
- for g in glob.glob(os.path.join('generated', 'examples', '*')):
- env.Execute(Copy(os.path.join(build, 'generated', 'examples'), g))
-
- #
- # Copy XSLT files (.xslt) to the build folder
- #
- env.Execute(Mkdir(os.path.join(build, 'xslt')))
- for g in glob.glob(os.path.join('xslt','*.*')):
- env.Execute(Copy(os.path.join(build, 'xslt'), g))
-
- #
- # Copy Docbook stylesheets and Tool to the build folder
- #
- dbtoolpath = ['src', 'engine', 'SCons', 'Tool', 'docbook']
- env.Execute(Mkdir(os.path.join(build_dir, *dbtoolpath)))
- env.Execute(Mkdir(os.path.join(build_dir, *(dbtoolpath + ['utils']))))
- env.Execute(Copy(os.path.join(build_dir, *dbtoolpath),
- os.path.join('..', *(dbtoolpath + ['__init__.py']))))
- env.Execute(Copy(os.path.join(build_dir, *(dbtoolpath + ['utils'])),
- os.path.join('..', *(dbtoolpath + ['utils', 'xmldepend.xsl']))))
- dbpath = dbtoolpath + ['docbook-xsl-1.76.1']
- env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['common']))))
- env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['lib']))))
- env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['html']))))
- env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['fo']))))
- env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['manpages']))))
- env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['epub']))))
- env.Execute(Mkdir(os.path.join(build_dir, *(dbpath + ['xhtml-1_1']))))
- env.Execute(Copy(os.path.join(build_dir, *dbpath),
- os.path.join('..', *(dbpath + ['VERSION']))))
- for g in glob.glob(os.path.join('..', *(dbpath + ['common', '*.*']))):
- env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['common'])), g))
- for g in glob.glob(os.path.join('..', *(dbpath + ['lib', '*.*']))):
- env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['lib'])), g))
- for g in glob.glob(os.path.join('..', *(dbpath + ['html', '*.*']))):
- env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['html'])), g))
- for g in glob.glob(os.path.join('..', *(dbpath + ['fo', '*.*']))):
- env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['fo'])), g))
- for g in glob.glob(os.path.join('..', *(dbpath + ['manpages', '*.*']))):
- env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['manpages'])), g))
- for g in glob.glob(os.path.join('..', *(dbpath + ['epub', '*.xsl']))):
- env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['epub'])), g))
- for g in glob.glob(os.path.join('..', *(dbpath + ['xhtml-1_1', '*.*']))):
- env.Execute(Copy(os.path.join(build_dir, *(dbpath + ['xhtml-1_1'])), g))
+ # List of prerequisite files in the build/doc folder
+ buildsuite = []
+
+ def copy_dbfiles(env, toolpath, paths, fpattern, use_builddir=True):
+ """ Helper function, copies a bunch of files matching
+ the given fpattern to a target directory.
+ """
+ global buildsuite
+ if not SCons.Util.is_List(toolpath):
+ toolpath = [toolpath]
+ if not SCons.Util.is_List(paths):
+ paths = [paths]
+ if not SCons.Util.is_List(fpattern):
+ fpattern = [fpattern]
+
+ if use_builddir:
+ target_dir = env.Dir(os.path.join(build_dir, *(toolpath+paths)))
+ buildsuite.extend(env.GlobInstall(target_dir,
+ os.path.join('..', *(toolpath+paths+fpattern))))
+ else:
+ target_dir = env.Dir(os.path.join(*(toolpath+paths)))
+ buildsuite.extend(env.GlobInstall(target_dir,
+ os.path.join(*(paths + fpattern))))
+
+ #
+ # Copy generated files (.gen/.mod/.xml) to the build folder
+ #
+ copy_dbfiles(env, build, 'generated', '*.gen', False)
+ copy_dbfiles(env, build, 'generated', '*.mod', False)
+ copy_dbfiles(env, build, ['generated','examples'], '*', False)
- #
- # Copy additional Tools (gs, zip)
- #
- toolpath = ['src', 'engine', 'SCons', 'Tool']
- env.Execute(Copy(os.path.join(build_dir, *toolpath),
- os.path.join('..', *(toolpath + ['gs.py']))))
- env.Execute(Copy(os.path.join(build_dir, *toolpath),
- os.path.join('..', *(toolpath + ['zip.py']))))
+ #
+ # Copy XSLT files (.xslt) to the build folder
+ #
+ copy_dbfiles(env, build, 'xslt', '*.*', False)
+ #
+ # Copy DocBook stylesheets and Tool to the build folder
+ #
+ dbtoolpath = ['src', 'engine', 'SCons', 'Tool', 'docbook']
+ copy_dbfiles(env, dbtoolpath, [], '__init__.py')
+ copy_dbfiles(env, dbtoolpath, 'utils', 'xmldepend.xsl')
+ dbpath = dbtoolpath + ['docbook-xsl-1.76.1']
+ copy_dbfiles(env, dbpath, [], 'VERSION')
+ copy_dbfiles(env, dbpath, ['common'], '*.*')
+ copy_dbfiles(env, dbpath, ['lib'], '*.*')
+ copy_dbfiles(env, dbpath, ['html'], '*.*')
+ copy_dbfiles(env, dbpath, ['fo'], '*.*')
+ copy_dbfiles(env, dbpath, ['manpages'], '*.*')
+ copy_dbfiles(env, dbpath, ['epub'], '*.xsl')
+ copy_dbfiles(env, dbpath, ['xhtml-1_1'], '*.*')
#
- # Each document will live in its own subdirectory. List them here
- # by their subfolder names. Note, how the specifiers for each subdir
- # have nothing to do with which formats get created...but which
- # of the outputs get installed to the build folder and added to
- # the different source and binary packages in the end.
+ # Copy additional Tools (gs, zip)
#
- docs = {'design' : ['chtml','pdf'],
- #'python10' : ['chtml','html','pdf'],
- 'reference' : ['chtml','html','pdf'],
- #'developer' : ['chtml','html','pdf'],
- 'user' : ['chtml','html','pdf','epub'],
- 'man' : ['man','epub']
+ toolpath = ['src', 'engine', 'SCons', 'Tool']
+ copy_dbfiles(env, toolpath, [], 'gs.py')
+ copy_dbfiles(env, toolpath, [], 'zip.py')
+
+ #
+ # Each document will live in its own subdirectory "build/doc/xxx".
+ # List them here by their subfolder names. Note, how the specifiers
+ # for each subdir (=DOCTARGETS) have nothing to do with which
+ # formats get created...but which of the outputs get installed
+ # to the build folder and added to the different source and binary
+ # packages in the end.
+ # In addition to the list of target formats (DOCTARGETS), we also
+ # store some dependency information in this dict. The DOCDEPENDS
+ # list contains all files from each local "MANIFEST", after
+ # installing/copying them to the build directory. It basically
+ # links the original sources to the respective build folder,
+ # such that a simple 'python bootstrap.py' rebuilds the
+ # documentation when a file, like 'doc/user/depends.xml'
+ # for example, changes.
+ # Finally, in DOCNODES we store the created PDF and HTML files,
+ # such that we can then install them in the proper places for
+ # getting picked up by the archiving/packaging stages.
+ DOCTARGETS = 0
+ DOCDEPENDS = 1
+ DOCNODES = 2
+ docs = {'design' : (['chunked','pdf'], [], []),
+ #'python10' : (['chunked','html','pdf'], [], []),
+ 'reference' : (['chunked','html','pdf'], [], []),
+ #'developer' : (['chunked','html','pdf'], [], []),
+ 'user' : (['chunked','html','pdf','epub','text'], [], []),
+ 'man' : (['man','epub','text'], [], [])
}
+
# The names of the target files for the MAN pages
man_page_list = ['scons.1','scons-time.1','sconsign.1']
@@ -216,15 +288,13 @@ else:
continue
base, ext = os.path.splitext(s)
if ext in ['.fig', '.jpg']:
- env.Execute(Copy(build, s))
+ buildsuite.extend(env.Command(os.path.join(build, s),
+ s,
+ Copy("$TARGET", "$SOURCE")))
else:
- revaction([env.File(os.path.join(build, s))],
+ revaction([env.File(os.path.join(build, s))],
[env.File(s)], env)
- #
- # For each document, build the document itself in HTML,
- # and PDF formats.
- #
for doc in docs:
#
@@ -232,8 +302,10 @@ else:
# build directory, while branding them with the
# SCons copyright and the current revision number...
#
- env.Execute(Mkdir(os.path.join(build, doc)))
- env.Execute(Mkdir(os.path.join(build, doc, 'titlepage')))
+ if not os.path.exists(os.path.join(build, doc)):
+ env.Execute(Mkdir(os.path.join(build, doc)))
+ if not os.path.exists(os.path.join(build, doc, 'titlepage')):
+ env.Execute(Mkdir(os.path.join(build, doc, 'titlepage')))
manifest = File(os.path.join(doc, 'MANIFEST')).rstr()
src_files = bootstrap.parseManifestLines(doc, open(manifest).readlines())
for s in src_files:
@@ -242,22 +314,56 @@ else:
doc_s = os.path.join(doc, s)
build_s = os.path.join(build, doc, s)
base, ext = os.path.splitext(doc_s)
+ head, tail = os.path.split(s)
+ if head:
+ target_dir = os.path.join(build, doc, head)
+ else:
+ target_dir = os.path.join(build, doc)
if ext in ['.fig', '.jpg', '.svg']:
- env.Execute(Copy(build_s, doc_s))
+ docs[doc][DOCDEPENDS].extend(env.Command(build_s, doc_s,
+ Copy("$TARGET", "$SOURCE")))
else:
- revaction([env.File(build_s)],
- [env.File(doc_s)], env)
+ btarget = env.File(build_s)
+ docs[doc][DOCDEPENDS].append(btarget)
+ revaction([btarget], [env.File(doc_s)], env)
+
+
+ #
+ # For each document, build the document itself in HTML,
+ # and PDF formats.
+ #
+ for doc in docs:
#
- # Call SCons in each local doc folder directly, such that
- # we can Glob for the created *.html files afterwards to
- # get the dependencies for the install targets right.
+ # Call SCons in each local doc folder
#
cleanopt = ''
if env.GetOption('clean'):
cleanopt = ' -c'
- cmd = env.subst("cd %s && $PYTHON ${SCONS_PY.abspath}" % os.path.join(build, doc))+cleanopt
- os.system(cmd)
+ scdir = os.path.join(build, doc)
+ sctargets = []
+ if 'html' in docs[doc][DOCTARGETS]:
+ sctargets.append(env.File(os.path.join(scdir, 'index.html')))
+ if 'chunked' in docs[doc][DOCTARGETS]:
+ sctargets.append(env.File(os.path.join(scdir, 'scons-%s' % doc, 'index.html')))
+ if 'pdf' in docs[doc][DOCTARGETS]:
+ sctargets.append(env.File(os.path.join(scdir, 'scons-%s.pdf' % doc)))
+ if 'epub' in docs[doc][DOCTARGETS]:
+ sctargets.append(env.File(os.path.join(scdir, 'scons-%s.epub' % doc)))
+
+ if 'man' in docs[doc][DOCTARGETS]:
+ for m in man_page_list:
+ sctargets.append(os.path.join(scdir, m))
+ man, _1 = os.path.splitext(m)
+
+ sctargets.append(os.path.join(scdir, 'scons-%s.pdf' % man))
+ sctargets.append(os.path.join(scdir, 'scons-%s.html' % man))
+
+ docs[doc][DOCNODES].extend(env.Command(sctargets, buildsuite + docs[doc][DOCDEPENDS],
+ "cd %s && $PYTHON ${SCONS_PY.abspath}%s" % (scdir, cleanopt)))
+
+ install_css = False
+ for doc in docs:
# Collect the output files for this subfolder
htmldir = os.path.join(build, 'HTML', 'scons-%s' % doc)
@@ -265,37 +371,61 @@ else:
html = os.path.join(build, 'HTML', 'scons-%s.html' % doc)
pdf = os.path.join(build, 'PDF', 'scons-%s.pdf' % doc)
epub = os.path.join(build, 'EPUB', 'scons-%s.epub' % doc)
- if 'chtml' in docs[doc]:
- env.Install(htmldir, Glob(os.path.join(build, doc,'scons-%s' % doc, '*.html')))
- tar_deps.extend([htmlindex])
+ text = os.path.join(build, 'TEXT', 'scons-%s.txt' % doc)
+ if 'chunked' in docs[doc][DOCTARGETS]:
+ installed_chtml = env.ChunkedInstall(env.Dir(htmldir),
+ os.path.join(build, doc,'scons-%s' % doc, 'index.html'))
+ installed_chtml_css = env.Install(env.Dir(htmldir),
+ os.path.join(build, doc, 'scons.css'))
+ env.Depends(installed_chtml, docs[doc][DOCNODES])
+ env.Depends(installed_chtml_css, docs[doc][DOCNODES])
+
+ tar_deps.extend([htmlindex, installed_chtml_css])
tar_list.extend([htmldir])
Local(htmlindex)
env.Ignore(htmlindex, version_xml)
- if 'html' in docs[doc]:
- env.InstallAs(html, os.path.join(build, doc,'index.html'))
+ if 'html' in docs[doc][DOCTARGETS]:
+ env.InstallAs(env.File(html), env.File(os.path.join(build, doc,'index.html')))
tar_deps.extend([html])
tar_list.extend([html])
Local(html)
env.Ignore(html, version_xml)
+ install_css = True
- if 'pdf' in docs[doc]:
- env.InstallAs(pdf, os.path.join(build, doc,'scons-%s.pdf' % doc))
+ if 'pdf' in docs[doc][DOCTARGETS]:
+ env.InstallAs(env.File(pdf), env.File(os.path.join(build, doc,'scons-%s.pdf' % doc)))
Local(pdf)
env.Ignore(pdf, version_xml)
tar_deps.append(pdf)
tar_list.append(pdf)
- if 'epub' in docs[doc] and gs:
- env.InstallAs(epub, os.path.join(build, doc,'scons-%s.epub' % doc))
+ if 'epub' in docs[doc][DOCTARGETS] and gs:
+ env.InstallAs(env.File(epub), env.File(os.path.join(build, doc,'scons-%s.epub' % doc)))
Local(epub)
env.Ignore(epub, version_xml)
tar_deps.append(epub)
tar_list.append(epub)
- if 'man' in docs[doc]:
+ if ('text' in docs[doc][DOCTARGETS] and lynx and
+ (('html' in docs[doc][DOCTARGETS]) or (doc == 'man'))):
+ texthtml = os.path.join(build, doc,'index.html')
+ if doc == 'man':
+ # Special handling for single MAN file
+ texthtml = os.path.join(build, doc, 'scons-scons.html')
+
+ env.Command(text, env.File(texthtml), "lynx -dump ${SOURCE.abspath} > $TARGET")
+ Local(text)
+
+ env.Ignore(text, version_xml)
+
+ tar_deps.append(text)
+ tar_list.append(text)
+
+
+ if 'man' in docs[doc][DOCTARGETS]:
#
# Man page(s)
#
@@ -305,13 +435,22 @@ else:
pdf = os.path.join(build, 'PDF', '%s-man.pdf' % man)
html = os.path.join(build, 'HTML' , '%s-man.html' % man)
- env.InstallAs(pdf, os.path.join(build, 'man','scons-%s.pdf' % man))
- env.InstallAs(html, os.path.join(build, 'man','scons-%s.html' % man))
+ env.InstallAs(env.File(pdf), env.File(os.path.join(build, 'man','scons-%s.pdf' % man)))
+ env.InstallAs(env.File(html), env.File(os.path.join(build, 'man','scons-%s.html' % man)))
tar_deps.extend([pdf, html])
tar_list.extend([pdf, html])
+ # Install CSS file, common to all single HTMLs
+ if install_css:
+ css_file = os.path.join(build, 'HTML', 'scons.css')
+ env.InstallAs(env.File(css_file),
+ env.File(os.path.join(build, 'user','scons.css')))
+ tar_deps.extend([css_file])
+ tar_list.extend([css_file])
+ Local(css_file)
+
if not epydoc_cli:
try:
import epydoc
diff --git a/doc/design/SConstruct b/doc/design/SConstruct
index 1cafcb1..5cee70e 100644
--- a/doc/design/SConstruct
+++ b/doc/design/SConstruct
@@ -3,7 +3,7 @@
#
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
diff --git a/doc/design/acks.xml b/doc/design/acks.xml
index 94a249f..76aa968 100644
--- a/doc/design/acks.xml
+++ b/doc/design/acks.xml
@@ -7,12 +7,12 @@
<chapter id="chap-acks"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Acknowledgements</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/design/bground.xml b/doc/design/bground.xml
index 327d041..b711a37 100644
--- a/doc/design/bground.xml
+++ b/doc/design/bground.xml
@@ -7,12 +7,12 @@
<chapter id="chap-background"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Background</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/design/chtml.xsl b/doc/design/chtml.xsl
index 25fc37e..44b2551 100644
--- a/doc/design/chtml.xsl
+++ b/doc/design/chtml.xsl
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -33,6 +33,7 @@
<xsl:param name="base.dir" select="'scons-design/'"/>
<xsl:param name="l10n.gentext.default.language" select="'en'"/>
<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="section.label.includes.component.label" select="1"/>
<xsl:param name="html.stylesheet" select="'scons.css'"/>
<xsl:param name="generate.toc">
/appendix toc,title
diff --git a/doc/design/copyright.xml b/doc/design/copyright.xml
index df3d544..d91f7a7 100644
--- a/doc/design/copyright.xml
+++ b/doc/design/copyright.xml
@@ -6,11 +6,11 @@
<legalnotice xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/design/engine.xml b/doc/design/engine.xml
index 4f56e61..065daf4 100644
--- a/doc/design/engine.xml
+++ b/doc/design/engine.xml
@@ -7,12 +7,12 @@
<chapter id="chap-engine"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Build Engine API</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/design/goals.xml b/doc/design/goals.xml
index f9dfc1c..e320be8 100644
--- a/doc/design/goals.xml
+++ b/doc/design/goals.xml
@@ -7,12 +7,12 @@
<chapter id="chap-goals"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Goals</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/design/html.xsl b/doc/design/html.xsl
index 2c94958..5b03fa1 100644
--- a/doc/design/html.xsl
+++ b/doc/design/html.xsl
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -32,6 +32,7 @@
<xsl:param name="l10n.gentext.default.language" select="'en'"/>
<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="section.label.includes.component.label" select="1"/>
<xsl:param name="html.stylesheet" select="'scons.css'"/>
<xsl:param name="generate.toc">
/appendix toc,title
diff --git a/doc/design/install.xml b/doc/design/install.xml
index dc27b2c..1d3f38e 100644
--- a/doc/design/install.xml
+++ b/doc/design/install.xml
@@ -7,12 +7,12 @@
<chapter id="chap-install"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Installation</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/design/intro.xml b/doc/design/intro.xml
index 1d042ae..b716ca6 100644
--- a/doc/design/intro.xml
+++ b/doc/design/intro.xml
@@ -7,12 +7,12 @@
<chapter id="chap-intro"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Introduction</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/design/issues.xml b/doc/design/issues.xml
index a43b77f..a35149d 100644
--- a/doc/design/issues.xml
+++ b/doc/design/issues.xml
@@ -7,12 +7,12 @@
<chapter id="chap-issues"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Other Issues</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/design/main.xml b/doc/design/main.xml
index fb6469b..fda23ec 100644
--- a/doc/design/main.xml
+++ b/doc/design/main.xml
@@ -2,7 +2,7 @@
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -37,7 +37,7 @@
<book xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<bookinfo>
<title>SCons &buildversion;</title>
<subtitle>Design</subtitle>
diff --git a/doc/design/native.xml b/doc/design/native.xml
index 83227ab..6ba892b 100644
--- a/doc/design/native.xml
+++ b/doc/design/native.xml
@@ -7,12 +7,12 @@
<chapter id="chap-native"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Native Python Interface</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/design/overview.xml b/doc/design/overview.xml
index 66ef78d..cd50146 100644
--- a/doc/design/overview.xml
+++ b/doc/design/overview.xml
@@ -7,12 +7,12 @@
<chapter id="chap-overview"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Overview</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/design/pdf.xsl b/doc/design/pdf.xsl
index c8acf1b..57c246b 100644
--- a/doc/design/pdf.xsl
+++ b/doc/design/pdf.xsl
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -33,6 +33,7 @@
<xsl:include href="scons_title.xsl"/>
<xsl:param name="l10n.gentext.default.language" select="'en'"/>
<xsl:param name="section.autolabel" select="1"></xsl:param>
+<xsl:param name="section.label.includes.component.label" select="1"/>
<xsl:param name="paper.type" select="'letter'"></xsl:param>
<xsl:param name="body.start.indent">0pt</xsl:param>
<xsl:param name="shade.verbatim" select="1"></xsl:param>
diff --git a/doc/design/scons.css b/doc/design/scons.css
index 6941abb..ff9b5a1 100644
--- a/doc/design/scons.css
+++ b/doc/design/scons.css
@@ -6,11 +6,11 @@ body {
}
-a {
+a:link {
color: #80572a;
}
-a:hover {
+a:link:hover {
color: #d72816;
text-decoration: none;
}
diff --git a/doc/design/scons_title.xsl b/doc/design/scons_title.xsl
index 52ca405..7fc9589 100644
--- a/doc/design/scons_title.xsl
+++ b/doc/design/scons_title.xsl
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/design/summary.xml b/doc/design/summary.xml
index 8b68654..1931bef 100644
--- a/doc/design/summary.xml
+++ b/doc/design/summary.xml
@@ -7,12 +7,12 @@
<chapter id="chap-summary"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Summary</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/developer/SConstruct b/doc/developer/SConstruct
index 1606a66..2774873 100644
--- a/doc/developer/SConstruct
+++ b/doc/developer/SConstruct
@@ -3,7 +3,7 @@
#
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
diff --git a/doc/developer/architecture.xml b/doc/developer/architecture.xml
index 229147c..6ee040b 100644
--- a/doc/developer/architecture.xml
+++ b/doc/developer/architecture.xml
@@ -7,12 +7,12 @@
<chapter id="chap-architecture"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Architecture</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/developer/branches.xml b/doc/developer/branches.xml
index ca7ae85..9a121b7 100644
--- a/doc/developer/branches.xml
+++ b/doc/developer/branches.xml
@@ -7,12 +7,12 @@
<chapter id="chap-branches"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Branches</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/developer/copyright.xml b/doc/developer/copyright.xml
index 15a94e3..67acaa2 100644
--- a/doc/developer/copyright.xml
+++ b/doc/developer/copyright.xml
@@ -6,11 +6,11 @@
<legalnotice xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/developer/cycle.xml b/doc/developer/cycle.xml
index 193d9db..579293a 100644
--- a/doc/developer/cycle.xml
+++ b/doc/developer/cycle.xml
@@ -7,12 +7,12 @@
<chapter id="chap-development-cycle"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Development Cycle</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/developer/main.xml b/doc/developer/main.xml
index 2a3f7e8..fe872a7 100644
--- a/doc/developer/main.xml
+++ b/doc/developer/main.xml
@@ -2,7 +2,7 @@
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -37,7 +37,7 @@
<book xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<bookinfo>
<title>SCons Developer's Guide &buildversion;</title>
diff --git a/doc/developer/packaging.xml b/doc/developer/packaging.xml
index 681082d..cbc9c72 100644
--- a/doc/developer/packaging.xml
+++ b/doc/developer/packaging.xml
@@ -7,12 +7,12 @@
<chapter id="chap-packaging"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Packaging</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/developer/preface.xml b/doc/developer/preface.xml
index 586739e..d30f530 100644
--- a/doc/developer/preface.xml
+++ b/doc/developer/preface.xml
@@ -7,12 +7,12 @@
<chapter id="chap-preface"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Preface</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/developer/sourcetree.xml b/doc/developer/sourcetree.xml
index 349d66a..969a624 100644
--- a/doc/developer/sourcetree.xml
+++ b/doc/developer/sourcetree.xml
@@ -7,12 +7,12 @@
<chapter id="chap-source-tree"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Source Tree</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/developer/testing.xml b/doc/developer/testing.xml
index 8891c92..a52ab09 100644
--- a/doc/developer/testing.xml
+++ b/doc/developer/testing.xml
@@ -7,12 +7,12 @@
<chapter id="chap-testing"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Testing</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons2.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons2.xml
deleted file mode 100644
index 9ae7978..0000000
--- a/doc/editor_configs/xmlmind/addon/config/scons/scons2.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<article xmlns="http://www.scons.org/dbxsd/v1.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
- <para></para>
-</article>
-
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/addListItem.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/addListItem.png
new file mode 100644
index 0000000..a8d2cbb
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/addListItem.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/back.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/back.png
new file mode 100644
index 0000000..ed2bae7
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/back.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/boldText.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/boldText.png
new file mode 100644
index 0000000..4fb8dd9
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/boldText.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/copy.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/copy.png
new file mode 100644
index 0000000..87cf5c9
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/copy.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/cut.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/cut.png
new file mode 100644
index 0000000..bb62377
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/cut.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/decrementColumnSpan.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/decrementColumnSpan.png
new file mode 100644
index 0000000..fb510c2
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/decrementColumnSpan.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/decrementRowSpan.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/decrementRowSpan.png
new file mode 100644
index 0000000..bc0259c
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/decrementRowSpan.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/definitionList.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/definitionList.png
new file mode 100644
index 0000000..5693bf2
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/definitionList.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/delete.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/delete.png
new file mode 100644
index 0000000..1294132
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/delete.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/deleteColumn.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/deleteColumn.png
new file mode 100644
index 0000000..9ce3889
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/deleteColumn.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/deleteRow.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/deleteRow.png
new file mode 100644
index 0000000..2e77c9c
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/deleteRow.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/documentation.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/documentation.png
new file mode 100644
index 0000000..d1cace3
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/documentation.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/down.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/down.png
new file mode 100644
index 0000000..f2f0352
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/down.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/editDocument.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/editDocument.png
new file mode 100644
index 0000000..7036cec
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/editDocument.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/emphasisText.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/emphasisText.png
new file mode 100644
index 0000000..f8ae089
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/emphasisText.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/emphasisText_menu.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/emphasisText_menu.png
new file mode 100644
index 0000000..b5cdbe3
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/emphasisText_menu.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/figure.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/figure.png
new file mode 100644
index 0000000..be36c36
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/figure.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/figure_menu.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/figure_menu.png
new file mode 100644
index 0000000..91ed514
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/figure_menu.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/forward.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/forward.png
new file mode 100644
index 0000000..1612579
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/forward.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/heading.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/heading.png
new file mode 100644
index 0000000..9caa1a4
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/heading.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/heading_menu.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/heading_menu.png
new file mode 100644
index 0000000..ee56eac
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/heading_menu.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/hyperText.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/hyperText.png
new file mode 100644
index 0000000..7f516e9
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/hyperText.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/hyperText_menu.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/hyperText_menu.png
new file mode 100644
index 0000000..5a225d7
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/hyperText_menu.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/incrementColumnSpan.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/incrementColumnSpan.png
new file mode 100644
index 0000000..5f3ca3e
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/incrementColumnSpan.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/incrementRowSpan.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/incrementRowSpan.png
new file mode 100644
index 0000000..680fe38
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/incrementRowSpan.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertColumnAfter.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertColumnAfter.png
new file mode 100644
index 0000000..38d5fdc
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertColumnAfter.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertColumnBefore.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertColumnBefore.png
new file mode 100644
index 0000000..fa2e43d
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertColumnBefore.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertRowAfter.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertRowAfter.png
new file mode 100644
index 0000000..6e7e1c6
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertRowAfter.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertRowBefore.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertRowBefore.png
new file mode 100644
index 0000000..01722c3
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/insertRowBefore.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/italicText.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/italicText.png
new file mode 100644
index 0000000..14db2c1
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/italicText.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/itemizedList.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/itemizedList.png
new file mode 100644
index 0000000..d403540
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/itemizedList.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/left.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/left.png
new file mode 100644
index 0000000..f9896e3
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/left.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/link.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/link.png
new file mode 100644
index 0000000..81f1909
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/link.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/link_menu.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/link_menu.png
new file mode 100644
index 0000000..12b9fc6
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/link_menu.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/navigate.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/navigate.png
new file mode 100644
index 0000000..195096d
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/navigate.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/normalText.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/normalText.png
new file mode 100644
index 0000000..f91fd53
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/normalText.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/onlineHelp.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/onlineHelp.png
new file mode 100644
index 0000000..c1ab94a
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/onlineHelp.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/orderedList.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/orderedList.png
new file mode 100644
index 0000000..310211c
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/orderedList.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/paragraph.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/paragraph.png
new file mode 100644
index 0000000..73b8ac5
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/paragraph.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/paste.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/paste.png
new file mode 100644
index 0000000..e3397b2
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/paste.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/pasteAfter.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/pasteAfter.png
new file mode 100644
index 0000000..0951145
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/pasteAfter.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/pasteBefore.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/pasteBefore.png
new file mode 100644
index 0000000..c74dca3
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/pasteBefore.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/plainText.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/plainText.png
new file mode 100644
index 0000000..3b8926b
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/plainText.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/right.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/right.png
new file mode 100644
index 0000000..11cc87a
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/right.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/section.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/section.png
new file mode 100644
index 0000000..1f9c9d1
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/section.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/section_menu.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/section_menu.png
new file mode 100644
index 0000000..4ec27b4
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/section_menu.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/table.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/table.png
new file mode 100644
index 0000000..07a959b
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/table.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/table_menu.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/table_menu.png
new file mode 100644
index 0000000..c6d98eb
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/table_menu.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/typewriterText.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/typewriterText.png
new file mode 100644
index 0000000..728ac01
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/typewriterText.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/up.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/up.png
new file mode 100644
index 0000000..cb9b87f
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/up.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/viewDocument.png b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/viewDocument.png
new file mode 100644
index 0000000..aa58c32
--- /dev/null
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_icons/viewDocument.png
Binary files differ
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/appendix.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/appendix.xml
index 6091ddc..6d245db 100644
--- a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/appendix.xml
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/appendix.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<appendix xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title></title>
<section>
<title></title>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/article.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/article.xml
index 5bafcd0..8153efb 100644
--- a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/article.xml
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/article.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<article xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<articleinfo>
<title></title>
<author>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/book.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/book.xml
index a2fcf14..671ad45 100644
--- a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/book.xml
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/book.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<book xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<bookinfo>
<title></title>
<author>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/chapter.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/chapter.xml
index aab17e0..e39fab1 100644
--- a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/chapter.xml
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/chapter.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<chapter xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title></title>
<section>
<title></title>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/glossary.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/glossary.xml
index cd3c723..bc874a5 100644
--- a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/glossary.xml
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/glossary.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<glossary xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<glossdiv>
<title></title>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/part.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/part.xml
index e8e8de0..74cd2e1 100644
--- a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/part.xml
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/part.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<part xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title></title>
<chapter>
<title></title>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/refentry.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/refentry.xml
index 399e346..e49692c 100644
--- a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/refentry.xml
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/refentry.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<refentry xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<refmeta>
<refentrytitle></refentrytitle>
<manvolnum></manvolnum>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/sconsdoc.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/sconsdoc.xml
index 29101bb..423d83d 100644
--- a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/sconsdoc.xml
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/sconsdoc.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="Foo">
<summary>
<para></para>
diff --git a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/section.xml b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/section.xml
index 39ccf9e..4681b49 100644
--- a/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/section.xml
+++ b/doc/editor_configs/xmlmind/addon/config/scons/scons_templates/section.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<section xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title></title>
<para></para>
</section>
diff --git a/doc/editor_configs/xmlmind/custom/dummy.txt b/doc/editor_configs/xmlmind/custom/dummy.txt
deleted file mode 100644
index f786cef..0000000
--- a/doc/editor_configs/xmlmind/custom/dummy.txt
+++ /dev/null
@@ -1 +0,0 @@
-# just to make hg happy \ No newline at end of file
diff --git a/doc/editor_configs/xmlmind/preferences.properties b/doc/editor_configs/xmlmind/preferences.properties
deleted file mode 100644
index 47a819a..0000000
--- a/doc/editor_configs/xmlmind/preferences.properties
+++ /dev/null
@@ -1,108 +0,0 @@
-#XMLmind XML Editor Personal Edition 4.6.0
-#Thu Feb 28 18:53:33 CET 2013
-ignoreMixedCase=false
-maxUndo=20
-underlineHeader=true
-useSchemaCache=false
-warnAboutAdvancedXInclude=false
-rightTab.insertCharacterPane.selected=false
-addInteractiveMargin=none
-rightTab.checkSpellingPane.atStart=false
-textAntiAliasing=true
-rightTab.editPane.atStart=true
-addonSource=servers
-lastOpenedFiles=
-defaultForeground=0 0 0
-rightTab.textSearchReplacePane.selected=false
-serifFontFamily=Serif
-overrideConfiguration=false
-footerColor=128 128 128
-rightSplit.dividerLocation=990
-button2PastesSystemSelection=false
-ignoreDuplicates=false
-addonInstallDir=best
-rightTab.checkSpellingPane.selected=false
-favorInteroperability=true
-addonDir=
-rightTabs.horizontalRatio=0.33
-addonServers=http\://www.xmlmind.com/xmleditor/_usercontrib/list.xxe_addon\nhttp\://www.xmlmind.net/xmleditor/_download/list-${XXE_VERSION}.xxe_addon\nhttp\://www.xmlmind.net/xmleditor/_download/list.xxe_addon
-overlineFooter=true
-rightTab.checkValidityPane.atStart=false
-ensureSaveFileHasExtension=true
-lockOwner=
-passwords=
-footerBegin=%F
-allowCompound=true
-charsSavedAsEntityRefs=
-useURLChooser=false
-rightTab.checkValidityPane.selected=true
-treeViewPercent=33
-showValidityPaneOnSave=false
-autoSaveTimeout=30
-onlyShowSuggestions=false
-footerEnd=%P
-appendSuggestionMode=manual
-makeBackupFiles=true
-guessIgnorableWhitespace=true
-lockLocalDocuments=false
-features=
-filterDuplicateIDs=true
-updateInclusionsOnSave=true
-treeViewAtRight=false
-autoSaveInterval=-300
-ignoreStyleSheetPI=false
-headerMiddle=
-locale=-
-defaultBackground=255 255 255
-autoSelectAttribute=placeholder
-maxSuggestionForce=false
-monospaceFontFamily=Monospaced
-maxLineLength=78
-helperApplications.entries=\:text/plain\:txt\:\:\:xterm -e vi "%F"
-firstCharDisplayedByTable=0
-singleInstance=false
-activeInputMethodClient=false
-selectedLanguage=en
-rightTab.editPane.selected=true
-defaultFontIsSerif=false
-ignoreCase=false
-fontSize=-1
-sansSerifFontFamily=SansSerif
-headerEnd=
-indent=2
-allowPrefixes=true
-headerColor=128 128 128
-helperApplications.defaultViewer=firefox "%U"
-lockMode=exclusive
-dontIndentUnconstrainedDocs=false
-rightTab.editAttributePane.selected=false
-ignoreURL=true
-geometry=72 52 1161 855
-maximized=no
-headerBegin=
-rightTab.insertCharacterPane.atStart=false
-allowFileExtensions=true
-rightTab.editAttributePane.atStart=false
-footerMiddle=
-startFromCaret=true
-singleInstancePort=49987
-reopenLastOpenedFile=false
-fileChooserSize=500 326
-screenResolutionWhenPrinting=100.0
-saveCharsAsEntityRefs=true
-copyDocumentTemplate=false
-wrapSearch=false
-infoAboutReadOnlyInclusions=true
-lookAndFeelClassName=-
-imageViewportMode=image
-defaultFontSize=12
-checkPunctuation=false
-showBothViews=false
-xxeVersion=4.6.0
-wrapLongWords=false
-rightTab.textSearchReplacePane.atStart=false
-addAutoDocumentType=true
-allowAdvancedXInclude=false
-addOpenLines=true
-encoding=ORIGINAL_ENCODING
-ignoreDigits=true
diff --git a/doc/editor_configs/xmlmind/ser/dummy.txt b/doc/editor_configs/xmlmind/ser/dummy.txt
deleted file mode 100644
index f786cef..0000000
--- a/doc/editor_configs/xmlmind/ser/dummy.txt
+++ /dev/null
@@ -1 +0,0 @@
-# just to make hg happy \ No newline at end of file
diff --git a/doc/editor_configs/xmlmind/spell/dummy.txt b/doc/editor_configs/xmlmind/spell/dummy.txt
deleted file mode 100644
index f786cef..0000000
--- a/doc/editor_configs/xmlmind/spell/dummy.txt
+++ /dev/null
@@ -1 +0,0 @@
-# just to make hg happy \ No newline at end of file
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/common.incl b/doc/editor_configs/xmlmind5/addon/config/scons/common.incl
new file mode 100644
index 0000000..987315a
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/common.incl
@@ -0,0 +1,647 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<configuration
+ xmlns="http://www.xmlmind.com/xmleditor/schema/configuration"
+ xmlns:cfg="http://www.xmlmind.com/xmleditor/schema/configuration">
+
+ <translation location="docbook_en.properties" />
+
+ <inclusionScheme name="XInclude">
+ <class>com.xmlmind.xml.xinclude.XIncludeScheme</class>
+ </inclusionScheme>
+
+ <cfg:preserveSpace xmlns=""
+ elements="address funcsynopsisinfo classsynopsisinfo
+ literallayout programlisting screen synopsis
+ sconstruct scons_example_file example_commands
+ scons_output_command file directory" />
+
+ <cfg:documentResources xmlns="">
+ <cfg:resource path="//@fileref" />
+ </cfg:documentResources>
+
+ <!-- Fixes the cols attribute of tgroup and entrytbl if needed to -->
+ <validateHook>
+ <class>com.xmlmind.xmleditext.docbook.table.ValidateHookImpl</class>
+ </validateHook>
+
+ <cfg:spellCheckOptions xmlns=""
+ useAutomaticSpellChecker="true"
+ languageAttribute="lang"
+ skippedElements="address programlisting screen synopsis code sgmltag
+ classsynopsisinfo modifier package classname
+ interfacename exceptionname varname methodname
+ funcsynopsisinfo modifier type function
+ initializer parameter funcparams
+ lhs rhs nonterminal" />
+
+ <!-- Menu ============================================================== -->
+
+ <command name="docb.tableEdit">
+ <class>com.xmlmind.xmleditext.docbook.DBTableEdit</class>
+ </command>
+
+ <command name="docb.promote">
+ <class>com.xmlmind.xmleditext.docbook.Promote</class>
+ </command>
+ <command name="docb.demote">
+ <class>com.xmlmind.xmleditext.docbook.Demote</class>
+ </command>
+
+ <command name="docb.toggleInformal">
+ <macro undoable="true"
+ label="Convert informal&lt;element&gt; to/from &lt;element&gt;">
+ <choice>
+ <sequence>
+ <command name="selectNode"
+ parameter="ancestorOrSelf[implicitElement]
+ informaltable informalfigure informalexample" />
+
+ <!-- DocBook 4.3 supports HTML tables and we will *not* attempt to
+ transform an HTML informaltable to a HTML table
+ with a caption. -->
+
+ <test context="$selected"
+ expression="local-name() != 'informaltable' or ./tgroup" />
+
+ <command name="selectNode" parameter="children" />
+ <command name="copy" />
+ <command name="selectNode" parameter="parent" />
+ <get context="$selected"
+ expression="substring-after(local-name(), 'informal')" />
+ <command name="replace" parameter="%_" />
+ <set variable="selectedNodes" context="$selected"
+ expression="./*[position() &gt; 1]" />
+ <command name="paste" parameter="to" />
+ </sequence>
+
+ <sequence>
+ <command name="selectNode"
+ parameter="ancestorOrSelf[implicitElement] table figure example" />
+ <!-- Assumes that first child is a title and not a blockinfo. -->
+ <set variable="selectedNodes" context="$selected"
+ expression="./*[position() &gt; 1]" />
+ <command name="copy" />
+ <command name="selectNode" parameter="parent" />
+ <get context="$selected"
+ expression="concat('informal', local-name())" />
+ <command name="replace" parameter="%_" />
+ <command name="selectNode" parameter="children" />
+ <command name="paste" parameter="to" />
+ </sequence>
+ </choice>
+ </macro>
+ </command>
+
+ <menu label="_DocBook">
+ <menu label="C_olumn" name="tableColumnMenu">
+ <item label="_Insert Before"
+ icon="xxe-config:common/icons/insertColumnBefore.png"
+ command="docb.tableEdit" parameter="insertColumnBefore"/>
+ <item label="I_nsert After"
+ icon="xxe-config:common/icons/insertColumnAfter.png"
+ command="docb.tableEdit" parameter="insertColumnAfter"/>
+ <separator />
+ <item label="_Cut"
+ icon="xxe-config:common/icons/cut.png"
+ command="docb.tableEdit" parameter="cutColumn"/>
+ <item label="C_opy"
+ icon="xxe-config:common/icons/copy.png"
+ command="docb.tableEdit" parameter="copyColumn"/>
+ <item label="_Paste Before"
+ icon="xxe-config:common/icons/pasteBefore.png"
+ command="docb.tableEdit" parameter="pasteColumnBefore"/>
+ <item label="P_aste After"
+ icon="xxe-config:common/icons/pasteAfter.png"
+ command="docb.tableEdit" parameter="pasteColumnAfter"/>
+ <item label="_Delete"
+ icon="xxe-config:common/icons/deleteColumn.png"
+ command="docb.tableEdit" parameter="deleteColumn"/>
+ </menu>
+ <menu label="_Row" name="tableRowMenu">
+ <item label="_Insert Before"
+ icon="xxe-config:common/icons/insertRowBefore.png"
+ command="docb.tableEdit" parameter="insertRowBefore"/>
+ <item label="I_nsert After"
+ icon="xxe-config:common/icons/insertRowAfter.png"
+ command="docb.tableEdit" parameter="insertRowAfter"/>
+ <separator />
+ <item label="_Cut"
+ icon="xxe-config:common/icons/cut.png"
+ command="docb.tableEdit" parameter="cutRow"/>
+ <item label="C_opy"
+ icon="xxe-config:common/icons/copy.png"
+ command="docb.tableEdit" parameter="copyRow"/>
+ <item label="_Paste Before"
+ icon="xxe-config:common/icons/pasteBefore.png"
+ command="docb.tableEdit" parameter="pasteRowBefore"/>
+ <item label="P_aste After"
+ icon="xxe-config:common/icons/pasteAfter.png"
+ command="docb.tableEdit" parameter="pasteRowAfter"/>
+ <item label="_Delete"
+ icon="xxe-config:common/icons/deleteRow.png"
+ command="docb.tableEdit" parameter="deleteRow"/>
+ </menu>
+ <menu label="C_ell">
+ <item label="_Increment Column Span"
+ icon="xxe-config:common/icons/incrementColumnSpan.png"
+ command="docb.tableEdit" parameter="incrColumnSpan"/>
+ <item label="_Decrement Column Span"
+ icon="xxe-config:common/icons/decrementColumnSpan.png"
+ command="docb.tableEdit" parameter="decrColumnSpan"/>
+ <separator />
+ <item label="I_ncrement Row Span"
+ icon="xxe-config:common/icons/incrementRowSpan.png"
+ command="docb.tableEdit" parameter="incrRowSpan"/>
+ <item label="D_ecrement Row Span"
+ icon="xxe-config:common/icons/decrementRowSpan.png"
+ command="docb.tableEdit" parameter="decrRowSpan"/>
+ </menu>
+ <separator />
+ <item label="Convert in_formal&lt;element&gt; to/from &lt;element&gt;"
+ command="docb.toggleInformal"/>
+ <separator />
+ <item label="Move _Up"
+ icon="xxe-config:common/icons/up.png"
+ command="moveElement" parameter="up" />
+ <item label="Move Do_wn"
+ icon="xxe-config:common/icons/down.png"
+ command="moveElement" parameter="down" />
+ </menu>
+
+ <!-- Toolbar ============================================================ -->
+
+ <command name="docb.convertWithAttribute">
+ <macro repeatable="true" undoable="true" label="Convert">
+ <sequence>
+ <choice>
+ <command name="selectNode"
+ parameter="self[implicitElement] %0" />
+ <command name="convert"
+ parameter="[implicitElement] %0" />
+ </choice>
+ <command name="putAttribute" parameter="%1 %2" />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- Easier to implement with "add" instead of "insertNode" but slower. -->
+
+ <command name="docb.addListItem">
+ <macro>
+ <sequence>
+ <command name="selectNode"
+ parameter="ancestor[implicitElement] itemizedlist orderedlist
+ variablelist calloutlist procedure substeps
+ simplelist segmentedlist" />
+ <command name="selectNode" parameter="child" />
+ <command name="insertNode" parameter="sameElement%0" />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- This macro is required for DocBook where a para can contains
+ lists, tables, etc.
+ Note that this is not the case of para in Simplified DocBook. -->
+
+ <command name="docb.addAfter">
+ <macro>
+ <choice>
+ <sequence>
+ <command name="selectNode"
+ parameter="ancestorOrSelf[implicitElement] para" />
+ <command name="insert" parameter="after[implicitElement] %0" />
+ </sequence>
+ <command name="add" parameter="after[implicitElement] %0" />
+ </choice>
+ </macro>
+ </command>
+
+ <!-- Bindings =========================================================== -->
+
+ <binding>
+ <keyPressed code="F2" />
+ <keyPressed code="UP" />
+ <command name="moveElement" parameter="up" />
+ </binding>
+
+ <binding>
+ <keyPressed code="F2" />
+ <keyPressed code="DOWN" />
+ <command name="moveElement" parameter="down" />
+ </binding>
+
+ <!-- Inside a para or simpara (and only inside a para or simpara),
+ XXE attempts to behave like a word-processor. -->
+
+ <binding>
+ <keyPressed code="ENTER" />
+ <command name="docb.splitOrInsertNewLine" />
+ </binding>
+
+ <binding>
+ <keyPressed code="DELETE" />
+ <command name="docb.joinOrDeleteChar" />
+ </binding>
+
+ <binding>
+ <keyPressed code="BACK_SPACE" />
+ <command name="docb.joinOrDeleteChar" parameter="backwards" />
+ </binding>
+
+ <command name="docb.splitOrInsertNewLine">
+ <macro>
+ <choice>
+ <command name="insertControlChar" parameter="\n" />
+
+ <sequence>
+ <command name="selectNode"
+ parameter="ancestorOrSelf[implicitElement] simpara para" />
+ <command name="split" />
+ </sequence>
+ </choice>
+ </macro>
+ </command>
+
+ <command name="docb.joinOrDeleteChar">
+ <macro>
+ <choice>
+ <sequence>
+ <test
+ expression="($dot/ancestor::para or $dot/ancestor::simpara) and
+ not($selected) and not($mark)" />
+ <command name="deleteSelectionOrJoinOrDeleteChar" parameter="%0" />
+ </sequence>
+
+ <command name="deleteSelectionOrDeleteChar" parameter="%0" />
+ </choice>
+ </macro>
+ </command>
+
+ <!-- Easy way to add paragraphs and list items -->
+
+ <binding>
+ <keyPressed code="ENTER" modifiers="mod" />
+ <command name="docb.addSame" parameter="After" />
+ </binding>
+
+ <binding>
+ <keyPressed code="ENTER" modifiers="mod shift" />
+ <command name="docb.addSame" parameter="Before" />
+ </binding>
+
+ <command name="docb.addSame">
+ <macro>
+ <choice>
+ <sequence>
+ <command name="selectNode"
+ parameter="ancestorOrSelf[implicitElement] simpara para" />
+
+ <choice>
+ <sequence>
+ <match context="$selected"
+ pattern="listitem/*[position() = 1]|
+ callout/*[position() = 1]|
+ step/*[position() = 1]" />
+ <command name="docb.addListItem" parameter="%0" />
+ </sequence>
+
+ <command name="insertNode" parameter="sameElement%0" />
+ </choice>
+ </sequence>
+
+ <command name="docb.addListItem" parameter="%0" />
+ </choice>
+ </macro>
+ </command>
+
+ <!-- Note that Shift-Enter is not bound. -->
+
+ <!-- An easy way to paste paragraphs copied from another application. -->
+
+ <command name="docb.pasteAfterAsParagraphs">
+ <macro>
+ <sequence>
+ <command name="makeParagraphs" parameter="%0" />
+ <command name="paste" parameter="after[implicitElement] %_" />
+ </sequence>
+ </macro>
+ </command>
+
+ <binding>
+ <keyPressed code="ESCAPE" />
+ <charTyped char="w" />
+ <command name="docb.pasteAfterAsParagraphs" parameter="para" />
+ </binding>
+
+ <!-- An easy way to specify the URL in ulink -->
+
+ <binding>
+ <appEvent name="drop" />
+ <command name="docb.fileDrop" parameter="'%{value}'" />
+ </binding>
+
+ <command name="docb.fileDrop">
+ <macro>
+ <choice>
+ <sequence>
+ <match context="$clickedElement" pattern="ulink" />
+ <set variable="selectedElement" expression="$clickedElement" />
+
+ <set variable="dropped" context="$selectedElement"
+ expression="relativize-uri(uri-or-file-name('%0'))" />
+ <get expression="$dropped" />
+ <command name="putAttribute" parameter="url '%_'" />
+
+ <get expression="$dropped" />
+ <command name="status" parameter="url='%_'" />
+ </sequence>
+
+ <command name="XXE.open" parameter="%0" />
+ </choice>
+ </macro>
+ </command>
+
+ <!-- Element templates ================================================== -->
+
+ <!-- Unlike graphic, mediaobject/imageobject is also supported by
+ simplified docbook. -->
+
+ <elementTemplate name="image" selectable="override">
+ <figure xmlns="">
+ <title></title>
+ <mediaobject cfg:template="image" />
+ </figure>
+ </elementTemplate>
+
+ <elementTemplate name="screenshot">
+ <figure xmlns="">
+ <title></title>
+ <screenshot cfg:template="simple" />
+ </figure>
+ </elementTemplate>
+
+ <elementTemplate name="simple" selectable="override">
+ <screenshot xmlns="">
+ <screeninfo></screeninfo>
+ <mediaobject cfg:template="image" />
+ </screenshot>
+ </elementTemplate>
+
+ <!-- Replacement for automatically generated mediaobject
+ (which contains a textobject) -->
+
+ <elementTemplate name="image" selectable="override">
+ <mediaobject xmlns="">
+ <imageobject><imagedata cfg:template="simple" /></imageobject>
+ </mediaobject>
+ </elementTemplate>
+
+ <elementTemplate name="image" selectable="override">
+ <inlinemediaobject xmlns="">
+ <imageobject><imagedata cfg:template="simple" /></imageobject>
+ </inlinemediaobject>
+ </elementTemplate>
+
+ <!-- fileref is not a mandatory attribute of imagedata -->
+
+ <elementTemplate name="simple" selectable="override">
+ <imagedata xmlns="" fileref="???" />
+ </elementTemplate>
+
+ <!-- Replacement for automatically generated caption of a mediaobject
+ (which is empty) -->
+
+ <elementTemplate name="simple" selectable="override">
+ <caption xmlns="">
+ <para></para>
+ </caption>
+ </elementTemplate>
+
+ <!-- Replacement for automatically generated table
+ (which contains a graphic) -->
+
+ <elementTemplate name="simple" selectable="override">
+ <table xmlns="">
+ <title></title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </elementTemplate>
+
+<!--
+ <elementTemplate name="withPara" selectable="override">
+ <entry xmlns=""><para></para></entry>
+ </elementTemplate>
+
+ <elementTemplate name="withPara" selectable="override">
+ <entrytbl xmlns="" cols="2">
+ <tbody>
+ <row>
+ <entry><para></para></entry><entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para></para></entry><entry><para></para></entry>
+ </row>
+ </tbody>
+ </entrytbl>
+ </elementTemplate>
+-->
+
+ <elementTemplate name="head_row">
+ <table xmlns="">
+ <title></title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry align="center"></entry><entry align="center"></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </elementTemplate>
+
+ <elementTemplate name="head_column">
+ <table xmlns="">
+ <title></title>
+ <tgroup cols="2">
+ <colspec align="center"/>
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </elementTemplate>
+
+ <elementTemplate name="head_row_column">
+ <table xmlns="">
+ <title></title>
+ <tgroup cols="2">
+ <colspec align="center" />
+ <thead>
+ <row>
+ <entry align="center"></entry><entry align="center"></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </elementTemplate>
+
+ <!-- Replacement for automatically generated informaltable
+ (which contains a graphic) -->
+
+ <elementTemplate name="simple" selectable="override">
+ <informaltable xmlns="">
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="head_row">
+ <informaltable xmlns="">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry align="center"></entry><entry align="center"></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="head_column">
+ <informaltable xmlns="">
+ <tgroup cols="2">
+ <colspec align="center"/>
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="head_row_column">
+ <informaltable xmlns="">
+ <tgroup cols="2">
+ <colspec align="center" />
+ <thead>
+ <row>
+ <entry align="center"></entry><entry align="center"></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="1x2">
+ <entrytbl xmlns="" cols="2">
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </entrytbl>
+ </elementTemplate>
+
+ <elementTemplate name="2x1">
+ <entrytbl xmlns="" cols="1">
+ <tbody>
+ <row>
+ <entry></entry>
+ </row>
+ <row>
+ <entry></entry>
+ </row>
+ </tbody>
+ </entrytbl>
+ </elementTemplate>
+
+ <elementTemplate name="2x2">
+ <entrytbl xmlns="" cols="2">
+ <tbody>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ <row>
+ <entry></entry><entry></entry>
+ </row>
+ </tbody>
+ </entrytbl>
+ </elementTemplate>
+
+ <!-- indexterm -->
+
+ <elementTemplate name="singular" selectable="override">
+ <indexterm xmlns=""><primary></primary></indexterm>
+ </elementTemplate>
+
+ <elementTemplate name="startofrange">
+ <indexterm xmlns="" id="???"
+ class="startofrange"><primary></primary></indexterm>
+ </elementTemplate>
+
+ <elementTemplate name="endofrange">
+ <indexterm xmlns="" class="endofrange" startref="???" />
+ </elementTemplate>
+
+ <!-- DocBook 4.3, Simplified DocBook 1.1, etc, support
+ both HTML and CALS tables. -->
+ <include location="htmlTable.incl" />
+</configuration>
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/css/cals_table.imp b/doc/editor_configs/xmlmind5/addon/config/scons/css/cals_table.imp
new file mode 100644
index 0000000..6e02a94
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/css/cals_table.imp
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2005-2009 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Styles for CALS tables (up to DocBook 4.2).
+ */
+
+@import "table.imp";
+
+/*
+ * "black" is the color used to draw a border around the table and its cells
+ * based on values of attributes such as frame, rowsep and colsep.
+ *
+ * "rgb(238,238,224)" (a very light gray) is the color used to draw
+ * a border around each cell whether the cell actually has borders or not.
+ * Remove this parameter if this ``cell footprint'' disturbs you.
+ *
+ * For more information about table support for DocBook, see
+ * XMLmind XML Editor - Configuration and Deployment.
+ */
+@extension "com.xmlmind.xmleditext.docbook.table.TableSupport black rgb(238,238,224)";
+
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/css/collapsible.imp b/doc/editor_configs/xmlmind5/addon/config/scons/css/collapsible.imp
new file mode 100644
index 0000000..443f990
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/css/collapsible.imp
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2003-2007 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Styles for making sections and blocks with titles collapsible.
+ */
+
+set,
+book,
+part,
+reference,
+chapter,
+preface,
+article,
+sect1,
+sect2,
+sect3,
+sect4,
+section,
+appendix,
+figure,
+example,
+table {
+ collapsible: yes;
+ not-collapsible-head: 1; /* title or metainfo */
+}
+
+figure {
+ collapsed-content: url(icons/figure.png);
+ collapsed-content-align: center;
+}
+
+example {
+ collapsed-content: url(icons/para.png);
+ collapsed-content-align: center;
+}
+
+table {
+ collapsed-content: url(icons/table.png);
+ collapsed-content-align: center;
+}
+
+set > title:first-child:before,
+book > title:first-child:before,
+reference > title:first-child:before,
+preface > title:first-child:before,
+article > title:first-child:before,
+figure > title:before,
+example > title:before,
+table > title:before {
+ content: collapser() " ";
+}
+
+part > title:first-child:before {
+ content: collapser() " Part " simple-counter(n-, upper-roman) ": ";
+}
+
+chapter > title:first-child:before {
+ content: collapser() " Chapter " simple-counter(n-, decimal) ": ";
+}
+
+sect1 > title:first-child:before {
+ content: collapser() " " simple-counter(n-) " ";
+}
+
+sect2 > title:first-child:before {
+ content: collapser() " " simple-counter(nn-) " ";
+}
+
+sect3 > title:first-child:before {
+ content: collapser() " " simple-counter(nnn-) " ";
+}
+
+sect4 > title:first-child:before {
+ content: collapser() " " simple-counter(nnnn-) " ";
+}
+
+section > title:first-child:before {
+ content: collapser() " " simple-counter(n-) " ";
+}
+
+section section > title:first-child:before {
+ content: collapser() " " simple-counter(nn-) " ";
+}
+
+section section section > title:first-child:before {
+ content: collapser() " " simple-counter(nnn-) " ";
+}
+
+section section section section > title:first-child:before {
+ content: collapser() " " simple-counter(nnnn-) " ";
+}
+
+section section section * section > title:first-child:before {
+ content: "";
+}
+
+appendix > title:first-child:before {
+ content: collapser() " Appendix " simple-counter(n-, upper-alpha) ": ";
+}
+
+appendixinfo:first-child,
+articleinfo:first-child,
+bookinfo:first-child,
+chapterinfo:first-child,
+partinfo:first-child,
+prefaceinfo:first-child,
+referenceinfo:first-child,
+sect1info:first-child,
+sect2info:first-child,
+sect3info:first-child,
+sect4info:first-child,
+sectioninfo:first-child,
+setinfo:first-child {
+ margin-left: 20px;
+}
+
+appendixinfo:first-child:before,
+articleinfo:first-child:before,
+bookinfo:first-child:before,
+chapterinfo:first-child:before,
+partinfo:first-child:before,
+prefaceinfo:first-child:before,
+referenceinfo:first-child:before,
+sect1info:first-child:before,
+sect2info:first-child:before,
+sect3info:first-child:before,
+sect4info:first-child:before,
+sectioninfo:first-child:before,
+setinfo:first-child:before {
+ content: collapser();
+ display: marker;
+}
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/css/docbook1.imp b/doc/editor_configs/xmlmind5/addon/config/scons/css/docbook1.imp
new file mode 100644
index 0000000..27a7561
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/css/docbook1.imp
@@ -0,0 +1,1157 @@
+/*
+ * Copyright (c) 2003-2010 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Styles for elements other than those found in Simplified DocBook.
+ */
+
+/* =====================================
+ Book structure
+===================================== */
+
+set {
+ display: block;
+}
+
+set > title {
+ font-size: 2.5em;
+ margin: 0.25ex 0;
+ border-width: 4px;
+ border-style: solid;
+ border-color: transparent transparent #004080 transparent;
+}
+
+book {
+ display: block;
+}
+
+book > title {
+ font-size: 2.5em;
+ margin: 0.25ex 0;
+ border-width: 3px;
+ border-style: solid;
+ border-color: transparent transparent #004080 transparent;
+}
+
+dedication,
+colophon {
+ display: block;
+ /* content of dedication has a margin */
+}
+
+part,
+reference {
+ display: block;
+}
+
+part > title,
+reference > title {
+ font-size: 2em;
+ margin: 0.5ex 0;
+ border-width: 2px;
+ border-style: solid;
+ border-color: transparent transparent #004080 transparent;
+}
+
+part > title:before {
+ content: "Part " simple-counter(n-, upper-roman) ": ";
+}
+
+partintro {
+ display: block;
+ /* content of partintro has a margin */
+}
+
+chapter,
+preface {
+ display: block;
+}
+
+chapter > title,
+preface > title {
+ font-size: 2em;
+ margin: 0.5ex 0;
+ border-width: 1px;
+ border-style: solid;
+ border-color: transparent transparent #004080 transparent;
+}
+
+chapter > title:before {
+ content: "Chapter " simple-counter(n-, decimal) ": ";
+}
+
+/* -------------------------------------
+ TOC
+------------------------------------- */
+
+toc {
+ display: block;
+ /* content of toc has a margin */
+}
+
+tocchap,
+tocpart {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+tocfront,
+tocback,
+tocentry {
+ display: block;
+ /* no vertical margins to make it more compact */
+}
+
+toclevel1,
+toclevel2,
+toclevel3,
+toclevel4,
+toclevel5 {
+ display: block;
+ /* no vertical margins to make it more compact */
+}
+
+toclevel2,
+toclevel3,
+toclevel4,
+toclevel5 {
+ margin-left: 4ex;
+}
+
+/* -------------------------------------
+ LOT
+------------------------------------- */
+
+lot {
+ display: block;
+ /* content of lot has a margin */
+}
+
+lotentry {
+ display: block;
+ /* no vertical margins to make it more compact */
+}
+
+/* -------------------------------------
+ Glossary
+------------------------------------- */
+
+glossary,
+glossdiv {
+ display: block;
+ /* content of glossary has a margin */
+}
+
+glosslist {
+ display: block;
+ margin-left: 2ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+glossentry {
+ display: block;
+ /* no vertical margins to make it more compact */
+}
+
+glossterm {
+ display: inline;
+ font-style: italic;
+}
+
+glossentry > acronym,
+glossentry > abbrev,
+glossentry > indexterm,
+glossentry > revhistory {
+ display: block;
+ margin-left: 4ex;
+ margin-top: 0;
+ margin-bottom: 1.33ex;
+}
+
+glossdef,
+glosssee {
+ display: block;
+ margin-left: 4ex;
+ margin-bottom: 1.33ex;
+}
+
+glossdef > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+glossseealso {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+glosssee:before,
+glossseealso:before {
+ display: inline;
+ font-size: small;
+ color: #004080;
+}
+
+glosssee:before {
+ content: "See ";
+}
+
+glossseealso:before {
+ content: "See also ";
+}
+
+/* -------------------------------------
+ Index
+------------------------------------- */
+
+index,
+setindex,
+indexdiv {
+ display: block;
+ /* content of index has a margin */
+}
+
+indexentry {
+ display: block;
+ /* no vertical margins to make it more compact */
+}
+
+primaryie,
+secondaryie,
+tertiaryie,
+seeie,
+seealsoie {
+ display: block;
+ /* no vertical margins to make it more compact */
+}
+
+secondaryie {
+ margin-left: 2ex;
+}
+
+tertiaryie {
+ margin-left: 4ex;
+}
+
+seeie,
+seealsoie {
+ margin-left: 6ex;
+}
+
+seeie:before,
+seealsoie:before {
+ display: inline;
+ font-size: small;
+ color: #004080;
+}
+
+seeie:before {
+ content: "See ";
+}
+
+seealsoie:before {
+ content: "See also ";
+}
+
+/* =====================================
+ Paragraphs
+===================================== */
+
+ackno {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+address {
+ display: block;
+ white-space: pre;
+ margin: 1.33ex 0;
+}
+
+street,
+pob,
+postcode,
+city,
+state,
+country,
+phone,
+fax,
+otheraddr {
+ display: inline;
+}
+
+formalpara {
+ display: block;
+ /* content of formalpara has a margin */
+}
+
+/* =====================================
+ Lists
+===================================== */
+
+procedure {
+ display: block;
+ margin-left: 2ex; /* all lists are slightly indented */
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+stepalternatives,
+substeps {
+ display: block;
+}
+
+stepalternatives > *:first-child,
+substeps > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+step {
+ display: block;
+ margin-left: 6ex;
+}
+
+step > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+step:before {
+ display: marker;
+ content: simple-counter(n, decimal) ".";
+ font-weight: bold;
+ color: #004080;
+}
+
+step step:before {
+ content: simple-counter(n, lower-alpha) ".";
+}
+step step step:before {
+ content: simple-counter(n, decimal) ".";
+}
+step step step step:before {
+ content: simple-counter(n, lower-alpha) ".";
+}
+step step step step step:before {
+ content: simple-counter(n, decimal) ".";
+}
+
+segmentedlist {
+ display: block;
+ margin-left: 2ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+segmentedlist > title {
+ margin-top: 0;
+}
+
+segtitle {
+ display: inline;
+ font-weight: bold;
+ color: #004080;
+}
+
+seglistitem {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+seg {
+ display: inline;
+}
+
+segtitle:before,
+seg:before {
+ content: " ";
+}
+
+segtitle:first-child:before,
+title + segtitle:before,
+seg:first-child:before {
+ content: "";
+}
+
+simplelist { /* also works for type=vert */
+ display: block;
+ margin-left: 2ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+member {
+ display: block;
+}
+
+simplelist[type=inline] > member,
+simplelist[type=horiz] > member {
+ display: inline;
+}
+
+simplelist[type=inline] > member:before {
+ content: ", ";
+ color: gray;
+}
+
+simplelist[type=horiz] > member:before {
+ content: " ";
+}
+
+simplelist[type=inline] > member:first-child:before,
+simplelist[type=horiz] > member:first-child:before {
+ content: "";
+}
+
+/* =====================================
+ Figures
+===================================== */
+
+graphic {
+ display: block;
+ margin: 1.33ex auto;
+}
+
+inlinegraphic {
+ display: inline;
+}
+
+/*
+ * Replaced content of graphic and inlinegraphic
+ * is defined in image.imp.
+ */
+
+equation,
+informalequation {
+ display: block;
+ margin: 1.33ex auto;
+}
+
+equation > title {
+ font-style: italic;
+ font-weight: normal;
+ text-align: center;
+ margin: 0; /* content of equation generally already has a margin */
+}
+
+mathphrase,
+alt {
+ display: block;
+ text-align: center;
+ margin: 1.33ex 0;
+}
+
+mathphrase {
+ font-style: italic;
+}
+
+alt {
+ font-size: small;
+ background-color: #EEEEFF;
+}
+
+inlineequation {
+ display: inline;
+}
+
+inlineequation > mathphrase,
+inlineequation > alt,
+inlineequation > graphic { /* inlineequation > graphic is a DTD bug */
+ display: inline;
+}
+
+screenshot {
+ display: block;
+ /* content of screenshot has a margin */
+}
+
+screeninfo {
+ display: block;
+ margin: 1.33ex 0;
+ font-size: small;
+ background-color: #EEEEFF;
+ text-align: center;
+}
+
+/* -------------------------------------
+ Callouts
+------------------------------------- */
+
+mediaobjectco {
+ display: block;
+ /* content of mediaobjectco has a margin */
+}
+
+graphicco,
+imageobjectco,
+programlistingco,
+screenco {
+ display: block;
+ /* content of graphicco has a margin */
+}
+
+areaspec,
+areaset,
+area {
+ display: tree;
+}
+
+co {
+ display: inline;
+ content: icon(left-half-disc) simple-counter(n) icon(right-half-disc);
+ color: #004080;
+}
+
+coref {
+ display: inline;
+ content: icon(left-half-disc) attr(linkend) icon(right-half-disc);
+ color: #004080;
+}
+
+calloutlist {
+ display: block;
+ margin-left: 2ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+callout {
+ display: block;
+ margin-left: 6ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+callout > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+calloutlist > callout:before {
+ display: marker;
+ content: icon(left-half-disc) simple-counter(n) icon(right-half-disc);
+ color: #004080;
+}
+
+/* =====================================
+ Divisions
+===================================== */
+
+highlights {
+ display: block;
+ margin-bottom: 1.33ex;
+ background-color: #F8E0F8;
+ border: thin solid #F880F8;
+ padding: 2px;
+}
+
+highlights:before {
+ display: block;
+ content: element-label();
+ font-weight: bold;
+ color: #E840E8;
+ margin-top: 1.33ex;
+}
+
+/* =====================================
+ Special sections
+===================================== */
+
+/* -------------------------------------
+ Task
+------------------------------------- */
+
+task {
+ display: block;
+ /* content of task has a margin */
+}
+
+tasksummary,
+taskprerequisites,
+taskrelated,
+task > procedure {
+ display: block;
+ margin-left: 2ex;
+ /* content of taskxxx has a margin */
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+/* -------------------------------------
+ Question-and-answer set
+------------------------------------- */
+
+qandaset,
+qandadiv {
+ display: block;
+ /* content of qandaset has a margin */
+}
+
+qandaentry {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+question,
+answer {
+ display: block;
+ margin-left: 4ex;
+ /* content of question has a margin */
+}
+
+question > *:first-child,
+answer > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+question:before,
+answer:before {
+ display: marker;
+ color: #004080;
+ font-weight: bold;
+}
+
+question:before {
+ content: "Q:";
+}
+
+answer:before {
+ content: "A:";
+}
+
+label {
+ display: block;
+ margin: 1.33ex 0;
+ color: #004080;
+ font-weight: bold;
+}
+
+/* -------------------------------------
+ Set of messages
+------------------------------------- */
+
+msgset {
+ display: block;
+ /* content of msgset has a margin */
+}
+
+msgentry,
+simplemsgentry {
+ display: block;
+ margin: 1.33ex 0;
+ border: thin solid gray;
+ padding: 2px;
+}
+
+msg,
+msgmain,
+msgsub,
+msgrel,
+msgtext,
+msgexplan,
+msginfo {
+ display: block;
+ margin-left: 10ex;
+ /* content of msg has a margin */
+}
+
+msg > *:first-child,
+msgmain > *:first-child,
+msgsub > *:first-child,
+msgrel > *:first-child,
+msgtext > *:first-child,
+msgexplan > *:first-child,
+msginfo > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+msg:before,
+msgmain:before,
+msgsub:before,
+msgrel:before,
+simplemsgentry > msgtext:before,
+msgexplan:before,
+msginfo:before {
+ display: marker;
+ content: element-label();
+ font-size: small;
+ color: #004080;
+}
+
+msglevel,
+msgorig,
+msgaud {
+ display: inline;
+}
+
+msglevel:before,
+msgorig:before,
+msgaud:before {
+ content: icon(left-half-disc) element-local-name() " ";
+ font-size: small;
+ color: gray;
+}
+
+msglevel:after,
+msgorig:after,
+msgaud:after {
+ content: icon(right-half-disc);
+ color: gray;
+}
+
+/* -------------------------------------
+ Bibliography
+ (complements docbook2.imp)
+------------------------------------- */
+
+bibliocoverage,
+bibliorelation,
+bibliosource {
+ display: inline;
+}
+
+biblioid,
+isbn,
+issn,
+pubsnumber {
+ display: inline;
+}
+
+citebiblioid {
+ display: inline;
+}
+
+biblioref {
+ content: attr(linkend) icon(right-link);
+ vertical-align: text-top; /* for the icon */
+ color: navy;
+}
+
+/* -------------------------------------
+ Meta-information
+ (complements docbook2.imp)
+------------------------------------- */
+
+artpagenums,
+pagenums,
+seriesvolnums,
+invpartnumber {
+ display: inline;
+}
+
+itermset {
+ /* Could be block but inline is safer when used in strange places
+ and when used in meta-info, display is forced to be block. */
+ display: inline;
+}
+
+collab {
+ display: block; /* can contain affiliation */
+ margin: 1.33ex 0;
+}
+
+collabname {
+ display: inline;
+}
+
+confgroup {
+ display: block; /* can contain address */
+ margin: 1.33ex 0;
+}
+
+confdates,
+conftitle,
+confnum,
+confsponsor {
+ display: inline;
+}
+
+confdates:after,
+conftitle:after,
+confnum:after,
+confsponsor:after {
+ content: " ";
+}
+
+contractnum,
+contractsponsor {
+ display: inline;
+}
+
+publisher {
+ display: block; /* can contain address */
+ margin: 1.33ex 0;
+}
+
+printhistory {
+ display: block;
+ /* content of printhistory has a margin */
+}
+
+/* =====================================
+ Other elements
+===================================== */
+
+bridgehead {
+ display: block;
+ font-weight: bold;
+ color: #004080;
+ margin: 1.33ex 0;
+}
+
+bridgehead[renderas=sect1] {
+ font-size: 1.5em;
+ margin: .83ex 0;
+}
+
+bridgehead[renderas=sect2] {
+ font-size: 1.3em;
+ margin: 1ex 0;
+}
+
+/* ---------------------------------------------------------------------------
+ Inlined elements other than those belonging to modules
+
+ Note that default display is inline, so there is no need to specify it.
+--------------------------------------------------------------------------- */
+
+/* -------------------------------------
+ Technical
+------------------------------------- */
+
+keycombo {
+ display: inline;
+}
+
+keycombo > *:before {
+ content: icon(plus);
+ color: gray;
+}
+
+keycombo[action] > *:before {
+ content: " ";
+}
+
+keycombo[action=simul] > *:before {
+ content: icon(plus);
+}
+
+keycombo > *:first-child:before {
+ content: "";
+}
+
+keycap,
+keysym,
+mousebutton {
+ font-weight: bold;
+}
+
+keycode {
+ font-family: monospace;
+}
+
+menuchoice {
+ display: inline;
+}
+
+menuchoice > *:before {
+ content: icon(pop-right);
+ color: gray;
+}
+
+menuchoice > *:first-child:before,
+menuchoice > shortcut + *:before {
+ content: "";
+}
+
+shortcut {
+ display: inline;
+}
+
+/* shortcut:before should be enough but this selector makes this rule more
+ specific than the above one */
+
+menuchoice > shortcut:first-child:before {
+ content: "(";
+ color: gray;
+}
+
+shortcut:after {
+ content: ") ";
+ color: gray;
+}
+
+shortcut > *:before {
+ content: " ";
+}
+
+shortcut > *:first-child:before {
+ content: "";
+}
+
+guimenu,
+guisubmenu,
+guimenuitem,
+guibutton,
+guilabel,
+guiicon,
+accel,
+interface {
+ font-weight: bold;
+}
+
+accel {
+ text-decoration: underline;
+}
+
+action {
+ display: inline;
+}
+
+application,
+hardware,
+database,
+productnumber {
+ display: inline;
+}
+
+medialabel {
+ font-weight: bold;
+}
+
+package,
+uri,
+code,
+constant,
+envar,
+markup,
+prompt,
+property,
+sgmltag,
+token,
+type,
+function,
+parameter,
+varname,
+returnvalue,
+errorcode,
+errorname,
+errortext,
+errortype,
+exceptionname,
+classname,
+methodname,
+interfacename,
+structfield,
+structname,
+symbol {
+ font-family: monospace;
+}
+
+optional {
+ display: inline;
+}
+synopsis > optional:before {
+ content: "[";
+ color: gray;
+}
+synopsis > optional:after {
+ content: "]";
+ color: gray;
+}
+
+sgmltag:before,
+sgmltag:after {
+ color: gray;
+}
+
+sgmltag[class=attvalue]:before {
+ content: '"';
+}
+sgmltag[class=attvalue]:after {
+ content: '"';
+}
+
+sgmltag[class=starttag]:before,
+sgmltag[class=emptytag]:before {
+ content: "<";
+}
+sgmltag[class=endtag]:before {
+ content: "</";
+}
+sgmltag[class=endtag]:after,
+sgmltag[class=starttag]:after {
+ content: ">";
+}
+sgmltag[class=emptytag]:after {
+ content: "/>";
+}
+
+sgmltag[class=pi]:before,
+sgmltag[class=xmlpi]:before {
+ content: "<?";
+}
+sgmltag[class=pi]:after,
+sgmltag[class=xmlpi]:after {
+ content: "?>";
+}
+
+sgmltag[class=sgmlcomment]:before {
+ content: "<!--";
+}
+sgmltag[class=sgmlcomment]:after {
+ content: "-->";
+}
+
+sgmltag[class=paramentity]:before {
+ content: "%";
+}
+sgmltag[class=genentity]:before {
+ content: "&";
+}
+sgmltag[class=numcharref]:before {
+ content: "&#";
+}
+sgmltag[class=paramentity]:after,
+sgmltag[class=genentity]:after,
+sgmltag[class=numcharref]:after {
+ content: ";";
+}
+
+/* -------------------------------------
+ General
+------------------------------------- */
+
+remark {
+ font-style: italic;
+ color: #880000;
+}
+
+firstterm,
+foreignphrase {
+ font-style: italic;
+}
+
+citation:before {
+ content: "[";
+ color: gray;
+}
+
+citation:after {
+ content: "]";
+ color: gray;
+}
+
+wordasword {
+ font-family: sans-serif;
+ font-size: medium;
+ font-style: normal;
+ font-weight: normal;
+ color: black;
+}
+
+olink {
+ color: navy;
+ text-decoration: underline;
+}
+
+olink:after {
+ vertical-align: text-top; /* for the icon */
+}
+
+olink[targetdoc]:after {
+ content: icon(left-link) attr(targetdoc);
+}
+
+olink[targetdoc][targetptr]:after {
+ content: icon(left-link) attr(targetdoc) ":" attr(targetptr);
+}
+
+modespec {
+ display: inline;
+}
+
+indexterm,
+primary,
+secondary,
+tertiary,
+see,
+seealso {
+ display: inline;
+ font-size: small;
+}
+
+indexterm:before {
+ content: icon(left-half-disc);
+ color: gray;
+}
+
+indexterm:after {
+ content: icon(right-half-disc);
+ color: gray;
+}
+
+indexterm[class=startofrange][id]:before {
+ content: icon(left-half-disc) attr(id) icon(half-disc-separator);
+}
+
+indexterm[class=startofrange][xml|id]:before {
+ content: icon(left-half-disc) attr(xml|id) icon(half-disc-separator);
+}
+
+indexterm[class=endofrange]:after {
+ content: icon(half-disc-separator) attr(startref) icon(right-half-disc);
+}
+
+indexterm > *:before {
+ content: "; ";
+ color: gray;
+ font-weight: bold;
+}
+
+indexterm > see:before {
+ content: " see ";
+}
+
+indexterm > seealso:before {
+ content: " see also ";
+}
+
+indexterm > *:first-child:before {
+ content: "";
+}
+
+termdef {
+ display: inline;
+}
+
+termdef:before {
+ content: icon(right) element-local-name() " ";
+ color: gray;
+}
+
+termdef:after {
+ content: icon(left);
+ color: gray;
+}
+
+/* -------------------------------------
+ Other
+------------------------------------- */
+
+beginpage {
+ display: inline;
+ content: url(icons/beginpage.png);
+}
+
+sbr {
+ display: inline;
+ content: "\A";
+ color: gray;
+}
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/css/docbook2.imp b/doc/editor_configs/xmlmind5/addon/config/scons/css/docbook2.imp
new file mode 100644
index 0000000..d558ca7
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/css/docbook2.imp
@@ -0,0 +1,1292 @@
+/*
+ * Copyright (c) 2003-2010 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Styles for elements found in Simplified DocBook
+ * (and closely related elements even if not found in Simplified DocBook).
+ */
+
+/* =====================================
+ Article structure
+===================================== */
+
+sconsdoc,
+article {
+ display: block;
+}
+
+article > title {
+ font-size: 2em;
+ margin: 0.5ex 0;
+ border-width: 1px;
+ border-style: solid;
+ border-color: transparent transparent #004080 transparent;
+}
+
+title,
+subtitle,
+titleabbrev {
+ display: block;
+ color: #004080;
+ margin: 1.33ex 0;
+}
+
+title,
+subtitle {
+ font-weight: bold;
+}
+
+/* -------------------------------------
+ Sections
+------------------------------------- */
+
+section,
+sect1,
+sect2,
+sect3,
+sect4,
+sect5,
+simplesect {
+ display: block;
+}
+
+tool,
+builder,
+scons_function,
+cvar {
+ display: block;
+}
+
+sconsdoc > tool:before {
+ color: #004080;
+ font-size: 1.5em;
+ margin: .83ex 0;
+ display: block;
+ content: "Tool '" attr(name) "'";
+}
+
+sconsdoc > builder:before {
+ color: #004080;
+ font-size: 1.5em;
+ margin: .83ex 0;
+ display: block;
+ content: "Builder '" attr(name) "'";
+}
+
+sconsdoc > scons_function:before {
+ color: #004080;
+ font-size: 1.5em;
+ margin: .83ex 0;
+ display: block;
+ content: "Function '" attr(name) "'";
+}
+
+sconsdoc > cvar:before {
+ color: #004080;
+ font-size: 1.5em;
+ margin: .83ex 0;
+ display: block;
+ content: "CVar '" attr(name) "'";
+}
+
+cvar > summary:before,
+scons_function > summary:before,
+builder > summary:before,
+tool > summary:before {
+ font-size: 1.3em;
+ font-weight: bold;
+ margin: .83ex 0;
+ display: block;
+ content: "Summary: ";
+}
+
+scons_function > arguments:before {
+ font-size: 1.2em;
+ margin: .83ex 0;
+ display: block;
+ content: "Arguments";
+}
+
+section > title,
+sect1 > title {
+ font-size: 1.5em;
+ margin: .83ex 0;
+}
+
+section > title:before,
+sect1 > title:before {
+ content: simple-counter(n-) " ";
+}
+
+section section > title,
+sect2 > title {
+ font-size: 1.3em;
+ margin: 1ex 0;
+}
+
+section * section > title {
+ font-size: 1em;
+ margin: 1.33ex 0;
+}
+
+section section > title:before,
+sect2 > title:before {
+ content: simple-counter(nn-) " ";
+}
+
+section section section > title:before,
+sect3 > title:before {
+ content: simple-counter(nnn-) " ";
+}
+
+section section section section > title:before,
+sect4 > title:before {
+ content: simple-counter(nnnn-) " ";
+}
+
+section section section * section > title:before {
+ content: "";
+}
+
+/* -------------------------------------
+ Appendix
+------------------------------------- */
+
+appendix {
+ display: block;
+}
+
+appendix > title { /* in a book or in a part */
+ font-size: 2em;
+ margin: 0.5ex 0;
+ border-width: 1px;
+ border-style: solid;
+ border-color: transparent transparent #004080 transparent;
+}
+
+article > appendix > title {
+ font-size: 1.5em;
+ margin: 0.83ex 0;
+ border-width: 0;
+ border-style: none;
+}
+
+appendix > title:before {
+ content: "Appendix " simple-counter(n-, upper-alpha) ": ";
+}
+
+/* =====================================
+ Paragraphs
+===================================== */
+
+para,
+simpara {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+/* =====================================
+ Lists
+===================================== */
+
+/* -------------------------------------
+ itemizedlist
+------------------------------------- */
+
+uses,
+sets,
+itemizedlist {
+ display: block;
+ margin-left: 2ex; /* all lists are slightly indented */
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+listitem {
+ display: block;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+uses[spacing=compact] > listitem,
+sets[spacing=compact] > listitem,
+itemizedlist[spacing=compact] > listitem,
+orderedlist[spacing=compact] > listitem {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+listitem > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+uses > listitem,
+sets > listitem,
+itemizedlist > listitem {
+ margin-left: 2.5ex;
+}
+
+uses > listitem:before,
+sets > listitem:before,
+itemizedlist > listitem:before {
+ display: marker;
+ content: disc;
+ color: #004080;
+}
+
+itemizedlist > listitem itemizedlist > listitem:before {
+ content: square;
+}
+
+itemizedlist > listitem itemizedlist > listitem itemizedlist >
+listitem:before {
+ content: icon(diamond);
+}
+
+itemizedlist > listitem itemizedlist > listitem itemizedlist >
+listitem itemizedlist > listitem:before {
+ content: circle;
+}
+
+/* -------------------------------------
+ orderedlist
+------------------------------------- */
+
+orderedlist {
+ display: block;
+ margin-left: 2ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+ counter-reset: item;
+}
+
+orderedlist[continuation=continues] {
+ counter-reset: none;
+}
+
+orderedlist > listitem {
+ margin-left: 6ex;
+ counter-increment: item;
+}
+
+orderedlist > listitem:before {
+ display: marker;
+ content: counter(item, decimal) ".";
+ font-weight: bold;
+ color: #004080;
+}
+
+orderedlist[numeration=loweralpha] > listitem:before {
+ content: counter(item, lower-alpha) ".";
+}
+
+orderedlist[numeration=upperalpha] > listitem:before {
+ content: counter(item, upper-alpha) ".";
+}
+
+orderedlist[numeration=lowerroman] > listitem:before {
+ content: counter(item, lower-roman) ".";
+}
+
+orderedlist[numeration=upperroman] > listitem:before {
+ content: counter(item, upper-roman) ".";
+}
+
+orderedlist[inheritnum=inherit] > listitem:before,
+orderedlist[inheritnum=inherit][numeration=arabic] > listitem:before {
+ content: counters(item, ".", decimal) ".";
+}
+
+orderedlist[inheritnum=inherit][numeration=loweralpha] > listitem:before {
+ content: counters(item, ".", lower-alpha) ".";
+}
+
+orderedlist[inheritnum=inherit][numeration=upperalpha] > listitem:before {
+ content: counters(item, ".", upper-alpha) ".";
+}
+
+orderedlist[inheritnum=inherit][numeration=lowerroman] > listitem:before {
+ content: counters(item, ".", lower-roman) ".";
+}
+
+orderedlist[inheritnum=inherit][numeration=upperroman] > listitem:before {
+ content: counters(item, ".", upper-roman) ".";
+}
+
+/* -------------------------------------
+ variablelist
+------------------------------------- */
+
+variablelist {
+ display: block;
+ margin-left: 2ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+varlistentry {
+ display: block;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+variablelist[spacing=compact] > varlistentry {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+term {
+ display: block;
+ font-weight: bold;
+}
+
+varlistentry > listitem {
+ margin-left: 4ex;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+/* =====================================
+ Figures
+===================================== */
+
+programlisting,
+screen,
+scons_example,
+scons_example_file,
+example_commands,
+sconstruct,
+scons_output,
+scons_output_command,
+file,
+directory,
+literallayout,
+synopsis {
+ display: block;
+ white-space: pre;
+ font-family: monospace;
+ margin: 1.33ex 0;
+}
+
+example_commands,
+programlisting {
+ background-color: #EEEEEE;
+ border: thin solid gray;
+ padding: 2px;
+}
+
+scons_example,
+sconstruct,
+scons_output {
+ background-color: #94CAEE;
+ border: thin solid gray;
+ padding: 2px;
+}
+
+file,
+directory,
+scons_example_file {
+ background-color: #EED27B;
+}
+
+screen {
+ background-color: #EEEEFF;
+ border: thin solid #8888FF;
+ padding: 2px;
+}
+
+figure,
+informalfigure,
+example,
+informalexample {
+ display: block;
+ margin: 1.33ex auto;
+}
+
+figure > title,
+example > title {
+ font-style: italic;
+ font-weight: normal;
+ text-align: center;
+ margin: 0; /* content of figure generally already has a margin */
+}
+
+mediaobject {
+ display: table;
+ border-spacing: 2px;
+ margin: 1.33ex auto;
+}
+
+inlinemediaobject {
+ display: inline-table;
+ border-spacing: 2px;
+}
+
+caption {
+ display: table-caption;
+ color: #004080;
+ font-style: italic;
+ font-weight: normal;
+ text-align: center;
+ /* content of caption already has a margin */
+}
+
+audioobject,
+videoobject,
+imageobject,
+textobject {
+ display: table-cell; /* this will create one row per cell */
+ text-align: center;
+}
+
+objectinfo {
+ text-align: left;
+}
+
+mediaobject > objectinfo {
+ display: table-cell;
+}
+
+audiodata {
+ display: inline;
+ content: url(icons/audio.png);
+}
+
+videodata {
+ display: inline;
+ content: url(icons/video.png);
+}
+
+/*
+ * imagedata is defined in image.imp.
+ */
+
+textdata {
+ display: inline;
+ content: url(icons/text.png);
+}
+
+/* =====================================
+ Divisions
+===================================== */
+
+abstract {
+ display: block;
+ margin-left: 18ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+abstract > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+abstract:before {
+ display: marker;
+ content: element-label();
+ font-weight: bold;
+ color: #004080;
+}
+
+blockquote,
+epigraph {
+ display: block;
+ margin: 1.33ex 10ex;
+}
+
+blockquote > title {
+ font-style: italic;
+ font-weight: normal;
+ text-align: center;
+ margin: 0; /* content of blockquote already has a margin */
+}
+
+attribution {
+ display: block;
+ text-align: right;
+}
+
+attribution:before {
+ content: " -- ";
+}
+
+footnote {
+ display: block;
+ margin-left: 18ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+ margin-right: 10ex;
+ font-size: small;
+ padding: 2px;
+ background-color: #F0F0FF;
+}
+
+footnote > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+footnote:before {
+ display: marker;
+ content: element-label();
+ color: #004080;
+}
+
+footnote[label]:before {
+ content: "[" attr(label) "]";
+}
+
+note,
+caution,
+important,
+tip,
+warning {
+ display: block;
+ margin-left: 18ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+note > *:first-child,
+caution > *:first-child,
+important > *:first-child,
+tip > *:first-child,
+warning > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+note:before,
+caution:before,
+important:before,
+tip:before,
+warning:before {
+ display: marker;
+ content: element-label();
+ font-weight: bold;
+ color: #004080;
+}
+
+sidebar {
+ display: block;
+ margin: 1.33ex 0;
+ border: thin solid #80F880;
+ background-color: #E0F8E0;
+ padding: 2px;
+}
+
+sidebar > title {
+ margin: 0; /* content of sidebar already has a margin */
+}
+
+/* =====================================
+ Special sections
+===================================== */
+
+/* -------------------------------------
+ Bibliography
+ (complemented in docbook1.imp)
+------------------------------------- */
+
+bibliography,
+bibliodiv,
+bibliolist {
+ display: block;
+ /* content of bibliography has a margin */
+}
+
+bibliomixed,
+bibliomset,
+biblioentry,
+biblioset {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+bibliomixed,
+biblioentry {
+ border: thin solid gray;
+ padding: 2px;
+}
+
+bibliomixed > title,
+bibliomixed > subtitle,
+bibliomixed > titleabbrev,
+bibliomset > title,
+bibliomset > subtitle,
+bibliomset > titleabbrev,
+biblioentry > title,
+biblioentry > subtitle,
+biblioentry > titleabbrev,
+biblioset > title,
+biblioset > subtitle,
+biblioset > titleabbrev {
+ /* title of a bibliography entry, not ``caption'' of a formal block */
+ font-weight: normal;
+ font-size: 1em;
+ color: black;
+}
+
+bibliomixed > title,
+bibliomixed > subtitle,
+bibliomixed > titleabbrev,
+bibliomset > title,
+bibliomset > subtitle,
+bibliomset > titleabbrev {
+ display: inline;
+}
+
+bibliomixed > title,
+bibliomixed > subtitle,
+bibliomset > title,
+bibliomset > subtitle {
+ font-style: italic;
+}
+
+bibliomisc {
+ display: inline;
+}
+
+/* -------------------------------------
+ Meta-information
+ (complemented in docbook1.imp)
+------------------------------------- */
+
+appendixinfo,
+articleinfo,
+bibliographyinfo,
+blockinfo,
+bookinfo,
+chapterinfo,
+glossaryinfo,
+indexinfo,
+objectinfo,
+partinfo,
+prefaceinfo,
+refentryinfo,
+refmeta,
+referenceinfo,
+refsect1info,
+refsect2info,
+refsect3info,
+refsectioninfo,
+refsynopsisdivinfo,
+sect1info,
+sect2info,
+sect3info,
+sect4info,
+sect5info,
+sectioninfo,
+setindexinfo,
+setinfo,
+sidebarinfo {
+ display: block;
+ margin: 1.33ex 0;
+ border: thin solid #C0F8F8;
+ background-color: #E0F8F8;
+ padding: 2px;
+}
+
+authorgroup {
+ display: block;
+ /* content of authorgroup has a margin */
+}
+
+author,
+editor,
+othercredit {
+ display: block; /* can contain authorblurb, address */
+ margin: 1.33ex 0;
+}
+
+personname {
+ display: inline;
+}
+
+honorific,
+firstname,
+surname,
+lineage,
+othername {
+ display: inline;
+}
+
+honorific:after,
+firstname:after,
+surname:after,
+lineage:after,
+othername:after {
+ content: " ";
+}
+
+contrib {
+ display: inline;
+}
+
+authorblurb,
+personblurb {
+ display: block;
+ /* content of authorblurb has a margin */
+}
+
+corpauthor,
+corpname {
+ /* Could be block but inline is safer when used in strange places
+ and when used in meta-info, display is forced to be block. */
+ display: inline;
+}
+
+affiliation {
+ display: block; /* can contain address */
+ margin: 1.33ex 0;
+}
+
+shortaffil,
+jobtitle,
+orgname,
+orgdiv {
+ display: inline;
+}
+
+shortaffil:after,
+affiliation > jobtitle:after,
+affiliation > orgname:after,
+orgdiv:after {
+ content: " ";
+}
+
+copyright {
+ display: inline;
+}
+
+year,
+holder {
+ display: inline;
+}
+
+year:after,
+holder:after {
+ content: " ";
+}
+
+date,
+pubdate {
+ display: inline;
+}
+
+edition {
+ display: inline;
+}
+
+issuenum {
+ display: inline;
+}
+
+keywordset,
+subjectset {
+ display: inline;
+}
+
+keyword,
+subject,
+subjectterm {
+ display: inline;
+}
+
+keyword:after,
+subjectterm:after {
+ content: " ";
+}
+
+legalnotice {
+ display: block;
+ /* content of legalnotice has a margin */
+}
+
+publishername {
+ display: inline;
+}
+
+releaseinfo {
+ display: inline;
+}
+
+revhistory {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+revision {
+ display: block;
+ margin-left: 2.5ex;
+}
+
+revision:before {
+ display: marker;
+ content: icon(right);
+ color: #004080;
+}
+
+revision > author,
+authorinitials {
+ display: inline;
+ font-weight: bold;
+}
+
+revnumber,
+revremark {
+ display: inline;
+}
+
+revnumber:after,
+revision > date:after,
+revision > author:after,
+revision > authorinitials:after {
+ content: " ";
+}
+
+revdescription {
+ display: block;
+ /* content of revdescription has a margin */
+}
+
+volumenum {
+ display: inline;
+}
+
+/* ---------------------------------------------------------------------------
+ Inlined elements other than those belonging to modules
+
+ Note that default display is inline, so there is no need to specify it.
+--------------------------------------------------------------------------- */
+
+emphasis {
+ font-style: italic;
+}
+emphasis[role=bold] {
+ font-style: normal;
+ font-weight: bold;
+}
+emphasis[role=underline] {
+ font-style: normal;
+ text-decoration: underline;
+}
+emphasis[role=strikethrough] {
+ font-style: normal;
+ text-decoration: line-through;
+}
+
+emphasis > emphasis {
+ font-style: normal;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+directory,
+literal {
+ font-family: monospace;
+}
+
+link,
+ulink,
+email {
+ color: navy;
+ text-decoration: underline;
+}
+
+/* -------------------------------------
+ Technical
+------------------------------------- */
+
+command,
+computeroutput,
+filename,
+option,
+systemitem,
+userinput {
+ font-family: monospace;
+}
+
+computeroutput,
+userinput {
+ background-color: #EEEEEE;
+}
+
+command,
+option {
+ font-weight: bold;
+}
+
+lineannotation {
+ font-style: italic;
+ font-size: medium; /* occurs in verbatim, fixed font, blocks */
+}
+
+replaceable {
+ font-style: italic;
+}
+
+/* -------------------------------------
+ General
+------------------------------------- */
+
+anchor {
+ content: icon(right-target);
+ color: gray;
+}
+
+subscript,
+superscript {
+ display: inline-block;
+ white-space: nowrap;
+ font-size: small;
+}
+subscript {
+ vertical-align: sub;
+}
+superscript {
+ vertical-align: super;
+}
+
+abbrev,
+acronym {
+ font-weight: bold;
+}
+
+citetitle {
+ font-style: italic;
+}
+
+footnoteref {
+ content: "[" attr(linkend) "]";
+ font-size: small;
+ vertical-align: super;
+ color: navy;
+}
+
+footnoteref[label] {
+ content: "[" attr(label) "]";
+}
+
+phrase[revisionflag=deleted] {
+ text-decoration: line-through;
+}
+
+phrase[revisionflag=added] {
+ text-decoration: underline;
+}
+
+quote:before {
+ content: open-quote;
+ font-weight: bold;
+ color: gray;
+}
+
+quote:after {
+ content: close-quote;
+ font-weight: bold;
+ color: gray;
+}
+
+trademark,
+productname {
+ color: #004080;
+}
+
+trademark:after,
+productname:after {
+ font-size: small;
+ color: gray;
+}
+
+trademark:after, /* also works for class=trade */
+productname[class=trade]:after {
+ content: "[tm]";
+}
+
+trademark[class=copyright]:after,
+productname[class=copyright]:after {
+ content: "\A9";
+ font-size: medium;
+}
+
+trademark[class=registered]:after,
+productname[class=registered]:after {
+ content: "\AE";
+ font-size: medium;
+}
+
+trademark[class=service]:after,
+productname[class=service]:after {
+ content: "[sm]";
+}
+
+xref {
+ content: icon(left-link)
+ xpath("if(id(@linkend)/@xreflabel, id(@linkend)/@xreflabel, @linkend)");
+ vertical-align: text-top; /* for the icon */
+ color: navy;
+}
+
+xref[endterm] {
+ content: icon(left-link) xpath("if(id(@endterm), id(@endterm), @endterm)");
+}
+
+/* ---------------------------------------------------------------------------
+ Overrides natural display of elements in special sections
+ (must be at the very end of the style sheet)
+--------------------------------------------------------------------------- */
+
+/* -------------------------------------
+ Bibliography
+------------------------------------- */
+
+biblioentry > *,
+biblioset > * {
+ display: block;
+ text-align: left; /* Reset paragraph styles */
+ font: normal normal 1em sans-serif;
+ color: black;
+ margin-left: 18ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+biblioentry > *:first-child,
+biblioset > *:first-child { /* nicer */
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+biblioentry > *:before,
+biblioset > *:before {
+ display: marker;
+ content: element-label();
+ font: normal normal small sans-serif;
+ color: #004080;
+}
+
+biblioentry > *:after,
+biblioset > *:after {
+ content: "";
+}
+
+biblioentry > biblioset,
+biblioset > biblioset {
+ margin-left: 0;
+}
+
+biblioentry > biblioset:before,
+biblioset > biblioset:before {
+ content: "";
+}
+
+/* -------------------------------------
+ Meta-information
+------------------------------------- */
+
+appendixinfo > *,
+articleinfo > *,
+bibliographyinfo > *,
+blockinfo > *,
+bookinfo > *,
+chapterinfo > *,
+glossaryinfo > *,
+indexinfo > *,
+objectinfo > *,
+partinfo > *,
+prefaceinfo > *,
+refentryinfo > *,
+refmeta > *,
+referenceinfo > *,
+refsect1info > *,
+refsect2info > *,
+refsect3info > *,
+refsectioninfo > *,
+refsynopsisdivinfo > *,
+sect1info > *,
+sect2info > *,
+sect3info > *,
+sect4info > *,
+sect5info > *,
+sectioninfo > *,
+setindexinfo > *,
+setinfo > *,
+sidebarinfo > * {
+ display: block;
+ text-align: left; /* Reset paragraph styles */
+ font: normal normal 1em sans-serif;
+ color: black;
+ margin-left: 18ex;
+ margin-right: 0;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+appendixinfo > *:first-child,
+articleinfo > *:first-child,
+bibliographyinfo > *:first-child,
+blockinfo > *:first-child,
+bookinfo > *:first-child,
+chapterinfo > *:first-child,
+glossaryinfo > *:first-child,
+indexinfo > *:first-child,
+objectinfo > *:first-child,
+partinfo > *:first-child,
+prefaceinfo > *:first-child,
+refentryinfo > *:first-child,
+refmeta > *:first-child,
+referenceinfo > *:first-child,
+refsect1info > *:first-child,
+refsect2info > *:first-child,
+refsect3info > *:first-child,
+refsectioninfo > *:first-child,
+refsynopsisdivinfo > *:first-child,
+sect1info > *:first-child,
+sect2info > *:first-child,
+sect3info > *:first-child,
+sect4info > *:first-child,
+sect5info > *:first-child,
+sectioninfo > *:first-child,
+setindexinfo > *:first-child,
+setinfo > *:first-child,
+sidebarinfo > *:first-child { /* nicer */
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+appendixinfo > *:before,
+articleinfo > *:before,
+bibliographyinfo > *:before,
+blockinfo > *:before,
+bookinfo > *:before,
+chapterinfo > *:before,
+glossaryinfo > *:before,
+indexinfo > *:before,
+objectinfo > *:before,
+partinfo > *:before,
+prefaceinfo > *:before,
+refentryinfo > *:before,
+refmeta > *:before,
+referenceinfo > *:before,
+refsect1info > *:before,
+refsect2info > *:before,
+refsect3info > *:before,
+refsectioninfo > *:before,
+refsynopsisdivinfo > *:before,
+sect1info > *:before,
+sect2info > *:before,
+sect3info > *:before,
+sect4info > *:before,
+sect5info > *:before,
+sectioninfo > *:before,
+setindexinfo > *:before,
+setinfo > *:before,
+sidebarinfo > *:before {
+ display: marker;
+ content: element-label();
+ font: normal normal small sans-serif;
+ color: #004080;
+}
+
+appendixinfo > *:after,
+articleinfo > *:after,
+bibliographyinfo > *:after,
+blockinfo > *:after,
+bookinfo > *:after,
+chapterinfo > *:after,
+glossaryinfo > *:after,
+indexinfo > *:after,
+objectinfo > *:after,
+partinfo > *:after,
+prefaceinfo > *:after,
+refentryinfo > *:after,
+refmeta > *:after,
+referenceinfo > *:after,
+refsect1info > *:after,
+refsect2info > *:after,
+refsect3info > *:after,
+refsectioninfo > *:after,
+refsynopsisdivinfo > *:after,
+sect1info > *:after,
+sect2info > *:after,
+sect3info > *:after,
+sect4info > *:after,
+sect5info > *:after,
+sectioninfo > *:after,
+setindexinfo > *:after,
+setinfo > *:after,
+sidebarinfo > *:after {
+ content: "";
+}
+
+appendixinfo > title,
+articleinfo > title,
+bibliographyinfo > title,
+blockinfo > title,
+bookinfo > title,
+chapterinfo > title,
+glossaryinfo > title,
+indexinfo > title,
+objectinfo > title,
+partinfo > title,
+prefaceinfo > title,
+refentryinfo > title, /* refmeta has no title */
+referenceinfo > title,
+refsect1info > title,
+refsect2info > title,
+refsect3info > title,
+refsectioninfo > title,
+refsynopsisdivinfo > title,
+sect1info > title,
+sect2info > title,
+sect3info > title,
+sect4info > title,
+sect5info > title,
+sectioninfo > title,
+setindexinfo > title,
+setinfo > title,
+sidebarinfo > title {
+ font-size: 1.3em;
+ font-weight: bold;
+ color: #004080;
+ margin-left: 0;
+ margin-right: 0;
+ margin-top: 0;
+ margin-bottom: 1ex;
+}
+
+appendixinfo > title:before,
+articleinfo > title:before,
+bibliographyinfo > title:before,
+blockinfo > title:before,
+bookinfo > title:before,
+chapterinfo > title:before,
+glossaryinfo > title:before,
+indexinfo > title:before,
+objectinfo > title:before,
+partinfo > title:before,
+prefaceinfo > title:before,
+refentryinfo > title:before,
+referenceinfo > title:before,
+refsect1info > title:before,
+refsect2info > title:before,
+refsect3info > title:before,
+refsectioninfo > title:before,
+refsynopsisdivinfo > title:before,
+sect1info > title:before,
+sect2info > title:before,
+sect3info > title:before,
+sect4info > title:before,
+sect5info > title:before,
+sectioninfo > title:before,
+setindexinfo > title:before,
+setinfo > title:before,
+sidebarinfo > title:before {
+ content: "";
+}
+
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/css/example1.css b/doc/editor_configs/xmlmind5/addon/config/scons/css/example1.css
new file mode 100644
index 0000000..857d561
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/css/example1.css
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2003-2008 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * A CSS style sheet for DocBook V4.5.
+ */
+
+doc,
+para {
+ display: block;
+}
+para {
+ margin: 1ex 0;
+}
+para[align] {
+ text-align: concatenate(attr(align));
+}
+
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/css/html_cals_table.imp b/doc/editor_configs/xmlmind5/addon/config/scons/css/html_cals_table.imp
new file mode 100644
index 0000000..dd62d3d
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/css/html_cals_table.imp
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2005-2009 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Styles for both HTML and CALS tables (DocBook 4.3+).
+ */
+
+@import "table.imp";
+
+/*
+ * "black" is the color used to draw a border around the table and its cells
+ * based on values of attributes such as frame, rowsep and colsep.
+ *
+ * "rgb(238,238,224)" (a very light gray) is the color used to draw
+ * a border around each cell whether the cell actually has borders or not.
+ * Remove this parameter if this ``cell footprint'' disturbs you.
+ *
+ * For more information about table support for DocBook, see
+ * XMLmind XML Editor - Configuration and Deployment.
+ */
+@extension "com.xmlmind.xmleditext.docbook.TableSupport black rgb(238,238,224)";
+
+/*
+ * Real DocBook tables (CALS) contain (graphic+|mediaobject+|tgroup+)
+ * not (tbody+|tr+).
+ */
+
+table:contains-element(tr),
+table:contains-element(tbody),
+informaltable:contains-element(tr),
+informaltable:contains-element(tbody) {
+ display: table;
+ border-style: solid;
+ border-width: 1;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+table:contains-element(tr) > caption,
+table:contains-element(tbody) > caption,
+informaltable:contains-element(tr) > caption,
+informaltable:contains-element(tbody) > caption {
+ display: table-caption;
+ color: #004080;
+ font-style: italic;
+ font-weight: normal;
+ text-align: center;
+ margin: 2px 2ex 2px 2ex;
+}
+
+colgroup {
+ display: table-column-group;
+ collapsed: yes;
+}
+
+col {
+ display: table-column;
+ collapsed: yes;
+}
+
+/*
+ * thead, tbody, tfoot, already properly styled in table.imp.
+ */
+
+table:contains-element(tbody) > thead,
+table:contains-element(tbody) > tfoot {
+ /*
+ * In CALS tables, header and footer rows are often presented
+ * in an alternate typographic style, such as boldface.
+ * There is no such processing expectation for HTML tables.
+ * Explicitly use th instead of td when boldface is needed.
+ */
+ font-weight: normal;
+}
+
+tr {
+ display: table-row;
+ background-color: inherit; /*e.g. from read-only tbody*/
+}
+
+td,
+th {
+ display: table-cell;
+ background-color: inherit; /*e.g. from read-only row*/
+ border-style: solid;
+ border-width: 1;
+ padding: 2;
+}
+
+th {
+ font-weight: bold;
+}
+
+@media print {
+ colgroup,
+ col {
+ display: none;
+ }
+}
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/css/image.imp b/doc/editor_configs/xmlmind5/addon/config/scons/css/image.imp
new file mode 100644
index 0000000..dd1d65f
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/css/image.imp
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2004-2009 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Display of images.
+ */
+
+mediaobject imagedata {
+ display: block; /* without this, a viewport specified as % will not work */
+ margin: 0 auto;
+}
+
+inlinemediaobject imagedata {
+ display: inline;
+}
+
+graphic,
+inlinegraphic,
+imagedata {
+ content: gadget("com.xmlmind.xmleditext.docbook.Graphic");
+}
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/css/print.imp b/doc/editor_configs/xmlmind5/addon/config/scons/css/print.imp
new file mode 100644
index 0000000..d12a18b
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/css/print.imp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2003-2005 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Customizes DocBook CSS style sheet for printing.
+ */
+
+@media print {
+ * {
+ background-color: transparent;
+ line-height: 1.2;
+ }
+}
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/css/refentry.imp b/doc/editor_configs/xmlmind5/addon/config/scons/css/refentry.imp
new file mode 100644
index 0000000..80f1890
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/css/refentry.imp
@@ -0,0 +1,524 @@
+/*
+ * Copyright (c) 2003 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Styles for refentry elements.
+ */
+
+/* =====================================
+ Refentry structure
+===================================== */
+
+refentry {
+ display: block;
+ border-width: 1px;
+ border-style: solid;
+ border-color: silver transparent silver transparent;
+ margin: 3ex 0;
+}
+
+refnamediv,
+refsynopsisdiv {
+ display: block;
+ margin: 1ex 0;
+}
+
+refnamediv:before,
+refsynopsisdiv:before {
+ display: block;
+ font-size: 1.3em;
+ font-weight: bold;
+ color: #004080;
+ margin: 1ex 0;
+}
+
+refnamediv:before {
+ content: "Name";
+}
+
+refnamediv > *:before {
+ content: " ";
+}
+
+refnamediv > *:first-child:before {
+ content: "";
+}
+
+refdescriptor,
+refname,
+refpurpose,
+refclass {
+ display: inline;
+}
+
+refpurpose:before,
+refclass:before {
+ content: " -- ";
+ color: gray;
+}
+
+refsynopsisdiv:before {
+ content: "Synopsis";
+}
+
+refsynopsisdiv:contains-element(title):before,
+refsynopsisdiv:contains-element(info):before {
+ content: "";
+}
+
+refsynopsisdiv > title {
+ font-size: 1.3em;
+ margin-top: 0;
+ margin-bottom: 1ex;
+}
+
+refsection,
+refsect1,
+refsect2,
+refsect3 {
+ display: block;
+}
+
+refsection > title,
+refsect1 > title {
+ font-size: 1.3em;
+ margin: 1ex 0;
+}
+
+refsection refsection > title {
+ font-size: 1em;
+ margin: 1.33ex 0;
+}
+
+/* =====================================
+ Synopsis environments
+===================================== */
+
+/* -------------------------------------
+ cmdsynopsis
+------------------------------------- */
+
+cmdsynopsis {
+ display: block;
+ font-family: monospace;
+ margin: 1.33ex 0;
+}
+
+synopfragment {
+ display: block;
+ font-family: monospace;
+ margin-left: 4ex;
+}
+
+arg,
+group {
+ display: inline;
+}
+
+arg:before,
+group:before { /* also works for choice=opt */
+ content: " [";
+ color: gray;
+}
+
+group > arg:before,
+group > group:before {
+ content: " | [";
+}
+
+arg:first-child:before,
+group:first-child:before {
+ content: "[";
+}
+
+arg:after,
+group:after {
+ content: "]";
+ color: gray;
+}
+
+arg[rep=repeat]:after,
+group[rep=repeat]:after {
+ content: "]...";
+ color: gray;
+}
+
+arg[choice=req]:before,
+group[choice=req]:before {
+ content: " {";
+}
+
+group > arg[choice=req]:before,
+group > group[choice=req]:before {
+ content: " | {";
+}
+
+arg[choice=req]:first-child:before,
+group[choice=req]:first-child:before {
+ content: "{";
+}
+
+arg[choice=req]:after,
+group[choice=req]:after {
+ content: "}";
+}
+
+arg[choice=req][rep=repeat]:after,
+group[choice=req][rep=repeat]:after {
+ content: "}...";
+}
+
+arg[choice=plain]:before,
+group[choice=plain]:before {
+ content: " ";
+}
+
+group > arg[choice=plain]:before,
+group > group[choice=plain]:before {
+ content: " | ";
+}
+
+arg[choice=plain]:first-child:before,
+group[choice=plain]:first-child:before {
+ content: "";
+}
+
+arg[choice=plain]:after,
+group[choice=plain]:after {
+ content: "";
+}
+
+arg[choice=plain][rep=repeat]:after,
+group[choice=plain][rep=repeat]:after {
+ content: "...";
+}
+
+synopfragmentref {
+ display: inline;
+ color: navy;
+ text-decoration: underline;
+}
+
+synopfragmentref:after {
+ content: icon(left-link) attr(linkend);
+ vertical-align: text-top; /* for the icon */
+}
+
+/* -------------------------------------
+ funcsynopsis
+------------------------------------- */
+
+funcsynopsis {
+ display: block;
+ font-family: monospace;
+ margin: 1.33ex 0;
+}
+
+funcsynopsisinfo {
+ display: block;
+ white-space: pre;
+ margin: 1.33ex 0;
+}
+
+funcprototype {
+ display: block;
+}
+
+funcprototype > *:before {
+ content: " ";
+}
+
+funcprototype > *:first-child:before {
+ content: "";
+}
+
+funcprototype:after {
+ content: ";";
+ color: gray;
+}
+
+funcdef {
+ display: inline;
+}
+
+void {
+ display: inline;
+ content: "void";
+ color: gray;
+}
+
+funcprototype > void {
+ content: "(void)";
+}
+
+varargs {
+ display: inline;
+ content: "(...)";
+ color: gray;
+}
+
+paramdef + varargs {
+ content: ", ...)";
+}
+
+paramdef {
+ display: inline;
+}
+
+paramdef > parameter {
+ font-style: italic;
+}
+
+paramdef:before {
+ content: ", ";
+ color: gray;
+}
+
+paramdef:first-of-type:before {
+ content: " (";
+}
+
+paramdef:last-of-type:after {
+ content: ")";
+ color: gray;
+}
+
+funcparams {
+ display: inline;
+}
+
+paramdef > funcparams:before {
+ content: "(";
+ color: gray;
+}
+
+paramdef > funcparams:after {
+ content: ")";
+ color: gray;
+}
+
+/* -------------------------------------
+ classsynopsis
+------------------------------------- */
+
+classsynopsis {
+ display: block;
+ font-family: monospace;
+ margin-top: 1.33ex;
+}
+
+ooclass + classsynopsisinfo:before,
+oointerface + classsynopsisinfo:before,
+ooexception + classsynopsisinfo:before,
+ooclass + fieldsynopsis:before,
+oointerface + fieldsynopsis:before,
+ooexception + fieldsynopsis:before,
+ooclass + constructorsynopsis:before,
+oointerface + constructorsynopsis:before,
+ooexception + constructorsynopsis:before,
+ooclass + destructorsynopsis:before,
+oointerface + destructorsynopsis:before,
+ooexception + destructorsynopsis:before,
+ooclass + methodsynopsis:before,
+oointerface + methodsynopsis:before,
+ooexception + methodsynopsis:before {
+ display: block;
+ content: "{";
+ color: gray;
+}
+
+classsynopsis:after {
+ display: block;
+ content: "}";
+ color: gray;
+ margin-bottom: 1.33ex;
+}
+
+classsynopsisinfo {
+ display: block;
+ white-space: pre;
+ margin-left: 4ex;
+ margin-top: 1.33ex;
+ margin-bottom: 1.33ex;
+}
+
+ooclass,
+oointerface,
+ooexception {
+ display: inline;
+ font-family: monospace;
+}
+
+classsynopsis > ooclass:after,
+classsynopsis > oointerface:after,
+classsynopsis > ooexception:after {
+ content: " ";
+}
+
+ooclass > *:before,
+oointerface > *:before,
+ooexception > *:before {
+ content: " ";
+}
+
+ooclass > classname:before {
+ content: " class ";
+ color: gray;
+}
+oointerface > interfacename:before {
+ content: " interface ";
+ color: gray;
+}
+ooexception > exceptionname:before {
+ content: " exception ";
+ color: gray;
+}
+
+ooclass > *:first-child:before,
+oointerface > *:first-child:before,
+ooexception > *:first-child:before {
+ content: "";
+}
+
+ooclass > classname:first-child:before {
+ content: "class ";
+ color: gray;
+}
+oointerface > interfacename:first-child:before {
+ content: "interface ";
+ color: gray;
+}
+ooexception > exceptionname:first-child:before {
+ content: "exception ";
+ color: gray;
+}
+
+fieldsynopsis,
+constructorsynopsis,
+destructorsynopsis,
+methodsynopsis {
+ display: block;
+ font-family: monospace;
+ margin: 1.33ex 0;
+}
+
+classsynopsis > fieldsynopsis,
+classsynopsis > constructorsynopsis,
+classsynopsis > destructorsynopsis,
+classsynopsis > methodsynopsis {
+ margin-left: 4ex;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+fieldsynopsis:after,
+constructorsynopsis:after,
+destructorsynopsis:after,
+methodsynopsis:after {
+ content: ";";
+ color: gray;
+}
+
+fieldsynopsis > *:before,
+constructorsynopsis > *:before,
+destructorsynopsis > *:before,
+methodsynopsis > *:before {
+ content: " ";
+}
+
+fieldsynopsis > *:first-child:before,
+constructorsynopsis > *:first-child:before,
+destructorsynopsis > *:first-child:before,
+methodsynopsis > *:first-child:before {
+ content: "";
+}
+
+constructorsynopsis > exceptionname:before,
+destructorsynopsis > exceptionname:before,
+methodsynopsis > exceptionname:before { /*In practice, cannot be first child*/
+ content: " throws ";
+ color: gray;
+}
+
+methodname + void {
+ content: "(void)";
+}
+
+methodparam {
+ display: inline;
+ /* rep and choice attributes not visualized */
+}
+
+methodparam:before {
+ content: ", ";
+ color: gray;
+}
+
+methodparam:first-of-type:before {
+ content: " (";
+}
+
+methodparam:last-of-type:after{
+ content: ")";
+ color: gray;
+}
+
+methodparam > parameter {
+ font-style: italic;
+}
+
+methodparam > *:before {
+ content: " ";
+}
+
+methodparam > *:first-child:before {
+ content: "";
+}
+
+modifier {
+ display: inline;
+ font-family: monospace;
+}
+
+initializer {
+ display: inline;
+ font-family: monospace;
+}
+
+initializer:before { /* Cannot be first child */
+ content: " = ";
+ color: gray;
+}
+
+/* ---------------------------------------------------------------------------
+ Inlined elements other than those belonging to modules
+
+ Note that default display is inline, so there is no need to specify it.
+--------------------------------------------------------------------------- */
+
+/* -------------------------------------
+ General
+------------------------------------- */
+
+citerefentry {
+ display: inline;
+ font-style: italic;
+}
+
+citerefentry > manvolnum:before {
+ content: "(";
+ color: gray;
+}
+
+citerefentry > manvolnum:after {
+ content: ")";
+ color: gray;
+}
+
+refentrytitle,
+manvolnum,
+refmiscinfo { /* also found in refmeta */
+ display: inline;
+}
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/css/scons.css b/doc/editor_configs/xmlmind5/addon/config/scons/css/scons.css
new file mode 100644
index 0000000..1597226
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/css/scons.css
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2003-2008 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * A CSS style sheet for DocBook V4.5.
+ */
+
+@import "docbook1.imp";
+@import "refentry.imp";
+@import "docbook2.imp";
+@import "html_cals_table.imp";
+@import "image.imp";
+@import "collapsible.imp";
+@import "print.imp";
+
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/css/structure.css b/doc/editor_configs/xmlmind5/addon/config/scons/css/structure.css
new file mode 100644
index 0000000..95f4610
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/css/structure.css
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2005-2008 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Displays the structure (a little more than a TOC) of a DocBook document.
+ * Titles inside *info (e.g. sectioninfo) elements are not displayed.
+ */
+
+*,
+*:comment,
+*:processing-instruction {
+ display: none;
+}
+
+title {
+ display: block;
+}
+
+title > * {
+ display: inline;
+}
+
+set,
+book,
+part,
+reference,
+refentry,
+preface,
+chapter,
+article,
+appendix,
+section,
+sect1,
+sect2,
+sect3,
+sect4,
+sect5 {
+ display: block;
+ margin-left: 9ex;
+}
+
+set:before,
+book:before,
+part:before,
+reference:before,
+refentry:before,
+preface:before,
+chapter:before,
+article:before,
+appendix:before,
+section:before,
+sect1:before,
+sect2:before,
+sect3:before,
+sect4:before,
+sect5:before {
+ display: marker;
+ marker-offset: fill;
+ content: element-name();
+ font-size: small;
+ color: gray;
+}
+
+part > title:before {
+ content: simple-counter(n-, upper-roman) " ";
+}
+
+chapter > title:before {
+ content: simple-counter(n-, decimal) " ";
+}
+
+appendix > title:before {
+ content: simple-counter(n-, upper-alpha) " ";
+}
+
+refentry {
+ content: xpath("join(.//refname, ', ')");
+ color: gray;
+}
+
+section > title:before,
+sect1 > title:before {
+ content: simple-counter(n-) " ";
+}
+
+section section > title:before,
+sect2 > title:before {
+ content: simple-counter(nn-) " ";
+}
+
+section section section > title:before,
+sect3 > title:before {
+ content: simple-counter(nnn-) " ";
+}
+
+section section section section > title:before,
+sect4 > title:before {
+ content: simple-counter(nnnn-) " ";
+}
+
+section section section section section > title:before,
+sect5 > title:before {
+ content: simple-counter(nnnnn-) " ";
+}
+
+section section section section * section > title:before {
+ content: "";
+}
+
+setinfo,
+setindex,
+bookinfo,
+dedication,
+toc,
+lot,
+glossary,
+bibliography,
+index,
+colophon,
+partinfo,
+partintro,
+referenceinfo,
+prefaceinfo,
+chapterinfo,
+tocchap,
+articleinfo,
+appendixinfo,
+sectioninfo,
+sect1info,
+sect2info,
+sect3info,
+sect4info,
+sect5info {
+ display: block;
+ content: element-name();
+ font-size: small;
+ color: gray;
+}
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/css/table.imp b/doc/editor_configs/xmlmind5/addon/config/scons/css/table.imp
new file mode 100644
index 0000000..0b444bb
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/css/table.imp
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2005-2009 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ *
+ * Partial styles for DocBook tables. Requires an @extension.
+ * DO NOT IMPORT THIS FILE: INSTEAD @import cals_table.imp OR
+ * @import html_cals_table.imp.
+ */
+
+table,
+informaltable {
+ display: block;
+ margin: 1.33ex 0;
+}
+
+table > title {
+ display: block;
+ font-style: italic;
+ font-weight: normal;
+ text-align: center;
+ /* keep margin because tgroup has no margin */
+}
+
+colspec,
+spanspec {
+ display: table-column;
+ collapsed: yes;
+}
+
+tgroup {
+ display: table;
+ border-style: solid;
+ border-width: 1;
+}
+
+thead,
+tfoot {
+ display: table-row-group;
+ font-weight: bold;
+}
+
+thead {
+ background-color: #F0F0F0;
+}
+
+tfoot {
+ background-color: #E0E0E0;
+}
+
+tbody {
+ display: table-row-group;
+ background-color: inherit; /*e.g. from read-only tgroup*/
+}
+
+row {
+ display: table-row;
+ background-color: inherit; /*e.g. from read-only tbody*/
+}
+
+entry {
+ display: table-cell;
+ background-color: inherit; /*e.g. from read-only row*/
+ border-style: solid;
+ border-width: 1;
+ padding: 2;
+}
+
+entry > *:first-child {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+entrytbl {
+ display: subtable;
+ background-color: inherit; /*e.g. from read-only row*/
+ border-style: solid;
+ border-width: 1;
+}
+
+@media print {
+ colspec,
+ spanspec {
+ display: none;
+ }
+}
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/css/visible_inclusions.css b/doc/editor_configs/xmlmind5/addon/config/scons/css/visible_inclusions.css
new file mode 100644
index 0000000..f66b094
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/css/visible_inclusions.css
@@ -0,0 +1,9 @@
+/*
+ * Copyright (c) 2003-2004 Pixware.
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ */
+
+@import "docbook.css";
+@import "../../common/css/visible_inclusions.imp"; \ No newline at end of file
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/htmlTable.incl b/doc/editor_configs/xmlmind5/addon/config/scons/htmlTable.incl
new file mode 100644
index 0000000..5ea16b8
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/htmlTable.incl
@@ -0,0 +1,195 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<configuration
+ xmlns="http://www.xmlmind.com/xmleditor/schema/configuration"
+ xmlns:cfg="http://www.xmlmind.com/xmleditor/schema/configuration">
+
+ <!-- Without this, a tgroup is created with a tbody containing tr. -->
+
+ <cfg:elementTemplate xmlns="" name="CALS" selectable="override"
+ parent="tgroup|entrytbl">
+ <tbody>
+ <row><entry></entry></row>
+ </tbody>
+ </cfg:elementTemplate>
+
+ <cfg:elementTemplate xmlns="" name="CALS" selectable="override"
+ parent="tgroup|entrytbl">
+ <thead>
+ <row><entry></entry></row>
+ </thead>
+ </cfg:elementTemplate>
+
+ <cfg:elementTemplate xmlns="" name="CALS" selectable="override"
+ parent="tgroup|entrytbl">
+ <tfoot>
+ <row><entry></entry></row>
+ </tfoot>
+ </cfg:elementTemplate>
+
+ <cfg:elementTemplate xmlns="" name="HTML" selectable="override"
+ parent="table|informaltable">
+ <tbody>
+ <tr><td></td></tr>
+ </tbody>
+ </cfg:elementTemplate>
+
+ <cfg:elementTemplate xmlns="" name="HTML" selectable="override"
+ parent="table|informaltable">
+ <thead>
+ <tr><th></th></tr>
+ </thead>
+ </cfg:elementTemplate>
+
+ <cfg:elementTemplate xmlns="" name="HTML" selectable="override"
+ parent="table|informaltable">
+ <tfoot>
+ <tr><th></th></tr>
+ </tfoot>
+ </cfg:elementTemplate>
+
+ <!-- HTML table templates =============================================== -->
+
+ <!-- selectable="false" is used to avoid clutter in the Element menu.
+ Therefore these templates can only be used by the macros triggered
+ by toobar buttons. -->
+
+ <elementTemplate name="HTML" selectable="false">
+ <informaltable xmlns="" border="1">
+ <tr>
+ <td></td><td></td>
+ </tr>
+ <tr>
+ <td></td><td></td>
+ </tr>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="HTML_head_row" selectable="false">
+ <informaltable xmlns="" frame="box" rules="all">
+ <thead>
+ <tr align="center">
+ <th></th><th></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td></td><td></td>
+ </tr>
+ <tr>
+ <td></td><td></td>
+ </tr>
+ </tbody>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="HTML_head_column" selectable="false">
+ <informaltable xmlns="" frame="box" rules="all">
+ <col align="center" span="1" />
+ <tbody>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ </tbody>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="HTML_head_row_column" selectable="false">
+ <informaltable xmlns="" frame="box" rules="all">
+ <col align="center" span="1" />
+ <thead>
+ <tr align="center">
+ <th></th><th></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ </tbody>
+ </informaltable>
+ </elementTemplate>
+
+ <elementTemplate name="HTML" selectable="false">
+ <table xmlns="" border="1">
+ <caption></caption>
+ <tr>
+ <td></td><td></td>
+ </tr>
+ <tr>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </elementTemplate>
+
+ <elementTemplate name="HTML_head_row" selectable="false">
+ <table xmlns="" frame="box" rules="all">
+ <caption></caption>
+ <thead>
+ <tr align="center">
+ <th></th><th></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td></td><td></td>
+ </tr>
+ <tr>
+ <td></td><td></td>
+ </tr>
+ </tbody>
+ </table>
+ </elementTemplate>
+
+ <elementTemplate name="HTML_head_column" selectable="false">
+ <table xmlns="" frame="box" rules="all">
+ <caption></caption>
+ <col align="center" span="1" />
+ <tbody>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ </tbody>
+ </table>
+ </elementTemplate>
+
+ <elementTemplate name="HTML_head_row_column" selectable="false">
+ <table xmlns="" frame="box" rules="all">
+ <caption></caption>
+ <col align="center" span="1" />
+ <thead>
+ <tr align="center">
+ <th></th><th></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ <tr>
+ <th></th><td></td>
+ </tr>
+ </tbody>
+ </table>
+ </elementTemplate>
+</configuration>
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons.css b/doc/editor_configs/xmlmind5/addon/config/scons/scons.css
new file mode 100644
index 0000000..8f52269
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons.css
@@ -0,0 +1,11 @@
+doc,
+para {
+ display: block;
+}
+para {
+ margin: 1ex 0;
+}
+para[align] {
+ text-align: concatenate(attr(align));
+}
+
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons.xxe b/doc/editor_configs/xmlmind5/addon/config/scons/scons.xxe
new file mode 100644
index 0000000..8f835cc
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons.xxe
@@ -0,0 +1,37 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<configuration name="SCons" mimeType="application/docbook+xml"
+ xmlns="http://www.xmlmind.com/xmleditor/schema/configuration"
+ xmlns:cfg="http://www.xmlmind.com/xmleditor/schema/configuration"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <help location="docbook_help.jar" />
+ <include location="common.incl" />
+
+ <detect>
+ <and>
+ <rootElementNamespace>http://www.scons.org/dbxsd/v1.0</rootElementNamespace>
+ </and>
+ </detect>
+ <schema>
+ <location>http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd</location>
+ </schema>
+ <template name="Book" location="scons_templates/book.xml" />
+ <template name="Article" location="scons_templates/article.xml" />
+ <template name="Part" location="scons_templates/part.xml" />
+ <template name="Chapter" location="scons_templates/chapter.xml" />
+ <template name="Refentry" location="scons_templates/refentry.xml" />
+ <template name="Appendix" location="scons_templates/appendix.xml" />
+ <template name="Glossary" location="scons_templates/glossary.xml" />
+ <template name="Section" location="scons_templates/section.xml" />
+ <template name="Sconsdoc" location="scons_templates/sconsdoc.xml" />
+
+ <css name="SCons" location="css/scons.css" />
+ <css name="Document structure" alternate="true"
+ location="css/structure.css" />
+ <!-- In principle, this is used to debug modular documents
+ but we think that some users may also like this way of
+ making documents modules more visible. -->
+ <css name="Show info about included elements" alternate="true"
+ location="css/visible_inclusions.css" />
+</configuration>
+
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_catalog.xml b/doc/editor_configs/xmlmind5/addon/config/scons/scons_catalog.xml
new file mode 100644
index 0000000..5146cfa
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_catalog.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" ?>
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"
+ prefer="public">
+ <uri name="http://www.scons.org/dbxsd/v1.0/scons.xsd"
+ uri="scons_xsd/scons.xsd"/>
+ <uriSuffix uriSuffix="scons.xsd"
+ uri="scons_xsd/scons.xsd"/>
+</catalog>
+
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/appendix.xml b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/appendix.xml
new file mode 100644
index 0000000..6d245db
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/appendix.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<appendix xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+ <title></title>
+ <section>
+ <title></title>
+ <para></para>
+ </section>
+</appendix>
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/article.xml b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/article.xml
new file mode 100644
index 0000000..8153efb
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/article.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<article xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+ <articleinfo>
+ <title></title>
+ <author>
+ <firstname></firstname>
+ <surname></surname>
+ <affiliation>
+ <orgname></orgname>
+ </affiliation>
+ </author>
+ <pubdate></pubdate>
+ </articleinfo>
+ <section>
+ <title></title>
+ <para></para>
+ </section>
+</article>
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/book.xml b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/book.xml
new file mode 100644
index 0000000..671ad45
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/book.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<book xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+ <bookinfo>
+ <title></title>
+ <author>
+ <firstname></firstname>
+ <surname></surname>
+ <affiliation>
+ <orgname></orgname>
+ </affiliation>
+ </author>
+ <pubdate></pubdate>
+ </bookinfo>
+ <chapter>
+ <title></title>
+ <section>
+ <title></title>
+ <para></para>
+ </section>
+ </chapter>
+</book>
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/chapter.xml b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/chapter.xml
new file mode 100644
index 0000000..e39fab1
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/chapter.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<chapter xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+ <title></title>
+ <section>
+ <title></title>
+ <para></para>
+ </section>
+</chapter>
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/glossary.xml b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/glossary.xml
new file mode 100644
index 0000000..bc874a5
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/glossary.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glossary xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+ <glossdiv>
+ <title></title>
+
+ <glossentry>
+ <glossterm></glossterm>
+
+ <glossdef>
+ <para></para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+</glossary>
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/part.xml b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/part.xml
new file mode 100644
index 0000000..74cd2e1
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/part.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<part xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+ <title></title>
+ <chapter>
+ <title></title>
+ <section>
+ <title></title>
+ <para></para>
+ </section>
+ </chapter>
+</part>
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/refentry.xml b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/refentry.xml
new file mode 100644
index 0000000..e49692c
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/refentry.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<refentry xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+ <refmeta>
+ <refentrytitle></refentrytitle>
+ <manvolnum></manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname></refname>
+ <refpurpose></refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command></command>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsection>
+ <title>Description</title>
+ <para></para>
+ </refsection>
+</refentry>
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/sconsdoc.xml b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/sconsdoc.xml
new file mode 100644
index 0000000..423d83d
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/sconsdoc.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+ <tool name="Foo">
+ <summary>
+ <para></para>
+ </summary>
+ </tool>
+ <cvar name="BAR">
+ <summary>
+ <para></para>
+ </summary>
+ </cvar>
+</sconsdoc>
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/section.xml b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/section.xml
new file mode 100644
index 0000000..4681b49
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_templates/section.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<section xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+ <title></title>
+ <para></para>
+</section>
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/calstblx.xsd b/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/calstblx.xsd
new file mode 100644
index 0000000..6f899a3
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/calstblx.xsd
@@ -0,0 +1,390 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML CALS Table Model V4.5 .... -->
+<!-- File calstblx.xsd .................................................... -->
+
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook CALS Table Model V4.5 with:
+
+ Copyright 1992-2002 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ This DTD is based on the CALS Table Model
+ PUBLIC "-//USA-DOD//DTD Table Model 951010//EN"
+
+ $Id: calstblx.dtd 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for the CALS Table Model
+ converted to XML. It has been modified slightly for use in the
+ combined HTML/CALS models supported by DocBook V4.5.
+-->
+<!--
+ These definitions are not directly related to the table model, but are
+ used in the default CALS table model and are usually defined elsewhere
+ (and prior to the inclusion of this table module) in a CALS DTD.
+-->
+<!--
+ no if zero(s),
+ yes if any other digits value
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:simpleType name="yesorno">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:group name="titles">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- default for use in entry content -->
+ <!--
+ The parameter entities as defined below provide the CALS table model
+ as published (as part of the Example DTD) in MIL-HDBK-28001.
+
+ These following declarations provide the CALS-compliant default definitions
+ for these entities. However, these entities can and should be redefined
+ (by giving the appropriate parameter entity declaration(s) prior to the
+ reference to this Table Model declaration set entity) to fit the needs
+ of the current application.
+ -->
+ <xs:group name="tbl.table-titles.mdl">
+ <xs:sequence>
+ <xs:group ref="titles"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="tbl.table-main.mdl">
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tgroup"/>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ </xs:choice>
+ </xs:group>
+ <xs:complexType name="tbl.tgroup.mdl">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colspec"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="spanspec"/>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element minOccurs="0" ref="tfoot"/>
+ <xs:element ref="tbody"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:attributeGroup name="tbl.tgroup.att">
+ <xs:attribute name="tgroupstyle"/>
+ </xs:attributeGroup>
+ <xs:complexType name="tbl.row.mdl">
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="entry"/>
+ <xs:element ref="entrytbl"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="tbl.entrytbl.mdl">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colspec"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="spanspec"/>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element ref="tbody"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- ===== Element and attribute declarations follow. ===== -->
+ <!-- doc:A formal table in a document. -->
+ <xs:element name="table" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.table.mdl">
+ <xs:attributeGroup ref="table.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="table.attlist">
+ <xs:attribute name="frame" type="tbl.frame.attval"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attributeGroup ref="tbl.table.att"/>
+ <xs:attributeGroup ref="bodyatt"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the main content of a table, or part of a table. -->
+ <xs:element name="tgroup">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.tgroup.mdl">
+ <xs:attributeGroup ref="tgroup.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="tgroup.attlist">
+ <xs:attribute name="cols" use="required"/>
+ <xs:attributeGroup ref="tbl.tgroup.att"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:Specifications for a column in a table. -->
+ <xs:element name="colspec">
+ <xs:complexType>
+ <xs:attributeGroup ref="colspec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="colspec.attlist">
+ <xs:attribute name="colnum"/>
+ <xs:attribute name="colname"/>
+ <xs:attribute name="colwidth"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ </xs:attributeGroup>
+ <!-- doc:Formatting information for a spanned column in a table. -->
+ <xs:element name="spanspec">
+ <xs:complexType>
+ <xs:attributeGroup ref="spanspec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="spanspec.attlist">
+ <xs:attribute name="namest" use="required"/>
+ <xs:attribute name="nameend" use="required"/>
+ <xs:attribute name="spanname" use="required"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ </xs:attributeGroup>
+ <!-- doc:A table header consisting of one or more rows. -->
+ <xs:element name="thead">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.hdft.mdl">
+ <xs:attributeGroup ref="thead.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="thead.attlist">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A table footer consisting of one or more rows. -->
+ <xs:element name="tfoot">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.hdft.mdl">
+ <xs:attributeGroup ref="tfoot.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="tfoot.attlist">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the rows of a table or informal table. -->
+ <xs:element name="tbody">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.tbody.mdl">
+ <xs:attributeGroup ref="tbody.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="tbody.attlist">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A row in a table. -->
+ <xs:element name="row">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.row.mdl">
+ <xs:attributeGroup ref="row.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="row.attlist">
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A subtable appearing in place of an Entry in a table. -->
+ <xs:element name="entrytbl">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="tbl.entrytbl.mdl">
+ <xs:attributeGroup ref="entrytbl.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="entrytbl.attlist">
+ <xs:attribute name="cols" use="required"/>
+ <xs:attributeGroup ref="tbl.tgroup.att"/>
+ <xs:attribute name="colname"/>
+ <xs:attribute name="spanname"/>
+ <xs:attribute name="namest"/>
+ <xs:attribute name="nameend"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- doc:A cell in a table. -->
+ <xs:element name="entry">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="tbl.entry.mdl"/>
+ <xs:attributeGroup ref="entry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="entry.attlist">
+ <xs:attribute name="colname"/>
+ <xs:attribute name="namest"/>
+ <xs:attribute name="nameend"/>
+ <xs:attribute name="spanname"/>
+ <xs:attribute name="morerows"/>
+ <xs:attribute name="colsep" type="yesorno"/>
+ <xs:attribute name="rowsep" type="yesorno"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ <xs:attribute name="rotate" type="yesorno"/>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+</xs:schema>
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML CALS Table Model V4.5 ... -->
+<!-- ............................................................................ -->
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/dbhierx.xsd b/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/dbhierx.xsd
new file mode 100644
index 0000000..af99df6
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/dbhierx.xsd
@@ -0,0 +1,2186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- .............................................................................. -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML document hierarchy module V4.5 ... -->
+<!-- File dbhierx.xsd ............................................................. -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook document hierarchy
+ module V4.5 with:
+
+ Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbhierx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for the overall document
+ hierarchies of DocBook documents. It covers computer documentation
+ manuals and manual fragments, as well as reference entries (such as
+ man pages) and technical journals or anthologies containing
+ articles.
+
+ This module depends on the DocBook information pool module. All
+ elements and entities referenced but not defined here are assumed
+ to be defined in the information pool module.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbhier PUBLIC
+ "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.5//EN"
+ "dbhierx.mod">
+ %dbhier;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ...................................................................... -->
+<!-- Entities for module inclusions ....................................... -->
+<!-- ...................................................................... -->
+<!-- Entities for element classes ......................................... -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:element name="appendix.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="appendixinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="appendix.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="article.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:element minOccurs="0" ref="articleinfo"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="lot"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="nav.class"/>
+ <xs:element ref="appendix.class"/>
+ <xs:element ref="colophon"/>
+ <xs:element ref="ackno"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="article.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="book.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:element minOccurs="0" ref="bookinfo"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="dedication"/>
+ <xs:element ref="toc"/>
+ <xs:element ref="lot"/>
+ <xs:element ref="glossary"/>
+ <xs:element ref="bibliography"/>
+ <xs:element ref="preface"/>
+ <xs:element ref="chapter.class"/>
+ <xs:element ref="reference"/>
+ <xs:element ref="part"/>
+ <xs:element ref="article.class"/>
+ <xs:element ref="appendix.class"/>
+ <xs:group ref="index.class"/>
+ <xs:element ref="colophon"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="book.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="chapter.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="chapterinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="chapter.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:group name="index.class">
+ <xs:choice>
+ <xs:element ref="index"/>
+ <xs:element ref="setindex"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="refentry.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element minOccurs="0" ref="refentryinfo"/>
+ <xs:element minOccurs="0" ref="refmeta"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="remark"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ <xs:element maxOccurs="unbounded" ref="refnamediv"/>
+ <xs:element minOccurs="0" ref="refsynopsisdiv"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="refsect1"/>
+ <xs:element maxOccurs="unbounded" ref="refsection"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="section.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sectioninfo"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="section.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="section.class"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="section.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:group name="nav.class">
+ <xs:choice>
+ <xs:element ref="toc"/>
+ <xs:element ref="lot"/>
+ <xs:element ref="index"/>
+ <xs:element ref="glossary"/>
+ <xs:element ref="bibliography"/>
+ </xs:choice>
+ </xs:group>
+ <!-- Redeclaration placeholder ............................................ -->
+ <!--
+ For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point
+ -->
+ <!-- ...................................................................... -->
+ <!-- Entities for element mixtures ........................................ -->
+ <xs:group name="divcomponent.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="compound.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="refcomponent.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="compound.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="indexdivcomponent.mix">
+ <xs:choice>
+ <xs:element ref="itemizedlist"/>
+ <xs:element ref="orderedlist"/>
+ <xs:element ref="variablelist"/>
+ <xs:element ref="simplelist"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="anchor"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="refname.char.mix">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="tech.char.class"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="partcontent.mix">
+ <xs:choice>
+ <xs:element ref="appendix.class"/>
+ <xs:element ref="chapter.class"/>
+ <xs:group ref="nav.class"/>
+ <xs:element ref="article.class"/>
+ <xs:element ref="preface"/>
+ <xs:element ref="refentry.class"/>
+ <xs:element ref="reference"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="refinline.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="refclass.char.mix">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="application"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- Redeclaration placeholder 2 .......................................... -->
+ <!--
+ For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point
+ -->
+ <!-- ...................................................................... -->
+ <!-- Entities for content models .......................................... -->
+ <xs:group name="div.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="bookcomponent.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="sect.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="refsect.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="subtitle"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="bookcomponent.content">
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect1"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="section.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="sect1"/>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ <xs:element maxOccurs="unbounded" ref="section.class"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+ <!-- ...................................................................... -->
+ <!-- Set and SetInfo ...................................................... -->
+ <xs:attributeGroup name="set.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A collection of books. -->
+ <xs:element name="set">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:element minOccurs="0" ref="setinfo"/>
+ <xs:element minOccurs="0" ref="toc"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="set"/>
+ <xs:element ref="book.class"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="setindex"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="set.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of set.element -->
+ <!-- FPI: SGML formal public identifier -->
+ <xs:attributeGroup name="set.attlist">
+ <xs:attribute name="fpi"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="set.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of set.attlist -->
+ <!-- end of set.module -->
+ <xs:attributeGroup name="setinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Set. -->
+ <xs:element name="setinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="setinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of setinfo.element -->
+ <!--
+ Contents: IDs of the ToC, Books, and SetIndex that comprise
+ the set, in the order of their appearance
+ -->
+ <xs:attributeGroup name="setinfo.attlist">
+ <xs:attribute name="contents" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="setinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of setinfo.attlist -->
+ <!-- end of setinfo.module -->
+ <!-- end of set.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Book and BookInfo .................................................... -->
+ <xs:attributeGroup name="book.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A book. -->
+ <xs:element name="book" substitutionGroup="book.class"/>
+ <!-- end of book.element -->
+ <!-- FPI: SGML formal public identifier -->
+ <xs:attributeGroup name="book.attlist">
+ <xs:attribute name="fpi"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="book.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of book.attlist -->
+ <!-- end of book.module -->
+ <xs:attributeGroup name="bookinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Book. -->
+ <xs:element name="bookinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="bookinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bookinfo.element -->
+ <!--
+ Contents: IDs of the ToC, LoTs, Prefaces, Parts, Chapters,
+ Appendixes, References, GLossary, Bibliography, and indexes
+ comprising the Book, in the order of their appearance
+ -->
+ <xs:attributeGroup name="bookinfo.attlist">
+ <xs:attribute name="contents" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bookinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bookinfo.attlist -->
+ <!-- end of bookinfo.module -->
+ <!-- end of book.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Dedication, ToC, and LoT ............................................. -->
+ <xs:attributeGroup name="dedication.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the dedication section of a book. -->
+ <xs:element name="dedication">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="legalnotice.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="dedication.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of dedication.element -->
+ <xs:attributeGroup name="dedication.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="dedication.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of dedication.attlist -->
+ <!-- end of dedication.module -->
+ <xs:attributeGroup name="colophon.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text at the back of a book describing facts about its production. -->
+ <xs:element name="colophon">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="textobject.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="colophon.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of colophon.element -->
+ <xs:attributeGroup name="colophon.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="colophon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of colophon.attlist -->
+ <!-- end of colophon.module -->
+ <xs:attributeGroup name="toc.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A table of contents. -->
+ <xs:element name="toc">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="tocfront"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="tocpart"/>
+ <xs:element ref="tocchap"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="tocback"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toc.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toc.element -->
+ <xs:attributeGroup name="toc.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toc.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toc.attlist -->
+ <!-- end of toc.module -->
+ <xs:attributeGroup name="tocfront.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a front matter component. -->
+ <xs:element name="tocfront">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="tocfront.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocfront.element -->
+ <!-- to element that this entry represents -->
+ <xs:attributeGroup name="tocfront.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocfront.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocfront.attlist -->
+ <!-- end of tocfront.module -->
+ <xs:attributeGroup name="tocentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A component title in a table of contents. -->
+ <xs:element name="tocentry">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="tocentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocentry.element -->
+ <!-- to element that this entry represents -->
+ <xs:attributeGroup name="tocentry.attlist">
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocentry.attlist -->
+ <!-- end of tocentry.module -->
+ <xs:attributeGroup name="tocpart.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a part of a book. -->
+ <xs:element name="tocpart">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="tocchap"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tocpart.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocpart.element -->
+ <xs:attributeGroup name="tocpart.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocpart.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocpart.attlist -->
+ <!-- end of tocpart.module -->
+ <xs:attributeGroup name="tocchap.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a component in the body of a document. -->
+ <xs:element name="tocchap">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel1"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tocchap.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocchap.element -->
+ <xs:attributeGroup name="tocchap.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocchap.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocchap.attlist -->
+ <!-- end of tocchap.module -->
+ <xs:attributeGroup name="toclevel1.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A top-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel2"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel1.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel1.element -->
+ <xs:attributeGroup name="toclevel1.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel1.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel1.attlist -->
+ <!-- end of toclevel1.module -->
+ <xs:attributeGroup name="toclevel2.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A second-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel3"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel2.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel2.element -->
+ <xs:attributeGroup name="toclevel2.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel2.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel2.attlist -->
+ <!-- end of toclevel2.module -->
+ <xs:attributeGroup name="toclevel3.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A third-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel4"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel3.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel3.element -->
+ <xs:attributeGroup name="toclevel3.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel3.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel3.attlist -->
+ <!-- end of toclevel3.module -->
+ <xs:attributeGroup name="toclevel4.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A fourth-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel4">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="toclevel5"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel4.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel4.element -->
+ <xs:attributeGroup name="toclevel4.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel4.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel4.attlist -->
+ <!-- end of toclevel4.module -->
+ <xs:attributeGroup name="toclevel5.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A fifth-level entry within a table of contents entry for a chapter-like component. -->
+ <xs:element name="toclevel5">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tocentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="toclevel5.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of toclevel5.element -->
+ <xs:attributeGroup name="toclevel5.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="toclevel5.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of toclevel5.attlist -->
+ <!-- end of toclevel5.module -->
+ <xs:attributeGroup name="tocback.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a table of contents for a back matter component. -->
+ <xs:element name="tocback">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="tocback.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tocback.element -->
+ <!-- to element that this entry represents -->
+ <xs:attributeGroup name="tocback.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tocback.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tocback.attlist -->
+ <!-- end of tocback.module -->
+ <!-- end of toc.content.module -->
+ <xs:attributeGroup name="lot.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list of the titles of formal objects (as tables or figures) in a document. -->
+ <xs:element name="lot">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="lotentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="lot.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lot.element -->
+ <xs:attributeGroup name="lot.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lot.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lot.attlist -->
+ <!-- end of lot.module -->
+ <xs:attributeGroup name="lotentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a list of titles. -->
+ <xs:element name="lotentry">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="lotentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lotentry.element -->
+ <!--
+ SrcCredit: Information about the source of the entry,
+ as for a list of illustrations
+ -->
+ <!-- linkend: to element that this entry represents -->
+ <xs:attributeGroup name="lotentry.attlist">
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attribute name="srccredit"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lotentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lotentry.attlist -->
+ <!-- end of lotentry.module -->
+ <!-- end of lot.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Appendix, Chapter, Part, Preface, Reference, PartIntro ............... -->
+ <xs:attributeGroup name="appendix.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An appendix in a Book or Article. -->
+ <xs:element name="appendix" substitutionGroup="appendix.class"/>
+ <!-- end of appendix.element -->
+ <xs:attributeGroup name="appendix.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="appendix.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of appendix.attlist -->
+ <!-- end of appendix.module -->
+ <xs:attributeGroup name="chapter.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A chapter, as of a book. -->
+ <xs:element name="chapter" substitutionGroup="chapter.class"/>
+ <!-- end of chapter.element -->
+ <xs:attributeGroup name="chapter.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="chapter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of chapter.attlist -->
+ <!-- end of chapter.module -->
+ <!--
+ Note that Part was to have its content model reduced in V4.5. This
+ change will not be made after all.
+ -->
+ <xs:attributeGroup name="part.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division in a book. -->
+ <xs:element name="part">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="partinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" ref="partintro"/>
+ <xs:group maxOccurs="unbounded" ref="partcontent.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="part.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of part.element -->
+ <xs:attributeGroup name="part.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="part.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of part.attlist -->
+ <!-- ELEMENT PartIntro (defined below) -->
+ <!-- end of part.module -->
+ <xs:attributeGroup name="preface.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Introductory matter preceding the first chapter of a book. -->
+ <xs:element name="preface">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="prefaceinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:element minOccurs="0" ref="tocchap"/>
+ <xs:group ref="bookcomponent.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="preface.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of preface.element -->
+ <xs:attributeGroup name="preface.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="preface.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of preface.attlist -->
+ <!-- end of preface.module -->
+ <xs:attributeGroup name="reference.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A collection of reference entries. -->
+ <xs:element name="reference">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="beginpage"/>
+ <xs:element minOccurs="0" ref="referenceinfo"/>
+ <xs:group ref="bookcomponent.title.content"/>
+ <xs:element minOccurs="0" ref="partintro"/>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="reference.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of reference.element -->
+ <xs:attributeGroup name="reference.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="reference.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of reference.attlist -->
+ <!-- ELEMENT PartIntro (defined below) -->
+ <!-- end of reference.module -->
+ <xs:attributeGroup name="partintro.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An introduction to the contents of a part. -->
+ <xs:element name="partintro">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="div.title.content"/>
+ <xs:group ref="bookcomponent.content"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="partintro.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of partintro.element -->
+ <xs:attributeGroup name="partintro.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="partintro.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of partintro.attlist -->
+ <!-- end of partintro.module -->
+ <!-- ...................................................................... -->
+ <!-- Other Info elements .................................................. -->
+ <xs:attributeGroup name="appendixinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an Appendix. -->
+ <xs:element name="appendixinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="appendixinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of appendixinfo.element -->
+ <xs:attributeGroup name="appendixinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="appendixinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of appendixinfo.attlist -->
+ <!-- end of appendixinfo.module -->
+ <xs:attributeGroup name="bibliographyinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Bibliography. -->
+ <xs:element name="bibliographyinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="bibliographyinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliographyinfo.element -->
+ <xs:attributeGroup name="bibliographyinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliographyinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliographyinfo.attlist -->
+ <!-- end of bibliographyinfo.module -->
+ <xs:attributeGroup name="chapterinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Chapter. -->
+ <xs:element name="chapterinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="chapterinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of chapterinfo.element -->
+ <xs:attributeGroup name="chapterinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="chapterinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of chapterinfo.attlist -->
+ <!-- end of chapterinfo.module -->
+ <xs:attributeGroup name="glossaryinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Glossary. -->
+ <xs:element name="glossaryinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="glossaryinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossaryinfo.element -->
+ <xs:attributeGroup name="glossaryinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossaryinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossaryinfo.attlist -->
+ <!-- end of glossaryinfo.module -->
+ <xs:attributeGroup name="indexinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an Index. -->
+ <xs:element name="indexinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="indexinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of indexinfo.element -->
+ <xs:attributeGroup name="indexinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexinfo.attlist -->
+ <!-- end of indexinfo.module -->
+ <xs:attributeGroup name="setindexinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a SetIndex. -->
+ <xs:element name="setindexinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="setindexinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of setindexinfo.element -->
+ <xs:attributeGroup name="setindexinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="setindexinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of setindexinfo.attlist -->
+ <!-- end of setindexinfo.module -->
+ <xs:attributeGroup name="partinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Part. -->
+ <xs:element name="partinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="partinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of partinfo.element -->
+ <xs:attributeGroup name="partinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="partinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of partinfo.attlist -->
+ <!-- end of partinfo.module -->
+ <xs:attributeGroup name="prefaceinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Preface. -->
+ <xs:element name="prefaceinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="prefaceinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of prefaceinfo.element -->
+ <xs:attributeGroup name="prefaceinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="prefaceinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of prefaceinfo.attlist -->
+ <!-- end of prefaceinfo.module -->
+ <xs:attributeGroup name="refentryinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Refentry. -->
+ <xs:element name="refentryinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refentryinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refentryinfo.element -->
+ <xs:attributeGroup name="refentryinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refentryinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refentryinfo.attlist -->
+ <!-- end of refentryinfo.module -->
+ <xs:attributeGroup name="refsectioninfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a refsection. -->
+ <xs:element name="refsectioninfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsectioninfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsectioninfo.element -->
+ <xs:attributeGroup name="refsectioninfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsectioninfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsectioninfo.attlist -->
+ <!-- end of refsectioninfo.module -->
+ <xs:attributeGroup name="refsect1info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSect1. -->
+ <xs:element name="refsect1info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsect1info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect1info.element -->
+ <xs:attributeGroup name="refsect1info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect1info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect1info.attlist -->
+ <!-- end of refsect1info.module -->
+ <xs:attributeGroup name="refsect2info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSect2. -->
+ <xs:element name="refsect2info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsect2info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect2info.element -->
+ <xs:attributeGroup name="refsect2info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect2info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect2info.attlist -->
+ <!-- end of refsect2info.module -->
+ <xs:attributeGroup name="refsect3info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSect3. -->
+ <xs:element name="refsect3info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsect3info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect3info.element -->
+ <xs:attributeGroup name="refsect3info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect3info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect3info.attlist -->
+ <!-- end of refsect3info.module -->
+ <xs:attributeGroup name="refsynopsisdivinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a RefSynopsisDiv. -->
+ <xs:element name="refsynopsisdivinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="refsynopsisdivinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsynopsisdivinfo.element -->
+ <xs:attributeGroup name="refsynopsisdivinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsynopsisdivinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsynopsisdivinfo.attlist -->
+ <!-- end of refsynopsisdivinfo.module -->
+ <xs:attributeGroup name="referenceinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Reference. -->
+ <xs:element name="referenceinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="referenceinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of referenceinfo.element -->
+ <xs:attributeGroup name="referenceinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="referenceinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of referenceinfo.attlist -->
+ <!-- end of referenceinfo.module -->
+ <xs:attributeGroup name="sect1info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect1. -->
+ <xs:element name="sect1info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect1info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect1info.element -->
+ <xs:attributeGroup name="sect1info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect1info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect1info.attlist -->
+ <xs:attributeGroup name="sect2info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect2. -->
+ <xs:element name="sect2info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect2info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect2info.element -->
+ <xs:attributeGroup name="sect2info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect2info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect2info.attlist -->
+ <xs:attributeGroup name="sect3info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect3. -->
+ <xs:element name="sect3info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect3info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect3info.element -->
+ <xs:attributeGroup name="sect3info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect3info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect3info.attlist -->
+ <xs:attributeGroup name="sect4info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect4. -->
+ <xs:element name="sect4info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect4info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect4info.element -->
+ <xs:attributeGroup name="sect4info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect4info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect4info.attlist -->
+ <xs:attributeGroup name="sect5info.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sect5. -->
+ <xs:element name="sect5info">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sect5info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect5info.element -->
+ <xs:attributeGroup name="sect5info.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect5info.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect5info.attlist -->
+ <!-- ...................................................................... -->
+ <!-- Section (parallel to Sect*) ......................................... -->
+ <xs:attributeGroup name="section.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A recursive section. -->
+ <xs:element name="section" substitutionGroup="section.class"/>
+ <!-- end of section.element -->
+ <xs:attributeGroup name="section.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="section.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of section.attlist -->
+ <!-- end of section.module -->
+ <xs:attributeGroup name="sectioninfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a recursive section. -->
+ <xs:element name="sectioninfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sectioninfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sectioninfo.element -->
+ <xs:attributeGroup name="sectioninfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sectioninfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sectioninfo.attlist -->
+ <!-- end of sectioninfo.module -->
+ <!-- end of section.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Sect1, Sect2, Sect3, Sect4, Sect5 .................................... -->
+ <xs:attributeGroup name="sect1.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A top-level section of document. -->
+ <xs:element name="sect1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect1info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect2"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect2"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect1.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect1.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect1.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect1.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect1.attlist -->
+ <!-- end of sect1.module -->
+ <xs:attributeGroup name="sect2.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect1. -->
+ <xs:element name="sect2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect2info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect3"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect3"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect2.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect2.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect2.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect2.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect2.attlist -->
+ <!-- end of sect2.module -->
+ <xs:attributeGroup name="sect3.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect2. -->
+ <xs:element name="sect3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect3info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect4"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect4"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect3.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect3.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect3.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect3.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect3.attlist -->
+ <!-- end of sect3.module -->
+ <xs:attributeGroup name="sect4.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect3. -->
+ <xs:element name="sect4">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect4info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="sect5"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="sect5"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect4.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect4.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect4.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect4.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect4.attlist -->
+ <!-- end of sect4.module -->
+ <xs:attributeGroup name="sect5.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection within a Sect4. -->
+ <xs:element name="sect5">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sect5info"/>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refentry.class"/>
+ <xs:element maxOccurs="unbounded" ref="simplesect"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="nav.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sect5.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sect5.element -->
+ <!--
+ Renderas: Indicates the format in which the heading should
+ appear
+ -->
+ <xs:attributeGroup name="sect5.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sect5.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sect5.attlist -->
+ <!-- end of sect5.module -->
+ <xs:attributeGroup name="simplesect.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A section of a document with no subdivisions. -->
+ <xs:element name="simplesect">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="sect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="divcomponent.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="simplesect.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simplesect.element -->
+ <xs:attributeGroup name="simplesect.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simplesect.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simplesect.attlist -->
+ <!-- end of simplesect.module -->
+ <!-- ...................................................................... -->
+ <!-- Bibliography ......................................................... -->
+ <xs:attributeGroup name="bibliography.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A bibliography. -->
+ <xs:element name="bibliography">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="bibliographyinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="bibliodiv"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="biblioentry"/>
+ <xs:element ref="bibliomixed"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="bibliography.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliography.element -->
+ <xs:attributeGroup name="bibliography.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliography.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliography.attlist -->
+ <!-- end of bibliography.module -->
+ <xs:attributeGroup name="bibliodiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A section of a Bibliography. -->
+ <xs:element name="bibliodiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="biblioentry"/>
+ <xs:element ref="bibliomixed"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="bibliodiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliodiv.element -->
+ <xs:attributeGroup name="bibliodiv.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliodiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliodiv.attlist -->
+ <!-- end of bibliodiv.module -->
+ <!-- end of bibliography.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Glossary ............................................................. -->
+ <xs:attributeGroup name="glossary.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A glossary. -->
+ <xs:element name="glossary">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="glossaryinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="glossdiv"/>
+ <xs:element maxOccurs="unbounded" ref="glossentry"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="bibliography"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossary.element -->
+ <xs:attributeGroup name="glossary.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossary.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossary.attlist -->
+ <!-- end of glossary.module -->
+ <xs:attributeGroup name="glossdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division in a Glossary. -->
+ <xs:element name="glossdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="sect.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:element maxOccurs="unbounded" ref="glossentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossdiv.element -->
+ <xs:attributeGroup name="glossdiv.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossdiv.attlist -->
+ <!-- end of glossdiv.module -->
+ <!-- end of glossary.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Index and SetIndex ................................................... -->
+ <xs:attributeGroup name="indexes.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An index. -->
+ <xs:element name="index">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="indexinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="index.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of index.element -->
+ <xs:attributeGroup name="index.attlist">
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexes.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of index.attlist -->
+ <!-- doc:An index to a set of books. -->
+ <xs:element name="setindex">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="setindexinfo"/>
+ <xs:group minOccurs="0" ref="bookcomponent.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="indexentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="setindex.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of setindex.element -->
+ <xs:attributeGroup name="setindex.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexes.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of setindex.attlist -->
+ <!-- end of indexes.module -->
+ <!--
+ SegmentedList in this content is useful for marking up permuted
+ indices.
+ -->
+ <xs:attributeGroup name="indexdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division in an index. -->
+ <xs:element name="indexdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="sect.title.content"/>
+ <xs:sequence>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="indexdivcomponent.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="indexentry"/>
+ <xs:element ref="segmentedlist"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attributeGroup ref="indexdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of indexdiv.element -->
+ <xs:attributeGroup name="indexdiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexdiv.attlist -->
+ <!-- end of indexdiv.module -->
+ <!-- Index entries appear in the index, not the text. -->
+ <xs:attributeGroup name="indexentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in an index. -->
+ <xs:element name="indexentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="primaryie"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="seeie"/>
+ <xs:element ref="seealsoie"/>
+ </xs:choice>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="secondaryie"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="seeie"/>
+ <xs:element ref="seealsoie"/>
+ <xs:element ref="tertiaryie"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attributeGroup ref="indexentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of indexentry.element -->
+ <xs:attributeGroup name="indexentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexentry.attlist -->
+ <!-- end of indexentry.module -->
+ <xs:attributeGroup name="primsecterie.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A primary term in an index entry, not in the text. -->
+ <xs:element name="primaryie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="primaryie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of primaryie.element -->
+ <!-- to IndexTerms that these entries represent -->
+ <xs:attributeGroup name="primaryie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecterie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of primaryie.attlist -->
+ <!-- doc:A secondary term in an index entry, rather than in the text. -->
+ <xs:element name="secondaryie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="secondaryie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of secondaryie.element -->
+ <!-- to IndexTerms that these entries represent -->
+ <xs:attributeGroup name="secondaryie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecterie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of secondaryie.attlist -->
+ <!-- doc:A tertiary term in an index entry, rather than in the text. -->
+ <xs:element name="tertiaryie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="tertiaryie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tertiaryie.element -->
+ <!-- to IndexTerms that these entries represent -->
+ <xs:attributeGroup name="tertiaryie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecterie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tertiaryie.attlist -->
+ <!-- end of primsecterie.module -->
+ <xs:attributeGroup name="seeie.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A See entry in an index, rather than in the text. -->
+ <xs:element name="seeie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="seeie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seeie.element -->
+ <!-- to IndexEntry to look up -->
+ <xs:attributeGroup name="seeie.attlist">
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seeie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seeie.attlist -->
+ <!-- end of seeie.module -->
+ <xs:attributeGroup name="seealsoie.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A See also entry in an index, rather than in the text. -->
+ <xs:element name="seealsoie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="seealsoie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seealsoie.element -->
+ <!-- to related IndexEntries -->
+ <xs:attributeGroup name="seealsoie.attlist">
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seealsoie.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seealsoie.attlist -->
+ <!-- end of seealsoie.module -->
+ <!-- end of index.content.module -->
+ <!-- ...................................................................... -->
+ <!-- RefEntry ............................................................. -->
+ <xs:attributeGroup name="refentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A reference page (originally a UNIX man-style reference page). -->
+ <xs:element name="refentry" substitutionGroup="refentry.class"/>
+ <!-- end of refentry.element -->
+ <xs:attributeGroup name="refentry.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refentry.attlist -->
+ <!-- end of refentry.module -->
+ <xs:attributeGroup name="refmeta.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a reference entry. -->
+ <xs:element name="refmeta">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element ref="refentrytitle"/>
+ <xs:element minOccurs="0" ref="manvolnum"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refmiscinfo"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="refmeta.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refmeta.element -->
+ <xs:attributeGroup name="refmeta.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refmeta.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refmeta.attlist -->
+ <!-- end of refmeta.module -->
+ <xs:attributeGroup name="refmiscinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a reference entry other than the title and volume number. -->
+ <xs:element name="refmiscinfo">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="refmiscinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refmiscinfo.element -->
+ <!-- Class: Freely assignable parameter; no default -->
+ <xs:attributeGroup name="refmiscinfo.attlist">
+ <xs:attribute name="class"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refmiscinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refmiscinfo.attlist -->
+ <!-- end of refmiscinfo.module -->
+ <xs:attributeGroup name="refnamediv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name, purpose, and classification of a reference page. -->
+ <xs:element name="refnamediv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refdescriptor"/>
+ <xs:element maxOccurs="unbounded" ref="refname"/>
+ <xs:element ref="refpurpose"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refclass"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="remark"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refnamediv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refnamediv.element -->
+ <xs:attributeGroup name="refnamediv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refnamediv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refnamediv.attlist -->
+ <!-- end of refnamediv.module -->
+ <xs:attributeGroup name="refdescriptor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A description of the topic of a reference page. -->
+ <xs:element name="refdescriptor">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refname.char.mix"/>
+ <xs:attributeGroup ref="refdescriptor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refdescriptor.element -->
+ <xs:attributeGroup name="refdescriptor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refdescriptor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refdescriptor.attlist -->
+ <!-- end of refdescriptor.module -->
+ <xs:attributeGroup name="refname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of (one of) the subject(s) of a reference page. -->
+ <xs:element name="refname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refname.char.mix"/>
+ <xs:attributeGroup ref="refname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refname.element -->
+ <xs:attributeGroup name="refname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refname.attlist -->
+ <!-- end of refname.module -->
+ <xs:attributeGroup name="refpurpose.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short (one sentence) synopsis of the topic of a reference page. -->
+ <xs:element name="refpurpose">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refinline.char.mix"/>
+ <xs:attributeGroup ref="refpurpose.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refpurpose.element -->
+ <xs:attributeGroup name="refpurpose.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refpurpose.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refpurpose.attlist -->
+ <!-- end of refpurpose.module -->
+ <xs:attributeGroup name="refclass.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The scope or other indication of applicability of a reference entry. -->
+ <xs:element name="refclass">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="refclass.char.mix"/>
+ <xs:attributeGroup ref="refclass.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refclass.element -->
+ <xs:attributeGroup name="refclass.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refclass.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refclass.attlist -->
+ <!-- end of refclass.module -->
+ <xs:attributeGroup name="refsynopsisdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntactic synopsis of the subject of the reference page. -->
+ <xs:element name="refsynopsisdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsynopsisdivinfo"/>
+ <xs:group minOccurs="0" ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsect2"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsect2"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsynopsisdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsynopsisdiv.element -->
+ <xs:attributeGroup name="refsynopsisdiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsynopsisdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsynopsisdiv.attlist -->
+ <!-- end of refsynopsisdiv.module -->
+ <xs:attributeGroup name="refsection.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A recursive section in a refentry. -->
+ <xs:element name="refsection">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsectioninfo"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsection"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsection"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsection.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsection.element -->
+ <xs:attributeGroup name="refsection.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsection.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsection.attlist -->
+ <!-- end of refsection.module -->
+ <xs:attributeGroup name="refsect1.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A major subsection of a reference entry. -->
+ <xs:element name="refsect1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsect1info"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsect2"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsect2"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsect1.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect1.element -->
+ <xs:attributeGroup name="refsect1.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect1.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect1.attlist -->
+ <!-- end of refsect1.module -->
+ <xs:attributeGroup name="refsect2.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection of a RefSect1. -->
+ <xs:element name="refsect2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsect2info"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="refsect3"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="refsect3"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsect2.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect2.element -->
+ <xs:attributeGroup name="refsect2.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect2.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect2.attlist -->
+ <!-- end of refsect2.module -->
+ <xs:attributeGroup name="refsect3.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subsection of a RefSect2. -->
+ <xs:element name="refsect3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="refsect3info"/>
+ <xs:group ref="refsect.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="refcomponent.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="refsect3.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refsect3.element -->
+ <xs:attributeGroup name="refsect3.attlist">
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refsect3.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refsect3.attlist -->
+ <!-- end of refsect3.module -->
+ <!-- end of refentry.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Article .............................................................. -->
+ <!--
+ An Article is a chapter-level, stand-alone document that is often,
+ but need not be, collected into a Book.
+ -->
+ <xs:attributeGroup name="article.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An article. -->
+ <xs:element name="article" substitutionGroup="article.class"/>
+ <!-- end of article.element -->
+ <!--
+ Class: Indicates the type of a particular article;
+ all articles have the same structure and general purpose.
+ No default.
+ -->
+ <!-- ParentBook: ID of the enclosing Book -->
+ <xs:attributeGroup name="article.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="journalarticle"/>
+ <xs:enumeration value="productsheet"/>
+ <xs:enumeration value="whitepaper"/>
+ <xs:enumeration value="techreport"/>
+ <xs:enumeration value="specification"/>
+ <xs:enumeration value="faq"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="parentbook" type="xs:IDREF"/>
+ <xs:attributeGroup ref="status.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="article.role.attrib"/>
+ </xs:attributeGroup>
+</xs:schema>
+<!-- end of article.attlist -->
+<!-- end of article.module -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML document hierarchy module V4.5 -->
+<!-- ................................................................................. -->
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/dbnotnx.xsd b/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/dbnotnx.xsd
new file mode 100644
index 0000000..36f690f
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/dbnotnx.xsd
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML notations ................ -->
+<!-- File dbnotnx.xsd ..................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook notations module V4.5 with:
+
+ Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbnotnx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the notation declarations used by DocBook.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbnotn PUBLIC
+ "-//OASIS//ENTITIES DocBook Notations V4.5//EN"
+ "dbnotnx.mod">
+ %dbnotn;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:simpleType name="notation.class">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="BMP"/>
+ <xs:enumeration value="CGM-CHAR"/>
+ <xs:enumeration value="CGM-BINARY"/>
+ <xs:enumeration value="CGM-CLEAR"/>
+ <xs:enumeration value="DITROFF"/>
+ <xs:enumeration value="DVI"/>
+ <xs:enumeration value="EPS"/>
+ <xs:enumeration value="EQN"/>
+ <xs:enumeration value="FAX"/>
+ <xs:enumeration value="GIF"/>
+ <xs:enumeration value="GIF87a"/>
+ <xs:enumeration value="GIF89a"/>
+ <xs:enumeration value="JPG"/>
+ <xs:enumeration value="JPEG"/>
+ <xs:enumeration value="IGES"/>
+ <xs:enumeration value="PCX"/>
+ <xs:enumeration value="PIC"/>
+ <xs:enumeration value="PNG"/>
+ <xs:enumeration value="PS"/>
+ <xs:enumeration value="SGML"/>
+ <xs:enumeration value="TBL"/>
+ <xs:enumeration value="TEX"/>
+ <xs:enumeration value="TIFF"/>
+ <xs:enumeration value="WMF"/>
+ <xs:enumeration value="WPG"/>
+ <xs:enumeration value="SVG"/>
+ <xs:enumeration value="PDF"/>
+ <xs:enumeration value="SWF"/>
+ <xs:enumeration value="linespecific"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
+<!-- WordPerfect Graphic format -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML notations ......... -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/dbpoolx.xsd b/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/dbpoolx.xsd
new file mode 100644
index 0000000..0ce5cb7
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/dbpoolx.xsd
@@ -0,0 +1,8682 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML information pool module .. -->
+<!-- File dbpoolx.xsd ..................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the Docbook XML information pool
+ module V4.5 with:
+
+ Copyright 1992-2004 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: dbpoolx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for the objects, inline
+ elements, and so on that are available to be used as the main
+ content of DocBook documents. Some elements are useful for general
+ publishing, and others are useful specifically for computer
+ documentation.
+
+ This module has the following dependencies on other modules:
+
+ o It assumes that a %notation.class; entity is defined by the
+ driver file or other high-level module. This entity is
+ referenced in the NOTATION attributes for the graphic-related and
+ ModeSpec elements.
+
+ o It assumes that an appropriately parameterized table module is
+ available for use with the table-related elements.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % dbpool PUBLIC
+ "-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN"
+ "dbpoolx.mod">
+ %dbpool;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ...................................................................... -->
+<!-- Forms entities ....................................................... -->
+<!-- These PEs provide the hook by which the forms module can be inserted -->
+<!-- into the DTD. -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:include schemaLocation="htmltblx.xsd"/>
+ <xs:include schemaLocation="calstblx.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ...................................................................... -->
+ <!-- General-purpose semantics entities ................................... -->
+ <xs:simpleType name="yesorno.attvals">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- ...................................................................... -->
+ <!-- Entities for module inclusions ....................................... -->
+ <!-- ...................................................................... -->
+ <!-- Entities for element classes and mixtures ............................ -->
+ <!-- "Ubiquitous" classes: ndxterm.class and beginpage -->
+ <xs:element name="ndxterm.class" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="primary"/>
+ <xs:choice minOccurs="0">
+ <xs:sequence>
+ <xs:element ref="secondary"/>
+ <xs:choice minOccurs="0">
+ <xs:sequence>
+ <xs:element ref="tertiary"/>
+ <xs:choice minOccurs="0">
+ <xs:element ref="see"/>
+ <xs:element maxOccurs="unbounded" ref="seealso"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element ref="see"/>
+ <xs:element maxOccurs="unbounded" ref="seealso"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element ref="see"/>
+ <xs:element maxOccurs="unbounded" ref="seealso"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="indexterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- Object-level classes ................................................. -->
+ <xs:element name="list.class" abstract="true"/>
+ <xs:element name="admon.class" abstract="true"/>
+ <xs:element name="linespecific.class" abstract="true"/>
+ <xs:element name="method.synop.class" abstract="true" substitutionGroup="synop.class"/>
+ <xs:element name="synop.class" abstract="true"/>
+ <xs:element name="para.class" abstract="true"/>
+ <xs:element name="informal.class" abstract="true"/>
+ <xs:element name="formal.class" abstract="true"/>
+ <!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+ <!-- This PE provides the hook by which it can be inserted into the DTD. -->
+ <xs:element name="compound.class" abstract="true"/>
+ <xs:group name="genobj.class">
+ <xs:choice>
+ <xs:element ref="anchor"/>
+ <xs:element ref="bridgehead"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="highlights"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="descobj.class">
+ <xs:choice>
+ <xs:element ref="abstract"/>
+ <xs:element ref="authorblurb"/>
+ <xs:element ref="epigraph"/>
+ </xs:choice>
+ </xs:group>
+ <!-- Character-level classes .............................................. -->
+ <xs:element name="xref.char.class" abstract="true"/>
+ <xs:element name="gen.char.class" abstract="true"/>
+ <xs:element name="link.char.class" abstract="true"/>
+ <!-- The DocBook TC may produce an official EBNF module for DocBook. -->
+ <!-- This PE provides the hook by which it can be inserted into the DTD. -->
+ <xs:element name="tech.char.class" abstract="true"/>
+ <xs:group name="base.char.class">
+ <xs:sequence>
+ <xs:element ref="anchor"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="docinfo.char.class" abstract="true"/>
+ <xs:group name="other.char.class">
+ <xs:choice>
+ <xs:element ref="remark"/>
+ <xs:element ref="subscript"/>
+ <xs:element ref="superscript"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="inlineobj.char.class" abstract="true"/>
+ <!-- ...................................................................... -->
+ <!-- Entities for content models .......................................... -->
+ <xs:group name="formalobject.title.content">
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" ref="titleabbrev"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- Redeclaration placeholder ............................................ -->
+ <!--
+ For redeclaring entities that are declared after this point while
+ retaining their references to the entities that are declared before
+ this point
+ -->
+ <!-- Object-level mixtures ................................................ -->
+ <!--
+ list admn line synp para infm form cmpd gen desc
+ Component mixture X X X X X X X X X X
+ Sidebar mixture X X X X X X X a X
+ Footnote mixture X X X X X
+ Example mixture X X X X X
+ Highlights mixture X X X
+ Paragraph mixture X X X X
+ Admonition mixture X X X X X X b c
+ Figure mixture X X X
+ Table entry mixture X X X X d
+ Glossary def mixture X X X X X e
+ Legal notice mixture X X X X f
+
+ a. Just Procedure; not Sidebar itself or MsgSet.
+ b. No MsgSet.
+ c. No Highlights.
+ d. Just Graphic; no other informal objects.
+ e. No Anchor, BridgeHead, or Highlights.
+ f. Just BlockQuote; no other informal objects.
+ -->
+ <xs:group name="component.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="compound.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="sidebar.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:group ref="genobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="qandaset.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:group ref="genobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="revdescription.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:group ref="genobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="footnote.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="example.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ <xs:element ref="procedure"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="highlights.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <!--
+ %formal.class; is explicitly excluded from many contexts in which
+ paragraphs are used
+ -->
+ <xs:group name="para.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="sconstruct"/>
+ <xs:element ref="scons_example"/>
+ <xs:element ref="scons_example_file"/>
+ <xs:element ref="scons_output"/>
+ <xs:element ref="sconsdoc"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="summary.mix">
+ <xs:choice>
+ <xs:element ref="example_commands"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="tool.mix">
+ <xs:choice>
+ <xs:element ref="summary"/>
+ <xs:element ref="sets"/>
+ <xs:element ref="uses"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="scons_function.mix">
+ <xs:choice>
+ <xs:element ref="arguments"/>
+ <xs:element ref="summary"/>
+ <xs:element ref="sets"/>
+ <xs:element ref="uses"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="admon.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="procedure"/>
+ <xs:element ref="sidebar"/>
+ <xs:element ref="anchor"/>
+ <xs:element ref="bridgehead"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="figure.mix">
+ <xs:choice>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="tabentry.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="glossdef.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:element ref="formal.class"/>
+ <xs:element ref="remark"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="legalnotice.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="blockquote"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="textobject.mix">
+ <xs:choice>
+ <xs:element ref="list.class"/>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="blockquote"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="mediaobject.mix" abstract="true"/>
+ <xs:group name="listpreamble.mix">
+ <xs:choice>
+ <xs:element ref="admon.class"/>
+ <xs:element ref="linespecific.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="para.class"/>
+ <xs:element ref="informal.class"/>
+ <xs:group ref="genobj.class"/>
+ <xs:group ref="descobj.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:group>
+ <!-- Character-level mixtures ............................................. -->
+ <!-- sgml.features -->
+ <!-- not [sgml.features[ -->
+ <!-- ]] not sgml.features -->
+ <!--
+ #PCD xref word link cptr base dnfo othr inob (synop)
+ para.char.mix X X X X X X X X X
+ title.char.mix X X X X X X X X X
+ ndxterm.char.mix X X X X X X X X a
+ cptr.char.mix X X X X X a
+ smallcptr.char.mix X b a
+ word.char.mix X c X X X a
+ docinfo.char.mix X d X b X a
+
+ a. Just InlineGraphic; no InlineEquation.
+ b. Just Replaceable; no other computer terms.
+ c. Just Emphasis and Trademark; no other word elements.
+ d. Just Acronym, Emphasis, and Trademark; no other word elements.
+ -->
+ <xs:group name="para.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlineobj.char.class"/>
+ <xs:element ref="synop.class"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="title.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlineobj.char.class"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="ndxterm.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="xref.char.class"/>
+ <xs:element ref="gen.char.class"/>
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:element ref="docinfo.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="cptr.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="smallcptr.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="replaceable"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="word.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="acronym"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="trademark"/>
+ <xs:element ref="link.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ <xs:element ref="beginpage"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="docinfo.char.mix">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="trademark"/>
+ <xs:element ref="replaceable"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <!-- ENTITY % bibliocomponent.mix (see Bibliographic section, below) -->
+ <!-- ENTITY % person.ident.mix (see Bibliographic section, below) -->
+ <!-- ...................................................................... -->
+ <!-- Entities for attributes and attribute components ..................... -->
+ <!-- Effectivity attributes ............................................... -->
+ <!--
+ Arch: Computer or chip architecture to which element applies; no
+ default
+ -->
+ <xs:attributeGroup name="arch.attrib">
+ <xs:attribute name="arch"/>
+ </xs:attributeGroup>
+ <!-- Condition: General-purpose effectivity attribute -->
+ <xs:attributeGroup name="condition.attrib">
+ <xs:attribute name="condition"/>
+ </xs:attributeGroup>
+ <!-- Conformance: Standards conformance characteristics -->
+ <xs:attributeGroup name="conformance.attrib">
+ <xs:attribute name="conformance" type="xs:NMTOKENS"/>
+ </xs:attributeGroup>
+ <!-- OS: Operating system to which element applies; no default -->
+ <xs:attributeGroup name="os.attrib">
+ <xs:attribute name="os"/>
+ </xs:attributeGroup>
+ <!-- Revision: Editorial revision to which element belongs; no default -->
+ <xs:attributeGroup name="revision.attrib">
+ <xs:attribute name="revision"/>
+ </xs:attributeGroup>
+ <!-- Security: Security classification; no default -->
+ <xs:attributeGroup name="security.attrib">
+ <xs:attribute name="security"/>
+ </xs:attributeGroup>
+ <!--
+ UserLevel: Level of user experience to which element applies; no
+ default
+ -->
+ <xs:attributeGroup name="userlevel.attrib">
+ <xs:attribute name="userlevel"/>
+ </xs:attributeGroup>
+ <!-- Vendor: Computer vendor to which element applies; no default -->
+ <xs:attributeGroup name="vendor.attrib">
+ <xs:attribute name="vendor"/>
+ </xs:attributeGroup>
+ <!-- Wordsize: Computer word size (32 bit, 64 bit, etc.); no default -->
+ <xs:attributeGroup name="wordsize.attrib">
+ <xs:attribute name="wordsize"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="effectivity.attrib">
+ <xs:attributeGroup ref="arch.attrib"/>
+ <xs:attributeGroup ref="condition.attrib"/>
+ <xs:attributeGroup ref="conformance.attrib"/>
+ <xs:attributeGroup ref="os.attrib"/>
+ <xs:attributeGroup ref="revision.attrib"/>
+ <xs:attributeGroup ref="security.attrib"/>
+ <xs:attributeGroup ref="userlevel.attrib"/>
+ <xs:attributeGroup ref="vendor.attrib"/>
+ <xs:attributeGroup ref="wordsize.attrib"/>
+ </xs:attributeGroup>
+ <!-- Common attributes .................................................... -->
+ <!-- Id: Unique identifier of element; no default -->
+ <xs:attributeGroup name="id.attrib">
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:attributeGroup>
+ <!--
+ Id: Unique identifier of element; a value must be supplied; no
+ default
+ -->
+ <xs:attributeGroup name="idreq.attrib">
+ <xs:attribute name="id" use="required" type="xs:ID"/>
+ </xs:attributeGroup>
+ <!--
+ Lang: Indicator of language in which element is written, for
+ translation, character set management, etc.; no default
+ -->
+ <xs:attributeGroup name="lang.attrib">
+ <xs:attribute name="lang"/>
+ </xs:attributeGroup>
+ <!-- Remap: Previous role of element before conversion; no default -->
+ <xs:attributeGroup name="remap.attrib">
+ <xs:attribute name="remap"/>
+ </xs:attributeGroup>
+ <!-- Role: New role of element in local environment; no default -->
+ <xs:attributeGroup name="role.attrib">
+ <xs:attribute name="role"/>
+ </xs:attributeGroup>
+ <!--
+ XRefLabel: Alternate labeling string for XRef text generation;
+ default is usually title or other appropriate label text already
+ contained in element
+ -->
+ <xs:attributeGroup name="xreflabel.attrib">
+ <xs:attribute name="xreflabel"/>
+ </xs:attributeGroup>
+ <!--
+ RevisionFlag: Revision status of element; default is that element
+ wasn't revised
+ -->
+ <xs:attributeGroup name="revisionflag.attrib">
+ <xs:attribute name="revisionflag">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="changed"/>
+ <xs:enumeration value="added"/>
+ <xs:enumeration value="deleted"/>
+ <xs:enumeration value="off"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- dir: Bidirectional override -->
+ <xs:attributeGroup name="dir.attrib">
+ <xs:attribute name="dir">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="ltr"/>
+ <xs:enumeration value="rtl"/>
+ <xs:enumeration value="lro"/>
+ <xs:enumeration value="rlo"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- xml:base: base URI -->
+ <xs:attributeGroup name="xml-base.attrib">
+ <xs:attribute ref="xml:base"/>
+ </xs:attributeGroup>
+ <!-- Role is included explicitly on each element -->
+ <xs:attributeGroup name="common.attrib">
+ <xs:attributeGroup ref="id.attrib"/>
+ <xs:attributeGroup ref="lang.attrib"/>
+ <xs:attributeGroup ref="remap.attrib"/>
+ <xs:attributeGroup ref="xreflabel.attrib"/>
+ <xs:attributeGroup ref="revisionflag.attrib"/>
+ <xs:attributeGroup ref="effectivity.attrib"/>
+ <xs:attributeGroup ref="dir.attrib"/>
+ <xs:attributeGroup ref="xml-base.attrib"/>
+ </xs:attributeGroup>
+ <!-- Role is included explicitly on each element -->
+ <xs:attributeGroup name="idreq.common.attrib">
+ <xs:attributeGroup ref="idreq.attrib"/>
+ <xs:attributeGroup ref="lang.attrib"/>
+ <xs:attributeGroup ref="remap.attrib"/>
+ <xs:attributeGroup ref="xreflabel.attrib"/>
+ <xs:attributeGroup ref="revisionflag.attrib"/>
+ <xs:attributeGroup ref="effectivity.attrib"/>
+ <xs:attributeGroup ref="dir.attrib"/>
+ <xs:attributeGroup ref="xml-base.attrib"/>
+ </xs:attributeGroup>
+ <!-- Semi-common attributes and other attribute entities .................. -->
+ <!--
+ EntityRef: Name of an external entity containing the content
+ of the graphic
+ -->
+ <!--
+ FileRef: Filename, qualified by a pathname if desired,
+ designating the file containing the content of the graphic
+ -->
+ <!-- Format: Notation of the element content, if any -->
+ <!-- SrcCredit: Information about the source of the Graphic -->
+ <!-- Width: Same as CALS reprowid (desired width) -->
+ <!-- Depth: Same as CALS reprodep (desired depth) -->
+ <!--
+ Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific
+ -->
+ <!-- Scale: Conflation of CALS hscale and vscale -->
+ <!-- Scalefit: Same as CALS scalefit -->
+ <xs:attributeGroup name="graphics.attrib">
+ <xs:attribute name="entityref" type="xs:ENTITY"/>
+ <xs:attribute name="fileref"/>
+ <xs:attribute name="format" type="notation.class"/>
+ <xs:attribute name="srccredit"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="scale"/>
+ <xs:attribute name="scalefit" type="yesorno.attvals"/>
+ </xs:attributeGroup>
+ <!--
+ Action: Key combination type; default is unspecified if one
+ child element, Simul if there is more than one; if value is
+ Other, the OtherAction attribute must have a nonempty value
+ -->
+ <!-- OtherAction: User-defined key combination type -->
+ <xs:attributeGroup name="keyaction.attrib">
+ <xs:attribute name="action">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="click"/>
+ <xs:enumeration value="double-click"/>
+ <xs:enumeration value="press"/>
+ <xs:enumeration value="seq"/>
+ <xs:enumeration value="simul"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otheraction"/>
+ </xs:attributeGroup>
+ <!--
+ Label: Identifying number or string; default is usually the
+ appropriate number or string autogenerated by a formatter
+ -->
+ <xs:attributeGroup name="label.attrib">
+ <xs:attribute name="label"/>
+ </xs:attributeGroup>
+ <!-- xml:space: whitespace treatment -->
+ <xs:attributeGroup name="xml-space.attrib">
+ <xs:attribute ref="xml:space"/>
+ </xs:attributeGroup>
+ <!--
+ Format: whether element is assumed to contain significant white
+ space
+ -->
+ <xs:attributeGroup name="linespecific.attrib">
+ <xs:attribute name="format" default="linespecific">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="linespecific"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="xml-space.attrib"/>
+ <xs:attribute name="linenumbering">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="numbered"/>
+ <xs:enumeration value="unnumbered"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="continuation">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="continues"/>
+ <xs:enumeration value="restarts"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="startinglinenumber"/>
+ <xs:attribute name="language"/>
+ </xs:attributeGroup>
+ <!-- Linkend: link to related information; no default -->
+ <xs:attributeGroup name="linkend.attrib">
+ <xs:attribute name="linkend" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <!-- Linkend: required link to related information -->
+ <xs:attributeGroup name="linkendreq.attrib">
+ <xs:attribute name="linkend" use="required" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <!--
+ Linkends: link to one or more sets of related information; no
+ default
+ -->
+ <xs:attributeGroup name="linkends.attrib">
+ <xs:attribute name="linkends" type="xs:IDREFS"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="mark.attrib">
+ <xs:attribute name="mark"/>
+ </xs:attributeGroup>
+ <!-- MoreInfo: whether element's content has an associated RefEntry -->
+ <xs:attributeGroup name="moreinfo.attrib">
+ <xs:attribute name="moreinfo" default="none">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="refentry"/>
+ <xs:enumeration value="none"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- Pagenum: number of page on which element appears; no default -->
+ <xs:attributeGroup name="pagenum.attrib">
+ <xs:attribute name="pagenum"/>
+ </xs:attributeGroup>
+ <!--
+ Status: Editorial or publication status of the element
+ it applies to, such as "in review" or "approved for distribution"
+ -->
+ <xs:attributeGroup name="status.attrib">
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <!--
+ Width: width of the longest line in the element to which it
+ pertains, in number of characters
+ -->
+ <xs:attributeGroup name="width.attrib">
+ <xs:attribute name="width"/>
+ </xs:attributeGroup>
+ <!-- ...................................................................... -->
+ <!-- Title elements ....................................................... -->
+ <xs:attributeGroup name="title.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text of the title of a section of a document or of a formal block-level element. -->
+ <xs:element name="title">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="title.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of title.element -->
+ <xs:attributeGroup name="title.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="title.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of title.attlist -->
+ <!-- end of title.module -->
+ <xs:attributeGroup name="titleabbrev.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The abbreviation of a Title. -->
+ <xs:element name="titleabbrev">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="titleabbrev.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of titleabbrev.element -->
+ <xs:attributeGroup name="titleabbrev.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="titleabbrev.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of titleabbrev.attlist -->
+ <!-- end of titleabbrev.module -->
+ <xs:attributeGroup name="subtitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The subtitle of a document. -->
+ <xs:element name="subtitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="subtitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subtitle.element -->
+ <xs:attributeGroup name="subtitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subtitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subtitle.attlist -->
+ <!-- end of subtitle.module -->
+ <!-- ...................................................................... -->
+ <!-- Bibliographic entities and elements .................................. -->
+ <!--
+ The bibliographic elements are typically used in the document
+ hierarchy. They do not appear in content models of information
+ pool elements. See also the document information elements,
+ below.
+ -->
+ <xs:group name="person.ident.mix">
+ <xs:choice>
+ <xs:element ref="honorific"/>
+ <xs:element ref="firstname"/>
+ <xs:element ref="surname"/>
+ <xs:element ref="lineage"/>
+ <xs:element ref="othername"/>
+ <xs:element ref="affiliation"/>
+ <xs:element ref="authorblurb"/>
+ <xs:element ref="contrib"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="bibliocomponent.mix">
+ <xs:choice>
+ <xs:element ref="abbrev"/>
+ <xs:element ref="abstract"/>
+ <xs:element ref="address"/>
+ <xs:element ref="artpagenums"/>
+ <xs:element ref="author"/>
+ <xs:element ref="authorgroup"/>
+ <xs:element ref="authorinitials"/>
+ <xs:element ref="bibliomisc"/>
+ <xs:element ref="biblioset"/>
+ <xs:element ref="collab"/>
+ <xs:element ref="confgroup"/>
+ <xs:element ref="contractnum"/>
+ <xs:element ref="contractsponsor"/>
+ <xs:element ref="copyright"/>
+ <xs:element ref="corpauthor"/>
+ <xs:element ref="corpname"/>
+ <xs:element ref="corpcredit"/>
+ <xs:element ref="date"/>
+ <xs:element ref="edition"/>
+ <xs:element ref="editor"/>
+ <xs:element ref="invpartnumber"/>
+ <xs:element ref="isbn"/>
+ <xs:element ref="issn"/>
+ <xs:element ref="issuenum"/>
+ <xs:element ref="orgname"/>
+ <xs:element ref="biblioid"/>
+ <xs:element ref="citebiblioid"/>
+ <xs:element ref="bibliosource"/>
+ <xs:element ref="bibliorelation"/>
+ <xs:element ref="bibliocoverage"/>
+ <xs:element ref="othercredit"/>
+ <xs:element ref="pagenums"/>
+ <xs:element ref="printhistory"/>
+ <xs:element ref="productname"/>
+ <xs:element ref="productnumber"/>
+ <xs:element ref="pubdate"/>
+ <xs:element ref="publisher"/>
+ <xs:element ref="publishername"/>
+ <xs:element ref="pubsnumber"/>
+ <xs:element ref="releaseinfo"/>
+ <xs:element ref="revhistory"/>
+ <xs:element ref="seriesvolnums"/>
+ <xs:element ref="subtitle"/>
+ <xs:element ref="title"/>
+ <xs:element ref="titleabbrev"/>
+ <xs:element ref="volumenum"/>
+ <xs:element ref="citetitle"/>
+ <xs:element ref="personname"/>
+ <xs:group ref="person.ident.mix"/>
+ <xs:element ref="ndxterm.class"/>
+ </xs:choice>
+ </xs:group>
+ <!-- I don't think this is well placed, but it needs to be here because of -->
+ <!-- the reference to bibliocomponent.mix -->
+ <xs:group name="info.class">
+ <xs:choice>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="legalnotice"/>
+ <xs:element ref="modespec"/>
+ <xs:element ref="subjectset"/>
+ <xs:element ref="keywordset"/>
+ <xs:element ref="itermset"/>
+ <xs:group ref="bibliocomponent.mix"/>
+ </xs:choice>
+ </xs:group>
+ <!-- BiblioList ........................ -->
+ <xs:attributeGroup name="bibliolist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a set of bibliography entries. -->
+ <xs:element name="bibliolist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="biblioentry"/>
+ <xs:element ref="bibliomixed"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="bibliolist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliolist.element -->
+ <xs:attributeGroup name="bibliolist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliolist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliolist.attlist -->
+ <!-- end of bibliolist.module -->
+ <xs:attributeGroup name="biblioentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a Bibliography. -->
+ <xs:element name="biblioentry">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="articleinfo"/>
+ <xs:group ref="bibliocomponent.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="biblioentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioentry.element -->
+ <xs:attributeGroup name="biblioentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="biblioentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioentry.attlist -->
+ <!-- end of biblioentry.module -->
+ <xs:attributeGroup name="bibliomixed.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a Bibliography. -->
+ <xs:element name="bibliomixed">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="bibliocomponent.mix"/>
+ <xs:element ref="bibliomset"/>
+ </xs:choice>
+ <xs:attributeGroup ref="bibliomixed.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliomixed.element -->
+ <xs:attributeGroup name="bibliomixed.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliomixed.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliomixed.attlist -->
+ <!-- end of bibliomixed.module -->
+ <xs:attributeGroup name="articleinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an Article. -->
+ <xs:element name="articleinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="articleinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of articleinfo.element -->
+ <xs:attributeGroup name="articleinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="articleinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of articleinfo.attlist -->
+ <!-- end of articleinfo.module -->
+ <xs:attributeGroup name="biblioset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A "raw" container for related bibliographic information. -->
+ <xs:element name="biblioset">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="bibliocomponent.mix"/>
+ <xs:attributeGroup ref="biblioset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioset.element -->
+ <!-- Relation: Relationship of elements contained within BiblioSet -->
+ <xs:attributeGroup name="biblioset.attlist">
+ <xs:attribute name="relation"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="biblioset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioset.attlist -->
+ <!-- end of biblioset.module -->
+ <xs:attributeGroup name="bibliomset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A "cooked" container for related bibliographic information. -->
+ <xs:element name="bibliomset">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="bibliocomponent.mix"/>
+ <xs:element ref="bibliomset"/>
+ </xs:choice>
+ <xs:attributeGroup ref="bibliomset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliomset.element -->
+ <!-- Relation: Relationship of elements contained within BiblioMSet -->
+ <xs:attributeGroup name="bibliomset.attlist">
+ <xs:attribute name="relation"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliomset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliomset.attlist -->
+ <!-- end of bibliomset.module -->
+ <xs:attributeGroup name="bibliomisc.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Untyped bibliographic information. -->
+ <xs:element name="bibliomisc">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="bibliomisc.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliomisc.element -->
+ <xs:attributeGroup name="bibliomisc.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliomisc.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliomisc.attlist -->
+ <!-- end of bibliomisc.module -->
+ <!-- ...................................................................... -->
+ <!-- Subject, Keyword, and ITermSet elements .............................. -->
+ <xs:attributeGroup name="subjectset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of terms describing the subject matter of a document. -->
+ <xs:element name="subjectset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="subject"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="subjectset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subjectset.element -->
+ <!-- Scheme: Controlled vocabulary employed in SubjectTerms -->
+ <xs:attributeGroup name="subjectset.attlist">
+ <xs:attribute name="scheme" type="xs:NMTOKEN"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subjectset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subjectset.attlist -->
+ <!-- end of subjectset.module -->
+ <xs:attributeGroup name="subject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:One of a group of terms describing the subject matter of a document. -->
+ <xs:element name="subject">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="subjectterm"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="subject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subject.element -->
+ <!--
+ Weight: Ranking of this group of SubjectTerms relative
+ to others, 0 is low, no highest value specified
+ -->
+ <xs:attributeGroup name="subject.attlist">
+ <xs:attribute name="weight"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subject.attlist -->
+ <!-- end of subject.module -->
+ <xs:attributeGroup name="subjectterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A term in a group of terms describing the subject matter of a document. -->
+ <xs:element name="subjectterm">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="subjectterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subjectterm.element -->
+ <xs:attributeGroup name="subjectterm.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="subjectterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subjectterm.attlist -->
+ <!-- end of subjectterm.module -->
+ <!-- end of subjectset.content.module -->
+ <xs:attributeGroup name="keywordset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of keywords describing the content of a document. -->
+ <xs:element name="keywordset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="keyword"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="keywordset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keywordset.element -->
+ <xs:attributeGroup name="keywordset.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keywordset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keywordset.attlist -->
+ <!-- end of keywordset.module -->
+ <xs:attributeGroup name="keyword.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:One of a set of keywords describing the content of a document. -->
+ <xs:element name="keyword">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="keyword.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keyword.element -->
+ <xs:attributeGroup name="keyword.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keyword.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keyword.attlist -->
+ <!-- end of keyword.module -->
+ <!-- end of keywordset.content.module -->
+ <xs:attributeGroup name="itermset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of index terms in the meta-information of a document. -->
+ <xs:element name="itermset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="indexterm"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="itermset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of itermset.element -->
+ <xs:attributeGroup name="itermset.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="itermset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of itermset.attlist -->
+ <!-- end of itermset.module -->
+ <!-- Bibliographic info for "blocks" -->
+ <xs:attributeGroup name="blockinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a block element. -->
+ <xs:element name="blockinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="blockinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of blockinfo.element -->
+ <xs:attributeGroup name="blockinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="blockinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of blockinfo.attlist -->
+ <!-- end of blockinfo.module -->
+ <!-- ...................................................................... -->
+ <!-- Compound (section-ish) elements ...................................... -->
+ <!-- Message set ...................... -->
+ <xs:attributeGroup name="msgset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A detailed set of messages, usually error messages. -->
+ <xs:element name="msgset" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="msgentry"/>
+ <xs:element maxOccurs="unbounded" ref="simplemsgentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgset.element -->
+ <xs:attributeGroup name="msgset.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgset.attlist -->
+ <!-- end of msgset.module -->
+ <xs:attributeGroup name="msgentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for an entry in a message set. -->
+ <xs:element name="msgentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="msg"/>
+ <xs:element minOccurs="0" ref="msginfo"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="msgexplan"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgentry.element -->
+ <xs:attributeGroup name="msgentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgentry.attlist -->
+ <!-- end of msgentry.module -->
+ <xs:attributeGroup name="simplemsgentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a simpler entry in a message set. -->
+ <xs:element name="simplemsgentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="msgtext"/>
+ <xs:element maxOccurs="unbounded" ref="msgexplan"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="simplemsgentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simplemsgentry.element -->
+ <xs:attributeGroup name="simplemsgentry.attlist">
+ <xs:attribute name="audience"/>
+ <xs:attribute name="level"/>
+ <xs:attribute name="origin"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simplemsgentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simplemsgentry.attlist -->
+ <!-- end of simplemsgentry.module -->
+ <xs:attributeGroup name="msg.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A message in a message set. -->
+ <xs:element name="msg">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgmain"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="msgsub"/>
+ <xs:element ref="msgrel"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="msg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msg.element -->
+ <xs:attributeGroup name="msg.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msg.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msg.attlist -->
+ <!-- end of msg.module -->
+ <xs:attributeGroup name="msgmain.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The primary component of a message in a message set. -->
+ <xs:element name="msgmain">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgtext"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgmain.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgmain.element -->
+ <xs:attributeGroup name="msgmain.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgmain.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgmain.attlist -->
+ <!-- end of msgmain.module -->
+ <xs:attributeGroup name="msgsub.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subcomponent of a message in a message set. -->
+ <xs:element name="msgsub">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgtext"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgsub.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgsub.element -->
+ <xs:attributeGroup name="msgsub.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgsub.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgsub.attlist -->
+ <!-- end of msgsub.module -->
+ <xs:attributeGroup name="msgrel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A related component of a message in a message set. -->
+ <xs:element name="msgrel">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element ref="msgtext"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgrel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgrel.element -->
+ <xs:attributeGroup name="msgrel.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgrel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgrel.attlist -->
+ <!-- end of msgrel.module -->
+ <!-- MsgText (defined in the Inlines section, below) -->
+ <xs:attributeGroup name="msginfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about a message in a message set. -->
+ <xs:element name="msginfo">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="msglevel"/>
+ <xs:element ref="msgorig"/>
+ <xs:element ref="msgaud"/>
+ </xs:choice>
+ <xs:attributeGroup ref="msginfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msginfo.element -->
+ <xs:attributeGroup name="msginfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msginfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msginfo.attlist -->
+ <!-- end of msginfo.module -->
+ <xs:attributeGroup name="msglevel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The level of importance or severity of a message in a message set. -->
+ <xs:element name="msglevel">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="msglevel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msglevel.element -->
+ <xs:attributeGroup name="msglevel.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msglevel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msglevel.attlist -->
+ <!-- end of msglevel.module -->
+ <xs:attributeGroup name="msgorig.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The origin of a message in a message set. -->
+ <xs:element name="msgorig">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="msgorig.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgorig.element -->
+ <xs:attributeGroup name="msgorig.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgorig.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgorig.attlist -->
+ <!-- end of msgorig.module -->
+ <xs:attributeGroup name="msgaud.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The audience to which a message in a message set is relevant. -->
+ <xs:element name="msgaud">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="msgaud.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgaud.element -->
+ <xs:attributeGroup name="msgaud.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgaud.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgaud.attlist -->
+ <!-- end of msgaud.module -->
+ <xs:attributeGroup name="msgexplan.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Explanatory material relating to a message in a message set. -->
+ <xs:element name="msgexplan">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="msgexplan.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgexplan.element -->
+ <xs:attributeGroup name="msgexplan.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgexplan.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgexplan.attlist -->
+ <!-- end of msgexplan.module -->
+ <!-- end of msgset.content.module -->
+ <xs:attributeGroup name="task.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A task to be completed. -->
+ <xs:element name="task" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:element minOccurs="0" ref="tasksummary"/>
+ <xs:element minOccurs="0" ref="taskprerequisites"/>
+ <xs:element ref="procedure"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="example"/>
+ <xs:element minOccurs="0" ref="taskrelated"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="task.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of task.element -->
+ <xs:attributeGroup name="task.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="task.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of task.attlist -->
+ <!-- end of task.module -->
+ <xs:attributeGroup name="tasksummary.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary of a task. -->
+ <xs:element name="tasksummary">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tasksummary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tasksummary.element -->
+ <xs:attributeGroup name="tasksummary.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tasksummary.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tasksummary.attlist -->
+ <!-- end of tasksummary.module -->
+ <xs:attributeGroup name="taskprerequisites.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The prerequisites for a task. -->
+ <xs:element name="taskprerequisites">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="taskprerequisites.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of taskprerequisites.element -->
+ <xs:attributeGroup name="taskprerequisites.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="taskprerequisites.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of taskprerequisites.attlist -->
+ <!-- end of taskprerequisites.module -->
+ <xs:attributeGroup name="taskrelated.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information related to a task. -->
+ <xs:element name="taskrelated">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="taskrelated.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of taskrelated.element -->
+ <xs:attributeGroup name="taskrelated.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="taskrelated.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of taskrelated.attlist -->
+ <!-- end of taskrelated.module -->
+ <!-- end of task.content.module -->
+ <!-- QandASet ........................ -->
+ <xs:attributeGroup name="qandaset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A question-and-answer set. -->
+ <xs:element name="qandaset" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="qandadiv"/>
+ <xs:element maxOccurs="unbounded" ref="qandaentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="qandaset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of qandaset.element -->
+ <xs:attributeGroup name="qandaset.attlist">
+ <xs:attribute name="defaultlabel">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="qanda"/>
+ <xs:enumeration value="number"/>
+ <xs:enumeration value="none"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="qandaset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of qandaset.attlist -->
+ <!-- end of qandaset.module -->
+ <xs:attributeGroup name="qandadiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A titled division in a QandASet. -->
+ <xs:element name="qandadiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="qandadiv"/>
+ <xs:element maxOccurs="unbounded" ref="qandaentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="qandadiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of qandadiv.element -->
+ <xs:attributeGroup name="qandadiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="qandadiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of qandadiv.attlist -->
+ <!-- end of qandadiv.module -->
+ <xs:attributeGroup name="qandaentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A question/answer set within a QandASet. -->
+ <xs:element name="qandaentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" ref="revhistory"/>
+ <xs:element ref="question"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="answer"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="qandaentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of qandaentry.element -->
+ <xs:attributeGroup name="qandaentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="qandaentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of qandaentry.attlist -->
+ <!-- end of qandaentry.module -->
+ <xs:attributeGroup name="question.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A question in a QandASet. -->
+ <xs:element name="question">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="label"/>
+ <xs:group maxOccurs="unbounded" ref="qandaset.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="question.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of question.element -->
+ <xs:attributeGroup name="question.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="question.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of question.attlist -->
+ <!-- end of question.module -->
+ <xs:attributeGroup name="answer.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An answer to a question posed in a QandASet. -->
+ <xs:element name="answer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="label"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="qandaset.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="qandaentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="answer.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of answer.element -->
+ <xs:attributeGroup name="answer.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="answer.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of answer.attlist -->
+ <!-- end of answer.module -->
+ <xs:attributeGroup name="label.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A label on a Question or Answer. -->
+ <xs:element name="label">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="label.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of label.element -->
+ <xs:attributeGroup name="label.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="label.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of label.attlist -->
+ <!-- end of label.module -->
+ <!-- end of qandaset.content.module -->
+ <!-- Procedure ........................ -->
+ <xs:attributeGroup name="procedure.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list of operations to be performed in a well-defined sequence. -->
+ <xs:element name="procedure" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ <xs:element maxOccurs="unbounded" ref="step"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="procedure.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of procedure.element -->
+ <xs:attributeGroup name="procedure.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="procedure.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of procedure.attlist -->
+ <!-- end of procedure.module -->
+ <xs:attributeGroup name="step.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A unit of action in a procedure. -->
+ <xs:element name="step">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:sequence minOccurs="0">
+ <xs:choice>
+ <xs:element ref="substeps"/>
+ <xs:element ref="stepalternatives"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="substeps"/>
+ <xs:element ref="stepalternatives"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="step.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of step.element -->
+ <!-- Performance: Whether the Step must be performed -->
+ <!-- not #REQUIRED! -->
+ <xs:attributeGroup name="step.attlist">
+ <xs:attribute name="performance" default="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="step.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of step.attlist -->
+ <!-- end of step.module -->
+ <xs:attributeGroup name="substeps.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for steps that occur within steps in a procedure. -->
+ <xs:element name="substeps">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="step"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="substeps.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of substeps.element -->
+ <!-- Performance: whether entire set of substeps must be performed -->
+ <!-- not #REQUIRED! -->
+ <xs:attributeGroup name="substeps.attlist">
+ <xs:attribute name="performance" default="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="substeps.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of substeps.attlist -->
+ <!-- end of substeps.module -->
+ <xs:attributeGroup name="stepalternatives.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Alternative steps in a procedure. -->
+ <xs:element name="stepalternatives">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="step"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="stepalternatives.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of stepalternatives.element -->
+ <!-- Performance: Whether (one of) the alternatives must be performed -->
+ <!-- not #REQUIRED! -->
+ <xs:attributeGroup name="stepalternatives.attlist">
+ <xs:attribute name="performance" default="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="stepalternatives.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of stepalternatives.attlist -->
+ <!-- end of stepalternatives.module -->
+ <!-- end of procedure.content.module -->
+ <!-- Sidebar .......................... -->
+ <xs:attributeGroup name="sidebarinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for a Sidebar. -->
+ <xs:element name="sidebarinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="sidebarinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sidebarinfo.element -->
+ <xs:attributeGroup name="sidebarinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sidebarinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sidebarinfo.attlist -->
+ <!-- end of sidebarinfo.module -->
+ <xs:attributeGroup name="sidebar.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A portion of a document that is isolated from the main narrative flow. -->
+ <xs:element name="sidebar" substitutionGroup="compound.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="sidebarinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="sidebar.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sidebar.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sidebar.element -->
+ <xs:attributeGroup name="sidebar.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sidebar.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sidebar.attlist -->
+ <!-- end of sidebar.module -->
+ <!-- end of sidebar.content.model -->
+ <!-- ...................................................................... -->
+ <!-- Paragraph-related elements ........................................... -->
+ <xs:attributeGroup name="abstract.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary. -->
+ <xs:element name="abstract">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="abstract.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of abstract.element -->
+ <xs:attributeGroup name="abstract.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="abstract.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of abstract.attlist -->
+ <!-- end of abstract.module -->
+ <xs:attributeGroup name="authorblurb.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short description or note about an author. -->
+ <xs:element name="authorblurb">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="authorblurb.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of authorblurb.element -->
+ <xs:attributeGroup name="authorblurb.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="authorblurb.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of authorblurb.attlist -->
+ <!-- end of authorblurb.module -->
+ <xs:attributeGroup name="personblurb.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short description or note about a person. -->
+ <xs:element name="personblurb">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="personblurb.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of personblurb.element -->
+ <xs:attributeGroup name="personblurb.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="personblurb.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of personblurb.attlist -->
+ <!-- end of personblurb.module -->
+ <xs:attributeGroup name="blockquote.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A quotation set off from the main text. -->
+ <xs:element name="blockquote" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:element minOccurs="0" ref="attribution"/>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="blockquote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of blockquote.element -->
+ <xs:attributeGroup name="blockquote.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="blockquote.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of blockquote.attlist -->
+ <!-- end of blockquote.module -->
+ <xs:attributeGroup name="attribution.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The source of a block quote or epigraph. -->
+ <xs:element name="attribution">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="attribution.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of attribution.element -->
+ <xs:attributeGroup name="attribution.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="attribution.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of attribution.attlist -->
+ <!-- end of attribution.module -->
+ <xs:attributeGroup name="bridgehead.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A free-floating heading. -->
+ <xs:element name="bridgehead">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="bridgehead.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bridgehead.element -->
+ <!--
+ Renderas: Indicates the format in which the BridgeHead
+ should appear
+ -->
+ <xs:attributeGroup name="bridgehead.attlist">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other"/>
+ <xs:enumeration value="sect1"/>
+ <xs:enumeration value="sect2"/>
+ <xs:enumeration value="sect3"/>
+ <xs:enumeration value="sect4"/>
+ <xs:enumeration value="sect5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bridgehead.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bridgehead.attlist -->
+ <!-- end of bridgehead.module -->
+ <xs:attributeGroup name="remark.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A remark (or comment) intended for presentation in a draft manuscript. -->
+ <xs:element name="remark">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="remark.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of remark.element -->
+ <xs:attributeGroup name="remark.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="remark.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of remark.attlist -->
+ <!-- end of remark.module -->
+ <xs:attributeGroup name="epigraph.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A short inscription at the beginning of a document or component. -->
+ <xs:element name="epigraph">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="attribution"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="para.class"/>
+ <xs:element ref="literallayout"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="epigraph.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of epigraph.element -->
+ <xs:attributeGroup name="epigraph.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="epigraph.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of epigraph.attlist -->
+ <!-- Attribution (defined above) -->
+ <!-- end of epigraph.module -->
+ <xs:attributeGroup name="footnote.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A footnote. -->
+ <xs:element name="footnote" substitutionGroup="gen.char.class">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="footnote.mix"/>
+ <xs:attributeGroup ref="footnote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of footnote.element -->
+ <xs:attributeGroup name="footnote.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="footnote.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of footnote.attlist -->
+ <!-- end of footnote.module -->
+ <xs:attributeGroup name="highlights.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary of the main points of the discussed component. -->
+ <xs:element name="highlights">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="highlights.mix"/>
+ <xs:attributeGroup ref="highlights.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of highlights.element -->
+ <xs:attributeGroup name="highlights.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="highlights.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of highlights.attlist -->
+ <!-- end of highlights.module -->
+ <xs:attributeGroup name="formalpara.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph with a title. -->
+ <xs:element name="formalpara" substitutionGroup="para.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="title"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element ref="para"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="formalpara.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of formalpara.element -->
+ <xs:attributeGroup name="formalpara.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="formalpara.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of formalpara.attlist -->
+ <!-- end of formalpara.module -->
+ <xs:attributeGroup name="para.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="para" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="para.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="para.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of para.element -->
+ <xs:attributeGroup name="para.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="para.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of para.attlist -->
+ <!-- end of para.module -->
+ <xs:attributeGroup name="simpara.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph that contains only text and inline markup, no block elements. -->
+ <xs:element name="simpara" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="simpara.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simpara.element -->
+ <xs:attributeGroup name="simpara.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simpara.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simpara.attlist -->
+ <!-- end of simpara.module -->
+ <xs:attributeGroup name="sconstruct.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SConstruct example file. -->
+ <xs:element name="sconstruct" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="sconstruct.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sconstruct.element -->
+ <xs:attributeGroup name="sconstruct.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sconstruct.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sconstruct.attlist -->
+ <!-- end of sconstruct.module -->
+ <xs:attributeGroup name="scons_example.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SCons example. -->
+ <xs:element name="scons_example" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="file"/>
+ <xs:element ref="directory"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_example.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_example.element -->
+ <xs:attributeGroup name="scons_example.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_example.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="printme" type="xs:int" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of scons_example.attlist -->
+ <!-- end of scons_example.module -->
+ <xs:attributeGroup name="file.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SCons example file. -->
+ <xs:element name="file" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="file.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of file.element -->
+ <xs:attributeGroup name="file.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="file.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="example" type="xs:string" use="optional" />
+ <xs:attribute name="chmod" type="xs:string" use="optional" />
+ <xs:attribute name="printme" type="xs:int" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of file.attlist -->
+ <!-- end of file.module -->
+ <xs:attributeGroup name="directory.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An SCons example directory. -->
+ <xs:element name="directory" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="directory.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of directory.element -->
+ <xs:attributeGroup name="directory.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="directory.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of directory.attlist -->
+ <!-- end of directory.module -->
+ <xs:attributeGroup name="scons_example_file.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A SCons example file. -->
+ <xs:element name="scons_example_file" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_example_file.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_example_file.element -->
+ <xs:attributeGroup name="scons_example_file.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_example_file.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="example" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of scons_example_file.attlist -->
+ <!-- end of scons_example_file.module -->
+ <xs:attributeGroup name="scons_output.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The output of a SCons command/example. -->
+ <xs:element name="scons_output" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="scons_output_command"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_output.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_output.element -->
+ <xs:attributeGroup name="scons_output.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_output.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" />
+ <xs:attribute name="tools" type="xs:string" />
+ <xs:attribute name="example" type="xs:string" use="required" />
+ <xs:attribute name="suffix" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of scons_output.attlist -->
+ <!-- end of scons_output.module -->
+ <xs:attributeGroup name="scons_output_command.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A SCons example file. -->
+ <xs:element name="scons_output_command" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_output_command.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_output_command.element -->
+ <xs:attributeGroup name="scons_output_command.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_output_command.role.attrib"/>
+ <xs:attribute name="edit" type="xs:string" use="optional" />
+ <xs:attribute name="environment" type="xs:string" use="optional" />
+ <xs:attribute name="output" type="xs:string" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of scons_output_command.attlist -->
+ <!-- end of scons_output_command.module -->
+ <xs:attributeGroup name="sconsdoc.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A sconsdoc. -->
+ <xs:element name="sconsdoc" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="tool"/>
+ <xs:element ref="builder"/>
+ <xs:element ref="scons_function"/>
+ <xs:element ref="cvar"/>
+ </xs:choice>
+ <xs:attributeGroup ref="sconsdoc.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sconsdoc.element -->
+ <xs:attributeGroup name="sconsdoc.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sconsdoc.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sconsdoc.attlist -->
+ <!-- end of sconsdoc.module -->
+ <xs:attributeGroup name="example_commands.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text that a user sees or might see on a computer screen. -->
+ <xs:element name="example_commands" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="example_commands.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of example_commands.element -->
+ <xs:attributeGroup name="example_commands.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="example_commands.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of example_commands.attlist -->
+ <!-- end of example_commands.module -->
+ <xs:attributeGroup name="summary.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary. -->
+ <xs:element name="summary" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="component.mix"/>
+ <xs:group ref="summary.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="summary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of summary.element -->
+ <xs:attributeGroup name="summary.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="summary.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of summary.attlist -->
+ <!-- end of summary.module -->
+
+ <xs:attributeGroup name="item.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A item. -->
+ <xs:element name="item">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="item.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of item.element -->
+ <xs:attributeGroup name="item.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="item.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of item.attlist -->
+ <!-- end of item.module -->
+ <xs:attributeGroup name="sets.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a bullet or other dingbat. -->
+ <xs:element name="sets" substitutionGroup="list.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="item"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="sets.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sets.element -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <!--
+ Mark: Keyword, e.g., bullet, dash, checkbox, none;
+ list of keywords and defaults are implementation specific
+ -->
+ <xs:attributeGroup name="sets.attlist">
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="mark.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sets.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sets.attlist -->
+ <!-- end of sets.module -->
+ <xs:attributeGroup name="uses.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a bullet or other dingbat. -->
+ <xs:element name="uses" substitutionGroup="list.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="item"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="uses.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of uses.element -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <!--
+ Mark: Keyword, e.g., bullet, dash, checkbox, none;
+ list of keywords and defaults are implementation specific
+ -->
+ <xs:attributeGroup name="uses.attlist">
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="mark.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="uses.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of uses.attlist -->
+ <!-- end of uses.module -->
+ <xs:attributeGroup name="tool.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="tool" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.mix"/>
+ <xs:group ref="tool.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="tool.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tool.element -->
+ <xs:attributeGroup name="tool.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="tool.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of tool.attlist -->
+ <!-- end of tool.module -->
+ <xs:attributeGroup name="builder.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="builder" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.mix"/>
+ <xs:group ref="tool.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="builder.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of builder.element -->
+ <xs:attributeGroup name="builder.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="builder.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of builder.attlist -->
+ <!-- end of builder.module -->
+
+ <xs:attributeGroup name="cvar.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="cvar" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.mix"/>
+ <xs:element ref="summary"/>
+ </xs:choice>
+ <xs:attributeGroup ref="cvar.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of cvar.element -->
+ <xs:attributeGroup name="cvar.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="cvar.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of cvar.attlist -->
+ <!-- end of cvar.module -->
+ <xs:attributeGroup name="arguments.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A general-purpose element for representing the syntax of commands or functions. -->
+ <xs:element name="arguments" substitutionGroup="synop.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="arguments.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of arguments.element -->
+ <xs:attributeGroup name="arguments.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="arguments.role.attrib"/>
+ <xs:attribute name="signature" type="xs:string" use="optional" />
+ <xs:attribute name="both" type="xs:string" use="optional" />
+ </xs:attributeGroup>
+ <!-- end of arguments.attlist -->
+ <!-- end of arguments.module -->
+ <xs:attributeGroup name="scons_function.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A paragraph. -->
+ <xs:element name="scons_function" substitutionGroup="para.class">
+ <xs:complexType mixed="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ TODO
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="para.mix"/>
+ <xs:group ref="scons_function.mix"/>
+ </xs:choice>
+ <xs:attributeGroup ref="scons_function.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of scons_function.element -->
+ <xs:attributeGroup name="scons_function.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="scons_function.role.attrib"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ </xs:attributeGroup>
+ <!-- end of scons_function.attlist -->
+ <!-- end of scons_function.module -->
+ <xs:attributeGroup name="admon.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A note of caution. -->
+ <xs:element name="caution" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="caution.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of caution.element -->
+ <xs:attributeGroup name="caution.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of caution.attlist -->
+ <!-- doc:An admonition set off from the text. -->
+ <xs:element name="important" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="important.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of important.element -->
+ <xs:attributeGroup name="important.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of important.attlist -->
+ <!-- doc:A message set off from the text. -->
+ <xs:element name="note" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="note.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of note.element -->
+ <xs:attributeGroup name="note.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of note.attlist -->
+ <!-- doc:A suggestion to the user, set off from the text. -->
+ <xs:element name="tip" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="tip.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tip.element -->
+ <xs:attributeGroup name="tip.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tip.attlist -->
+ <!-- doc:An admonition set off from the text. -->
+ <xs:element name="warning" substitutionGroup="admon.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="admon.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="warning.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of warning.element -->
+ <xs:attributeGroup name="warning.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="admon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of warning.attlist -->
+ <!-- end of admon.module -->
+ <!-- ...................................................................... -->
+ <!-- Lists ................................................................ -->
+ <!-- GlossList ........................ -->
+ <xs:attributeGroup name="glosslist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a set of GlossEntrys. -->
+ <xs:element name="glosslist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:element maxOccurs="unbounded" ref="glossentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glosslist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glosslist.element -->
+ <xs:attributeGroup name="glosslist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glosslist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glosslist.attlist -->
+ <!-- end of glosslist.module -->
+ <xs:attributeGroup name="glossentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry in a Glossary or GlossList. -->
+ <xs:element name="glossentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="glossterm"/>
+ <xs:element minOccurs="0" ref="acronym"/>
+ <xs:element minOccurs="0" ref="abbrev"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element minOccurs="0" ref="revhistory"/>
+ <xs:choice>
+ <xs:element ref="glosssee"/>
+ <xs:element maxOccurs="unbounded" ref="glossdef"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossentry.element -->
+ <!--
+ SortAs: String by which the GlossEntry is to be sorted
+ (alphabetized) in lieu of its proper content
+ -->
+ <xs:attributeGroup name="glossentry.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossentry.attlist -->
+ <!-- end of glossentry.module -->
+ <!-- GlossTerm (defined in the Inlines section, below) -->
+ <xs:attributeGroup name="glossdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A definition in a GlossEntry. -->
+ <xs:element name="glossdef">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="glossdef.mix"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="glossseealso"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="glossdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossdef.element -->
+ <!-- Subject: List of subjects; keywords for the definition -->
+ <xs:attributeGroup name="glossdef.attlist">
+ <xs:attribute name="subject"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossdef.attlist -->
+ <!-- end of glossdef.module -->
+ <xs:attributeGroup name="glosssee.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross-reference from one GlossEntry to another. -->
+ <xs:element name="glosssee">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="glosssee.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glosssee.element -->
+ <!--
+ OtherTerm: Reference to the GlossEntry whose GlossTerm
+ should be displayed at the point of the GlossSee
+ -->
+ <xs:attributeGroup name="glosssee.attlist">
+ <xs:attribute name="otherterm" type="xs:IDREF"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glosssee.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glosssee.attlist -->
+ <!-- end of glosssee.module -->
+ <xs:attributeGroup name="glossseealso.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross-reference from one GlossEntry to another. -->
+ <xs:element name="glossseealso">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="glossseealso.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossseealso.element -->
+ <!--
+ OtherTerm: Reference to the GlossEntry whose GlossTerm
+ should be displayed at the point of the GlossSeeAlso
+ -->
+ <xs:attributeGroup name="glossseealso.attlist">
+ <xs:attribute name="otherterm" type="xs:IDREF"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossseealso.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossseealso.attlist -->
+ <!-- end of glossseealso.module -->
+ <!-- end of glossentry.content.module -->
+ <!-- ItemizedList and OrderedList ..... -->
+ <xs:attributeGroup name="itemizedlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a bullet or other dingbat. -->
+ <xs:element name="itemizedlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element maxOccurs="unbounded" ref="listitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="itemizedlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of itemizedlist.element -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <!--
+ Mark: Keyword, e.g., bullet, dash, checkbox, none;
+ list of keywords and defaults are implementation specific
+ -->
+ <xs:attributeGroup name="itemizedlist.attlist">
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="mark.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="itemizedlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of itemizedlist.attlist -->
+ <!-- end of itemizedlist.module -->
+ <xs:attributeGroup name="orderedlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is marked with a sequentially incremented label. -->
+ <xs:element name="orderedlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element maxOccurs="unbounded" ref="listitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="orderedlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of orderedlist.element -->
+ <!--
+ Numeration: Style of ListItem numbered; default is expected
+ to be Arabic
+ -->
+ <!--
+ InheritNum: Specifies for a nested list that the numbering
+ of ListItems should include the number of the item
+ within which they are nested (e.g., 1a and 1b within 1,
+ rather than a and b)
+ -->
+ <!--
+ Continuation: Where list numbering begins afresh (Restarts,
+ the default) or continues that of the immediately preceding
+ list (Continues)
+ -->
+ <!--
+ Spacing: Whether the vertical space in the list should be
+ compressed
+ -->
+ <xs:attributeGroup name="orderedlist.attlist">
+ <xs:attribute name="numeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="arabic"/>
+ <xs:enumeration value="upperalpha"/>
+ <xs:enumeration value="loweralpha"/>
+ <xs:enumeration value="upperroman"/>
+ <xs:enumeration value="lowerroman"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="inheritnum" default="ignore">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="inherit"/>
+ <xs:enumeration value="ignore"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="continuation" default="restarts">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="continues"/>
+ <xs:enumeration value="restarts"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="orderedlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of orderedlist.attlist -->
+ <!-- end of orderedlist.module -->
+ <xs:attributeGroup name="listitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for the elements of a list item. -->
+ <xs:element name="listitem">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:attributeGroup ref="listitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of listitem.element -->
+ <!--
+ Override: Indicates the mark to be used for this ListItem
+ instead of the default mark or the mark specified by
+ the Mark attribute on the enclosing ItemizedList
+ -->
+ <xs:attributeGroup name="listitem.attlist">
+ <xs:attribute name="override"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="listitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of listitem.attlist -->
+ <!-- end of listitem.module -->
+ <!-- SegmentedList .................... -->
+ <xs:attributeGroup name="segmentedlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A segmented list, a list of sets of elements. -->
+ <xs:element name="segmentedlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:element maxOccurs="unbounded" ref="segtitle"/>
+ <xs:element maxOccurs="unbounded" ref="seglistitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="segmentedlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of segmentedlist.element -->
+ <xs:attributeGroup name="segmentedlist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="segmentedlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of segmentedlist.attlist -->
+ <!-- end of segmentedlist.module -->
+ <xs:attributeGroup name="segtitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of an element of a list item in a segmented list. -->
+ <xs:element name="segtitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="title.char.mix"/>
+ <xs:attributeGroup ref="segtitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of segtitle.element -->
+ <xs:attributeGroup name="segtitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="segtitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of segtitle.attlist -->
+ <!-- end of segtitle.module -->
+ <xs:attributeGroup name="seglistitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list item in a segmented list. -->
+ <xs:element name="seglistitem">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="seg"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="seglistitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seglistitem.element -->
+ <xs:attributeGroup name="seglistitem.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seglistitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seglistitem.attlist -->
+ <!-- end of seglistitem.module -->
+ <xs:attributeGroup name="seg.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An element of a list item in a segmented list. -->
+ <xs:element name="seg">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="seg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seg.element -->
+ <xs:attributeGroup name="seg.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seg.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seg.attlist -->
+ <!-- end of seg.module -->
+ <!-- end of segmentedlist.content.module -->
+ <!-- SimpleList ....................... -->
+ <xs:attributeGroup name="simplelist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An undecorated list of single words or short phrases. -->
+ <xs:element name="simplelist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="member"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="simplelist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of simplelist.element -->
+ <!-- Columns: The number of columns the array should contain -->
+ <!--
+ Type: How the Members of the SimpleList should be
+ formatted: Inline (members separated with commas etc.
+ inline), Vert (top to bottom in n Columns), or Horiz (in
+ the direction of text flow) in n Columns. If Column
+ is 1 or implied, Type=Vert and Type=Horiz give the same
+ results.
+ -->
+ <xs:attributeGroup name="simplelist.attlist">
+ <xs:attribute name="columns"/>
+ <xs:attribute name="type" default="vert">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="inline"/>
+ <xs:enumeration value="vert"/>
+ <xs:enumeration value="horiz"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="simplelist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of simplelist.attlist -->
+ <!-- end of simplelist.module -->
+ <xs:attributeGroup name="member.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An element of a simple list. -->
+ <xs:element name="member">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="member.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of member.element -->
+ <xs:attributeGroup name="member.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="member.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of member.attlist -->
+ <!-- end of member.module -->
+ <!-- end of simplelist.content.module -->
+ <!-- VariableList ..................... -->
+ <xs:attributeGroup name="variablelist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list in which each entry is composed of a set of one or more terms and an associated description. -->
+ <xs:element name="variablelist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="listpreamble.mix"/>
+ <xs:element maxOccurs="unbounded" ref="varlistentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="variablelist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of variablelist.element -->
+ <!--
+ TermLength: Length beyond which the presentation engine
+ may consider the Term too long and select an alternate
+ presentation of the Term and, or, its associated ListItem.
+ -->
+ <xs:attributeGroup name="variablelist.attlist">
+ <xs:attribute name="termlength"/>
+ <xs:attribute name="spacing">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="compact"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="variablelist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of variablelist.attlist -->
+ <!-- end of variablelist.module -->
+ <xs:attributeGroup name="varlistentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a set of terms and the associated description in a variable list. -->
+ <xs:element name="varlistentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="term"/>
+ <xs:element ref="listitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="varlistentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of varlistentry.element -->
+ <xs:attributeGroup name="varlistentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="varlistentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of varlistentry.attlist -->
+ <!-- end of varlistentry.module -->
+ <xs:attributeGroup name="term.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The word or phrase being defined or described in a variable list. -->
+ <xs:element name="term">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="term.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of term.element -->
+ <xs:attributeGroup name="term.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="term.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of term.attlist -->
+ <!-- end of term.module -->
+ <!-- ListItem (defined above) -->
+ <!-- end of variablelist.content.module -->
+ <!-- CalloutList ...................... -->
+ <xs:attributeGroup name="calloutlist.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A list of Callouts. -->
+ <xs:element name="calloutlist" substitutionGroup="list.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:element maxOccurs="unbounded" ref="callout"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="calloutlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of calloutlist.element -->
+ <xs:attributeGroup name="calloutlist.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="calloutlist.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of calloutlist.attlist -->
+ <!-- end of calloutlist.module -->
+ <xs:attributeGroup name="callout.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A &ldquo;called out&rdquo; description of a marked Area. -->
+ <xs:element name="callout">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:attributeGroup ref="callout.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of callout.element -->
+ <!--
+ AreaRefs: IDs of one or more Areas or AreaSets described
+ by this Callout
+ -->
+ <xs:attributeGroup name="callout.attlist">
+ <xs:attribute name="arearefs" use="required" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="callout.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of callout.attlist -->
+ <!-- end of callout.module -->
+ <!-- end of calloutlist.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Objects .............................................................. -->
+ <!-- Examples etc. .................... -->
+ <xs:attributeGroup name="example.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A formal example, with a title. -->
+ <xs:element name="example" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:group maxOccurs="unbounded" ref="example.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="example.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of example.element -->
+ <xs:attributeGroup name="example.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="example.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of example.attlist -->
+ <!-- end of example.module -->
+ <xs:attributeGroup name="informalexample.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed example without a title. -->
+ <xs:element name="informalexample" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group maxOccurs="unbounded" ref="example.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="informalexample.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informalexample.element -->
+ <xs:attributeGroup name="informalexample.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="informalexample.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of informalexample.attlist -->
+ <!-- end of informalexample.module -->
+ <xs:attributeGroup name="programlistingco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A program listing with associated areas used in callouts. -->
+ <xs:element name="programlistingco" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="programlisting"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="programlistingco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of programlistingco.element -->
+ <xs:attributeGroup name="programlistingco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="programlistingco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of programlistingco.attlist -->
+ <!-- CalloutList (defined above in Lists) -->
+ <!-- end of informalexample.module -->
+ <xs:attributeGroup name="areaspec.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A collection of regions in a graphic or code example. -->
+ <xs:element name="areaspec">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="area"/>
+ <xs:element ref="areaset"/>
+ </xs:choice>
+ <xs:attributeGroup ref="areaspec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of areaspec.element -->
+ <!--
+ Units: global unit of measure in which coordinates in
+ this spec are expressed:
+
+ - CALSPair "x1,y1 x2,y2": lower-left and upper-right
+ coordinates in a rectangle describing repro area in which
+ graphic is placed, where X and Y dimensions are each some
+ number 0..10000 (taken from CALS graphic attributes)
+
+ - LineColumn "line column": line number and column number
+ at which to start callout text in "linespecific" content
+
+ - LineRange "startline endline": whole lines from startline
+ to endline in "linespecific" content
+
+ - LineColumnPair "line1 col1 line2 col2": starting and ending
+ points of area in "linespecific" content that starts at
+ first position and ends at second position (including the
+ beginnings of any intervening lines)
+
+ - Other: directive to look at value of OtherUnits attribute
+ to get implementation-specific keyword
+
+ The default is implementation-specific; usually dependent on
+ the parent element (GraphicCO gets CALSPair, ProgramListingCO
+ and ScreenCO get LineColumn)
+ -->
+ <!-- OtherUnits: User-defined units -->
+ <xs:attributeGroup name="areaspec.attlist">
+ <xs:attribute name="units">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="calspair"/>
+ <xs:enumeration value="linecolumn"/>
+ <xs:enumeration value="linerange"/>
+ <xs:enumeration value="linecolumnpair"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="areaspec.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of areaspec.attlist -->
+ <!-- end of areaspec.module -->
+ <xs:attributeGroup name="area.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A region defined for a Callout in a graphic or code example. -->
+ <xs:element name="area">
+ <xs:complexType>
+ <xs:attributeGroup ref="area.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of area.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <!--
+ Units: unit of measure in which coordinates in this
+ area are expressed; inherits from AreaSet and AreaSpec
+ -->
+ <!-- OtherUnits: User-defined units -->
+ <xs:attributeGroup name="area.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attribute name="units">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="calspair"/>
+ <xs:enumeration value="linecolumn"/>
+ <xs:enumeration value="linerange"/>
+ <xs:enumeration value="linecolumnpair"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+ <xs:attribute name="coords" use="required"/>
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="area.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of area.attlist -->
+ <!-- end of area.module -->
+ <xs:attributeGroup name="areaset.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A set of related areas in a graphic or code example. -->
+ <xs:element name="areaset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="area"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="areaset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of areaset.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!--
+ Units: unit of measure in which coordinates in this
+ area are expressed; inherits from AreaSpec
+ -->
+ <xs:attributeGroup name="areaset.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attribute name="units">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="calspair"/>
+ <xs:enumeration value="linecolumn"/>
+ <xs:enumeration value="linerange"/>
+ <xs:enumeration value="linecolumnpair"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+ <xs:attribute name="coords" use="required"/>
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="areaset.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of areaset.attlist -->
+ <!-- end of areaset.module -->
+ <!-- end of areaspec.content.module -->
+ <xs:attributeGroup name="programlisting.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A literal listing of all or part of a program. -->
+ <xs:element name="programlisting" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="lineannotation"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ <xs:attributeGroup ref="programlisting.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of programlisting.element -->
+ <xs:attributeGroup name="programlisting.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="programlisting.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of programlisting.attlist -->
+ <!-- end of programlisting.module -->
+ <xs:attributeGroup name="literallayout.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A block of text in which line breaks and white space are to be reproduced faithfully. -->
+ <xs:element name="literallayout" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="literallayout.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of literallayout.element -->
+ <xs:attributeGroup name="literallayout.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attribute name="class" default="normal">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="monospaced"/>
+ <xs:enumeration value="normal"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="literallayout.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of literallayout.attlist -->
+ <!-- LineAnnotation (defined in the Inlines section, below) -->
+ <!-- end of literallayout.module -->
+ <xs:attributeGroup name="screenco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A screen with associated areas used in callouts. -->
+ <xs:element name="screenco" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="screen"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="screenco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screenco.element -->
+ <xs:attributeGroup name="screenco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screenco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screenco.attlist -->
+ <!-- AreaSpec (defined above) -->
+ <!-- CalloutList (defined above in Lists) -->
+ <!-- end of screenco.module -->
+ <xs:attributeGroup name="screen.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text that a user sees or might see on a computer screen. -->
+ <xs:element name="screen" substitutionGroup="linespecific.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="screen.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screen.element -->
+ <xs:attributeGroup name="screen.attlist">
+ <xs:attributeGroup ref="width.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screen.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screen.attlist -->
+ <!-- end of screen.module -->
+ <xs:attributeGroup name="screenshot.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A representation of what the user sees or might see on a computer screen. -->
+ <xs:element name="screenshot" substitutionGroup="linespecific.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="screeninfo"/>
+ <xs:choice>
+ <xs:element ref="graphic"/>
+ <xs:element ref="graphicco"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="mediaobjectco"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="screenshot.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screenshot.element -->
+ <xs:attributeGroup name="screenshot.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screenshot.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screenshot.attlist -->
+ <!-- end of screenshot.module -->
+ <xs:attributeGroup name="screeninfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about how a screen shot was produced. -->
+ <xs:element name="screeninfo">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="screeninfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of screeninfo.element -->
+ <xs:attributeGroup name="screeninfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="screeninfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of screeninfo.attlist -->
+ <!-- end of screeninfo.module -->
+ <!-- end of screenshot.content.module -->
+ <!-- Figures etc. ..................... -->
+ <xs:attributeGroup name="figure.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A formal figure, generally an illustration, with a title. -->
+ <xs:element name="figure" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:group ref="figure.mix"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="figure.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of figure.element -->
+ <!--
+ Float: Whether the Figure is supposed to be rendered
+ where convenient (yes (1) value) or at the place it occurs
+ in the text (no (0) value, the default)
+ -->
+ <xs:attributeGroup name="figure.attlist">
+ <xs:attribute name="float" default="0" type="yesorno.attvals"/>
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="pgwide" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="figure.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of figure.attlist -->
+ <!-- end of figure.module -->
+ <xs:attributeGroup name="informalfigure.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A untitled figure. -->
+ <xs:element name="informalfigure" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:group ref="figure.mix"/>
+ <xs:element ref="link.char.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="informalfigure.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informalfigure.element -->
+ <!--
+ Float: Whether the Figure is supposed to be rendered
+ where convenient (yes (1) value) or at the place it occurs
+ in the text (no (0) value, the default)
+ -->
+ <xs:attributeGroup name="informalfigure.attlist">
+ <xs:attribute name="float" default="0" type="yesorno.attvals"/>
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="pgwide" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="informalfigure.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of informalfigure.attlist -->
+ <!-- end of informalfigure.module -->
+ <xs:attributeGroup name="graphicco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A graphic that contains callout areas. -->
+ <xs:element name="graphicco" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="graphic"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="graphicco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of graphicco.element -->
+ <xs:attributeGroup name="graphicco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="graphicco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of graphicco.attlist -->
+ <!-- AreaSpec (defined above in Examples) -->
+ <!-- CalloutList (defined above in Lists) -->
+ <!-- end of graphicco.module -->
+ <!--
+ Graphical data can be the content of Graphic, or you can reference
+ an external file either as an entity (Entitref) or a filename
+ (Fileref).
+ -->
+ <xs:attributeGroup name="graphic.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed graphical object (not an inline). -->
+ <xs:element name="graphic" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="graphic.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of graphic.element -->
+ <xs:attributeGroup name="graphic.attlist">
+ <xs:attributeGroup ref="graphics.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="graphic.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of graphic.attlist -->
+ <!-- end of graphic.module -->
+ <xs:attributeGroup name="inlinegraphic.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An object containing or pointing to graphical data that will be rendered inline. -->
+ <xs:element name="inlinegraphic" substitutionGroup="inlineobj.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="inlinegraphic.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of inlinegraphic.element -->
+ <xs:attributeGroup name="inlinegraphic.attlist">
+ <xs:attributeGroup ref="graphics.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="inlinegraphic.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of inlinegraphic.attlist -->
+ <!-- end of inlinegraphic.module -->
+ <xs:attributeGroup name="mediaobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed media object (video, audio, image, etc.). -->
+ <xs:element name="mediaobject" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject.mix"/>
+ <xs:element minOccurs="0" ref="caption"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="mediaobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mediaobject.element -->
+ <xs:attributeGroup name="mediaobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mediaobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mediaobject.attlist -->
+ <!-- end of mediaobject.module -->
+ <xs:attributeGroup name="inlinemediaobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline media object (video, audio, image, and so on). -->
+ <xs:element name="inlinemediaobject" substitutionGroup="inlineobj.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="inlinemediaobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of inlinemediaobject.element -->
+ <xs:attributeGroup name="inlinemediaobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="inlinemediaobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of inlinemediaobject.attlist -->
+ <!-- end of inlinemediaobject.module -->
+ <xs:attributeGroup name="videoobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for video data and its associated meta-information. -->
+ <xs:element name="videoobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="videodata"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="videoobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of videoobject.element -->
+ <xs:attributeGroup name="videoobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="videoobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of videoobject.attlist -->
+ <!-- end of videoobject.module -->
+ <xs:attributeGroup name="audioobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for audio data and its associated meta-information. -->
+ <xs:element name="audioobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="audiodata"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="audioobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of audioobject.element -->
+ <xs:attributeGroup name="audioobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="audioobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of audioobject.attlist -->
+ <!-- end of audioobject.module -->
+ <xs:attributeGroup name="imageobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for image data and its associated meta-information. -->
+ <xs:element name="imageobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="imagedata"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="imageobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of imageobject.element -->
+ <xs:attributeGroup name="imageobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="imageobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of imageobject.attlist -->
+ <!-- end of imageobject.module -->
+ <xs:attributeGroup name="textobject.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for a text description of an object and its associated meta-information. -->
+ <xs:element name="textobject" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:choice>
+ <xs:element ref="phrase"/>
+ <xs:element ref="textdata"/>
+ <xs:group maxOccurs="unbounded" ref="textobject.mix"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="textobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of textobject.element -->
+ <xs:attributeGroup name="textobject.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="textobject.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of textobject.attlist -->
+ <!-- end of textobject.module -->
+ <xs:attributeGroup name="objectinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Meta-information for an object. -->
+ <xs:element name="objectinfo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="info.class"/>
+ <xs:attributeGroup ref="objectinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of objectinfo.element -->
+ <xs:attributeGroup name="objectinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="objectinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of objectinfo.attlist -->
+ <!-- end of objectinfo.module -->
+ <!--
+ EntityRef: Name of an external entity containing the content
+ of the object data
+ -->
+ <!--
+ FileRef: Filename, qualified by a pathname if desired,
+ designating the file containing the content of the object data
+ -->
+ <!-- Format: Notation of the element content, if any -->
+ <!-- SrcCredit: Information about the source of the image -->
+ <xs:attributeGroup name="objectdata.attrib">
+ <xs:attribute name="entityref" type="xs:ENTITY"/>
+ <xs:attribute name="fileref"/>
+ <xs:attribute name="format" type="notation.class"/>
+ <xs:attribute name="srccredit"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="videodata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external video data. -->
+ <xs:element name="videodata">
+ <xs:complexType>
+ <xs:attributeGroup ref="videodata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of videodata.element -->
+ <!-- Width: Same as CALS reprowid (desired width) -->
+ <!-- Depth: Same as CALS reprodep (desired depth) -->
+ <!--
+ Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific
+ -->
+ <!-- Scale: Conflation of CALS hscale and vscale -->
+ <!-- Scalefit: Same as CALS scalefit -->
+ <xs:attributeGroup name="videodata.attlist">
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="scale"/>
+ <xs:attribute name="scalefit" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="videodata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of videodata.attlist -->
+ <!-- end of videodata.module -->
+ <xs:attributeGroup name="audiodata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external audio data. -->
+ <xs:element name="audiodata">
+ <xs:complexType>
+ <xs:attributeGroup ref="audiodata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of audiodata.element -->
+ <xs:attributeGroup name="audiodata.attlist">
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="audiodata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of audiodata.attlist -->
+ <!-- end of audiodata.module -->
+ <xs:attributeGroup name="imagedata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external image data. -->
+ <xs:element name="imagedata">
+ <xs:complexType>
+ <xs:attributeGroup ref="imagedata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of imagedata.element -->
+ <!-- Width: Same as CALS reprowid (desired width) -->
+ <!-- Depth: Same as CALS reprodep (desired depth) -->
+ <!--
+ Align: Same as CALS hplace with 'none' removed; #IMPLIED means
+ application-specific
+ -->
+ <!-- Scale: Conflation of CALS hscale and vscale -->
+ <!-- Scalefit: Same as CALS scalefit -->
+ <xs:attributeGroup name="imagedata.attlist">
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="scale"/>
+ <xs:attribute name="scalefit" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="imagedata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of imagedata.attlist -->
+ <!-- end of imagedata.module -->
+ <xs:attributeGroup name="textdata.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Pointer to external text data. -->
+ <xs:element name="textdata">
+ <xs:complexType>
+ <xs:attributeGroup ref="textdata.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of textdata.element -->
+ <xs:attributeGroup name="textdata.attlist">
+ <xs:attribute name="encoding"/>
+ <xs:attributeGroup ref="objectdata.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="textdata.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of textdata.attlist -->
+ <!-- end of textdata.module -->
+ <xs:attributeGroup name="mediaobjectco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A media object that contains callouts. -->
+ <xs:element name="mediaobjectco" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="objectinfo"/>
+ <xs:element ref="imageobjectco"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="imageobjectco"/>
+ <xs:element ref="textobject"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="mediaobjectco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mediaobjectco.element -->
+ <xs:attributeGroup name="mediaobjectco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mediaobjectco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mediaobjectco.attlist -->
+ <!-- end of mediaobjectco.module -->
+ <xs:attributeGroup name="imageobjectco.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for an image object with callouts. -->
+ <xs:element name="imageobjectco" substitutionGroup="mediaobject.mix">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="areaspec"/>
+ <xs:element ref="imageobject"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="imageobjectco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of imageobjectco.element -->
+ <xs:attributeGroup name="imageobjectco.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="imageobjectco.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of imageobjectco.attlist -->
+ <!-- end of imageobjectco.module -->
+ <!-- end of mediaobject.content.module -->
+ <!-- Equations ........................ -->
+ <!-- This PE provides a mechanism for replacing equation content, -->
+ <!-- perhaps adding a new or different model (e.g., MathML) -->
+ <xs:group name="equation.content">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="alt"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="mathphrase"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="inlineequation.content">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="alt"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="inlinemediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="mathphrase"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:attributeGroup name="equation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed mathematical equation. -->
+ <xs:element name="equation" substitutionGroup="formal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group minOccurs="0" ref="formalobject.title.content"/>
+ <xs:choice>
+ <xs:element ref="informalequation"/>
+ <xs:group ref="equation.content"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="equation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of equation.element -->
+ <xs:attributeGroup name="equation.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="equation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of equation.attlist -->
+ <!-- end of equation.module -->
+ <xs:attributeGroup name="informalequation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A displayed mathematical equation without a title. -->
+ <xs:element name="informalequation" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="equation.content"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="informalequation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informalequation.element -->
+ <xs:attributeGroup name="informalequation.attlist">
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="informalequation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of informalequation.attlist -->
+ <!-- end of informalequation.module -->
+ <xs:attributeGroup name="inlineequation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A mathematical equation or expression occurring inline. -->
+ <xs:element name="inlineequation" substitutionGroup="inlineobj.char.class">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="inlineequation.content">
+ <xs:attributeGroup ref="inlineequation.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of inlineequation.element -->
+ <xs:attributeGroup name="inlineequation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="inlineequation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of inlineequation.attlist -->
+ <!-- end of inlineequation.module -->
+ <xs:attributeGroup name="alt.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Text representation for a graphical element. -->
+ <xs:element name="alt">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="alt.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of alt.element -->
+ <xs:attributeGroup name="alt.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="alt.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of alt.attlist -->
+ <!-- end of alt.module -->
+ <xs:attributeGroup name="mathphrase.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A mathematical phrase, an expression that can be represented with ordinary text and a small amount of markup. -->
+ <xs:element name="mathphrase">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="subscript"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="emphasis"/>
+ </xs:choice>
+ <xs:attributeGroup ref="mathphrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mathphrase.element -->
+ <xs:attributeGroup name="mathphrase.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mathphrase.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mathphrase.attlist -->
+ <!-- end of mathphrase.module -->
+ <!-- Tables ........................... -->
+ <!-- Choose a table model. CALS or OASIS XML Exchange -->
+ <!-- Do we allow the HTML table model as well? -->
+ <!-- ====================================================== -->
+ <!--
+ xhtmltbl.mod defines HTML tables and sets parameter
+ entities so that, when the CALS table module is read,
+ we end up allowing any table to be CALS or HTML.
+ i.e. This include must come first!
+ -->
+ <!-- ====================================================== -->
+ <!-- end of allow.html.tables -->
+ <!-- Add label and role attributes to table and informaltable -->
+ <!--
+ Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
+ EntryTbl, and Entry (and InformalTable element).
+ -->
+ <!-- Content model for Table. -->
+ <!-- Allow either objects or inlines; beware of REs between elements. -->
+ <!-- Reference CALS Table Model -->
+ <!-- end of table.module -->
+ <!--
+ Note that InformalTable is dependent on some of the entity
+ declarations that customize Table.
+ -->
+ <!-- the following entity may have been declared by the XHTML table module -->
+ <!-- doc:A table without a title. -->
+ <xs:element name="informaltable" substitutionGroup="informal.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="informal.tbl.table.mdl"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="informaltable.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of informaltable.element -->
+ <!--
+ Frame, Colsep, and Rowsep must be repeated because
+ they are not in entities in the table module.
+ -->
+ <!--
+ includes TabStyle, ToCentry, ShortEntry,
+ Orient, PgWide
+ -->
+ <!-- includes Label -->
+ <!-- includes common attributes -->
+ <xs:attributeGroup name="informaltable.attlist">
+ <xs:attribute name="frame" type="tbl.frame.attval"/>
+ <xs:attribute name="colsep" type="yesorno.attvals"/>
+ <xs:attribute name="rowsep" type="yesorno.attvals"/>
+ <xs:attributeGroup ref="common.table.attribs"/>
+ <xs:attributeGroup ref="tbl.table.att"/>
+ </xs:attributeGroup>
+ <!-- end of informaltable.attlist -->
+ <!-- end of informaltable.module -->
+ <xs:attributeGroup name="caption.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A caption. -->
+ <xs:element name="caption">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="textobject.mix"/>
+ <xs:attributeGroup ref="caption.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of caption.element -->
+ <!-- attrs comes from HTML tables ... -->
+ <!-- common.attrib, but without ID because ID is in attrs -->
+ <xs:attributeGroup name="caption.attlist.content">
+ <xs:attributeGroup ref="caption.role.attrib"/>
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="bottom"/>
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="caption.attlist">
+ <xs:attributeGroup ref="caption.attlist.content"/>
+ </xs:attributeGroup>
+ <!-- end of caption.attlist -->
+ <!-- end of caption.module -->
+ <!-- ...................................................................... -->
+ <!-- Synopses ............................................................. -->
+ <!-- Synopsis ......................... -->
+ <xs:attributeGroup name="synopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A general-purpose element for representing the syntax of commands or functions. -->
+ <xs:element name="synopsis" substitutionGroup="synop.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:element ref="graphic"/>
+ <xs:element ref="mediaobject"/>
+ <xs:element ref="co"/>
+ <xs:element ref="coref"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="synopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of synopsis.element -->
+ <xs:attributeGroup name="synopsis.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="synopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of synopsis.attlist -->
+ <!-- LineAnnotation (defined in the Inlines section, below) -->
+ <!-- end of synopsis.module -->
+ <!-- CmdSynopsis ...................... -->
+ <xs:attributeGroup name="cmdsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a software command. -->
+ <xs:element name="cmdsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="command"/>
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ <xs:element ref="sbr"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="synopfragment"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="cmdsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of cmdsynopsis.element -->
+ <!--
+ Sepchar: Character that should separate command and all
+ top-level arguments; alternate value might be e.g., &Delta;
+ -->
+ <xs:attributeGroup name="cmdsynopsis.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attribute name="sepchar" default=" "/>
+ <xs:attribute name="cmdlength"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="cmdsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of cmdsynopsis.attlist -->
+ <!-- end of cmdsynopsis.module -->
+ <xs:attributeGroup name="arg.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An argument in a CmdSynopsis. -->
+ <xs:element name="arg">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ <xs:element ref="option"/>
+ <xs:element ref="synopfragmentref"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="sbr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="arg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of arg.element -->
+ <!--
+ Choice: Whether Arg must be supplied: Opt (optional to
+ supply, e.g. [arg]; the default), Req (required to supply,
+ e.g. {arg}), or Plain (required to supply, e.g. arg)
+ -->
+ <!--
+ Rep: whether Arg is repeatable: Norepeat (e.g. arg without
+ ellipsis; the default), or Repeat (e.g. arg...)
+ -->
+ <xs:attributeGroup name="arg.attlist">
+ <xs:attribute name="choice" default="opt">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ <xs:enumeration value="plain"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rep" default="norepeat">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="norepeat"/>
+ <xs:enumeration value="repeat"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="arg.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of arg.attlist -->
+ <!-- end of arg.module -->
+ <xs:attributeGroup name="group.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A group of elements in a CmdSynopsis. -->
+ <xs:element name="group">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ <xs:element ref="option"/>
+ <xs:element ref="synopfragmentref"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="sbr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="group.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of group.element -->
+ <!--
+ Choice: Whether Group must be supplied: Opt (optional to
+ supply, e.g. [g1|g2|g3]; the default), Req (required to
+ supply, e.g. {g1|g2|g3}), Plain (required to supply,
+ e.g. g1|g2|g3), OptMult (can supply zero or more, e.g.
+ [[g1|g2|g3]]), or ReqMult (must supply one or more, e.g.
+ {{g1|g2|g3}})
+ -->
+ <!--
+ Rep: whether Group is repeatable: Norepeat (e.g. group
+ without ellipsis; the default), or Repeat (e.g. group...)
+ -->
+ <xs:attributeGroup name="group.attlist">
+ <xs:attribute name="choice" default="opt">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ <xs:enumeration value="plain"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rep" default="norepeat">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="norepeat"/>
+ <xs:enumeration value="repeat"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="group.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of group.attlist -->
+ <!-- end of group.module -->
+ <!-- Synopsis break -->
+ <xs:attributeGroup name="sbr.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An explicit line break in a command synopsis. -->
+ <xs:element name="sbr">
+ <xs:complexType>
+ <xs:attributeGroup ref="sbr.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sbr.element -->
+ <xs:attributeGroup name="sbr.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sbr.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sbr.attlist -->
+ <!-- end of sbr.module -->
+ <xs:attributeGroup name="synopfragmentref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A reference to a fragment of a command synopsis. -->
+ <xs:element name="synopfragmentref">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="synopfragmentref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of synopfragmentref.element -->
+ <!--
+ to SynopFragment of complex synopsis
+ material for separate referencing
+ -->
+ <xs:attributeGroup name="synopfragmentref.attlist">
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="synopfragmentref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of synopfragmentref.attlist -->
+ <!-- end of synopfragmentref.module -->
+ <xs:attributeGroup name="synopfragment.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A portion of a CmdSynopsis broken out from the main body of the synopsis. -->
+ <xs:element name="synopfragment">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="arg"/>
+ <xs:element ref="group"/>
+ </xs:choice>
+ <xs:attributeGroup ref="synopfragment.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of synopfragment.element -->
+ <xs:attributeGroup name="synopfragment.attlist">
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="synopfragment.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of synopfragment.attlist -->
+ <!-- end of synopfragment.module -->
+ <!-- Command (defined in the Inlines section, below) -->
+ <!-- Option (defined in the Inlines section, below) -->
+ <!-- Replaceable (defined in the Inlines section, below) -->
+ <!-- end of cmdsynopsis.content.module -->
+ <!-- FuncSynopsis ..................... -->
+ <xs:attributeGroup name="funcsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The syntax summary for a function definition. -->
+ <xs:element name="funcsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="funcsynopsisinfo"/>
+ <xs:element ref="funcprototype"/>
+ </xs:choice>
+ <xs:attributeGroup ref="funcsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcsynopsis.element -->
+ <xs:attributeGroup name="funcsynopsis.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcsynopsis.attlist -->
+ <!-- end of funcsynopsis.module -->
+ <xs:attributeGroup name="funcsynopsisinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information supplementing the FuncDefs of a FuncSynopsis. -->
+ <xs:element name="funcsynopsisinfo">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="funcsynopsisinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcsynopsisinfo.element -->
+ <xs:attributeGroup name="funcsynopsisinfo.attlist">
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcsynopsisinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcsynopsisinfo.attlist -->
+ <!-- end of funcsynopsisinfo.module -->
+ <xs:attributeGroup name="funcprototype.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The prototype of a function. -->
+ <xs:element name="funcprototype">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element ref="funcdef"/>
+ <xs:choice>
+ <xs:element ref="void"/>
+ <xs:element ref="varargs"/>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="paramdef"/>
+ <xs:element minOccurs="0" ref="varargs"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="funcprototype.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcprototype.element -->
+ <xs:attributeGroup name="funcprototype.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcprototype.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcprototype.attlist -->
+ <!-- end of funcprototype.module -->
+ <xs:attributeGroup name="funcdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A function (subroutine) name and its return type. -->
+ <xs:element name="funcdef">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="type"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="function"/>
+ </xs:choice>
+ <xs:attributeGroup ref="funcdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcdef.element -->
+ <xs:attributeGroup name="funcdef.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcdef.attlist -->
+ <!-- end of funcdef.module -->
+ <xs:attributeGroup name="void.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An empty element in a function synopsis indicating that the function in question takes no arguments. -->
+ <xs:element name="void">
+ <xs:complexType>
+ <xs:attributeGroup ref="void.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of void.element -->
+ <xs:attributeGroup name="void.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="void.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of void.attlist -->
+ <!-- end of void.module -->
+ <xs:attributeGroup name="varargs.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An empty element in a function synopsis indicating a variable number of arguments. -->
+ <xs:element name="varargs">
+ <xs:complexType>
+ <xs:attributeGroup ref="varargs.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of varargs.element -->
+ <xs:attributeGroup name="varargs.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="varargs.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of varargs.attlist -->
+ <!-- end of varargs.module -->
+ <!--
+ Processing assumes that only one Parameter will appear in a
+ ParamDef, and that FuncParams will be used at most once, for
+ providing information on the "inner parameters" for parameters that
+ are pointers to functions.
+ -->
+ <xs:attributeGroup name="paramdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about a function parameter in a programming language. -->
+ <xs:element name="paramdef">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="initializer"/>
+ <xs:element ref="type"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="parameter"/>
+ <xs:element ref="funcparams"/>
+ </xs:choice>
+ <xs:attributeGroup ref="paramdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of paramdef.element -->
+ <xs:attributeGroup name="paramdef.attlist">
+ <xs:attribute name="choice">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="paramdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of paramdef.attlist -->
+ <!-- end of paramdef.module -->
+ <xs:attributeGroup name="funcparams.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Parameters for a function referenced through a function pointer in a synopsis. -->
+ <xs:element name="funcparams">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="funcparams.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of funcparams.element -->
+ <xs:attributeGroup name="funcparams.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="funcparams.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of funcparams.attlist -->
+ <!-- end of funcparams.module -->
+ <!-- LineAnnotation (defined in the Inlines section, below) -->
+ <!-- Replaceable (defined in the Inlines section, below) -->
+ <!-- Function (defined in the Inlines section, below) -->
+ <!-- Parameter (defined in the Inlines section, below) -->
+ <!-- end of funcsynopsis.content.module -->
+ <!-- ClassSynopsis ..................... -->
+ <xs:attributeGroup name="classsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The syntax summary for a class definition. -->
+ <xs:element name="classsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="ooclass"/>
+ <xs:element ref="oointerface"/>
+ <xs:element ref="ooexception"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="classsynopsisinfo"/>
+ <xs:element ref="fieldsynopsis"/>
+ <xs:element ref="method.synop.class"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="classsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of classsynopsis.element -->
+ <xs:attributeGroup name="classsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attribute name="class" default="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="class"/>
+ <xs:enumeration value="interface"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="classsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of classsynopsis.attlist -->
+ <!-- end of classsynopsis.module -->
+ <xs:attributeGroup name="classsynopsisinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information supplementing the contents of a ClassSynopsis. -->
+ <xs:element name="classsynopsisinfo">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="textobject"/>
+ <xs:element ref="lineannotation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="classsynopsisinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of classsynopsisinfo.element -->
+ <xs:attributeGroup name="classsynopsisinfo.attlist">
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="classsynopsisinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of classsynopsisinfo.attlist -->
+ <!-- end of classsynopsisinfo.module -->
+ <xs:attributeGroup name="ooclass.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A class in an object-oriented programming language. -->
+ <xs:element name="ooclass" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="modifier"/>
+ <xs:element ref="package"/>
+ </xs:choice>
+ <xs:element ref="classname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="ooclass.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ooclass.element -->
+ <xs:attributeGroup name="ooclass.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ooclass.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ooclass.attlist -->
+ <!-- end of ooclass.module -->
+ <xs:attributeGroup name="oointerface.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An interface in an object-oriented programming language. -->
+ <xs:element name="oointerface" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="modifier"/>
+ <xs:element ref="package"/>
+ </xs:choice>
+ <xs:element ref="interfacename"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="oointerface.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of oointerface.element -->
+ <xs:attributeGroup name="oointerface.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="oointerface.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of oointerface.attlist -->
+ <!-- end of oointerface.module -->
+ <xs:attributeGroup name="ooexception.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An exception in an object-oriented programming language. -->
+ <xs:element name="ooexception" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="modifier"/>
+ <xs:element ref="package"/>
+ </xs:choice>
+ <xs:element ref="exceptionname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="ooexception.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ooexception.element -->
+ <xs:attributeGroup name="ooexception.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ooexception.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ooexception.attlist -->
+ <!-- end of ooexception.module -->
+ <xs:attributeGroup name="modifier.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Modifiers in a synopsis. -->
+ <xs:element name="modifier">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="modifier.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of modifier.element -->
+ <xs:attributeGroup name="modifier.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="modifier.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of modifier.attlist -->
+ <!-- end of modifier.module -->
+ <xs:attributeGroup name="interfacename.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an interface. -->
+ <xs:element name="interfacename" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="interfacename.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of interfacename.element -->
+ <xs:attributeGroup name="interfacename.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="interfacename.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of interfacename.attlist -->
+ <!-- end of interfacename.module -->
+ <xs:attributeGroup name="exceptionname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an exception. -->
+ <xs:element name="exceptionname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="exceptionname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of exceptionname.element -->
+ <xs:attributeGroup name="exceptionname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="exceptionname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of exceptionname.attlist -->
+ <!-- end of exceptionname.module -->
+ <xs:attributeGroup name="fieldsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a field in a class definition. -->
+ <xs:element name="fieldsynopsis" substitutionGroup="synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="type"/>
+ <xs:element ref="varname"/>
+ <xs:element minOccurs="0" ref="initializer"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="fieldsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of fieldsynopsis.element -->
+ <xs:attributeGroup name="fieldsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="fieldsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of fieldsynopsis.attlist -->
+ <!-- end of fieldsynopsis.module -->
+ <xs:attributeGroup name="initializer.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The initializer for a FieldSynopsis. -->
+ <xs:element name="initializer">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="initializer.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of initializer.element -->
+ <xs:attributeGroup name="initializer.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="initializer.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of initializer.attlist -->
+ <!-- end of initializer.module -->
+ <xs:attributeGroup name="constructorsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a constructor. -->
+ <xs:element name="constructorsynopsis" substitutionGroup="method.synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="methodname"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="methodparam"/>
+ <xs:element minOccurs="0" ref="void"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="constructorsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of constructorsynopsis.element -->
+ <xs:attributeGroup name="constructorsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="constructorsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of constructorsynopsis.attlist -->
+ <!-- end of constructorsynopsis.module -->
+ <xs:attributeGroup name="destructorsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a destructor. -->
+ <xs:element name="destructorsynopsis" substitutionGroup="method.synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="methodname"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="methodparam"/>
+ <xs:element minOccurs="0" ref="void"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="destructorsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of destructorsynopsis.element -->
+ <xs:attributeGroup name="destructorsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="destructorsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of destructorsynopsis.attlist -->
+ <!-- end of destructorsynopsis.module -->
+ <xs:attributeGroup name="methodsynopsis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A syntax summary for a method. -->
+ <xs:element name="methodsynopsis" substitutionGroup="method.synop.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:choice minOccurs="0">
+ <xs:element ref="type"/>
+ <xs:element ref="void"/>
+ </xs:choice>
+ <xs:element ref="methodname"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="methodparam"/>
+ <xs:element minOccurs="0" ref="void"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="exceptionname"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="methodsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of methodsynopsis.element -->
+ <xs:attributeGroup name="methodsynopsis.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="methodsynopsis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of methodsynopsis.attlist -->
+ <!-- end of methodsynopsis.module -->
+ <xs:attributeGroup name="methodname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a method. -->
+ <xs:element name="methodname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="methodname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of methodname.element -->
+ <xs:attributeGroup name="methodname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="methodname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of methodname.attlist -->
+ <!-- end of methodname.module -->
+ <xs:attributeGroup name="methodparam.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Parameters to a method. -->
+ <xs:element name="methodparam">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ <xs:element minOccurs="0" ref="type"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element ref="parameter"/>
+ <xs:element minOccurs="0" ref="initializer"/>
+ </xs:sequence>
+ <xs:element ref="funcparams"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="modifier"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="methodparam.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of methodparam.element -->
+ <xs:attributeGroup name="methodparam.attlist">
+ <xs:attribute name="choice" default="req">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt"/>
+ <xs:enumeration value="req"/>
+ <xs:enumeration value="plain"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rep" default="norepeat">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="norepeat"/>
+ <xs:enumeration value="repeat"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="methodparam.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of methodparam.attlist -->
+ <!-- end of methodparam.module -->
+ <!-- end of classsynopsis.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Document information entities and elements ........................... -->
+ <!--
+ The document information elements include some elements that are
+ currently used only in the document hierarchy module. They are
+ defined here so that they will be available for use in customized
+ document hierarchies.
+ -->
+ <!-- .................................. -->
+ <!-- Ackno ............................ -->
+ <xs:attributeGroup name="ackno.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Acknowledgements in an Article. -->
+ <xs:element name="ackno">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="ackno.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ackno.element -->
+ <xs:attributeGroup name="ackno.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ackno.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ackno.attlist -->
+ <!-- end of ackno.module -->
+ <!-- Address .......................... -->
+ <xs:attributeGroup name="address.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A real-world address, generally a postal address. -->
+ <xs:element name="address" substitutionGroup="informal.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personname"/>
+ <xs:group ref="person.ident.mix"/>
+ <xs:element ref="street"/>
+ <xs:element ref="pob"/>
+ <xs:element ref="postcode"/>
+ <xs:element ref="city"/>
+ <xs:element ref="state"/>
+ <xs:element ref="country"/>
+ <xs:element ref="phone"/>
+ <xs:element ref="fax"/>
+ <xs:element ref="email"/>
+ <xs:element ref="otheraddr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="address.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of address.element -->
+ <xs:attributeGroup name="address.attlist">
+ <xs:attributeGroup ref="linespecific.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="address.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of address.attlist -->
+ <!-- end of address.module -->
+ <xs:attributeGroup name="street.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A street address in an address. -->
+ <xs:element name="street">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="street.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of street.element -->
+ <xs:attributeGroup name="street.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="street.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of street.attlist -->
+ <!-- end of street.module -->
+ <xs:attributeGroup name="pob.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A post office box in an address. -->
+ <xs:element name="pob">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pob.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pob.element -->
+ <xs:attributeGroup name="pob.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pob.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pob.attlist -->
+ <!-- end of pob.module -->
+ <xs:attributeGroup name="postcode.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A postal code in an address. -->
+ <xs:element name="postcode">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="postcode.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of postcode.element -->
+ <xs:attributeGroup name="postcode.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="postcode.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of postcode.attlist -->
+ <!-- end of postcode.module -->
+ <xs:attributeGroup name="city.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a city in an address. -->
+ <xs:element name="city">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="city.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of city.element -->
+ <xs:attributeGroup name="city.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="city.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of city.attlist -->
+ <!-- end of city.module -->
+ <xs:attributeGroup name="state.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A state or province in an address. -->
+ <xs:element name="state">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="state.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of state.element -->
+ <xs:attributeGroup name="state.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="state.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of state.attlist -->
+ <!-- end of state.module -->
+ <xs:attributeGroup name="country.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a country. -->
+ <xs:element name="country">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="country.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of country.element -->
+ <xs:attributeGroup name="country.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="country.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of country.attlist -->
+ <!-- end of country.module -->
+ <xs:attributeGroup name="phone.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A telephone number. -->
+ <xs:element name="phone">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="phone.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of phone.element -->
+ <xs:attributeGroup name="phone.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="phone.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of phone.attlist -->
+ <!-- end of phone.module -->
+ <xs:attributeGroup name="fax.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A fax number. -->
+ <xs:element name="fax">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="fax.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of fax.element -->
+ <xs:attributeGroup name="fax.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="fax.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of fax.attlist -->
+ <!-- end of fax.module -->
+ <!-- Email (defined in the Inlines section, below) -->
+ <xs:attributeGroup name="otheraddr.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Uncategorized information in address. -->
+ <xs:element name="otheraddr">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="otheraddr.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of otheraddr.element -->
+ <xs:attributeGroup name="otheraddr.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="otheraddr.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of otheraddr.attlist -->
+ <!-- end of otheraddr.module -->
+ <!-- end of address.content.module -->
+ <!-- Affiliation ...................... -->
+ <xs:attributeGroup name="affiliation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The institutional affiliation of an individual. -->
+ <xs:element name="affiliation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="shortaffil"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="jobtitle"/>
+ <xs:element minOccurs="0" ref="orgname"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="orgdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="address"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="affiliation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of affiliation.element -->
+ <xs:attributeGroup name="affiliation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="affiliation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of affiliation.attlist -->
+ <!-- end of affiliation.module -->
+ <xs:attributeGroup name="shortaffil.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A brief description of an affiliation. -->
+ <xs:element name="shortaffil">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="shortaffil.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of shortaffil.element -->
+ <xs:attributeGroup name="shortaffil.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="shortaffil.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of shortaffil.attlist -->
+ <!-- end of shortaffil.module -->
+ <xs:attributeGroup name="jobtitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of an individual in an organization. -->
+ <xs:element name="jobtitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="jobtitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of jobtitle.element -->
+ <xs:attributeGroup name="jobtitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="jobtitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of jobtitle.attlist -->
+ <!-- end of jobtitle.module -->
+ <!-- OrgName (defined elsewhere in this section) -->
+ <xs:attributeGroup name="orgdiv.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A division of an organization. -->
+ <xs:element name="orgdiv">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="orgdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of orgdiv.element -->
+ <xs:attributeGroup name="orgdiv.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="orgdiv.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of orgdiv.attlist -->
+ <!-- end of orgdiv.module -->
+ <!-- Address (defined elsewhere in this section) -->
+ <!-- end of affiliation.content.module -->
+ <!-- ArtPageNums ...................... -->
+ <xs:attributeGroup name="artpagenums.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The page numbers of an article as published. -->
+ <xs:element name="artpagenums">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="artpagenums.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of artpagenums.element -->
+ <xs:attributeGroup name="artpagenums.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="artpagenums.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of artpagenums.attlist -->
+ <!-- end of artpagenums.module -->
+ <!-- PersonName -->
+ <xs:attributeGroup name="personname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The personal name of an individual. -->
+ <xs:element name="personname" substitutionGroup="gen.char.class">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="honorific"/>
+ <xs:element ref="firstname"/>
+ <xs:element ref="surname"/>
+ <xs:element ref="lineage"/>
+ <xs:element ref="othername"/>
+ </xs:choice>
+ <xs:attributeGroup ref="personname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of personname.element -->
+ <xs:attributeGroup name="personname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="personname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of personname.attlist -->
+ <!-- end of personname.module -->
+ <!-- Author ........................... -->
+ <xs:attributeGroup name="author.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an individual author. -->
+ <xs:element name="author" substitutionGroup="docinfo.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="personname"/>
+ <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personblurb"/>
+ <xs:element ref="email"/>
+ <xs:element ref="address"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="author.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of author.element -->
+ <xs:attributeGroup name="author.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="author.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of author.attlist -->
+ <!-- (see "Personal identity elements" for %person.ident.mix;) -->
+ <!-- end of author.module -->
+ <!-- AuthorGroup ...................... -->
+ <xs:attributeGroup name="authorgroup.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Wrapper for author information when a document has multiple authors or collabarators. -->
+ <xs:element name="authorgroup">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="author"/>
+ <xs:element ref="editor"/>
+ <xs:element ref="collab"/>
+ <xs:element ref="corpauthor"/>
+ <xs:element ref="corpcredit"/>
+ <xs:element ref="othercredit"/>
+ </xs:choice>
+ <xs:attributeGroup ref="authorgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of authorgroup.element -->
+ <xs:attributeGroup name="authorgroup.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="authorgroup.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of authorgroup.attlist -->
+ <!-- end of authorgroup.module -->
+ <!-- Author (defined elsewhere in this section) -->
+ <!-- Editor (defined elsewhere in this section) -->
+ <xs:attributeGroup name="collab.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Identifies a collaborator. -->
+ <xs:element name="collab">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="collabname"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="affiliation"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="collab.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of collab.element -->
+ <xs:attributeGroup name="collab.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="collab.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of collab.attlist -->
+ <!-- end of collab.module -->
+ <xs:attributeGroup name="collabname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a collaborator. -->
+ <xs:element name="collabname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="collabname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of collabname.element -->
+ <xs:attributeGroup name="collabname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="collabname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of collabname.attlist -->
+ <!-- end of collabname.module -->
+ <!-- Affiliation (defined elsewhere in this section) -->
+ <!-- end of collab.content.module -->
+ <!-- CorpAuthor (defined elsewhere in this section) -->
+ <!-- OtherCredit (defined elsewhere in this section) -->
+ <!-- end of authorgroup.content.module -->
+ <!-- AuthorInitials ................... -->
+ <xs:attributeGroup name="authorinitials.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The initials or other short identifier for an author. -->
+ <xs:element name="authorinitials" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="authorinitials.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of authorinitials.element -->
+ <xs:attributeGroup name="authorinitials.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="authorinitials.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of authorinitials.attlist -->
+ <!-- end of authorinitials.module -->
+ <!-- ConfGroup ........................ -->
+ <xs:attributeGroup name="confgroup.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for document meta-information about a conference. -->
+ <xs:element name="confgroup">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="confdates"/>
+ <xs:element ref="conftitle"/>
+ <xs:element ref="confnum"/>
+ <xs:element ref="address"/>
+ <xs:element ref="confsponsor"/>
+ </xs:choice>
+ <xs:attributeGroup ref="confgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confgroup.element -->
+ <xs:attributeGroup name="confgroup.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confgroup.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confgroup.attlist -->
+ <!-- end of confgroup.module -->
+ <xs:attributeGroup name="confdates.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The dates of a conference for which a document was written. -->
+ <xs:element name="confdates">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="confdates.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confdates.element -->
+ <xs:attributeGroup name="confdates.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confdates.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confdates.attlist -->
+ <!-- end of confdates.module -->
+ <xs:attributeGroup name="conftitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a conference for which a document was written. -->
+ <xs:element name="conftitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="conftitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of conftitle.element -->
+ <xs:attributeGroup name="conftitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="conftitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of conftitle.attlist -->
+ <!-- end of conftitle.module -->
+ <xs:attributeGroup name="confnum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An identifier, frequently numerical, associated with a conference for which a document was written. -->
+ <xs:element name="confnum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="confnum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confnum.element -->
+ <xs:attributeGroup name="confnum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confnum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confnum.attlist -->
+ <!-- end of confnum.module -->
+ <!-- Address (defined elsewhere in this section) -->
+ <xs:attributeGroup name="confsponsor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The sponsor of a conference for which a document was written. -->
+ <xs:element name="confsponsor">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="confsponsor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of confsponsor.element -->
+ <xs:attributeGroup name="confsponsor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="confsponsor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of confsponsor.attlist -->
+ <!-- end of confsponsor.module -->
+ <!-- end of confgroup.content.module -->
+ <!-- ContractNum ...................... -->
+ <xs:attributeGroup name="contractnum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The contract number of a document. -->
+ <xs:element name="contractnum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="contractnum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of contractnum.element -->
+ <xs:attributeGroup name="contractnum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="contractnum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of contractnum.attlist -->
+ <!-- end of contractnum.module -->
+ <!-- ContractSponsor .................. -->
+ <xs:attributeGroup name="contractsponsor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The sponsor of a contract. -->
+ <xs:element name="contractsponsor">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="contractsponsor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of contractsponsor.element -->
+ <xs:attributeGroup name="contractsponsor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="contractsponsor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of contractsponsor.attlist -->
+ <!-- end of contractsponsor.module -->
+ <!-- Copyright ........................ -->
+ <xs:attributeGroup name="copyright.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Copyright information about a document. -->
+ <xs:element name="copyright">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="year"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="holder"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="copyright.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of copyright.element -->
+ <xs:attributeGroup name="copyright.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="copyright.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of copyright.attlist -->
+ <!-- end of copyright.module -->
+ <xs:attributeGroup name="year.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The year of publication of a document. -->
+ <xs:element name="year">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="year.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of year.element -->
+ <xs:attributeGroup name="year.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="year.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of year.attlist -->
+ <!-- end of year.module -->
+ <xs:attributeGroup name="holder.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of the individual or organization that holds a copyright. -->
+ <xs:element name="holder">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="holder.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of holder.element -->
+ <xs:attributeGroup name="holder.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="holder.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of holder.attlist -->
+ <!-- end of holder.module -->
+ <!-- end of copyright.content.module -->
+ <!-- CorpAuthor ....................... -->
+ <xs:attributeGroup name="corpauthor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A corporate author, as opposed to an individual. -->
+ <xs:element name="corpauthor" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="corpauthor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of corpauthor.element -->
+ <xs:attributeGroup name="corpauthor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="corpauthor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of corpauthor.attlist -->
+ <!-- end of corpauthor.module -->
+ <!-- CorpCredit ...................... -->
+ <xs:attributeGroup name="corpcredit.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A corporation or organization credited in a document. -->
+ <xs:element name="corpcredit" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="corpcredit.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of corpcredit.element -->
+ <xs:attributeGroup name="corpcredit.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="graphicdesigner"/>
+ <xs:enumeration value="productioneditor"/>
+ <xs:enumeration value="copyeditor"/>
+ <xs:enumeration value="technicaleditor"/>
+ <xs:enumeration value="translator"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="corpcredit.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of corpcredit.attlist -->
+ <!-- end of corpcredit.module -->
+ <!-- CorpName ......................... -->
+ <!-- doc:The name of a corporation. -->
+ <xs:element name="corpname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="corpname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of corpname.element -->
+ <xs:attributeGroup name="corpname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="corpname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="corpname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of corpname.attlist -->
+ <!-- end of corpname.module -->
+ <!-- Date ............................. -->
+ <xs:attributeGroup name="date.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The date of publication or revision of a document. -->
+ <xs:element name="date">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="date.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of date.element -->
+ <xs:attributeGroup name="date.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="date.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of date.attlist -->
+ <!-- end of date.module -->
+ <!-- Edition .......................... -->
+ <xs:attributeGroup name="edition.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name or number of an edition of a document. -->
+ <xs:element name="edition">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="edition.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of edition.element -->
+ <xs:attributeGroup name="edition.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="edition.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of edition.attlist -->
+ <!-- end of edition.module -->
+ <!-- Editor ........................... -->
+ <xs:attributeGroup name="editor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of the editor of a document. -->
+ <xs:element name="editor">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="personname"/>
+ <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personblurb"/>
+ <xs:element ref="email"/>
+ <xs:element ref="address"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="editor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of editor.element -->
+ <xs:attributeGroup name="editor.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="editor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of editor.attlist -->
+ <!-- (see "Personal identity elements" for %person.ident.mix;) -->
+ <!-- end of editor.module -->
+ <!-- ISBN ............................. -->
+ <xs:attributeGroup name="isbn.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The International Standard Book Number of a document. -->
+ <xs:element name="isbn">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="isbn.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of isbn.element -->
+ <xs:attributeGroup name="isbn.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="isbn.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of isbn.attlist -->
+ <!-- end of isbn.module -->
+ <!-- ISSN ............................. -->
+ <xs:attributeGroup name="issn.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The International Standard Serial Number of a periodical. -->
+ <xs:element name="issn">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="issn.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of issn.element -->
+ <xs:attributeGroup name="issn.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="issn.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of issn.attlist -->
+ <!-- end of issn.module -->
+ <!-- BiblioId ................. -->
+ <xs:attributeGroup name="biblio.class.attrib">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="uri"/>
+ <xs:enumeration value="doi"/>
+ <xs:enumeration value="isbn"/>
+ <xs:enumeration value="isrn"/>
+ <xs:enumeration value="issn"/>
+ <xs:enumeration value="libraryofcongress"/>
+ <xs:enumeration value="pubnumber"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherclass"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="biblioid.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An identifier for a document. -->
+ <xs:element name="biblioid">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="biblioid.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioid.element -->
+ <xs:attributeGroup name="biblioid.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="biblioid.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioid.attlist -->
+ <!-- end of biblioid.module -->
+ <!-- CiteBiblioId ................. -->
+ <xs:attributeGroup name="citebiblioid.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A citation of a bibliographic identifier. -->
+ <xs:element name="citebiblioid" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="citebiblioid.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citebiblioid.element -->
+ <xs:attributeGroup name="citebiblioid.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citebiblioid.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citebiblioid.attlist -->
+ <!-- end of citebiblioid.module -->
+ <!-- BiblioSource ................. -->
+ <xs:attributeGroup name="bibliosource.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The source of a document. -->
+ <xs:element name="bibliosource">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="bibliosource.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliosource.element -->
+ <xs:attributeGroup name="bibliosource.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliosource.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliosource.attlist -->
+ <!-- end of bibliosource.module -->
+ <!-- BiblioRelation ................. -->
+ <xs:attributeGroup name="bibliorelation.type.attrib">
+ <xs:attribute name="type">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="isversionof"/>
+ <xs:enumeration value="hasversion"/>
+ <xs:enumeration value="isreplacedby"/>
+ <xs:enumeration value="replaces"/>
+ <xs:enumeration value="isrequiredby"/>
+ <xs:enumeration value="requires"/>
+ <xs:enumeration value="ispartof"/>
+ <xs:enumeration value="haspart"/>
+ <xs:enumeration value="isreferencedby"/>
+ <xs:enumeration value="references"/>
+ <xs:enumeration value="isformatof"/>
+ <xs:enumeration value="hasformat"/>
+ <xs:enumeration value="othertype"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="othertype"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="bibliorelation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The relationship of a document to another. -->
+ <xs:element name="bibliorelation">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="bibliorelation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliorelation.element -->
+ <xs:attributeGroup name="bibliorelation.attlist">
+ <xs:attributeGroup ref="biblio.class.attrib"/>
+ <xs:attributeGroup ref="bibliorelation.type.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliorelation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliorelation.attlist -->
+ <!-- end of bibliorelation.module -->
+ <!-- BiblioCoverage ................. -->
+ <xs:attributeGroup name="bibliocoverage.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The spatial or temporal coverage of a document. -->
+ <xs:element name="bibliocoverage">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="bibliocoverage.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of bibliocoverage.element -->
+ <xs:attributeGroup name="bibliocoverage.attlist">
+ <xs:attribute name="spatial">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="dcmipoint"/>
+ <xs:enumeration value="iso3166"/>
+ <xs:enumeration value="dcmibox"/>
+ <xs:enumeration value="tgn"/>
+ <xs:enumeration value="otherspatial"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherspatial"/>
+ <xs:attribute name="temporal">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="dcmiperiod"/>
+ <xs:enumeration value="w3c-dtf"/>
+ <xs:enumeration value="othertemporal"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="othertemporal"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="bibliocoverage.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of bibliocoverage.attlist -->
+ <!-- end of bibliocoverage.module -->
+ <!-- InvPartNumber .................... -->
+ <xs:attributeGroup name="invpartnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inventory part number. -->
+ <xs:element name="invpartnumber">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="invpartnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of invpartnumber.element -->
+ <xs:attributeGroup name="invpartnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="invpartnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of invpartnumber.attlist -->
+ <!-- end of invpartnumber.module -->
+ <!-- IssueNum ......................... -->
+ <xs:attributeGroup name="issuenum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The number of an issue of a journal. -->
+ <xs:element name="issuenum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="issuenum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of issuenum.element -->
+ <xs:attributeGroup name="issuenum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="issuenum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of issuenum.attlist -->
+ <!-- end of issuenum.module -->
+ <!-- LegalNotice ...................... -->
+ <xs:attributeGroup name="legalnotice.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A statement of legal obligations or requirements. -->
+ <xs:element name="legalnotice">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:element minOccurs="0" ref="title"/>
+ <xs:group maxOccurs="unbounded" ref="legalnotice.mix"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="legalnotice.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of legalnotice.element -->
+ <xs:attributeGroup name="legalnotice.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="legalnotice.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of legalnotice.attlist -->
+ <!-- end of legalnotice.module -->
+ <!-- ModeSpec ......................... -->
+ <xs:attributeGroup name="modespec.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Application-specific information necessary for the completion of an OLink. -->
+ <xs:element name="modespec" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="modespec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of modespec.element -->
+ <!--
+ Application: Type of action required for completion
+ of the links to which the ModeSpec is relevant (e.g.,
+ retrieval query)
+ -->
+ <xs:attributeGroup name="modespec.attlist">
+ <xs:attribute name="application" type="notation.class"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="modespec.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of modespec.attlist -->
+ <!-- end of modespec.module -->
+ <!-- OrgName .......................... -->
+ <xs:attributeGroup name="orgname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an organization other than a corporation. -->
+ <xs:element name="orgname" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="orgname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of orgname.element -->
+ <xs:attributeGroup name="orgname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="corporation"/>
+ <xs:enumeration value="nonprofit"/>
+ <xs:enumeration value="consortium"/>
+ <xs:enumeration value="informal"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherclass"/>
+ <xs:attributeGroup ref="orgname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of orgname.attlist -->
+ <!-- end of orgname.module -->
+ <!-- OtherCredit ...................... -->
+ <xs:attributeGroup name="othercredit.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A person or entity, other than an author or editor, credited in a document. -->
+ <xs:element name="othercredit" substitutionGroup="docinfo.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="personname"/>
+ <xs:group maxOccurs="unbounded" ref="person.ident.mix"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="personblurb"/>
+ <xs:element ref="email"/>
+ <xs:element ref="address"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="othercredit.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of othercredit.element -->
+ <xs:attributeGroup name="othercredit.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="graphicdesigner"/>
+ <xs:enumeration value="productioneditor"/>
+ <xs:enumeration value="copyeditor"/>
+ <xs:enumeration value="technicaleditor"/>
+ <xs:enumeration value="translator"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="othercredit.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of othercredit.attlist -->
+ <!-- (see "Personal identity elements" for %person.ident.mix;) -->
+ <!-- end of othercredit.module -->
+ <!-- PageNums ......................... -->
+ <xs:attributeGroup name="pagenums.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The numbers of the pages in a book, for use in a bibliographic entry. -->
+ <xs:element name="pagenums">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pagenums.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pagenums.element -->
+ <xs:attributeGroup name="pagenums.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pagenums.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pagenums.attlist -->
+ <!-- end of pagenums.module -->
+ <!-- Personal identity elements ....... -->
+ <!--
+ These elements are used only within Author, Editor, and
+ OtherCredit.
+ -->
+ <xs:attributeGroup name="contrib.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A summary of the contributions made to a document by a credited source. -->
+ <xs:element name="contrib">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="contrib.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of contrib.element -->
+ <xs:attributeGroup name="contrib.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="contrib.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of contrib.attlist -->
+ <!-- end of contrib.module -->
+ <xs:attributeGroup name="firstname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The first name of a person. -->
+ <xs:element name="firstname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="firstname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of firstname.element -->
+ <xs:attributeGroup name="firstname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="firstname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of firstname.attlist -->
+ <!-- end of firstname.module -->
+ <xs:attributeGroup name="honorific.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a person. -->
+ <xs:element name="honorific">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="honorific.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of honorific.element -->
+ <xs:attributeGroup name="honorific.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="honorific.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of honorific.attlist -->
+ <!-- end of honorific.module -->
+ <xs:attributeGroup name="lineage.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The portion of a person's name indicating a relationship to ancestors. -->
+ <xs:element name="lineage">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="lineage.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lineage.element -->
+ <xs:attributeGroup name="lineage.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lineage.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lineage.attlist -->
+ <!-- end of lineage.module -->
+ <xs:attributeGroup name="othername.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A component of a persons name that is not a first name, surname, or lineage. -->
+ <xs:element name="othername">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="othername.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of othername.element -->
+ <xs:attributeGroup name="othername.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="othername.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of othername.attlist -->
+ <!-- end of othername.module -->
+ <xs:attributeGroup name="surname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A family name; in western cultures the last name. -->
+ <xs:element name="surname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="surname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of surname.element -->
+ <xs:attributeGroup name="surname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="surname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of surname.attlist -->
+ <!-- end of surname.module -->
+ <!-- end of person.ident.module -->
+ <!-- PrintHistory ..................... -->
+ <xs:attributeGroup name="printhistory.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The printing history of a document. -->
+ <xs:element name="printhistory">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="para.class"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="printhistory.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of printhistory.element -->
+ <xs:attributeGroup name="printhistory.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="printhistory.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of printhistory.attlist -->
+ <!-- end of printhistory.module -->
+ <!-- ProductName ...................... -->
+ <xs:attributeGroup name="productname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The formal name of a product. -->
+ <xs:element name="productname" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="productname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of productname.element -->
+ <!-- Class: More precisely identifies the item the element names -->
+ <xs:attributeGroup name="productname.attlist">
+ <xs:attribute name="class" default="trade">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="service"/>
+ <xs:enumeration value="trade"/>
+ <xs:enumeration value="registered"/>
+ <xs:enumeration value="copyright"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="productname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of productname.attlist -->
+ <!-- end of productname.module -->
+ <!-- ProductNumber .................... -->
+ <xs:attributeGroup name="productnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A number assigned to a product. -->
+ <xs:element name="productnumber" substitutionGroup="docinfo.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="productnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of productnumber.element -->
+ <xs:attributeGroup name="productnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="productnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of productnumber.attlist -->
+ <!-- end of productnumber.module -->
+ <!-- PubDate .......................... -->
+ <xs:attributeGroup name="pubdate.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The date of publication of a document. -->
+ <xs:element name="pubdate">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pubdate.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pubdate.element -->
+ <xs:attributeGroup name="pubdate.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pubdate.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pubdate.attlist -->
+ <!-- end of pubdate.module -->
+ <!-- Publisher ........................ -->
+ <xs:attributeGroup name="publisher.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The publisher of a document. -->
+ <xs:element name="publisher">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="publishername"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="address"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="publisher.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of publisher.element -->
+ <xs:attributeGroup name="publisher.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="publisher.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of publisher.attlist -->
+ <!-- end of publisher.module -->
+ <xs:attributeGroup name="publishername.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of the publisher of a document. -->
+ <xs:element name="publishername">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="publishername.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of publishername.element -->
+ <xs:attributeGroup name="publishername.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="publishername.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of publishername.attlist -->
+ <!-- end of publishername.module -->
+ <!-- Address (defined elsewhere in this section) -->
+ <!-- end of publisher.content.module -->
+ <!-- PubsNumber ....................... -->
+ <xs:attributeGroup name="pubsnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A number assigned to a publication other than an ISBN or ISSN or inventory part number. -->
+ <xs:element name="pubsnumber">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="pubsnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of pubsnumber.element -->
+ <xs:attributeGroup name="pubsnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="pubsnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of pubsnumber.attlist -->
+ <!-- end of pubsnumber.module -->
+ <!-- ReleaseInfo ...................... -->
+ <xs:attributeGroup name="releaseinfo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Information about a particular release of a document. -->
+ <xs:element name="releaseinfo">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="releaseinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of releaseinfo.element -->
+ <xs:attributeGroup name="releaseinfo.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="releaseinfo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of releaseinfo.attlist -->
+ <!-- end of releaseinfo.module -->
+ <!-- RevHistory ....................... -->
+ <xs:attributeGroup name="revhistory.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A history of the revisions to a document. -->
+ <xs:element name="revhistory" substitutionGroup="docinfo.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="revision"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="revhistory.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revhistory.element -->
+ <xs:attributeGroup name="revhistory.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revhistory.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revhistory.attlist -->
+ <!-- end of revhistory.module -->
+ <xs:attributeGroup name="revision.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An entry describing a single revision in the history of the revisions to a document. -->
+ <xs:element name="revision">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="revnumber"/>
+ <xs:element ref="date"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="author"/>
+ <xs:element ref="authorinitials"/>
+ </xs:choice>
+ <xs:choice minOccurs="0">
+ <xs:element ref="revremark"/>
+ <xs:element ref="revdescription"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="revision.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revision.element -->
+ <xs:attributeGroup name="revision.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revision.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revision.attlist -->
+ <!-- end of revision.module -->
+ <xs:attributeGroup name="revnumber.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A document revision number. -->
+ <xs:element name="revnumber">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="revnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revnumber.element -->
+ <xs:attributeGroup name="revnumber.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revnumber.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revnumber.attlist -->
+ <!-- end of revnumber.module -->
+ <!-- Date (defined elsewhere in this section) -->
+ <!-- AuthorInitials (defined elsewhere in this section) -->
+ <xs:attributeGroup name="revremark.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A description of a revision to a document. -->
+ <xs:element name="revremark">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="revremark.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revremark.element -->
+ <xs:attributeGroup name="revremark.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revremark.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revremark.attlist -->
+ <!-- end of revremark.module -->
+ <xs:attributeGroup name="revdescription.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A extended description of a revision to a document. -->
+ <xs:element name="revdescription">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="revdescription.mix"/>
+ <xs:attributeGroup ref="revdescription.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of revdescription.element -->
+ <xs:attributeGroup name="revdescription.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="revdescription.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of revdescription.attlist -->
+ <!-- end of revdescription.module -->
+ <!-- end of revhistory.content.module -->
+ <!-- SeriesVolNums .................... -->
+ <xs:attributeGroup name="seriesvolnums.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Numbers of the volumes in a series of books. -->
+ <xs:element name="seriesvolnums">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="seriesvolnums.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seriesvolnums.element -->
+ <xs:attributeGroup name="seriesvolnums.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seriesvolnums.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of seriesvolnums.attlist -->
+ <!-- end of seriesvolnums.module -->
+ <!-- VolumeNum ........................ -->
+ <xs:attributeGroup name="volumenum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The volume number of a document in a set (as of books in a set or articles in a journal). -->
+ <xs:element name="volumenum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="volumenum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of volumenum.element -->
+ <xs:attributeGroup name="volumenum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="volumenum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of volumenum.attlist -->
+ <!-- end of volumenum.module -->
+ <!-- .................................. -->
+ <!-- end of docinfo.content.module -->
+ <!-- ...................................................................... -->
+ <!-- Inline, link, and ubiquitous elements ................................ -->
+ <!-- Technical and computer terms ......................................... -->
+ <xs:attributeGroup name="accel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A graphical user interface (GUI) keyboard shortcut. -->
+ <xs:element name="accel">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="accel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of accel.element -->
+ <xs:attributeGroup name="accel.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="accel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of accel.attlist -->
+ <!-- end of accel.module -->
+ <xs:attributeGroup name="action.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A response to a user event. -->
+ <xs:element name="action" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="action.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of action.element -->
+ <xs:attributeGroup name="action.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="action.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of action.attlist -->
+ <!-- end of action.module -->
+ <xs:attributeGroup name="application.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a software program. -->
+ <xs:element name="application" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="application.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of application.element -->
+ <xs:attributeGroup name="application.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="hardware"/>
+ <xs:enumeration value="software"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="application.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of application.attlist -->
+ <!-- end of application.module -->
+ <xs:attributeGroup name="classname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a class, in the object-oriented programming sense. -->
+ <xs:element name="classname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="classname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of classname.element -->
+ <xs:attributeGroup name="classname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="classname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of classname.attlist -->
+ <!-- end of classname.module -->
+ <xs:attributeGroup name="package.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A package. -->
+ <xs:element name="package" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="package.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of package.element -->
+ <xs:attributeGroup name="package.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="package.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of package.attlist -->
+ <!-- end of package.module -->
+ <!--
+ CO is a callout area of the LineColumn unit type (a single character
+ position); the position is directly indicated by the location of CO.
+ -->
+ <xs:attributeGroup name="co.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The location of a callout embedded in text. -->
+ <xs:element name="co">
+ <xs:complexType>
+ <xs:attributeGroup ref="co.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of co.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <xs:attributeGroup name="co.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkends.attrib"/>
+ <xs:attributeGroup ref="idreq.common.attrib"/>
+ <xs:attributeGroup ref="co.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of co.attlist -->
+ <!-- end of co.module -->
+ <!-- COREF is a reference to a CO -->
+ <xs:attributeGroup name="coref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to a co. -->
+ <xs:element name="coref">
+ <xs:complexType>
+ <xs:attributeGroup ref="coref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of coref.element -->
+ <!-- bug number/symbol override or initialization -->
+ <!-- to any related information -->
+ <xs:attributeGroup name="coref.attlist">
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="coref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of coref.attlist -->
+ <!-- end of coref.module -->
+ <xs:attributeGroup name="command.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of an executable program or other software command. -->
+ <xs:element name="command" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="command.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of command.element -->
+ <xs:attributeGroup name="command.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="command.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of command.attlist -->
+ <!-- end of command.module -->
+ <xs:attributeGroup name="computeroutput.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Data, generally text, displayed or presented by a computer. -->
+ <xs:element name="computeroutput" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="computeroutput.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of computeroutput.element -->
+ <xs:attributeGroup name="computeroutput.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="computeroutput.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of computeroutput.attlist -->
+ <!-- end of computeroutput.module -->
+ <xs:attributeGroup name="database.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a database, or part of a database. -->
+ <xs:element name="database" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="database.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of database.element -->
+ <!-- Class: Type of database the element names; no default -->
+ <xs:attributeGroup name="database.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="name"/>
+ <xs:enumeration value="table"/>
+ <xs:enumeration value="field"/>
+ <xs:enumeration value="key1"/>
+ <xs:enumeration value="key2"/>
+ <xs:enumeration value="record"/>
+ <xs:enumeration value="index"/>
+ <xs:enumeration value="view"/>
+ <xs:enumeration value="primarykey"/>
+ <xs:enumeration value="secondarykey"/>
+ <xs:enumeration value="foreignkey"/>
+ <xs:enumeration value="altkey"/>
+ <xs:enumeration value="procedure"/>
+ <xs:enumeration value="datatype"/>
+ <xs:enumeration value="constraint"/>
+ <xs:enumeration value="rule"/>
+ <xs:enumeration value="user"/>
+ <xs:enumeration value="group"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="database.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of database.attlist -->
+ <!-- end of database.module -->
+ <xs:attributeGroup name="email.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An email address. -->
+ <xs:element name="email" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="docinfo.char.mix"/>
+ <xs:attributeGroup ref="email.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of email.element -->
+ <xs:attributeGroup name="email.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="email.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of email.attlist -->
+ <!-- end of email.module -->
+ <xs:attributeGroup name="envar.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A software environment variable. -->
+ <xs:element name="envar" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="envar.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of envar.element -->
+ <xs:attributeGroup name="envar.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="envar.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of envar.attlist -->
+ <!-- end of envar.module -->
+ <xs:attributeGroup name="errorcode.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An error code. -->
+ <xs:element name="errorcode" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errorcode.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errorcode.element -->
+ <xs:attributeGroup name="errorcode.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errorcode.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errorcode.attlist -->
+ <!-- end of errorcode.module -->
+ <xs:attributeGroup name="errorname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An error name. -->
+ <xs:element name="errorname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errorname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errorname.element -->
+ <xs:attributeGroup name="errorname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errorname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errorname.attlist -->
+ <!-- end of errorname.module -->
+ <xs:attributeGroup name="errortext.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An error message.. -->
+ <xs:element name="errortext" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errortext.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errortext.element -->
+ <xs:attributeGroup name="errortext.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errortext.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errortext.attlist -->
+ <!-- end of errortext.module -->
+ <xs:attributeGroup name="errortype.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The classification of an error message. -->
+ <xs:element name="errortype" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="errortype.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of errortype.element -->
+ <xs:attributeGroup name="errortype.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="errortype.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of errortype.attlist -->
+ <!-- end of errortype.module -->
+ <xs:attributeGroup name="filename.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a file. -->
+ <xs:element name="filename" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="filename.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of filename.element -->
+ <!-- Class: Type of filename the element names; no default -->
+ <!--
+ Path: Search path (possibly system-specific) in which
+ file can be found
+ -->
+ <xs:attributeGroup name="filename.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="headerfile"/>
+ <xs:enumeration value="partition"/>
+ <xs:enumeration value="devicefile"/>
+ <xs:enumeration value="libraryfile"/>
+ <xs:enumeration value="directory"/>
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="symlink"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="path"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="filename.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of filename.attlist -->
+ <!-- end of filename.module -->
+ <xs:attributeGroup name="function.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a function or subroutine, as in a programming language. -->
+ <xs:element name="function" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="function.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of function.element -->
+ <xs:attributeGroup name="function.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="function.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of function.attlist -->
+ <!-- end of function.module -->
+ <xs:attributeGroup name="guibutton.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text on a button in a GUI. -->
+ <xs:element name="guibutton" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guibutton.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guibutton.element -->
+ <xs:attributeGroup name="guibutton.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guibutton.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guibutton.attlist -->
+ <!-- end of guibutton.module -->
+ <xs:attributeGroup name="guiicon.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Graphic and/or text appearing as a icon in a GUI. -->
+ <xs:element name="guiicon" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guiicon.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guiicon.element -->
+ <xs:attributeGroup name="guiicon.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guiicon.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guiicon.attlist -->
+ <!-- end of guiicon.module -->
+ <xs:attributeGroup name="guilabel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text of a label in a GUI. -->
+ <xs:element name="guilabel" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guilabel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guilabel.element -->
+ <xs:attributeGroup name="guilabel.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guilabel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guilabel.attlist -->
+ <!-- end of guilabel.module -->
+ <xs:attributeGroup name="guimenu.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a menu in a GUI. -->
+ <xs:element name="guimenu" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guimenu.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guimenu.element -->
+ <xs:attributeGroup name="guimenu.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guimenu.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guimenu.attlist -->
+ <!-- end of guimenu.module -->
+ <xs:attributeGroup name="guimenuitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a terminal menu item in a GUI. -->
+ <xs:element name="guimenuitem" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guimenuitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guimenuitem.element -->
+ <xs:attributeGroup name="guimenuitem.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guimenuitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guimenuitem.attlist -->
+ <!-- end of guimenuitem.module -->
+ <xs:attributeGroup name="guisubmenu.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a submenu in a GUI. -->
+ <xs:element name="guisubmenu" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ <xs:element ref="superscript"/>
+ <xs:element ref="subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="guisubmenu.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of guisubmenu.element -->
+ <xs:attributeGroup name="guisubmenu.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="guisubmenu.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of guisubmenu.attlist -->
+ <!-- end of guisubmenu.module -->
+ <xs:attributeGroup name="hardware.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A physical part of a computer system. -->
+ <xs:element name="hardware" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="hardware.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of hardware.element -->
+ <xs:attributeGroup name="hardware.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="hardware.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of hardware.attlist -->
+ <!-- end of hardware.module -->
+ <xs:attributeGroup name="interface.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An element of a GUI. -->
+ <xs:element name="interface" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="accel"/>
+ </xs:choice>
+ <xs:attributeGroup ref="interface.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of interface.element -->
+ <!-- Class: Type of the Interface item; no default -->
+ <xs:attributeGroup name="interface.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="interface.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of interface.attlist -->
+ <!-- end of interface.module -->
+ <xs:attributeGroup name="keycap.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The text printed on a key on a keyboard. -->
+ <xs:element name="keycap" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="keycap.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keycap.element -->
+ <xs:attributeGroup name="keycap.attlist">
+ <xs:attribute name="function">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="alt"/>
+ <xs:enumeration value="control"/>
+ <xs:enumeration value="shift"/>
+ <xs:enumeration value="meta"/>
+ <xs:enumeration value="escape"/>
+ <xs:enumeration value="enter"/>
+ <xs:enumeration value="tab"/>
+ <xs:enumeration value="backspace"/>
+ <xs:enumeration value="command"/>
+ <xs:enumeration value="option"/>
+ <xs:enumeration value="space"/>
+ <xs:enumeration value="delete"/>
+ <xs:enumeration value="insert"/>
+ <xs:enumeration value="up"/>
+ <xs:enumeration value="down"/>
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="home"/>
+ <xs:enumeration value="end"/>
+ <xs:enumeration value="pageup"/>
+ <xs:enumeration value="pagedown"/>
+ <xs:enumeration value="other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherfunction"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keycap.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keycap.attlist -->
+ <!-- end of keycap.module -->
+ <xs:attributeGroup name="keycode.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The internal, frequently numeric, identifier for a key on a keyboard. -->
+ <xs:element name="keycode" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="keycode.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keycode.element -->
+ <xs:attributeGroup name="keycode.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keycode.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keycode.attlist -->
+ <!-- end of keycode.module -->
+ <xs:attributeGroup name="keycombo.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A combination of input actions. -->
+ <xs:element name="keycombo" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="keycap"/>
+ <xs:element ref="keycombo"/>
+ <xs:element ref="keysym"/>
+ <xs:element ref="mousebutton"/>
+ </xs:choice>
+ <xs:attributeGroup ref="keycombo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keycombo.element -->
+ <xs:attributeGroup name="keycombo.attlist">
+ <xs:attributeGroup ref="keyaction.attrib"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keycombo.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keycombo.attlist -->
+ <!-- end of keycombo.module -->
+ <xs:attributeGroup name="keysysm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The symbolic name of a key on a keyboard. -->
+ <xs:element name="keysym" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="keysym.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of keysym.element -->
+ <xs:attributeGroup name="keysym.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="keysysm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of keysym.attlist -->
+ <!-- end of keysym.module -->
+ <xs:attributeGroup name="lineannotation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A comment on a line in a verbatim listing. -->
+ <xs:element name="lineannotation">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="lineannotation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of lineannotation.element -->
+ <xs:attributeGroup name="lineannotation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="lineannotation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of lineannotation.attlist -->
+ <!-- end of lineannotation.module -->
+ <xs:attributeGroup name="literal.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Inline text that is some literal value. -->
+ <xs:element name="literal" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="literal.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of literal.element -->
+ <xs:attributeGroup name="literal.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="literal.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of literal.attlist -->
+ <!-- end of literal.module -->
+ <xs:attributeGroup name="code.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline code fragment. -->
+ <xs:element name="code" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="code.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of code.element -->
+ <xs:attributeGroup name="code.attlist">
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="code.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of code.attlist -->
+ <!-- end of code.module -->
+ <xs:attributeGroup name="constant.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A programming or system constant. -->
+ <xs:element name="constant" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="constant.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of constant.element -->
+ <xs:attributeGroup name="constant.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="limit"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="constant.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of constant.attlist -->
+ <!-- end of constant.module -->
+ <xs:attributeGroup name="varname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a variable. -->
+ <xs:element name="varname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="varname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of varname.element -->
+ <xs:attributeGroup name="varname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="varname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of varname.attlist -->
+ <!-- end of varname.module -->
+ <xs:attributeGroup name="markup.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A string of formatting markup in text that is to be represented literally. -->
+ <xs:element name="markup" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="markup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of markup.element -->
+ <xs:attributeGroup name="markup.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="markup.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of markup.attlist -->
+ <!-- end of markup.module -->
+ <xs:attributeGroup name="medialabel.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A name that identifies the physical medium on which some information resides. -->
+ <xs:element name="medialabel" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="medialabel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of medialabel.element -->
+ <!-- Class: Type of medium named by the element; no default -->
+ <xs:attributeGroup name="medialabel.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="cartridge"/>
+ <xs:enumeration value="cdrom"/>
+ <xs:enumeration value="disk"/>
+ <xs:enumeration value="tape"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="medialabel.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of medialabel.attlist -->
+ <!-- end of medialabel.module -->
+ <xs:attributeGroup name="menuchoice.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A selection or series of selections from a menu. -->
+ <xs:element name="menuchoice" substitutionGroup="tech.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="shortcut"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="guibutton"/>
+ <xs:element ref="guiicon"/>
+ <xs:element ref="guilabel"/>
+ <xs:element ref="guimenu"/>
+ <xs:element ref="guimenuitem"/>
+ <xs:element ref="guisubmenu"/>
+ <xs:element ref="interface"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="menuchoice.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of menuchoice.element -->
+ <xs:attributeGroup name="menuchoice.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="menuchoice.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of menuchoice.attlist -->
+ <!-- end of menuchoice.module -->
+ <!-- See also KeyCombo -->
+ <xs:attributeGroup name="shortcut.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A key combination for an action that is also accessible through a menu. -->
+ <xs:element name="shortcut">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="keycap"/>
+ <xs:element ref="keycombo"/>
+ <xs:element ref="keysym"/>
+ <xs:element ref="mousebutton"/>
+ </xs:choice>
+ <xs:attributeGroup ref="shortcut.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of shortcut.element -->
+ <xs:attributeGroup name="shortcut.attlist">
+ <xs:attributeGroup ref="keyaction.attrib"/>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="shortcut.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of shortcut.attlist -->
+ <!-- end of shortcut.module -->
+ <!-- end of menuchoice.content.module -->
+ <xs:attributeGroup name="mousebutton.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The conventional name of a mouse button. -->
+ <xs:element name="mousebutton" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="mousebutton.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of mousebutton.element -->
+ <xs:attributeGroup name="mousebutton.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="mousebutton.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of mousebutton.attlist -->
+ <!-- end of mousebutton.module -->
+ <xs:attributeGroup name="msgtext.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The actual text of a message component in a message set. -->
+ <xs:element name="msgtext">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="component.mix"/>
+ <xs:attributeGroup ref="msgtext.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of msgtext.element -->
+ <xs:attributeGroup name="msgtext.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="msgtext.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of msgtext.attlist -->
+ <!-- end of msgtext.module -->
+ <xs:attributeGroup name="option.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An option for a software command. -->
+ <xs:element name="option" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="option.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of option.element -->
+ <xs:attributeGroup name="option.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="option.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of option.attlist -->
+ <!-- end of option.module -->
+ <xs:attributeGroup name="optional.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Optional information. -->
+ <xs:element name="optional" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="optional.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of optional.element -->
+ <xs:attributeGroup name="optional.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="optional.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of optional.attlist -->
+ <!-- end of optional.module -->
+ <xs:attributeGroup name="parameter.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A value or a symbolic reference to a value. -->
+ <xs:element name="parameter" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="parameter.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of parameter.element -->
+ <!-- Class: Type of the Parameter; no default -->
+ <xs:attributeGroup name="parameter.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="command"/>
+ <xs:enumeration value="function"/>
+ <xs:enumeration value="option"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="parameter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of parameter.attlist -->
+ <!-- end of parameter.module -->
+ <xs:attributeGroup name="prompt.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A character or string indicating the start of an input field in a computer display. -->
+ <xs:element name="prompt" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="smallcptr.char.mix"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="prompt.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of prompt.element -->
+ <xs:attributeGroup name="prompt.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="prompt.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of prompt.attlist -->
+ <!-- end of prompt.module -->
+ <xs:attributeGroup name="property.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A unit of data associated with some part of a computer system. -->
+ <xs:element name="property" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="cptr.char.mix"/>
+ <xs:attributeGroup ref="property.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of property.element -->
+ <xs:attributeGroup name="property.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="property.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of property.attlist -->
+ <!-- end of property.module -->
+ <xs:attributeGroup name="replaceable.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Content that may or must be replaced by the user. -->
+ <xs:element name="replaceable" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="optional"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="replaceable.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of replaceable.element -->
+ <!--
+ Class: Type of information the element represents; no
+ default
+ -->
+ <xs:attributeGroup name="replaceable.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="command"/>
+ <xs:enumeration value="function"/>
+ <xs:enumeration value="option"/>
+ <xs:enumeration value="parameter"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="replaceable.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of replaceable.attlist -->
+ <!-- end of replaceable.module -->
+ <xs:attributeGroup name="returnvalue.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The value returned by a function. -->
+ <xs:element name="returnvalue" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="returnvalue.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of returnvalue.element -->
+ <xs:attributeGroup name="returnvalue.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="returnvalue.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of returnvalue.attlist -->
+ <!-- end of returnvalue.module -->
+ <xs:attributeGroup name="sgmltag.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A component of SGML markup. -->
+ <xs:element name="sgmltag" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="sgmltag.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of sgmltag.element -->
+ <!-- Class: Type of SGML construct the element names; no default -->
+ <xs:attributeGroup name="sgmltag.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="attribute"/>
+ <xs:enumeration value="attvalue"/>
+ <xs:enumeration value="element"/>
+ <xs:enumeration value="endtag"/>
+ <xs:enumeration value="emptytag"/>
+ <xs:enumeration value="genentity"/>
+ <xs:enumeration value="numcharref"/>
+ <xs:enumeration value="paramentity"/>
+ <xs:enumeration value="pi"/>
+ <xs:enumeration value="xmlpi"/>
+ <xs:enumeration value="starttag"/>
+ <xs:enumeration value="sgmlcomment"/>
+ <xs:enumeration value="prefix"/>
+ <xs:enumeration value="namespace"/>
+ <xs:enumeration value="localname"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="namespace"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="sgmltag.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of sgmltag.attlist -->
+ <!-- end of sgmltag.module -->
+ <xs:attributeGroup name="structfield.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A field in a structure (in the programming language sense). -->
+ <xs:element name="structfield" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="structfield.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of structfield.element -->
+ <xs:attributeGroup name="structfield.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="structfield.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of structfield.attlist -->
+ <!-- end of structfield.module -->
+ <xs:attributeGroup name="structname.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The name of a structure (in the programming language sense). -->
+ <xs:element name="structname" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="structname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of structname.element -->
+ <xs:attributeGroup name="structname.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="structname.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of structname.attlist -->
+ <!-- end of structname.module -->
+ <xs:attributeGroup name="symbol.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A name that is replaced by a value before processing. -->
+ <xs:element name="symbol" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="symbol.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of symbol.element -->
+ <!-- Class: Type of symbol; no default -->
+ <xs:attributeGroup name="symbol.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="limit"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="symbol.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of symbol.attlist -->
+ <!-- end of symbol.module -->
+ <xs:attributeGroup name="systemitem.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A system-related item or term. -->
+ <xs:element name="systemitem" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="acronym"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="systemitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of systemitem.element -->
+ <!-- Class: Type of system item the element names; no default -->
+ <xs:attributeGroup name="systemitem.attlist">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="constant"/>
+ <xs:enumeration value="daemon"/>
+ <xs:enumeration value="domainname"/>
+ <xs:enumeration value="etheraddress"/>
+ <xs:enumeration value="event"/>
+ <xs:enumeration value="eventhandler"/>
+ <xs:enumeration value="filesystem"/>
+ <xs:enumeration value="fqdomainname"/>
+ <xs:enumeration value="groupname"/>
+ <xs:enumeration value="ipaddress"/>
+ <xs:enumeration value="library"/>
+ <xs:enumeration value="macro"/>
+ <xs:enumeration value="netmask"/>
+ <xs:enumeration value="newsgroup"/>
+ <xs:enumeration value="osname"/>
+ <xs:enumeration value="protocol"/>
+ <xs:enumeration value="resource"/>
+ <xs:enumeration value="systemname"/>
+ <xs:enumeration value="username"/>
+ <xs:enumeration value="process"/>
+ <xs:enumeration value="server"/>
+ <xs:enumeration value="service"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="systemitem.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of systemitem.attlist -->
+ <!-- end of systemitem.module -->
+ <xs:attributeGroup name="uri.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A Uniform Resource Identifier. -->
+ <xs:element name="uri" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="uri.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of uri.element -->
+ <!-- Type: Type of URI; no default -->
+ <xs:attributeGroup name="uri.attlist">
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="uri.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of uri.attlist -->
+ <!-- end of uri.module -->
+ <xs:attributeGroup name="token.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A unit of information. -->
+ <xs:element name="token" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="token.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of token.element -->
+ <xs:attributeGroup name="token.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="token.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of token.attlist -->
+ <!-- end of token.module -->
+ <xs:attributeGroup name="type.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The classification of a value. -->
+ <xs:element name="type" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="smallcptr.char.mix"/>
+ <xs:attributeGroup ref="type.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of type.element -->
+ <xs:attributeGroup name="type.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="type.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of type.attlist -->
+ <!-- end of type.module -->
+ <xs:attributeGroup name="userinput.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Data entered by the user. -->
+ <xs:element name="userinput" substitutionGroup="tech.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="cptr.char.mix"/>
+ <xs:element ref="co"/>
+ </xs:choice>
+ <xs:attributeGroup ref="userinput.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of userinput.element -->
+ <xs:attributeGroup name="userinput.attlist">
+ <xs:attributeGroup ref="moreinfo.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="userinput.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of userinput.attlist -->
+ <!-- end of userinput.module -->
+ <xs:attributeGroup name="termdef.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline definition of a term. -->
+ <xs:element name="termdef" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="termdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of termdef.element -->
+ <xs:attributeGroup name="termdef.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="termdef.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of termdef.attlist -->
+ <!-- end of termdef.module -->
+ <!-- General words and phrases ............................................ -->
+ <xs:attributeGroup name="abbrev.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An abbreviation, especially one followed by a period. -->
+ <xs:element name="abbrev" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="abbrev.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of abbrev.element -->
+ <xs:attributeGroup name="abbrev.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="abbrev.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of abbrev.attlist -->
+ <!-- end of abbrev.module -->
+ <xs:attributeGroup name="acronym.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An often pronounceable word made from the initial (or selected) letters of a name or phrase. -->
+ <xs:element name="acronym" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="acronym.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of acronym.element -->
+ <xs:attributeGroup name="acronym.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="acronym.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of acronym.attlist -->
+ <!-- end of acronym.module -->
+ <xs:attributeGroup name="citation.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline bibliographic reference to another published work. -->
+ <xs:element name="citation" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="citation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citation.element -->
+ <xs:attributeGroup name="citation.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citation.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citation.attlist -->
+ <!-- end of citation.module -->
+ <xs:attributeGroup name="citerefentry.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A citation to a reference page. -->
+ <xs:element name="citerefentry" substitutionGroup="gen.char.class">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="refentrytitle"/>
+ <xs:element minOccurs="0" ref="manvolnum"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="citerefentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citerefentry.element -->
+ <xs:attributeGroup name="citerefentry.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citerefentry.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citerefentry.attlist -->
+ <!-- end of citerefentry.module -->
+ <xs:attributeGroup name="refentrytitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a reference page. -->
+ <xs:element name="refentrytitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="refentrytitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of refentrytitle.element -->
+ <xs:attributeGroup name="refentrytitle.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="refentrytitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of refentrytitle.attlist -->
+ <!-- end of refentrytitle.module -->
+ <xs:attributeGroup name="namvolnum.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A reference volume number. -->
+ <xs:element name="manvolnum">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="manvolnum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of manvolnum.element -->
+ <xs:attributeGroup name="manvolnum.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="namvolnum.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of manvolnum.attlist -->
+ <!-- end of manvolnum.module -->
+ <xs:attributeGroup name="citetitle.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The title of a cited work. -->
+ <xs:element name="citetitle" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="citetitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of citetitle.element -->
+ <!-- Pubwork: Genre of published work cited; no default -->
+ <xs:attributeGroup name="citetitle.attlist">
+ <xs:attribute name="pubwork">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="article"/>
+ <xs:enumeration value="book"/>
+ <xs:enumeration value="chapter"/>
+ <xs:enumeration value="part"/>
+ <xs:enumeration value="refentry"/>
+ <xs:enumeration value="section"/>
+ <xs:enumeration value="journal"/>
+ <xs:enumeration value="series"/>
+ <xs:enumeration value="set"/>
+ <xs:enumeration value="manuscript"/>
+ <xs:enumeration value="cdrom"/>
+ <xs:enumeration value="dvd"/>
+ <xs:enumeration value="wiki"/>
+ <xs:enumeration value="gopher"/>
+ <xs:enumeration value="bbs"/>
+ <xs:enumeration value="emailmessage"/>
+ <xs:enumeration value="webpage"/>
+ <xs:enumeration value="newsposting"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="citetitle.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of citetitle.attlist -->
+ <!-- end of citetitle.module -->
+ <xs:attributeGroup name="emphasis.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Emphasized text. -->
+ <xs:element name="emphasis" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="emphasis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of emphasis.element -->
+ <xs:attributeGroup name="emphasis.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="emphasis.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of emphasis.attlist -->
+ <!-- end of emphasis.module -->
+ <xs:attributeGroup name="foreignphrase.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A word or phrase in a language other than the primary language of the document. -->
+ <xs:element name="foreignphrase" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="foreignphrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of foreignphrase.element -->
+ <xs:attributeGroup name="foreignphrase.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="foreignphrase.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of foreignphrase.attlist -->
+ <!-- end of foreignphrase.module -->
+ <xs:attributeGroup name="glossterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A glossary term. -->
+ <xs:element name="glossterm" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="glossterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of glossterm.element -->
+ <!-- to GlossEntry if Glossterm used in text -->
+ <!--
+ BaseForm: Provides the form of GlossTerm to be used
+ for indexing
+ -->
+ <xs:attributeGroup name="glossterm.attlist">
+ <xs:attribute name="baseform"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="glossterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of glossterm.attlist -->
+ <!-- end of glossterm.module -->
+ <xs:attributeGroup name="firstterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The first occurrence of a term. -->
+ <xs:element name="firstterm" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="firstterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of firstterm.element -->
+ <!-- to GlossEntry or other explanation -->
+ <xs:attributeGroup name="firstterm.attlist">
+ <xs:attribute name="baseform"/>
+ <xs:attributeGroup ref="linkend.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="firstterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of firstterm.attlist -->
+ <!-- end of firstterm.module -->
+ <xs:attributeGroup name="phrase.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A span of text. -->
+ <xs:element name="phrase" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="phrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of phrase.element -->
+ <xs:attributeGroup name="phrase.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="phrase.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of phrase.attlist -->
+ <!-- end of phrase.module -->
+ <xs:attributeGroup name="quote.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:An inline quotation. -->
+ <xs:element name="quote" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="quote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of quote.element -->
+ <xs:attributeGroup name="quote.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="quote.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of quote.attlist -->
+ <!-- end of quote.module -->
+ <xs:attributeGroup name="ssscript.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A subscript (as in H{^2}O, the molecular formula for water). -->
+ <xs:element name="subscript">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="symbol"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ </xs:choice>
+ <xs:attributeGroup ref="subscript.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of subscript.element -->
+ <xs:attributeGroup name="subscript.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ssscript.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of subscript.attlist -->
+ <!-- doc:A superscript (as in x^2, the mathematical notation for x multiplied by itself). -->
+ <xs:element name="superscript">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="emphasis"/>
+ <xs:element ref="replaceable"/>
+ <xs:element ref="symbol"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ </xs:choice>
+ <xs:attributeGroup ref="superscript.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of superscript.element -->
+ <xs:attributeGroup name="superscript.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ssscript.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of superscript.attlist -->
+ <!-- end of ssscript.module -->
+ <xs:attributeGroup name="trademark.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A trademark. -->
+ <xs:element name="trademark" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="link.char.class"/>
+ <xs:element ref="tech.char.class"/>
+ <xs:group ref="base.char.class"/>
+ <xs:group ref="other.char.class"/>
+ <xs:element ref="inlinegraphic"/>
+ <xs:element ref="inlinemediaobject"/>
+ <xs:element ref="emphasis"/>
+ </xs:choice>
+ <xs:attributeGroup ref="trademark.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of trademark.element -->
+ <!-- Class: More precisely identifies the item the element names -->
+ <xs:attributeGroup name="trademark.attlist">
+ <xs:attribute name="class" default="trade">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="service"/>
+ <xs:enumeration value="trade"/>
+ <xs:enumeration value="registered"/>
+ <xs:enumeration value="copyright"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="trademark.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of trademark.attlist -->
+ <!-- end of trademark.module -->
+ <xs:attributeGroup name="wordasword.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A word meant specifically as a word and not representing anything else. -->
+ <xs:element name="wordasword" substitutionGroup="gen.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="word.char.mix"/>
+ <xs:attributeGroup ref="wordasword.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of wordasword.element -->
+ <xs:attributeGroup name="wordasword.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="wordasword.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of wordasword.attlist -->
+ <!-- end of wordasword.module -->
+ <!-- Links and cross-references ........................................... -->
+ <xs:attributeGroup name="link.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A hypertext link. -->
+ <xs:element name="link" substitutionGroup="link.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="link.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of link.element -->
+ <!--
+ Endterm: ID of element containing text that is to be
+ fetched from elsewhere in the document to appear as
+ the content of this element
+ -->
+ <!-- to linked-to object -->
+ <!-- Type: Freely assignable parameter -->
+ <xs:attributeGroup name="link.attlist">
+ <xs:attribute name="endterm" type="xs:IDREF"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="link.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of link.attlist -->
+ <!-- end of link.module -->
+ <xs:attributeGroup name="olink.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A link that addresses its target indirectly, through an entity. -->
+ <xs:element name="olink" substitutionGroup="link.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="olink.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of olink.element -->
+ <!-- TargetDocEnt: Name of an entity to be the target of the link -->
+ <!--
+ LinkMode: ID of a ModeSpec containing instructions for
+ operating on the entity named by TargetDocEnt
+ -->
+ <!-- LocalInfo: Information that may be passed to ModeSpec -->
+ <!-- Type: Freely assignable parameter -->
+ <xs:attributeGroup name="olink.attlist">
+ <xs:attribute name="targetdocent" type="xs:ENTITY"/>
+ <xs:attribute name="linkmode" type="xs:IDREF"/>
+ <xs:attribute name="localinfo"/>
+ <xs:attribute name="type"/>
+ <xs:attribute name="targetdoc"/>
+ <xs:attribute name="targetptr"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="olink.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of olink.attlist -->
+ <!-- end of olink.module -->
+ <xs:attributeGroup name="ulink.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A link that addresses its target by means of a URL (Uniform Resource Locator). -->
+ <xs:element name="ulink" substitutionGroup="link.char.class">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="para.char.mix"/>
+ <xs:attributeGroup ref="ulink.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of ulink.element -->
+ <!-- URL: uniform resource locator; the target of the ULink -->
+ <!-- Type: Freely assignable parameter -->
+ <xs:attributeGroup name="ulink.attlist">
+ <xs:attribute name="url" use="required"/>
+ <xs:attribute name="type"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="ulink.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of ulink.attlist -->
+ <!-- end of ulink.module -->
+ <xs:attributeGroup name="footnoteref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to a footnote (a footnote mark). -->
+ <xs:element name="footnoteref" substitutionGroup="xref.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="footnoteref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of footnoteref.element -->
+ <!-- to footnote content supplied elsewhere -->
+ <xs:attributeGroup name="footnoteref.attlist">
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="label.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="footnoteref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of footnoteref.attlist -->
+ <!-- end of footnoteref.module -->
+ <xs:attributeGroup name="xref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to another part of the document. -->
+ <xs:element name="xref" substitutionGroup="xref.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="xref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of xref.element -->
+ <!--
+ Endterm: ID of element containing text that is to be
+ fetched from elsewhere in the document to appear as
+ the content of this element
+ -->
+ <!-- to linked-to object -->
+ <xs:attributeGroup name="xref.attlist">
+ <xs:attribute name="endterm" type="xs:IDREF"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="xref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of xref.attlist -->
+ <!-- end of xref.module -->
+ <xs:attributeGroup name="biblioref.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A cross reference to a bibliographic entry. -->
+ <xs:element name="biblioref" substitutionGroup="xref.char.class">
+ <xs:complexType>
+ <xs:attributeGroup ref="biblioref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of biblioref.element -->
+ <xs:attributeGroup name="biblioref.attlist">
+ <xs:attribute name="endterm" type="xs:IDREF"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attribute name="units"/>
+ <xs:attribute name="begin"/>
+ <xs:attribute name="end"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="linkendreq.attrib"/>
+ <xs:attributeGroup ref="biblioref.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of biblioref.attlist -->
+ <!-- end of biblioref.module -->
+ <!-- Ubiquitous elements .................................................. -->
+ <xs:attributeGroup name="anchor.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A spot in the document. -->
+ <xs:element name="anchor">
+ <xs:complexType>
+ <xs:attributeGroup ref="anchor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of anchor.element -->
+ <!-- required -->
+ <!-- replaces Lang -->
+ <xs:attributeGroup name="anchor.attlist">
+ <xs:attributeGroup ref="idreq.attrib"/>
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="remap.attrib"/>
+ <xs:attributeGroup ref="xreflabel.attrib"/>
+ <xs:attributeGroup ref="revisionflag.attrib"/>
+ <xs:attributeGroup ref="effectivity.attrib"/>
+ <xs:attributeGroup ref="anchor.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of anchor.attlist -->
+ <!-- end of anchor.module -->
+ <xs:attributeGroup name="beginpage.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The location of a page break in a print version of the document. -->
+ <xs:element name="beginpage">
+ <xs:complexType>
+ <xs:attributeGroup ref="beginpage.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of beginpage.element -->
+ <!-- PageNum: Number of page that begins at this point -->
+ <xs:attributeGroup name="beginpage.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="beginpage.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of beginpage.attlist -->
+ <!-- end of beginpage.module -->
+ <!--
+ IndexTerms appear in the text flow for generating or linking an
+ index.
+ -->
+ <xs:attributeGroup name="indexterm.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:A wrapper for terms to be indexed. -->
+ <xs:element name="indexterm" substitutionGroup="ndxterm.class"/>
+ <!-- end of indexterm.element -->
+ <!--
+ Scope: Indicates which generated indices the IndexTerm
+ should appear in: Global (whole document set), Local (this
+ document only), or All (both)
+ -->
+ <!--
+ Significance: Whether this IndexTerm is the most pertinent
+ of its series (Preferred) or not (Normal, the default)
+ -->
+ <!--
+ Class: Indicates type of IndexTerm; default is Singular,
+ or EndOfRange if StartRef is supplied; StartOfRange value
+ must be supplied explicitly on starts of ranges
+ -->
+ <!--
+ StartRef: ID of the IndexTerm that starts the indexing
+ range ended by this IndexTerm
+ -->
+ <!--
+ Zone: IDs of the elements to which the IndexTerm applies,
+ and indicates that the IndexTerm applies to those entire
+ elements rather than the point at which the IndexTerm
+ occurs
+ -->
+ <xs:attributeGroup name="indexterm.attlist">
+ <xs:attributeGroup ref="pagenum.attrib"/>
+ <xs:attribute name="scope">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="all"/>
+ <xs:enumeration value="global"/>
+ <xs:enumeration value="local"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="significance" default="normal">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="preferred"/>
+ <xs:enumeration value="normal"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="singular"/>
+ <xs:enumeration value="startofrange"/>
+ <xs:enumeration value="endofrange"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="startref" type="xs:IDREF"/>
+ <xs:attribute name="zone" type="xs:IDREFS"/>
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="indexterm.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of indexterm.attlist -->
+ <!-- end of indexterm.module -->
+ <xs:attributeGroup name="primsecter.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:The primary word or phrase under which an index term should be sorted. -->
+ <xs:element name="primary">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="primary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of primary.element -->
+ <!--
+ SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14"
+ -->
+ <xs:attributeGroup name="primary.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of primary.attlist -->
+ <!-- doc:A secondary word or phrase in an index term. -->
+ <xs:element name="secondary">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="secondary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of secondary.element -->
+ <!--
+ SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14"
+ -->
+ <xs:attributeGroup name="secondary.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of secondary.attlist -->
+ <!-- doc:A tertiary word or phrase in an index term. -->
+ <xs:element name="tertiary">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="tertiary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of tertiary.element -->
+ <!--
+ SortAs: Alternate sort string for index sorting, e.g.,
+ "fourteen" for an element containing "14"
+ -->
+ <xs:attributeGroup name="tertiary.attlist">
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="primsecter.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of tertiary.attlist -->
+ <!-- end of primsecter.module -->
+ <xs:attributeGroup name="seeseealso.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- doc:Part of an index term directing the reader instead to another entry in the index. -->
+ <xs:element name="see">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="see.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of see.element -->
+ <xs:attributeGroup name="see.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seeseealso.role.attrib"/>
+ </xs:attributeGroup>
+ <!-- end of see.attlist -->
+ <!-- doc:Part of an index term directing the reader also to another entry in the index. -->
+ <xs:element name="seealso">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="ndxterm.char.mix"/>
+ <xs:attributeGroup ref="seealso.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- end of seealso.element -->
+ <xs:attributeGroup name="seealso.attlist">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attributeGroup ref="seeseealso.role.attrib"/>
+ </xs:attributeGroup>
+</xs:schema>
+<!-- end of seealso.attlist -->
+<!-- end of seeseealso.module -->
+<!-- end of indexterm.content.module -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML information pool module ... -->
+<!-- .............................................................................. -->
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/htmltblx.xsd b/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/htmltblx.xsd
new file mode 100644
index 0000000..9f82a02
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/htmltblx.xsd
@@ -0,0 +1,431 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 XML HTML Table Module ........ -->
+<!-- File htmltblx.xsd .................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook XML HTML Table
+ Module V4.5 with:
+
+ Copyright 2003-2006 ArborText, Inc., Norman Walsh, Sun Microsystems,
+ Inc., and the Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ $Id: htmltblx.mod 6340 2006-10-03 13:23:24Z nwalsh $
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This module contains the definitions for elements that are
+ isomorphic to the HTML elements. One could argue we should
+ instead have based ourselves on the XHTML Table Module, but the
+ HTML one is more like what browsers are likely to accept today
+ and users are likely to use.
+
+ This module has been developed for use with the DocBook V4.5
+ "union table model" in which elements and attlists common to both
+ models are defined (as the union) in the CALS table module by
+ setting various parameter entities appropriately in this file.
+
+ In DTD driver files referring to this module, please use an entity
+ declaration that uses the public identifier shown below:
+
+ <!ENTITY % htmltbl PUBLIC
+ "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN"
+ "htmltblx.mod">
+ %htmltbl;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ======================= XHTML Tables ======================================= -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:attributeGroup name="html.coreattrs">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attribute name="class"/>
+ <xs:attribute name="style"/>
+ <xs:attribute name="title"/>
+ </xs:attributeGroup>
+ <!-- Does not contain lang or dir because they are in %common.attribs -->
+ <xs:attributeGroup name="i18n">
+ <xs:attribute ref="xml:lang"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="events">
+ <xs:attribute name="onclick"/>
+ <xs:attribute name="ondblclick"/>
+ <xs:attribute name="onmousedown"/>
+ <xs:attribute name="onmouseup"/>
+ <xs:attribute name="onmouseover"/>
+ <xs:attribute name="onmousemove"/>
+ <xs:attribute name="onmouseout"/>
+ <xs:attribute name="onkeypress"/>
+ <xs:attribute name="onkeydown"/>
+ <xs:attribute name="onkeyup"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="attrs">
+ <xs:attributeGroup ref="html.coreattrs"/>
+ <xs:attributeGroup ref="i18n"/>
+ <xs:attributeGroup ref="events"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="cellhalign">
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="cellvalign">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ <xs:enumeration value="baseline"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <!-- doc:A group of columns in an HTML table. -->
+ <xs:element name="colgroup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="colgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:Specifications for a column in an HTML table. -->
+ <xs:element name="col">
+ <xs:complexType>
+ <xs:attributeGroup ref="col.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:A row in an HTML table. -->
+ <xs:element name="tr">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="th"/>
+ <xs:element ref="td"/>
+ </xs:choice>
+ <xs:attributeGroup ref="tr.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:A table header entry in an HTML table. -->
+ <xs:element name="th">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="tabentry.mix"/>
+ <xs:element ref="table"/>
+ <xs:element ref="informaltable"/>
+ </xs:choice>
+ <xs:attributeGroup ref="th.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- doc:A table ntry in an HTML table. -->
+ <xs:element name="td">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="tabentry.mix"/>
+ <xs:element ref="table"/>
+ <xs:element ref="informaltable"/>
+ </xs:choice>
+ <xs:attributeGroup ref="td.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="colgroup.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="span" default="1"/>
+ <xs:attribute name="width"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="col.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="span" default="1"/>
+ <xs:attribute name="width"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="tr.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ <xs:attribute name="bgcolor"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="th.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="abbr"/>
+ <xs:attribute name="axis"/>
+ <xs:attribute name="headers" type="xs:IDREFS"/>
+ <xs:attribute name="scope">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="row"/>
+ <xs:enumeration value="col"/>
+ <xs:enumeration value="rowgroup"/>
+ <xs:enumeration value="colgroup"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rowspan" default="1"/>
+ <xs:attribute name="colspan" default="1"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ <xs:attribute name="nowrap">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="nowrap"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="bgcolor"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="height"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="td.attlist">
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="abbr"/>
+ <xs:attribute name="axis"/>
+ <xs:attribute name="headers" type="xs:IDREFS"/>
+ <xs:attribute name="scope">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="row"/>
+ <xs:enumeration value="col"/>
+ <xs:enumeration value="rowgroup"/>
+ <xs:enumeration value="colgroup"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rowspan" default="1"/>
+ <xs:attribute name="colspan" default="1"/>
+ <xs:attributeGroup ref="cellhalign"/>
+ <xs:attributeGroup ref="cellvalign"/>
+ <xs:attribute name="nowrap">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="nowrap"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="bgcolor"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="height"/>
+ </xs:attributeGroup>
+ <!-- ====================================================== -->
+ <!--
+ Set up to read in the CALS model configured to
+ merge with the XHTML table model
+ -->
+ <!-- ====================================================== -->
+ <xs:attributeGroup name="tables.role.attrib">
+ <xs:attributeGroup ref="role.attrib"/>
+ </xs:attributeGroup>
+ <!-- Add label and role attributes to table and informaltable -->
+ <xs:attributeGroup name="bodyatt">
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="rowheader">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="firstcol"/>
+ <xs:enumeration value="norowheader"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="label.attrib"/>
+ </xs:attributeGroup>
+ <!--
+ Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
+ EntryTbl, and Entry (and InformalTable element).
+ -->
+ <xs:attributeGroup name="secur">
+ <xs:attributeGroup ref="common.attrib"/>
+ <xs:attribute name="class"/>
+ <xs:attribute name="style"/>
+ <xs:attribute name="title"/>
+ <xs:attributeGroup ref="i18n"/>
+ <xs:attributeGroup ref="events"/>
+ <xs:attributeGroup ref="tables.role.attrib"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="common.table.attribs">
+ <xs:attributeGroup ref="bodyatt"/>
+ <xs:attributeGroup ref="secur"/>
+ </xs:attributeGroup>
+ <!-- Content model for Table (that also allows HTML tables) -->
+ <xs:complexType name="tbl.table.mdl">
+ <xs:choice>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="blockinfo"/>
+ <xs:group ref="formalobject.title.content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ndxterm.class"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="textobject"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="tgroup"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:element ref="caption"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colgroup"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element minOccurs="0" ref="tfoot"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tbody"/>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:choice>
+ </xs:complexType>
+ <xs:group name="informal.tbl.table.mdl">
+ <xs:choice>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="textobject"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="graphic"/>
+ <xs:element maxOccurs="unbounded" ref="mediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="tgroup"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colgroup"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="thead"/>
+ <xs:element minOccurs="0" ref="tfoot"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tbody"/>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:choice>
+ </xs:group>
+ <!-- Attributes for Table (including HTML ones) -->
+ <!-- N.B. rules = (none | groups | rows | cols | all) but it can't be spec'd -->
+ <!-- that way because 'all' already occurs in a different enumeration in -->
+ <!-- CALS tables (frame). -->
+ <xs:attributeGroup name="tbl.table.att">
+ <xs:attribute name="tabstyle"/>
+ <xs:attribute name="tocentry" type="yesorno.attvals"/>
+ <xs:attribute name="shortentry" type="yesorno.attvals"/>
+ <xs:attribute name="orient">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="port"/>
+ <xs:enumeration value="land"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="pgwide" type="yesorno.attvals"/>
+ <xs:attribute name="summary"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="border"/>
+ <xs:attribute name="rules"/>
+ <xs:attribute name="cellspacing"/>
+ <xs:attribute name="cellpadding"/>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="right"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="bgcolor"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="tbl.frame.attval">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="void"/>
+ <xs:enumeration value="above"/>
+ <xs:enumeration value="below"/>
+ <xs:enumeration value="hsides"/>
+ <xs:enumeration value="lhs"/>
+ <xs:enumeration value="rhs"/>
+ <xs:enumeration value="vsides"/>
+ <xs:enumeration value="box"/>
+ <xs:enumeration value="border"/>
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="bottom"/>
+ <xs:enumeration value="topbot"/>
+ <xs:enumeration value="all"/>
+ <xs:enumeration value="sides"/>
+ <xs:enumeration value="none"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!-- Allow either objects or inlines; beware of REs between elements. -->
+ <xs:group name="tbl.entry.mdl">
+ <xs:choice>
+ <xs:group ref="para.char.mix"/>
+ <xs:group ref="tabentry.mix"/>
+ </xs:choice>
+ </xs:group>
+ <!--
+ thead, tfoot, and tbody are defined in both table models,
+ so we set up parameter entities to define union models for them
+ -->
+ <xs:complexType name="tbl.hdft.mdl">
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colspec"/>
+ <xs:element maxOccurs="unbounded" ref="row"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="tbl.tbody.mdl">
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ <xs:element maxOccurs="unbounded" ref="row"/>
+ </xs:choice>
+ </xs:complexType>
+</xs:schema>
+<!-- End of SCons DocBook V4.5-Based extension V1.0 XML HTML Table Module . -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/scons.xsd b/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/scons.xsd
new file mode 100644
index 0000000..481c2d4
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/scons.xsd
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ...................................................................... -->
+<!-- SCons DocBook V4.5-Based extension V1.0 .............................. -->
+<!-- File scons.xsd ....................................................... -->
+<!-- Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ This DTD extension is based on the DocBook V4.5 DTD with:
+
+ Copyright 1992-2006 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ See also http://docbook.org/specs/
+
+ $Id: docbookx.dtd 6340 2006-10-03 13:23:24Z nwalsh $
+
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+ For the modified SCons extension files
+
+ scons.xsd, dbpoolx.xsd,
+
+ you can write to its developer mailing list. Check out
+ http://www.scons.org/ and http://www.scons.org/lists.php.
+
+-->
+<!-- ...................................................................... -->
+<!--
+ This is the driver file for V4.5 of the DocBook DTD.
+ Please use the following formal public identifier to identify it:
+
+ "-//OASIS//DTD DocBook XML V4.5//EN"
+
+ For example, if your document's top-level element is Book, and
+ you are using DocBook directly, use the FPI in the DOCTYPE
+ declaration:
+
+ <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
+ [...]>
+
+ Or, if you have a higher-level driver file that customizes DocBook,
+ use the FPI in the parameter entity declaration:
+
+ <!ENTITY % DocBookDTD PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+ %DocBookDTD;
+
+ See the documentation for detailed information on the parameter
+ entity and module scheme used in DocBook, customizing DocBook and
+ planning for interchange, and changes made since the last release
+ of DocBook.
+-->
+<!-- ...................................................................... -->
+<!-- Enable SGML features ................................................. -->
+<!-- ...................................................................... -->
+<!-- Notation declarations ................................................ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.scons.org/dbxsd/v1.0"
+ elementFormDefault="qualified">
+ <xs:include schemaLocation="dbnotnx.xsd"/>
+ <xs:include schemaLocation="dbpoolx.xsd"/>
+ <xs:include schemaLocation="dbhierx.xsd"/>
+ <!-- ...................................................................... -->
+ <!-- ISO character entity sets ............................................ -->
+ <!-- euro sign, U+20AC NEW -->
+ <!-- ...................................................................... -->
+ <!-- DTD modules .......................................................... -->
+ <!-- Information pool .............. -->
+ <!-- Redeclaration placeholder ..... -->
+ <!-- Document hierarchy ............ -->
+</xs:schema>
+<!-- ...................................................................... -->
+<!-- Other general entities ............................................... -->
+<!-- End of SCons DocBook V4.5-Based extension V1.0 ....................... -->
+<!-- ...................................................................... -->
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/xml.xsd b/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/xml.xsd
new file mode 100644
index 0000000..600f399
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/scons_xsd/xml.xsd
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ targetNamespace="http://www.w3.org/XML/1998/namespace">
+ <xs:import schemaLocation="scons.xsd"/>
+ <xs:attribute name="base"/>
+ <xs:attribute name="space">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="lang" type="xs:NMTOKEN"/>
+</xs:schema>
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/toolBar.incl b/doc/editor_configs/xmlmind5/addon/config/scons/toolBar.incl
new file mode 100644
index 0000000..a610a2d
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/toolBar.incl
@@ -0,0 +1,189 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<configuration
+ xmlns="http://www.xmlmind.com/xmleditor/schema/configuration"
+ xmlns:cfg="http://www.xmlmind.com/xmleditor/schema/configuration">
+
+ <toolBar>
+ <button toolTip="Convert to emphasis"
+ icon="../common/icons/emphasisText_menu.png">
+ <menu>
+ <item label="emphasis"
+ command="convert"
+ parameter="[implicitElement] emphasis" />
+ <item label="emphasis[bold]"
+ command="docb.convertWithAttribute"
+ parameter="emphasis role bold" />
+ <item label="firstterm" command="convert"
+ parameter="[implicitElement] firstterm" />
+ <item label="replaceable" command="convert"
+ parameter="[implicitElement] replaceable" />
+ <separator />
+ <item label="literal" command="convert"
+ parameter="[implicitElement] literal" />
+ <item label="filename" command="convert"
+ parameter="[implicitElement] filename" />
+ <separator />
+ <item label="trademark" command="convert"
+ parameter="[implicitElement] trademark" />
+ <item label="trademark[registered]" command="docb.convertWithAttribute"
+ parameter="trademark class registered" />
+ <separator />
+ <item label="guilabel" command="convert"
+ parameter="[implicitElement] guilabel" />
+ <item label="guibutton" command="convert"
+ parameter="[implicitElement] guibutton" />
+ <item label="guimenuitem" command="convert"
+ parameter="[implicitElement] guimenuitem" />
+ <item label="guisubmenu" command="convert"
+ parameter="[implicitElement] guisubmenu" />
+ <item label="guimenu" command="convert"
+ parameter="[implicitElement] guimenu" />
+ <separator />
+ <item label="keycap" command="convert"
+ parameter="[implicitElement] keycap" />
+ <item label="keysym" command="convert"
+ parameter="[implicitElement] keysym" />
+ <separator />
+ <item label="sgmltag[element]" command="docb.convertWithAttribute"
+ parameter="sgmltag class element" />
+ <item label="sgmltag[attribute]" command="docb.convertWithAttribute"
+ parameter="sgmltag class attribute" />
+ <item label="sgmltag[attvalue]" command="docb.convertWithAttribute"
+ parameter="sgmltag class attvalue" />
+ </menu>
+ </button>
+
+ <button toolTip="Convert to link"
+ icon="../common/icons/hyperText_menu.png">
+ <menu>
+ <item label="link" command="convert"
+ parameter="[implicitElement] link" />
+ <item label="ulink" command="convert"
+ parameter="[implicitElement] ulink" />
+ </menu>
+ </button>
+
+ <button toolTip="Convert to plain text"
+ icon="../common/icons/plainText.png">
+ <command name="convert" parameter="[implicitElement] #text" />
+ </button>
+
+ <separator />
+
+ <button toolTip="Add para" icon="../common/icons/paragraph.png">
+ <command name="docb.addAfter" parameter="para" />
+ </button>
+
+ <button toolTip="Add listitem or varlistentry [Ctrl-Enter]"
+ icon="../common/icons/addListItem.png">
+ <command name="docb.addListItem" parameter="After" />
+ </button>
+
+ <button toolTip="Add itemizedlist"
+ icon="../common/icons/itemizedList.png">
+ <command name="docb.addAfter" parameter="itemizedlist" />
+ </button>
+
+ <button toolTip="Add orderedlist"
+ icon="../common/icons/orderedList.png">
+ <command name="docb.addAfter" parameter="orderedlist" />
+ </button>
+
+ <button toolTip="Add variablelist"
+ icon="../common/icons/definitionList.png">
+ <command name="docb.addAfter" parameter="variablelist" />
+ </button>
+
+ <button toolTip="Add table" icon="../common/icons/table_menu.png">
+ <menu>
+ <item label="informaltable" command="docb.addAfter"
+ parameter="informaltable" />
+ <item label="informaltable(head_row)" command="docb.addAfter"
+ parameter="#template(informaltable,head_row)" />
+ <item label="informaltable(head_column)" command="docb.addAfter"
+ parameter="#template(informaltable,head_column)" />
+ <item label="informaltable(head_row_column)" command="docb.addAfter"
+ parameter="#template(informaltable,head_row_column)" />
+ <separator />
+ <item label="table" command="docb.addAfter"
+ parameter="table" />
+ <item label="table(head_row)" command="docb.addAfter"
+ parameter="#template(table,head_row)" />
+ <item label="table(head_column)" command="docb.addAfter"
+ parameter="#template(table,head_column)" />
+ <item label="table(head_row_column)" command="docb.addAfter"
+ parameter="#template(table,head_row_column)" />
+
+ <separator />
+
+ <item label="informaltable(HTML)" command="docb.addAfter"
+ parameter="#template(informaltable,HTML)" />
+ <item label="informaltable(HTML_head_row)" command="docb.addAfter"
+ parameter="#template(informaltable,HTML_head_row)" />
+ <item label="informaltable(HTML_head_column)" command="docb.addAfter"
+ parameter="#template(informaltable,HTML_head_column)" />
+ <item label="informaltable(HTML_head_row_column)"
+ command="docb.addAfter"
+ parameter="#template(informaltable,HTML_head_row_column)" />
+ <separator />
+ <item label="table(HTML)" command="docb.addAfter"
+ parameter="#template(table,HTML)" />
+ <item label="table(HTML_head_row)" command="docb.addAfter"
+ parameter="#template(table,HTML_head_row)" />
+ <item label="table(HTML_head_column)" command="docb.addAfter"
+ parameter="#template(table,HTML_head_column)" />
+ <item label="table(HTML_head_row_column)" command="docb.addAfter"
+ parameter="#template(table,HTML_head_row_column)" />
+ </menu>
+ </button>
+
+ <button toolTip="Add image" icon="../common/icons/figure_menu.png">
+ <menu>
+ <item label="inlinemediaobject" command="insert"
+ parameter="into inlinemediaobject" />
+ <separator />
+ <item label="mediaobject" command="docb.addAfter"
+ parameter="mediaobject" />
+ <separator />
+ <item label="screenshot" command="docb.addAfter"
+ parameter="screenshot" />
+ <separator />
+ <item label="figure" command="docb.addAfter"
+ parameter="figure" />
+ <item label="figure(screenshot)" command="docb.addAfter"
+ parameter="#template(figure,screenshot)" />
+ </menu>
+ </button>
+
+ <button toolTip="Add section" icon="../common/icons/section_menu.png">
+ <menu>
+ <item label="chapter" command="add"
+ parameter="after[implicitElement] chapter" />
+ <separator />
+ <item label="section" command="add"
+ parameter="after[implicitElement] section" />
+ <item label="sect1" command="add"
+ parameter="after[implicitElement] sect1" />
+ <item label="sect2" command="add"
+ parameter="after[implicitElement] sect2" />
+ <item label="sect3" command="add"
+ parameter="after[implicitElement] sect3" />
+ <item label="sect4" command="add"
+ parameter="after[implicitElement] sect4" />
+ <item label="sect5" command="add"
+ parameter="after[implicitElement] sect5" />
+ <separator />
+ <item label="appendix" command="add"
+ parameter="after[implicitElement] appendix" />
+ </menu>
+ </button>
+
+ <separator />
+
+ <button toolTip="Go to opposite link end"
+ icon="../common/icons/navigate.png">
+ <command name="selectById" parameter="swapIdAndReference" />
+ </button>
+ </toolBar>
+
+</configuration>
diff --git a/doc/editor_configs/xmlmind5/addon/config/scons/xslMenu.incl b/doc/editor_configs/xmlmind5/addon/config/scons/xslMenu.incl
new file mode 100644
index 0000000..8b639fb
--- /dev/null
+++ b/doc/editor_configs/xmlmind5/addon/config/scons/xslMenu.incl
@@ -0,0 +1,688 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<configuration
+ xmlns="http://www.xmlmind.com/xmleditor/schema/configuration"
+ xmlns:cfg="http://www.xmlmind.com/xmleditor/schema/configuration">
+
+ <!-- ====== First step used by most process commands defined here ====== -->
+
+ <command name="docb.convertStep1">
+ <process>
+ <mkdir dir="resources" />
+ <mkdir dir="raw" />
+
+ <copyDocument to="__doc.xml">
+ <resources match="(https|http|ftp)://.*" />
+
+ <!-- Support for textdata/@fileref.
+ add your favorite text file extensions here: -->
+ <resources
+ match=".+\.(txt|text|htm|html|xml|h|c|cpp|java|js|tcl|py|pl|rb)"
+ copyTo="." />
+
+ <resources match=".+\.(png|jpg|jpeg|gif)"
+ copyTo="resources" />
+ <resources match="(?:.+/)?(.+)\.(\w+)"
+ copyTo="raw" referenceAs="resources/$1.png" />
+ <resources match=".+"
+ copyTo="resources" />
+ </copyDocument>
+
+ <convertImage from="raw" to="resources" format="png" />
+
+ <mkdir dir="images/callouts" />
+ <copyProcessResources resources="xsl/images/draft.png" to="images" />
+ <copyProcessResources resources="@xsl/images/callouts/png_callouts.list"
+ to="images/callouts" />
+ </process>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toHTML">
+ <process>
+ <subProcess name="docb.convertStep1" />
+
+ <copyProcessResources resources="xsl/css/html.css" to="html.css"
+ name="css" />
+
+ <transform stylesheet="xsl/html/chunk.xsl"
+ file="__doc.xml" to="__doc.html"
+ label="Convert to multi-page HTML"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/html/%{parameter.name|html.stylesheet}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="base.dir">%W%S</parameter>
+ <parameter name="chunk.first.sections">1</parameter>
+ <parameter name="chunk.section.depth">1</parameter>
+
+ <parameter name="toc.section.depth">3</parameter>
+ <parameter name="section.autolabel">1</parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="html.stylesheet">html.css</parameter>
+
+ <parameterGroup name="docb.toHTML.transformParameters" />
+ </transform>
+
+ <!-- The real HTML file is index.html -->
+ <delete files="__doc.*" />
+
+ <upload base="%0/">
+ <copyFiles files="*.*" toDir="." />
+ <copyFiles files="resources/*" toDir="resources" />
+ <copyFiles files="images/*" toDir="images" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToHTML">
+ <macro>
+ <sequence>
+ <command name="selectConvertedFile"
+ parameter="saveDirectoryURL" />
+ <command name="docb.toHTML" parameter='"%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toHTML1">
+ <process>
+ <subProcess name="docb.convertStep1" />
+
+ <copyProcessResources resources="xsl/css/html.css" to="html.css"
+ name="css" />
+
+ <transform stylesheet="xsl/html/docbook.xsl"
+ file="__doc.xml" to="__doc.html"
+ label="Convert to single-page HTML"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/html/%{parameter.name|html.stylesheet}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="generate.toc">%0</parameter>
+ <parameter name="toc.section.depth">3</parameter>
+ <parameter name="section.autolabel">%1</parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="html.stylesheet">html.css</parameter>
+
+ <parameterGroup name="docb.toHTML1.transformParameters" />
+ </transform>
+
+ <upload base="%2">
+ <copyFile file="__doc.html" to="%2" />
+ <copyFile file="html.css" to="html.css" />
+ <copyFiles files="resources/*" toDir="resources" />
+ <copyFiles files="images/*" toDir="images" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToHTML1">
+ <macro>
+ <sequence>
+ <command name="selectConvertedFile"
+ parameter="saveFileURLWithExtension=html" />
+ <command name="docb.toHTML1" parameter='"%0" "%1" "%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toHTMLHelp">
+ <process>
+ <subProcess name="docb.convertStep1" />
+
+ <copyProcessResources resources="xsl/css/htmlhelp.css"
+ to="htmlhelp.css" name="css" />
+
+ <transform stylesheet="xsl/htmlhelp/htmlhelp.xsl"
+ file="__doc.xml" to="__doc.html"
+ label="Convert to HTML Help"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/html/%{parameter.name|html.stylesheet}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="base.dir">%W%S</parameter>
+ <parameter name="manifest.in.base.dir">1</parameter>
+
+ <parameter name="chunk.first.sections">1</parameter>
+ <parameter name="chunk.section.depth">1</parameter>
+
+ <parameter name="toc.section.depth">3</parameter>
+ <parameter name="section.autolabel">1</parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="html.stylesheet">htmlhelp.css</parameter>
+
+ <parameterGroup name="docb.toHTMLHelp.transformParameters" />
+ </transform>
+
+ <!-- Not useful. -->
+ <delete files="__doc.*" />
+
+ <!-- "C:\Program Files\HTML Help Workshop\hhc.exe" is the
+ HTML Help compiler.
+ hhc.exe exit code is 1 even when the compilation is successful.
+ Its exit code should be 0. That's why, without "|| exit 0",
+ the process command thinks hhc.exe has failed. -->
+
+ <shell command="helper(.hhp) htmlhelp.hhp || exit 0"
+ platform="Windows" />
+
+ <upload base="%0">
+ <copyFile file="htmlhelp.chm" to="%0" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToHTMLHelp">
+ <macro>
+ <sequence>
+ <!-- path.separator==';' only on Windows. -->
+ <test expression="system-property('path.separator') = ';'" />
+
+ <command name="selectConvertedFile"
+ parameter="saveFileURLWithExtension=chm" />
+ <command name="docb.toHTMLHelp" parameter='"%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toJavaHelpStep1">
+ <process>
+ <subProcess name="docb.convertStep1" />
+
+ <copyProcessResources resources="xsl/css/javahelp.css"
+ to="javahelp.css" name="css" />
+
+ <transform stylesheet="xsl/javahelp/javahelp.xsl"
+ file="__doc.xml" to="__doc.html"
+ label="Convert to Java Help"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/html/%{parameter.name|html.stylesheet}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="base.dir">%W%S</parameter>
+
+ <parameter name="chunk.first.sections">1</parameter>
+ <parameter name="chunk.section.depth">2</parameter>
+
+ <parameter name="generate.toc"> </parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="html.stylesheet">javahelp.css</parameter>
+
+ <parameterGroup name="docb.toJavaHelp.transformParameters" />
+ </transform>
+
+ <!-- The real file is not __doc.html -->
+ <delete files="__doc.*" />
+
+ <shell command="helper(application/x-java-help-index) ." />
+ </process>
+ </command>
+
+ <command name="docb.toJavaHelp">
+ <process>
+ <subProcess name="docb.toJavaHelpStep1" />
+
+ <jar archive="__help_jar__">
+ <add files="*.*" />
+ <add files="resources/*" />
+ <add files="images/*" />
+ <add files="JavaHelpSearch/*" />
+ </jar>
+
+ <upload base="%0">
+ <copyFile file="__help_jar__" to="%0" />
+ </upload>
+ </process>
+ </command>
+
+ <!-- Useful when the application merges several HelpSets -->
+ <command name="docb.toJavaHelpWithPrefix">
+ <process>
+ <subProcess name="docb.toJavaHelpStep1" />
+
+ <mkdir dir="%1" />
+ <copy files="*.*" to="%1" />
+ <copy recurse="true" files="resources" to="%1" />
+ <copy recurse="true" files="images" to="%1" />
+ <copy recurse="true" files="JavaHelpSearch" to="%1" />
+
+ <jar archive="__help_jar__">
+ <add files="%1/*" />
+ </jar>
+
+ <upload base="%0">
+ <copyFile file="__help_jar__" to="%0" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToJavaHelp">
+ <macro>
+ <sequence>
+ <command name="selectConvertedFile"
+ parameter="saveFileURLWithExtension=jar" />
+ <command name="docb.toJavaHelp" parameter='"%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toEclipseHelp">
+ <process>
+ <subProcess name="docb.convertStep1" />
+
+ <copyProcessResources resources="xsl/css/eclipsehelp.css"
+ to="eclipsehelp.css" name="css" />
+
+ <transform stylesheet="xsl/eclipse/eclipse.xsl"
+ file="__doc.xml" to="__doc.html"
+ label="Convert to Eclipse Help"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/html/%{parameter.name|html.stylesheet}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="base.dir">%W%S</parameter>
+ <parameter name="manifest.in.base.dir">1</parameter>
+
+ <parameter name="chunk.first.sections">1</parameter>
+ <parameter name="chunk.section.depth">3</parameter>
+
+ <parameter name="toc.section.depth">3</parameter>
+ <parameter name="section.autolabel">1</parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="html.stylesheet">eclipsehelp.css</parameter>
+
+ <parameter name="eclipse.plugin.name"
+ >REDEFINE THIS: title of this help</parameter>
+ <parameter name="eclipse.plugin.id"
+ >REDEFINE THIS: unique.id.of.this.plugin</parameter>
+ <parameter name="eclipse.plugin.provider"
+ >REDEFINE THIS: author, company or organization</parameter>
+
+ <parameterGroup name="docb.toEclipseHelp.transformParameters" />
+ </transform>
+
+ <!-- Not useful. -->
+ <delete files="__doc.*" />
+
+ <upload base="%0/">
+ <copyFiles files="*.*" toDir="." />
+ <copyFiles files="resources/*" toDir="resources" />
+ <copyFiles files="images/*" toDir="images" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToEclipseHelp">
+ <macro>
+ <sequence>
+ <command name="selectConvertedFile"
+ parameter="saveDirectoryURL" />
+ <command name="docb.toEclipseHelp" parameter='"%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toEpub">
+ <process>
+ <mkdir dir="raw" />
+ <mkdir dir="images" />
+ <mkdir dir="META-INF" />
+
+ <copyDocument to="__doc.xml">
+ <resources match="(https|http|ftp)://.*" />
+
+ <!-- Support for textdata/@fileref.
+ add your favorite text file extensions here: -->
+ <resources
+ match=".+\.(txt|text|htm|html|xml|h|c|cpp|java|js|tcl|py|pl|rb)"
+ copyTo="." />
+
+ <resources match=".+\.(png|jpg|jpeg|gif)"
+ copyTo="images" />
+ <resources match="(?:.+/)?(.+)\.(\w+)"
+ copyTo="raw" referenceAs="images/$1.png" />
+ <resources match=".+"
+ copyTo="images" />
+ </copyDocument>
+
+ <convertImage from="raw" to="images" format="png" />
+
+ <mkdir dir="images/callouts" />
+ <copyProcessResources resources="xsl/images/draft.png"
+ to="images" />
+ <copyProcessResources resources="@xsl/images/callouts/png_callouts.list"
+ to="images/callouts" />
+
+ <copyProcessResources resources="xsl/css/epub.css"
+ to="epub.css" name="css" />
+ <copyProcessResources resources="xsl/epub/mimetype"
+ to="mimetype" />
+ <copyProcessResources resources="xsl/epub/META-INF/container.xml"
+ to="META-INF/container.xml" />
+
+ <transform stylesheet="xsl/epub/epub.xsl"
+ file="__doc.xml" to="__doc.html"
+ label="Convert to Epub"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/html/%{parameter.name|html.stylesheet}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="base.dir">%W%S</parameter>
+
+ <parameter name="chunk.first.sections">1</parameter>
+ <parameter name="chunk.section.depth">3</parameter>
+
+ <parameter name="generate.toc"> </parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="html.stylesheet">epub.css</parameter>
+
+ <parameterGroup name="docb.toEpub.transformParameters" />
+ </transform>
+
+ <!-- Not useful. -->
+ <delete files="__doc.*" />
+
+ <zip archive="epub.zip">
+ <add files="mimetype" store="true" />
+ <add files="META-INF/*" />
+ <add files="*.html" />
+ <add files="*.css" />
+ <add files="images/*" />
+ <add files="content.opf" />
+ <add files="toc.ncx" />
+ </zip>
+
+ <upload base="%0">
+ <copyFile file="epub.zip" to="%0" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToEpub">
+ <macro>
+ <sequence>
+ <command name="selectConvertedFile"
+ parameter="saveFileURLWithExtension=epub" />
+ <command name="docb.toEpub" parameter='"%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toRTF">
+ <process>
+ <subProcess name="docb.convertStep1" />
+
+ <transform stylesheet="xsl/fo/docbook.xsl"
+ file="__doc.xml" to="__doc.fo"
+ label="Convert to RTF, WordprocessingML, OOXML, OpenDocument"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/fo/%{parameter.name|paper.type}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="paper.type">A4</parameter>
+
+ <parameter name="generate.toc">%2</parameter>
+ <parameter name="toc.section.depth">3</parameter>
+ <parameter name="section.autolabel">%3</parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="shade.verbatim">1</parameter>
+
+ <parameter name="ulink.show">0</parameter>
+
+ <parameterGroup name="docb.toRTF.transformParameters" />
+ </transform>
+
+ <processFO processor="XFC" file="__doc.fo" to="__doc.%0">
+ <parameter name="outputFormat">%0</parameter>
+ <parameter name="outputEncoding">%1</parameter>
+ <parameter name="imageResolution">120</parameter>
+ <parameter name="prescaleImages">false</parameter>
+ <parameterGroup name="docb.toRTF.XFCParameters" />
+ </processFO>
+
+ <upload base="%4">
+ <copyFile file="__doc.%0" to="%4" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToRTF">
+ <macro>
+ <sequence>
+ <command name="selectConvertedFile"
+ parameter="saveFileURLWithExtension=%4" />
+ <command name="docb.toRTF" parameter='"%0" "%1" "%2" "%3" "%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toPS">
+ <process>
+ <mkdir dir="resources" />
+ <mkdir dir="raw" />
+
+ <copyDocument to="__doc.xml">
+ <resources match="(https|http|ftp)://.*" />
+
+ <!-- Support for textdata/@fileref.
+ add your favorite text file extensions here: -->
+ <resources
+ match=".+\.(txt|text|htm|html|xml|h|c|cpp|java|js|tcl|py|pl|rb)"
+ copyTo="." />
+
+ <!-- referenceAs=absolute_URL is used as a workaround for
+ FOP 0.20.5 ``really strange'' image managment.
+ (This is harmless for XEP.) -->
+
+ <resources match="(?:.+/)?(.+)\.(png|jpg|jpeg|gif|mml|svg|svgz%1)"
+ copyTo="resources" referenceAs="%w/resources/$1.$2" />
+ <resources match="(?:.+/)?(.+)\.tex"
+ copyTo="raw" referenceAs="%w/resources/$1.%0" />
+ <resources match="(?:.+/)?(.+)\.(\w+)"
+ copyTo="raw" referenceAs="%w/resources/$1.png" />
+ <resources match="(?:.+/)?(.+)"
+ copyTo="resources" referenceAs="%w/resources/$1" />
+ </copyDocument>
+
+ <convertImage from="raw" to="resources" format="%0 png" />
+
+ <mkdir dir="images/callouts" />
+ <copyProcessResources resources="xsl/images/draft.png" to="images" />
+ <copyProcessResources resources="@xsl/images/callouts/png_callouts.list"
+ to="images/callouts" />
+
+ <transform stylesheet="xsl/fo/docbook.xsl"
+ file="__doc.xml" to="__doc.fo"
+ label="Convert to PDF, PostScript"
+ documentation="http://docbook.sourceforge.net/release/xsl/current/doc/fo/%{parameter.name|paper.type}.html">
+ <parameter name="use.extensions">1</parameter>
+ <!-- Cannot work and generates a lot of error messages. -->
+ <parameter name="graphicsize.extension">0</parameter>
+
+ <parameter name="paper.type">A4</parameter>
+
+ <parameter name="generate.toc">%2</parameter>
+ <parameter name="toc.section.depth">3</parameter>
+ <parameter name="section.autolabel">%3</parameter>
+
+ <parameter name="callout.graphics">1</parameter>
+
+ <parameter name="shade.verbatim">1</parameter>
+
+ <parameter name="ulink.show">0</parameter>
+
+ <parameterGroup name="docb.toPS.transformParameters" />
+ </transform>
+
+ <processFO processor="XEP" file="__doc.fo" to="__doc.%0">
+ <parameter name="OUTPUT_FORMAT">%0</parameter>
+ <parameter name="PS.LANGUAGE_LEVEL">2</parameter>
+ <parameterGroup name="docb.toPS.XEPParameters" />
+
+ <!-- If XEP plug-in has not been installed, try FOP plug-in. -->
+ <processFO processor="FOP" file="__doc.fo" to="__doc.%0">
+ <parameter name="renderer">%0</parameter>
+ <parameter name="strict-validation">false</parameter>
+ <parameterGroup name="docb.toPS.FOPParameters" />
+ </processFO>
+ </processFO>
+ </process>
+ </command>
+
+ <command name="docb.toPSFile">
+ <process>
+ <subProcess name="docb.toPS" parameter='"%0" "%1" "%2" "%3"' />
+
+ <upload base="%4">
+ <copyFile file="__doc.%0" to="%4" />
+ </upload>
+ </process>
+ </command>
+
+ <command name="docb.convertToPS">
+ <macro>
+ <sequence>
+ <command name="selectConvertedFile"
+ parameter="saveFileURLWithExtension=%0" />
+ <command name="docb.toPSFile" parameter='"%0" "%1" "%2" "%3" "%_"' />
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.toPSPrinter">
+ <process>
+ <subProcess name="docb.toPS" parameter='"%0" "%1" "%2" "%3"' />
+
+ <print file="__doc.%0" printer="%4" />
+ </process>
+ </command>
+
+ <command name="docb.printPS">
+ <macro>
+ <sequence>
+ <command name="selectPrinter" parameter="%0" />
+ <command name="docb.toPSPrinter" parameter='"%0" "%1" "%2" "%3" "%_"'/>
+ </sequence>
+ </macro>
+ </command>
+
+ <!-- =================================================================== -->
+
+ <menu label="_DocBook"
+ insert="ifDefined(XXE.Edition.Unrestricted)after ##last">
+ <separator />
+ <menu label="_Convert Document">
+ <item label="Convert to _HTML..."
+ command="docb.convertToHTML" />
+ <item label="Convert to HTML [_one page]..."
+ command="docb.convertToHTML1"
+ parameter='"/book toc /article toc" 1' />
+ <item label="Convert to HTML [one page, _no TOC]..."
+ command="docb.convertToHTML1" parameter='" " 0' />
+ <separator />
+ <item label="Convert to HTM_L Help..."
+ command="docb.convertToHTMLHelp" />
+ <separator />
+ <item label="Convert to _Java Help..."
+ command="docb.convertToJavaHelp" />
+ <separator />
+ <item label="Convert to _Eclipse Help..."
+ command="docb.convertToEclipseHelp" />
+ <separator />
+ <item label="Convert to Epu_b..."
+ command="docb.convertToEpub" />
+ <separator />
+ <item label="Convert to _RTF (Word 2000+)..."
+ command="docb.convertToRTF"
+ parameter='rtf Cp1252 "/book toc /article toc" 1 rtf' />
+ <item label="Convert to R_TF [no TOC]..."
+ command="docb.convertToRTF"
+ parameter='rtf Cp1252 " " 0 rtf' />
+ <separator />
+ <item label="Convert to _WordprocessingML (Word 2003+)..."
+ command="docb.convertToRTF"
+ parameter='wml UTF-8 "/book toc /article toc" 1 wml' />
+ <item label="Convert to Wordprocessing_ML [no TOC]..."
+ command="docb.convertToRTF"
+ parameter='wml UTF-8 " " 0 wml' />
+ <separator />
+ <item label="Convert to Office Open _XML (Word 2007+)..."
+ command="docb.convertToRTF"
+ parameter='docx UTF-8 "/book toc /article toc" 1 docx' />
+ <item label="Con_vert to Office Open XML [no TOC]..."
+ command="docb.convertToRTF"
+ parameter='docx UTF-8 " " 0 docx' />
+ <separator />
+ <item label="Convert to Open_Document (OpenOffice.org 2+)..."
+ command="docb.convertToRTF"
+ parameter='odt UTF-8 "/book toc /article toc" 1 odt' />
+ <item label="Convert to OpenDoc_ument [no TOC]..."
+ command="docb.convertToRTF"
+ parameter='odt UTF-8 " " 0 odt' />
+ <separator />
+ <item label="Print Post_Script..."
+ command="docb.printPS"
+ parameter='ps |eps|ps "/book toc /article toc" 1' />
+ <item label="Print PostScr_ipt [no TOC]..."
+ command="docb.printPS"
+ parameter='ps |eps|ps " " 0' />
+ <separator />
+ <item label="Convert to _PDF..."
+ command="docb.convertToPS"
+ parameter='pdf |pdf "/book toc /article toc" 1' />
+ <item label="Convert to PD_F [no TOC]..."
+ command="docb.convertToPS"
+ parameter='pdf |pdf " " 0' />
+ </menu>
+ </menu>
+
+ <!-- =================================================================== -->
+
+ <command name="docb.conversionPreferences">
+ <class>com.xmlmind.xmleditext.docbook.ConversionPreferences</class>
+ </command>
+
+ <menu name="customizeConfig" label="_Customize Configuration">
+ <item label="Document Conversion _Preferences..."
+ command="docb.conversionPreferences" />
+ </menu>
+
+</configuration>
diff --git a/doc/generated/builders.gen b/doc/generated/builders.gen
index 41239d4..3d534b0 100644
--- a/doc/generated/builders.gen
+++ b/doc/generated/builders.gen
@@ -12,7 +12,7 @@
%variables-mod;
]>
-<variablelist xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<variablelist xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<varlistentry id="b-CFile">
<term>
<function>CFile()</function>
@@ -2137,11 +2137,10 @@ below, for more information.
</term>
<listitem>
<para xmlns="http://www.scons.org/dbxsd/v1.0">
-The <function xmlns="http://www.scons.org/dbxsd/v1.0">Substfile</function> builder generates a single text file
-by concatenating the source files.
-Nested lists of sources are flattened.
-<envar xmlns="http://www.scons.org/dbxsd/v1.0">$LINESEPARATOR</envar> is used to separate the source files;
-see the description of <function xmlns="http://www.scons.org/dbxsd/v1.0">Textfile</function> for details.
+The <function xmlns="http://www.scons.org/dbxsd/v1.0">Substfile</function> builder creates a single text file from another file or set of
+files by concatenating them with <envar xmlns="http://www.scons.org/dbxsd/v1.0">$LINESEPARATOR</envar> and replacing text
+using the <envar xmlns="http://www.scons.org/dbxsd/v1.0">$SUBST_DICT</envar> construction variable. Nested lists of source files
+are flattened. See also <function xmlns="http://www.scons.org/dbxsd/v1.0">Textfile</function>.
</para>
<para xmlns="http://www.scons.org/dbxsd/v1.0">
@@ -2159,20 +2158,18 @@ are automatically added to the target if they are not already present.
<para xmlns="http://www.scons.org/dbxsd/v1.0">
If a construction variable named <envar xmlns="http://www.scons.org/dbxsd/v1.0">$SUBST_DICT</envar> is present,
it may be either a Python dictionary or a sequence of (key,value) tuples.
-If the former,
-the dictionary is converted into a list of tuples in an arbitrary order,
+If it is a dictionary it is converted into a list of tuples in an arbitrary order,
so if one key is a prefix of another key
or if one substitution could be further expanded by another subsitition,
-it is unpredictible whether the expansion will occur.
+it is unpredictable whether the expansion will occur.
</para>
<para xmlns="http://www.scons.org/dbxsd/v1.0">
-Any occurences in the source of a key
+Any occurrences of a key in the source
are replaced by the corresponding value,
which may be a Python callable function or a string.
-If a value is a function,
-it is first called (with no arguments) to produce a string.
-The string is <emphasis>subst</emphasis>-expanded
+If the value is a callable, it is called with no arguments to get a string.
+Strings are <emphasis>subst</emphasis>-expanded
and the result replaces the key.
</para>
@@ -2278,7 +2275,7 @@ env.Tar('foo')
<para xmlns="http://www.scons.org/dbxsd/v1.0">
The <function xmlns="http://www.scons.org/dbxsd/v1.0">Textfile</function> builder generates a single text file.
The source strings constitute the lines;
-nested lists of sources are flattened.
+nested lists of sources are flattened.
<envar xmlns="http://www.scons.org/dbxsd/v1.0">$LINESEPARATOR</envar> is used to separate the strings.
</para>
@@ -2306,7 +2303,7 @@ env.Textfile(target = 'bar',
LINESEPARATOR='|*')
# nested lists are flattened automatically
-env.Textfile(target = 'blob',
+env.Textfile(target = 'blob',
source = ['lalala', ['Goethe', 42 'Schiller'], 'tanteratei'])
# files may be used as input by wraping them in File()
diff --git a/doc/generated/examples/EnumVariable_map_1.xml b/doc/generated/examples/EnumVariable_map_1.xml
index 2b10a0f..4380be0 100644
--- a/doc/generated/examples/EnumVariable_map_1.xml
+++ b/doc/generated/examples/EnumVariable_map_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLOR=navy foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q COLOR=navy foo.o</userinput>
cc -o foo.o -c -DCOLOR="blue" foo.c
</screen>
diff --git a/doc/generated/examples/addmethod_ex1_1.xml b/doc/generated/examples/addmethod_ex1_1.xml
index 8d46cc5..84dfd20 100644
--- a/doc/generated/examples/addmethod_ex1_1.xml
+++ b/doc/generated/examples/addmethod_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q /</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q /</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
Install file: "hello" as "/usr/bin/hello"
diff --git a/doc/generated/examples/addmethod_ex2_1.xml b/doc/generated/examples/addmethod_ex2_1.xml
index 08cf5b4..3930341 100644
--- a/doc/generated/examples/addmethod_ex2_1.xml
+++ b/doc/generated/examples/addmethod_ex2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o test_stuff.o -c test_stuff.c
cc -o tests/test_stuff test_stuff.o
</screen>
diff --git a/doc/generated/examples/addmethod_ex2_2.xml b/doc/generated/examples/addmethod_ex2_2.xml
index f7b2110..15ae6e0 100644
--- a/doc/generated/examples/addmethod_ex2_2.xml
+++ b/doc/generated/examples/addmethod_ex2_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
rc /fores.res res.rc
cl /Fotest_stuff.obj /c test_stuff.c /nologo
link /nologo /OUT:tests\test_stuff.exe test_stuff.obj res.res
diff --git a/doc/generated/examples/alias_ex1_1.xml b/doc/generated/examples/alias_ex1_1.xml
index a250016..3ee3f1b 100644
--- a/doc/generated/examples/alias_ex1_1.xml
+++ b/doc/generated/examples/alias_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q install</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q install</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
Install file: "hello" as "/usr/bin/hello"
diff --git a/doc/generated/examples/alias_ex2_1.xml b/doc/generated/examples/alias_ex2_1.xml
index e49ba93..3fa7dfd 100644
--- a/doc/generated/examples/alias_ex2_1.xml
+++ b/doc/generated/examples/alias_ex2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q install-bin</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q install-bin</userinput>
cc -o foo.o -c foo.c
cc -o foo foo.o
Install file: "foo" as "/usr/bin/foo"
diff --git a/doc/generated/examples/buildersbuiltin_ex1_1.xml b/doc/generated/examples/buildersbuiltin_ex1_1.xml
index d3d4a8f..74cc779 100644
--- a/doc/generated/examples/buildersbuiltin_ex1_1.xml
+++ b/doc/generated/examples/buildersbuiltin_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q .</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q .</userinput>
tar -c -f out1.tar file1 file2
tar -c -f out2.tar directory
</screen>
diff --git a/doc/generated/examples/buildersbuiltin_ex2_1.xml b/doc/generated/examples/buildersbuiltin_ex2_1.xml
index 4afbe11..6c66d7b 100644
--- a/doc/generated/examples/buildersbuiltin_ex2_1.xml
+++ b/doc/generated/examples/buildersbuiltin_ex2_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q .</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q .</userinput>
tar -c -z -f out.tar.gz directory
</screen>
diff --git a/doc/generated/examples/buildersbuiltin_ex3_1.xml b/doc/generated/examples/buildersbuiltin_ex3_1.xml
index 0d2937c..4d281e5 100644
--- a/doc/generated/examples/buildersbuiltin_ex3_1.xml
+++ b/doc/generated/examples/buildersbuiltin_ex3_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q .</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q .</userinput>
tar -c -z -f out.tgz directory
</screen>
diff --git a/doc/generated/examples/buildersbuiltin_ex4_1.xml b/doc/generated/examples/buildersbuiltin_ex4_1.xml
index e9a170d..856f024 100644
--- a/doc/generated/examples/buildersbuiltin_ex4_1.xml
+++ b/doc/generated/examples/buildersbuiltin_ex4_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q .</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q .</userinput>
zip(["out.zip"], ["file1", "file2"])
</screen>
diff --git a/doc/generated/examples/buildersbuiltin_libs_1.xml b/doc/generated/examples/buildersbuiltin_libs_1.xml
index 031e551..8e1ee49 100644
--- a/doc/generated/examples/buildersbuiltin_libs_1.xml
+++ b/doc/generated/examples/buildersbuiltin_libs_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o goodbye.o -c goodbye.c
cc -o hello.o -c hello.c
cc -o hello hello.o goodbye.o -L/usr/dir1 -Ldir2 -lfoo1 -lfoo2
diff --git a/doc/generated/examples/buildersbuiltin_libs_2.xml b/doc/generated/examples/buildersbuiltin_libs_2.xml
index 5c3c1ea..41a9c1e 100644
--- a/doc/generated/examples/buildersbuiltin_libs_2.xml
+++ b/doc/generated/examples/buildersbuiltin_libs_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
cl /Fogoodbye.obj /c goodbye.c /nologo
cl /Fohello.obj /c hello.c /nologo
link /nologo /OUT:hello.exe /LIBPATH:\usr\dir1 /LIBPATH:dir2 foo1.lib foo2.lib hello.obj goodbye.obj
diff --git a/doc/generated/examples/builderscommands_ex1_1.xml b/doc/generated/examples/builderscommands_ex1_1.xml
index 32ab8b8..8782773 100644
--- a/doc/generated/examples/builderscommands_ex1_1.xml
+++ b/doc/generated/examples/builderscommands_ex1_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
sed 's/x/y/' &lt; foo.in &gt; foo.out
</screen>
diff --git a/doc/generated/examples/builderscommands_ex2_1.xml b/doc/generated/examples/builderscommands_ex2_1.xml
index fbacb6c..3fc1dde 100644
--- a/doc/generated/examples/builderscommands_ex2_1.xml
+++ b/doc/generated/examples/builderscommands_ex2_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
build(["foo.out"], ["foo.in"])
</screen>
diff --git a/doc/generated/examples/builderswriting_MY_EMITTER_1.xml b/doc/generated/examples/builderswriting_MY_EMITTER_1.xml
index da454e8..440b105 100644
--- a/doc/generated/examples/builderswriting_MY_EMITTER_1.xml
+++ b/doc/generated/examples/builderswriting_MY_EMITTER_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
my_command file1.input modify1.in &gt; file1.foo
my_command file2.input modify2.in &gt; file2.foo
</screen>
diff --git a/doc/generated/examples/builderswriting_ex1_1.xml b/doc/generated/examples/builderswriting_ex1_1.xml
index 879bb91..cefcfa2 100644
--- a/doc/generated/examples/builderswriting_ex1_1.xml
+++ b/doc/generated/examples/builderswriting_ex1_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
foobuild &lt; file.input &gt; file.foo
</screen>
diff --git a/doc/generated/examples/builderswriting_ex2_1.xml b/doc/generated/examples/builderswriting_ex2_1.xml
index 15f7a79..445dfb0 100644
--- a/doc/generated/examples/builderswriting_ex2_1.xml
+++ b/doc/generated/examples/builderswriting_ex2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
AttributeError: 'SConsEnvironment' object has no attribute 'Program':
File "/home/my/project/SConstruct", line 4:
env.Program('hello.c')
diff --git a/doc/generated/examples/builderswriting_ex3_1.xml b/doc/generated/examples/builderswriting_ex3_1.xml
index b4e2cf7..2d8bcac 100644
--- a/doc/generated/examples/builderswriting_ex3_1.xml
+++ b/doc/generated/examples/builderswriting_ex3_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
foobuild &lt; file.input &gt; file.foo
cc -o hello.o -c hello.c
cc -o hello hello.o
diff --git a/doc/generated/examples/builderswriting_ex4_1.xml b/doc/generated/examples/builderswriting_ex4_1.xml
index 87563c2..cc71b19 100644
--- a/doc/generated/examples/builderswriting_ex4_1.xml
+++ b/doc/generated/examples/builderswriting_ex4_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
foobuild &lt; file1.input &gt; file1.foo
foobuild &lt; file2.input &gt; file2.foo
</screen>
diff --git a/doc/generated/examples/builderswriting_ex5_1.xml b/doc/generated/examples/builderswriting_ex5_1.xml
index 0131734..d0aa83b 100644
--- a/doc/generated/examples/builderswriting_ex5_1.xml
+++ b/doc/generated/examples/builderswriting_ex5_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
build_function(["file.foo"], ["file.input"])
</screen>
diff --git a/doc/generated/examples/builderswriting_ex6_1.xml b/doc/generated/examples/builderswriting_ex6_1.xml
index 879bb91..cefcfa2 100644
--- a/doc/generated/examples/builderswriting_ex6_1.xml
+++ b/doc/generated/examples/builderswriting_ex6_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
foobuild &lt; file.input &gt; file.foo
</screen>
diff --git a/doc/generated/examples/builderswriting_ex7_1.xml b/doc/generated/examples/builderswriting_ex7_1.xml
index 34ef7e1..f14d598 100644
--- a/doc/generated/examples/builderswriting_ex7_1.xml
+++ b/doc/generated/examples/builderswriting_ex7_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
foobuild file.foo new_target - file.input new_source
</screen>
diff --git a/doc/generated/examples/caching_ex-random_1.xml b/doc/generated/examples/caching_ex-random_1.xml
index c70dcb6..2ed1a8f 100644
--- a/doc/generated/examples/caching_ex-random_1.xml
+++ b/doc/generated/examples/caching_ex-random_1.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
+cc -o f1.o -c f1.c
cc -o f2.o -c f2.c
+cc -o f3.o -c f3.c
cc -o f5.o -c f5.c
cc -o f4.o -c f4.c
-cc -o f3.o -c f3.c
-cc -o f1.o -c f1.c
cc -o prog f1.o f2.o f3.o f4.o f5.o
</screen>
diff --git a/doc/generated/examples/caching_ex1_1.xml b/doc/generated/examples/caching_ex1_1.xml
index 93ce35d..38eaf82 100644
--- a/doc/generated/examples/caching_ex1_1.xml
+++ b/doc/generated/examples/caching_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% <userinput>scons -Q -c</userinput>
diff --git a/doc/generated/examples/caching_ex1_2.xml b/doc/generated/examples/caching_ex1_2.xml
index e975cf5..2f0bcde 100644
--- a/doc/generated/examples/caching_ex1_2.xml
+++ b/doc/generated/examples/caching_ex1_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% <userinput>scons -Q -c</userinput>
diff --git a/doc/generated/examples/caching_ex1_4.xml b/doc/generated/examples/caching_ex1_4.xml
index bca1d53..922f1b6 100644
--- a/doc/generated/examples/caching_ex1_4.xml
+++ b/doc/generated/examples/caching_ex1_4.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% <userinput>scons -Q -c</userinput>
diff --git a/doc/generated/examples/caching_ex1_5.xml b/doc/generated/examples/caching_ex1_5.xml
index 0d7d00c..968727f 100644
--- a/doc/generated/examples/caching_ex1_5.xml
+++ b/doc/generated/examples/caching_ex1_5.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --cache-disable</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --cache-disable</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% <userinput>scons -Q -c</userinput>
diff --git a/doc/generated/examples/commandline_ARGLIST_1.xml b/doc/generated/examples/commandline_ARGLIST_1.xml
index 071b8a1..e094bc0 100644
--- a/doc/generated/examples/commandline_ARGLIST_1.xml
+++ b/doc/generated/examples/commandline_ARGLIST_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q define=FOO</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q define=FOO</userinput>
cc -o prog.o -c -DFOO prog.c
% <userinput>scons -Q define=FOO define=BAR</userinput>
cc -o prog.o -c -DFOO -DBAR prog.c
diff --git a/doc/generated/examples/commandline_ARGUMENTS_1.xml b/doc/generated/examples/commandline_ARGUMENTS_1.xml
index 710fa57..6aa4ed2 100644
--- a/doc/generated/examples/commandline_ARGUMENTS_1.xml
+++ b/doc/generated/examples/commandline_ARGUMENTS_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q debug=0</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q debug=0</userinput>
cc -o prog.o -c prog.c
cc -o prog prog.o
% <userinput>scons -Q debug=0</userinput>
diff --git a/doc/generated/examples/commandline_AddOption_1.xml b/doc/generated/examples/commandline_AddOption_1.xml
index 302f247..55df25a 100644
--- a/doc/generated/examples/commandline_AddOption_1.xml
+++ b/doc/generated/examples/commandline_AddOption_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q -n</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q -n</userinput>
Install file: "foo.in" as "/usr/bin/foo.in"
</screen>
diff --git a/doc/generated/examples/commandline_AddOption_2.xml b/doc/generated/examples/commandline_AddOption_2.xml
index 640fb4e..7d0b978 100644
--- a/doc/generated/examples/commandline_AddOption_2.xml
+++ b/doc/generated/examples/commandline_AddOption_2.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q -n --prefix=/tmp/install</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q -n --prefix=/tmp/install</userinput>
Install file: "foo.in" as "/tmp/install/usr/bin/foo.in"
</screen>
diff --git a/doc/generated/examples/commandline_BUILD_TARGETS_1_1.xml b/doc/generated/examples/commandline_BUILD_TARGETS_1_1.xml
index ac2674f..bd51961 100644
--- a/doc/generated/examples/commandline_BUILD_TARGETS_1_1.xml
+++ b/doc/generated/examples/commandline_BUILD_TARGETS_1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
BUILD_TARGETS is ['prog1']
cc -o prog1.o -c prog1.c
cc -o prog1 prog1.o
diff --git a/doc/generated/examples/commandline_BoolVariable_1.xml b/doc/generated/examples/commandline_BoolVariable_1.xml
index 2c17325..e4c1792 100644
--- a/doc/generated/examples/commandline_BoolVariable_1.xml
+++ b/doc/generated/examples/commandline_BoolVariable_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q RELEASE=yes foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q RELEASE=yes foo.o</userinput>
cc -o foo.o -c -DRELEASE_BUILD=True foo.c
</screen>
diff --git a/doc/generated/examples/commandline_BoolVariable_2.xml b/doc/generated/examples/commandline_BoolVariable_2.xml
index 86bb6d9..dc1e068 100644
--- a/doc/generated/examples/commandline_BoolVariable_2.xml
+++ b/doc/generated/examples/commandline_BoolVariable_2.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q RELEASE=t foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q RELEASE=t foo.o</userinput>
cc -o foo.o -c -DRELEASE_BUILD=True foo.c
</screen>
diff --git a/doc/generated/examples/commandline_BoolVariable_3.xml b/doc/generated/examples/commandline_BoolVariable_3.xml
index f85dd56..0750fb5 100644
--- a/doc/generated/examples/commandline_BoolVariable_3.xml
+++ b/doc/generated/examples/commandline_BoolVariable_3.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q RELEASE=no foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q RELEASE=no foo.o</userinput>
cc -o foo.o -c -DRELEASE_BUILD=False foo.c
</screen>
diff --git a/doc/generated/examples/commandline_BoolVariable_4.xml b/doc/generated/examples/commandline_BoolVariable_4.xml
index 2a7cb5f..84e4639 100644
--- a/doc/generated/examples/commandline_BoolVariable_4.xml
+++ b/doc/generated/examples/commandline_BoolVariable_4.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q RELEASE=f foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q RELEASE=f foo.o</userinput>
cc -o foo.o -c -DRELEASE_BUILD=False foo.c
</screen>
diff --git a/doc/generated/examples/commandline_BoolVariable_5.xml b/doc/generated/examples/commandline_BoolVariable_5.xml
index 387f5ca..81f1d4e 100644
--- a/doc/generated/examples/commandline_BoolVariable_5.xml
+++ b/doc/generated/examples/commandline_BoolVariable_5.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q RELEASE=bad_value foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q RELEASE=bad_value foo.o</userinput>
scons: *** Error converting option: RELEASE
Invalid value for boolean option: bad_value
diff --git a/doc/generated/examples/commandline_COMMAND_LINE_TARGETS_1.xml b/doc/generated/examples/commandline_COMMAND_LINE_TARGETS_1.xml
index 646635e..1812f74 100644
--- a/doc/generated/examples/commandline_COMMAND_LINE_TARGETS_1.xml
+++ b/doc/generated/examples/commandline_COMMAND_LINE_TARGETS_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o foo.o -c foo.c
cc -o foo foo.o
% <userinput>scons -Q bar</userinput>
diff --git a/doc/generated/examples/commandline_DEFAULT_TARGETS_1_1.xml b/doc/generated/examples/commandline_DEFAULT_TARGETS_1_1.xml
index 69a30cb..f92f160 100644
--- a/doc/generated/examples/commandline_DEFAULT_TARGETS_1_1.xml
+++ b/doc/generated/examples/commandline_DEFAULT_TARGETS_1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons</userinput>
scons: Reading SConscript files ...
DEFAULT_TARGETS is ['prog1']
scons: done reading SConscript files.
diff --git a/doc/generated/examples/commandline_DEFAULT_TARGETS_2_1.xml b/doc/generated/examples/commandline_DEFAULT_TARGETS_2_1.xml
index 1fd1bc7..01e953b 100644
--- a/doc/generated/examples/commandline_DEFAULT_TARGETS_2_1.xml
+++ b/doc/generated/examples/commandline_DEFAULT_TARGETS_2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons</userinput>
scons: Reading SConscript files ...
DEFAULT_TARGETS is now ['prog1']
DEFAULT_TARGETS is now ['prog1', 'prog2']
diff --git a/doc/generated/examples/commandline_Default1_1.xml b/doc/generated/examples/commandline_Default1_1.xml
index edc1812..18008d8 100644
--- a/doc/generated/examples/commandline_Default1_1.xml
+++ b/doc/generated/examples/commandline_Default1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% <userinput>scons -Q</userinput>
diff --git a/doc/generated/examples/commandline_Default1_2.xml b/doc/generated/examples/commandline_Default1_2.xml
index cb5907d..0f1a93e 100644
--- a/doc/generated/examples/commandline_Default1_2.xml
+++ b/doc/generated/examples/commandline_Default1_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q .</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q .</userinput>
cc -o goodbye.o -c goodbye.c
cc -o goodbye goodbye.o
cc -o hello.o -c hello.c
diff --git a/doc/generated/examples/commandline_Default2_1.xml b/doc/generated/examples/commandline_Default2_1.xml
index 1cf267a..606ed67 100644
--- a/doc/generated/examples/commandline_Default2_1.xml
+++ b/doc/generated/examples/commandline_Default2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o prog1.o -c prog1.c
cc -o prog1 prog1.o
cc -o prog3.o -c prog3.c
diff --git a/doc/generated/examples/commandline_Default3_1.xml b/doc/generated/examples/commandline_Default3_1.xml
index 5409437..d18575c 100644
--- a/doc/generated/examples/commandline_Default3_1.xml
+++ b/doc/generated/examples/commandline_Default3_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o prog1/foo.o -c prog1/foo.c
cc -o prog1/main.o -c prog1/main.c
cc -o prog1/main prog1/main.o prog1/foo.o
diff --git a/doc/generated/examples/commandline_Default4_1.xml b/doc/generated/examples/commandline_Default4_1.xml
index 81acde4..35e0b10 100644
--- a/doc/generated/examples/commandline_Default4_1.xml
+++ b/doc/generated/examples/commandline_Default4_1.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
scons: *** No targets specified and no Default() targets found. Stop.
+Found nothing to build
% <userinput>scons -Q .</userinput>
cc -o prog1.o -c prog1.c
cc -o prog1 prog1.o
diff --git a/doc/generated/examples/commandline_EnumVariable_1.xml b/doc/generated/examples/commandline_EnumVariable_1.xml
index d1d4bed..d658f69 100644
--- a/doc/generated/examples/commandline_EnumVariable_1.xml
+++ b/doc/generated/examples/commandline_EnumVariable_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLOR=red foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q COLOR=red foo.o</userinput>
cc -o foo.o -c -DCOLOR="red" foo.c
% <userinput>scons -Q COLOR=blue foo.o</userinput>
cc -o foo.o -c -DCOLOR="blue" foo.c
diff --git a/doc/generated/examples/commandline_EnumVariable_2.xml b/doc/generated/examples/commandline_EnumVariable_2.xml
index e3310ae..a8a18df 100644
--- a/doc/generated/examples/commandline_EnumVariable_2.xml
+++ b/doc/generated/examples/commandline_EnumVariable_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLOR=magenta foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q COLOR=magenta foo.o</userinput>
scons: *** Invalid value for option COLOR: magenta. Valid values are: ('red', 'green', 'blue')
File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
diff --git a/doc/generated/examples/commandline_EnumVariable_3.xml b/doc/generated/examples/commandline_EnumVariable_3.xml
index a3928dc..bb9a6d5 100644
--- a/doc/generated/examples/commandline_EnumVariable_3.xml
+++ b/doc/generated/examples/commandline_EnumVariable_3.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLOR=Red foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q COLOR=Red foo.o</userinput>
scons: *** Invalid value for option COLOR: Red. Valid values are: ('red', 'green', 'blue')
File "/home/my/project/SConstruct", line 5, in &lt;module&gt;
diff --git a/doc/generated/examples/commandline_EnumVariable_ic1_1.xml b/doc/generated/examples/commandline_EnumVariable_ic1_1.xml
index 4e2a45a..db786e5 100644
--- a/doc/generated/examples/commandline_EnumVariable_ic1_1.xml
+++ b/doc/generated/examples/commandline_EnumVariable_ic1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLOR=Red foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q COLOR=Red foo.o</userinput>
cc -o foo.o -c -DCOLOR="Red" foo.c
% <userinput>scons -Q COLOR=BLUE foo.o</userinput>
cc -o foo.o -c -DCOLOR="BLUE" foo.c
diff --git a/doc/generated/examples/commandline_EnumVariable_ic2_1.xml b/doc/generated/examples/commandline_EnumVariable_ic2_1.xml
index 407419a..5596608 100644
--- a/doc/generated/examples/commandline_EnumVariable_ic2_1.xml
+++ b/doc/generated/examples/commandline_EnumVariable_ic2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLOR=Red foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q COLOR=Red foo.o</userinput>
cc -o foo.o -c -DCOLOR="red" foo.c
% <userinput>scons -Q COLOR=nAvY foo.o</userinput>
cc -o foo.o -c -DCOLOR="blue" foo.c
diff --git a/doc/generated/examples/commandline_ListVariable_1.xml b/doc/generated/examples/commandline_ListVariable_1.xml
index 48adb7d..6e245a3 100644
--- a/doc/generated/examples/commandline_ListVariable_1.xml
+++ b/doc/generated/examples/commandline_ListVariable_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLORS=red,blue foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q COLORS=red,blue foo.o</userinput>
cc -o foo.o -c -DCOLORS="red blue" foo.c
% <userinput>scons -Q COLORS=blue,green,red foo.o</userinput>
cc -o foo.o -c -DCOLORS="blue green red" foo.c
diff --git a/doc/generated/examples/commandline_ListVariable_2.xml b/doc/generated/examples/commandline_ListVariable_2.xml
index 67f3361..b964669 100644
--- a/doc/generated/examples/commandline_ListVariable_2.xml
+++ b/doc/generated/examples/commandline_ListVariable_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLORS=all foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q COLORS=all foo.o</userinput>
cc -o foo.o -c -DCOLORS="red green blue" foo.c
% <userinput>scons -Q COLORS=none foo.o</userinput>
cc -o foo.o -c -DCOLORS="" foo.c
diff --git a/doc/generated/examples/commandline_ListVariable_3.xml b/doc/generated/examples/commandline_ListVariable_3.xml
index f03f4fe..ae13d8b 100644
--- a/doc/generated/examples/commandline_ListVariable_3.xml
+++ b/doc/generated/examples/commandline_ListVariable_3.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q COLORS=magenta foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q COLORS=magenta foo.o</userinput>
scons: *** Error converting option: COLORS
Invalid value(s) for option: magenta
diff --git a/doc/generated/examples/commandline_PackageVariable_1.xml b/doc/generated/examples/commandline_PackageVariable_1.xml
index 03de914..b83fd80 100644
--- a/doc/generated/examples/commandline_PackageVariable_1.xml
+++ b/doc/generated/examples/commandline_PackageVariable_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q foo.o</userinput>
cc -o foo.o -c -DPACKAGE="/opt/location" foo.c
% <userinput>scons -Q PACKAGE=/usr/local/location foo.o</userinput>
cc -o foo.o -c -DPACKAGE="/usr/local/location" foo.c
diff --git a/doc/generated/examples/commandline_PathVariable_1.xml b/doc/generated/examples/commandline_PathVariable_1.xml
index f80a299..81693b9 100644
--- a/doc/generated/examples/commandline_PathVariable_1.xml
+++ b/doc/generated/examples/commandline_PathVariable_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q foo.o</userinput>
cc -o foo.o -c -DCONFIG_FILE="/etc/my_config" foo.c
% <userinput>scons -Q CONFIG=/usr/local/etc/other_config foo.o</userinput>
scons: `foo.o' is up to date.
diff --git a/doc/generated/examples/commandline_PathVariable_2.xml b/doc/generated/examples/commandline_PathVariable_2.xml
index e24f8f2..7dde5b1 100644
--- a/doc/generated/examples/commandline_PathVariable_2.xml
+++ b/doc/generated/examples/commandline_PathVariable_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q CONFIG=/does/not/exist foo.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q CONFIG=/does/not/exist foo.o</userinput>
scons: *** Path for option CONFIG does not exist: /does/not/exist
File "/home/my/project/SConstruct", line 6, in &lt;module&gt;
diff --git a/doc/generated/examples/commandline_SCONSFLAGS_1.xml b/doc/generated/examples/commandline_SCONSFLAGS_1.xml
index 4261677..35e366c 100644
--- a/doc/generated/examples/commandline_SCONSFLAGS_1.xml
+++ b/doc/generated/examples/commandline_SCONSFLAGS_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons</userinput>
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
diff --git a/doc/generated/examples/commandline_SetOption_1.xml b/doc/generated/examples/commandline_SetOption_1.xml
index c3b878e..bac0cf4 100644
--- a/doc/generated/examples/commandline_SetOption_1.xml
+++ b/doc/generated/examples/commandline_SetOption_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
running with -j 2
scons: `.' is up to date.
</screen>
diff --git a/doc/generated/examples/commandline_SetOption_2.xml b/doc/generated/examples/commandline_SetOption_2.xml
index d7bbf30..b00e073 100644
--- a/doc/generated/examples/commandline_SetOption_2.xml
+++ b/doc/generated/examples/commandline_SetOption_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>export NUM_CPU="4"</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>export NUM_CPU="4"</userinput>
% <userinput>scons -Q</userinput>
running with -j 4
scons: `.' is up to date.
diff --git a/doc/generated/examples/commandline_SetOption_3.xml b/doc/generated/examples/commandline_SetOption_3.xml
index f4ca2f1..df42ff0 100644
--- a/doc/generated/examples/commandline_SetOption_3.xml
+++ b/doc/generated/examples/commandline_SetOption_3.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q -j 7</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q -j 7</userinput>
running with -j 7
scons: `.' is up to date.
% <userinput>export NUM_CPU="4"</userinput>
diff --git a/doc/generated/examples/commandline_UnknownVariables_1.xml b/doc/generated/examples/commandline_UnknownVariables_1.xml
index c6880d6..272a954 100644
--- a/doc/generated/examples/commandline_UnknownVariables_1.xml
+++ b/doc/generated/examples/commandline_UnknownVariables_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q NOT_KNOWN=foo</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q NOT_KNOWN=foo</userinput>
Unknown variables: ['NOT_KNOWN']
</screen>
diff --git a/doc/generated/examples/commandline_Variables1_1.xml b/doc/generated/examples/commandline_Variables1_1.xml
index 22754a3..512ae65 100644
--- a/doc/generated/examples/commandline_Variables1_1.xml
+++ b/doc/generated/examples/commandline_Variables1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q RELEASE=1</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q RELEASE=1</userinput>
cc -o bar.o -c -DRELEASE_BUILD=1 bar.c
cc -o foo.o -c -DRELEASE_BUILD=1 foo.c
cc -o foo foo.o bar.o
diff --git a/doc/generated/examples/commandline_Variables_Help_1.xml b/doc/generated/examples/commandline_Variables_Help_1.xml
index 0134479..db171eb 100644
--- a/doc/generated/examples/commandline_Variables_Help_1.xml
+++ b/doc/generated/examples/commandline_Variables_Help_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q -h</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q -h</userinput>
RELEASE: Set to 1 to build for release
default: 0
diff --git a/doc/generated/examples/commandline_Variables_custom_py_1_1.xml b/doc/generated/examples/commandline_Variables_custom_py_1_1.xml
index 77d3564..4ef4d48 100644
--- a/doc/generated/examples/commandline_Variables_custom_py_1_1.xml
+++ b/doc/generated/examples/commandline_Variables_custom_py_1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o bar.o -c -DRELEASE_BUILD=1 bar.c
cc -o foo.o -c -DRELEASE_BUILD=1 foo.c
cc -o foo foo.o bar.o
diff --git a/doc/generated/examples/commandline_Variables_custom_py_2_1.xml b/doc/generated/examples/commandline_Variables_custom_py_2_1.xml
index 7ab5d74..5961d0a 100644
--- a/doc/generated/examples/commandline_Variables_custom_py_2_1.xml
+++ b/doc/generated/examples/commandline_Variables_custom_py_2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o bar.o -c -DRELEASE_BUILD=0 bar.c
cc -o foo.o -c -DRELEASE_BUILD=0 foo.c
cc -o foo foo.o bar.o
diff --git a/doc/generated/examples/depends_AlwaysBuild_1.xml b/doc/generated/examples/depends_AlwaysBuild_1.xml
index 534c297..86700fe 100644
--- a/doc/generated/examples/depends_AlwaysBuild_1.xml
+++ b/doc/generated/examples/depends_AlwaysBuild_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% <userinput>scons -Q</userinput>
diff --git a/doc/generated/examples/depends_AlwaysBuild_2.xml b/doc/generated/examples/depends_AlwaysBuild_2.xml
index 9a7325f..d1bdd6d 100644
--- a/doc/generated/examples/depends_AlwaysBuild_2.xml
+++ b/doc/generated/examples/depends_AlwaysBuild_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% <userinput>scons -Q hello.o</userinput>
diff --git a/doc/generated/examples/depends_Requires_1.xml b/doc/generated/examples/depends_Requires_1.xml
index 50b2f56..04bfc35 100644
--- a/doc/generated/examples/depends_Requires_1.xml
+++ b/doc/generated/examples/depends_Requires_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q hello</userinput>
cc -o version.o -c version.c
cc -o hello.o -c hello.c
cc -o hello version.o hello.o
diff --git a/doc/generated/examples/depends_ex1_1.xml b/doc/generated/examples/depends_ex1_1.xml
index f9b35dd..25355c9 100644
--- a/doc/generated/examples/depends_ex1_1.xml
+++ b/doc/generated/examples/depends_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% <userinput>scons -Q</userinput>
diff --git a/doc/generated/examples/depends_ex1_2.xml b/doc/generated/examples/depends_ex1_2.xml
index 254f641..09ecc73 100644
--- a/doc/generated/examples/depends_ex1_2.xml
+++ b/doc/generated/examples/depends_ex1_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q hello</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% <userinput>scons -Q hello</userinput>
diff --git a/doc/generated/examples/depends_ex1_3.xml b/doc/generated/examples/depends_ex1_3.xml
index a4cf4e3..20062df 100644
--- a/doc/generated/examples/depends_ex1_3.xml
+++ b/doc/generated/examples/depends_ex1_3.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q hello</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% <userinput>touch hello.c</userinput>
diff --git a/doc/generated/examples/depends_ex1_4.xml b/doc/generated/examples/depends_ex1_4.xml
index 7e1f860..31aa5bd 100644
--- a/doc/generated/examples/depends_ex1_4.xml
+++ b/doc/generated/examples/depends_ex1_4.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q hello</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% [CHANGE THE CONTENTS OF hello.c]
diff --git a/doc/generated/examples/depends_ex1_5.xml b/doc/generated/examples/depends_ex1_5.xml
index abbe64e..776bda2 100644
--- a/doc/generated/examples/depends_ex1_5.xml
+++ b/doc/generated/examples/depends_ex1_5.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q hello</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% [CHANGE A COMMENT IN hello.c]
diff --git a/doc/generated/examples/depends_ex1_6.xml b/doc/generated/examples/depends_ex1_6.xml
index 75e1f80..7493627 100644
--- a/doc/generated/examples/depends_ex1_6.xml
+++ b/doc/generated/examples/depends_ex1_6.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --implicit-cache hello</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --implicit-cache hello</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% <userinput>scons -Q hello</userinput>
diff --git a/doc/generated/examples/depends_ex1_7.xml b/doc/generated/examples/depends_ex1_7.xml
index 2b7e30a..22b56d3 100644
--- a/doc/generated/examples/depends_ex1_7.xml
+++ b/doc/generated/examples/depends_ex1_7.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --implicit-deps-changed hello</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --implicit-deps-changed hello</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% <userinput>scons -Q hello</userinput>
diff --git a/doc/generated/examples/depends_ex1_8.xml b/doc/generated/examples/depends_ex1_8.xml
index 957707d..d60db97 100644
--- a/doc/generated/examples/depends_ex1_8.xml
+++ b/doc/generated/examples/depends_ex1_8.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --implicit-deps-unchanged hello</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --implicit-deps-unchanged hello</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% <userinput>scons -Q hello</userinput>
diff --git a/doc/generated/examples/depends_ex5_1.xml b/doc/generated/examples/depends_ex5_1.xml
index 2d1f868..e81cb0c 100644
--- a/doc/generated/examples/depends_ex5_1.xml
+++ b/doc/generated/examples/depends_ex5_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q hello</userinput>
cc -o hello.o -c -Iinclude -I/home/project/inc hello.c
cc -o hello hello.o
</screen>
diff --git a/doc/generated/examples/depends_ex5_2.xml b/doc/generated/examples/depends_ex5_2.xml
index 57da64f..ea78590 100644
--- a/doc/generated/examples/depends_ex5_2.xml
+++ b/doc/generated/examples/depends_ex5_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q hello.exe</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -Q hello.exe</userinput>
cl /Fohello.obj /c hello.c /nologo /Iinclude /I\home\project\inc
link /nologo /OUT:hello.exe hello.obj
embedManifestExeCheck(target, source, env)
diff --git a/doc/generated/examples/depends_ignore_explicit_1.xml b/doc/generated/examples/depends_ignore_explicit_1.xml
index 2607131..a45a852 100644
--- a/doc/generated/examples/depends_ignore_explicit_1.xml
+++ b/doc/generated/examples/depends_ignore_explicit_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
scons: `.' is up to date.
% <userinput>scons -Q hello</userinput>
cc -o hello.o -c hello.c
diff --git a/doc/generated/examples/depends_include_1.xml b/doc/generated/examples/depends_include_1.xml
index 6f63e9a..e22bd03 100644
--- a/doc/generated/examples/depends_include_1.xml
+++ b/doc/generated/examples/depends_include_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q hello</userinput>
cc -o hello.o -c -I. hello.c
cc -o hello hello.o
% <userinput>scons -Q hello</userinput>
diff --git a/doc/generated/examples/depends_macroinc_1.xml b/doc/generated/examples/depends_macroinc_1.xml
index 8f211cc..95d4e0b 100644
--- a/doc/generated/examples/depends_macroinc_1.xml
+++ b/doc/generated/examples/depends_macroinc_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c -I. hello.c
cc -o hello hello.o
% [CHANGE CONTENTS OF foo.h]
diff --git a/doc/generated/examples/depends_match_1.xml b/doc/generated/examples/depends_match_1.xml
index c024b2a..7dc3831 100644
--- a/doc/generated/examples/depends_match_1.xml
+++ b/doc/generated/examples/depends_match_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q hello.o</userinput>
cc -o hello.o -c hello.c
% <userinput>touch -t 198901010000 hello.c</userinput>
% <userinput>scons -Q hello.o</userinput>
diff --git a/doc/generated/examples/depends_mixing_1.xml b/doc/generated/examples/depends_mixing_1.xml
index 10152b2..258dc90 100644
--- a/doc/generated/examples/depends_mixing_1.xml
+++ b/doc/generated/examples/depends_mixing_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o program1.o -c -I. program1.c
cc -o prog-MD5 program1.o
cc -o program2.o -c -I. program2.c
diff --git a/doc/generated/examples/depends_newer_1.xml b/doc/generated/examples/depends_newer_1.xml
index 9f13c31..28cb427 100644
--- a/doc/generated/examples/depends_newer_1.xml
+++ b/doc/generated/examples/depends_newer_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q hello.o</userinput>
cc -o hello.o -c hello.c
% <userinput>touch hello.c</userinput>
% <userinput>scons -Q hello.o</userinput>
diff --git a/doc/generated/examples/depends_no-Requires_1.xml b/doc/generated/examples/depends_no-Requires_1.xml
index 5e9bb00..8e2729f 100644
--- a/doc/generated/examples/depends_no-Requires_1.xml
+++ b/doc/generated/examples/depends_no-Requires_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q hello</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q hello</userinput>
cc -o hello.o -c hello.c
cc -o version.o -c version.c
cc -o hello hello.o version.o
diff --git a/doc/generated/examples/depends_parsedep_1.xml b/doc/generated/examples/depends_parsedep_1.xml
index 585e89c..910930b 100644
--- a/doc/generated/examples/depends_parsedep_1.xml
+++ b/doc/generated/examples/depends_parsedep_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c -MD -MF hello.d -I. hello.c
cc -o hello hello.o
% [CHANGE CONTENTS OF foo.h]
diff --git a/doc/generated/examples/environments_Append-nonexistent_1.xml b/doc/generated/examples/environments_Append-nonexistent_1.xml
index 6597dd4..bb15965 100644
--- a/doc/generated/examples/environments_Append-nonexistent_1.xml
+++ b/doc/generated/examples/environments_Append-nonexistent_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
NEW_VARIABLE = added
scons: `.' is up to date.
</screen>
diff --git a/doc/generated/examples/environments_Prepend-nonexistent_1.xml b/doc/generated/examples/environments_Prepend-nonexistent_1.xml
index 6597dd4..bb15965 100644
--- a/doc/generated/examples/environments_Prepend-nonexistent_1.xml
+++ b/doc/generated/examples/environments_Prepend-nonexistent_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
NEW_VARIABLE = added
scons: `.' is up to date.
</screen>
diff --git a/doc/generated/examples/environments_Replace-nonexistent_1.xml b/doc/generated/examples/environments_Replace-nonexistent_1.xml
index eb8b95c..c4480b5 100644
--- a/doc/generated/examples/environments_Replace-nonexistent_1.xml
+++ b/doc/generated/examples/environments_Replace-nonexistent_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
NEW_VARIABLE = xyzzy
scons: `.' is up to date.
</screen>
diff --git a/doc/generated/examples/environments_Replace1_1.xml b/doc/generated/examples/environments_Replace1_1.xml
index 372d6ae..54f4976 100644
--- a/doc/generated/examples/environments_Replace1_1.xml
+++ b/doc/generated/examples/environments_Replace1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o foo.o -c -DDEFINE2 foo.c
cc -o foo foo.o
</screen>
diff --git a/doc/generated/examples/environments_Replace2_1.xml b/doc/generated/examples/environments_Replace2_1.xml
index fe949ef..9ad257b 100644
--- a/doc/generated/examples/environments_Replace2_1.xml
+++ b/doc/generated/examples/environments_Replace2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons</userinput>
scons: Reading SConscript files ...
CCFLAGS = -DDEFINE1
CCFLAGS = -DDEFINE2
diff --git a/doc/generated/examples/environments_ex1_1.xml b/doc/generated/examples/environments_ex1_1.xml
index 28bc8ca..84d22b8 100644
--- a/doc/generated/examples/environments_ex1_1.xml
+++ b/doc/generated/examples/environments_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
gcc -o foo.o -c -O2 foo.c
gcc -o foo foo.o
</screen>
diff --git a/doc/generated/examples/environments_ex2_1.xml b/doc/generated/examples/environments_ex2_1.xml
index 248cd28..eb86c9e 100644
--- a/doc/generated/examples/environments_ex2_1.xml
+++ b/doc/generated/examples/environments_ex2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o bar.o -c -g bar.c
cc -o bar bar.o
cc -o foo.o -c -O2 foo.c
diff --git a/doc/generated/examples/environments_ex3_1.xml b/doc/generated/examples/environments_ex3_1.xml
index 1c2d620..3262302 100644
--- a/doc/generated/examples/environments_ex3_1.xml
+++ b/doc/generated/examples/environments_ex3_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
scons: *** Two environments with different actions were specified for the same target: foo.o
File "/home/my/project/SConstruct", line 6, in &lt;module&gt;
diff --git a/doc/generated/examples/environments_ex4_1.xml b/doc/generated/examples/environments_ex4_1.xml
index 69ac649..286f46f 100644
--- a/doc/generated/examples/environments_ex4_1.xml
+++ b/doc/generated/examples/environments_ex4_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o foo-dbg.o -c -g foo.c
cc -o foo-dbg foo-dbg.o
cc -o foo-opt.o -c -O2 foo.c
diff --git a/doc/generated/examples/environments_ex5_1.xml b/doc/generated/examples/environments_ex5_1.xml
index d50f349..d6f0094 100644
--- a/doc/generated/examples/environments_ex5_1.xml
+++ b/doc/generated/examples/environments_ex5_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
gcc -o foo.o -c foo.c
gcc -o foo foo.o
gcc -o foo-dbg.o -c -g foo.c
diff --git a/doc/generated/examples/environments_ex6_1.xml b/doc/generated/examples/environments_ex6_1.xml
index bef56a3..af8667f 100644
--- a/doc/generated/examples/environments_ex6_1.xml
+++ b/doc/generated/examples/environments_ex6_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
CC is: cc
scons: `.' is up to date.
</screen>
diff --git a/doc/generated/examples/environments_ex6b_1.xml b/doc/generated/examples/environments_ex6b_1.xml
index dbcc502..47a499a 100644
--- a/doc/generated/examples/environments_ex6b_1.xml
+++ b/doc/generated/examples/environments_ex6b_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
key = OBJSUFFIX, value = .o
key = LIBSUFFIX, value = .a
key = PROGSUFFIX, value =
diff --git a/doc/generated/examples/environments_ex6b_2.xml b/doc/generated/examples/environments_ex6b_2.xml
index f6fb554..73a6d19 100644
--- a/doc/generated/examples/environments_ex6b_2.xml
+++ b/doc/generated/examples/environments_ex6b_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
key = OBJSUFFIX, value = .obj
key = LIBSUFFIX, value = .lib
key = PROGSUFFIX, value = .exe
diff --git a/doc/generated/examples/environments_ex8_1.xml b/doc/generated/examples/environments_ex8_1.xml
index 1749195..68ebac4 100644
--- a/doc/generated/examples/environments_ex8_1.xml
+++ b/doc/generated/examples/environments_ex8_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o foo.o -c -DMY_VALUE -DLAST foo.c
cc -o foo foo.o
</screen>
diff --git a/doc/generated/examples/environments_ex9_1.xml b/doc/generated/examples/environments_ex9_1.xml
index aebefcc..3e31c3f 100644
--- a/doc/generated/examples/environments_ex9_1.xml
+++ b/doc/generated/examples/environments_ex9_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o foo.o -c -DFIRST -DMY_VALUE foo.c
cc -o foo foo.o
</screen>
diff --git a/doc/generated/examples/environments_missing1_1.xml b/doc/generated/examples/environments_missing1_1.xml
index d58b27b..edf136f 100644
--- a/doc/generated/examples/environments_missing1_1.xml
+++ b/doc/generated/examples/environments_missing1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
value is: -&gt;&lt;-
scons: `.' is up to date.
</screen>
diff --git a/doc/generated/examples/environments_missing2_1.xml b/doc/generated/examples/environments_missing2_1.xml
index 911ecd2..019099f 100644
--- a/doc/generated/examples/environments_missing2_1.xml
+++ b/doc/generated/examples/environments_missing2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
value is:
scons: *** NameError `MISSING' trying to evaluate `$MISSING'
File "/home/my/project/SConstruct", line 3, in &lt;module&gt;
diff --git a/doc/generated/examples/environments_missing3_1.xml b/doc/generated/examples/environments_missing3_1.xml
index d58b27b..edf136f 100644
--- a/doc/generated/examples/environments_missing3_1.xml
+++ b/doc/generated/examples/environments_missing3_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
value is: -&gt;&lt;-
scons: `.' is up to date.
</screen>
diff --git a/doc/generated/examples/factories_Chmod_1.xml b/doc/generated/examples/factories_Chmod_1.xml
index 59bccf5..a324ed4 100644
--- a/doc/generated/examples/factories_Chmod_1.xml
+++ b/doc/generated/examples/factories_Chmod_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
Copy("file.out", "file.in")
Chmod("file.out", 0755)
</screen>
diff --git a/doc/generated/examples/factories_Copy1_1.xml b/doc/generated/examples/factories_Copy1_1.xml
index c0be7f8..852412f 100644
--- a/doc/generated/examples/factories_Copy1_1.xml
+++ b/doc/generated/examples/factories_Copy1_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
Copy("file.out", "file.in")
</screen>
diff --git a/doc/generated/examples/factories_Copy2_1.xml b/doc/generated/examples/factories_Copy2_1.xml
index c0be7f8..852412f 100644
--- a/doc/generated/examples/factories_Copy2_1.xml
+++ b/doc/generated/examples/factories_Copy2_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
Copy("file.out", "file.in")
</screen>
diff --git a/doc/generated/examples/factories_Copy3_1.xml b/doc/generated/examples/factories_Copy3_1.xml
index 20702c8..bcb41ff 100644
--- a/doc/generated/examples/factories_Copy3_1.xml
+++ b/doc/generated/examples/factories_Copy3_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
Copy("tempfile", "file.in")
modify tempfile
Copy("file.out", "tempfile")
diff --git a/doc/generated/examples/factories_Delete1_1.xml b/doc/generated/examples/factories_Delete1_1.xml
index 5cfde55..e9a287e 100644
--- a/doc/generated/examples/factories_Delete1_1.xml
+++ b/doc/generated/examples/factories_Delete1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
Delete("tempfile")
Copy("tempfile", "file.in")
modify tempfile
diff --git a/doc/generated/examples/factories_Delete2_1.xml b/doc/generated/examples/factories_Delete2_1.xml
index 3bdb3f1..2be3c3a 100644
--- a/doc/generated/examples/factories_Delete2_1.xml
+++ b/doc/generated/examples/factories_Delete2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
Delete("file.out")
Copy("file.out", "file.in")
</screen>
diff --git a/doc/generated/examples/factories_Execute_1.xml b/doc/generated/examples/factories_Execute_1.xml
index 1956439..a7ae0c7 100644
--- a/doc/generated/examples/factories_Execute_1.xml
+++ b/doc/generated/examples/factories_Execute_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons</userinput>
scons: Reading SConscript files ...
Mkdir("/tmp/my_temp_directory")
scons: done reading SConscript files.
diff --git a/doc/generated/examples/factories_Mkdir_1.xml b/doc/generated/examples/factories_Mkdir_1.xml
index ae58dac..ea3d79d 100644
--- a/doc/generated/examples/factories_Mkdir_1.xml
+++ b/doc/generated/examples/factories_Mkdir_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
Delete("tempdir")
Mkdir("tempdir")
Copy("tempdir/file.in", "file.in")
diff --git a/doc/generated/examples/factories_Move_1.xml b/doc/generated/examples/factories_Move_1.xml
index 2bd008d..a5e4ccd 100644
--- a/doc/generated/examples/factories_Move_1.xml
+++ b/doc/generated/examples/factories_Move_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
Copy("tempfile", "file.in")
modify tempfile
Move("file.out", "tempfile")
diff --git a/doc/generated/examples/factories_Touch_1.xml b/doc/generated/examples/factories_Touch_1.xml
index aacde9e..7417fa4 100644
--- a/doc/generated/examples/factories_Touch_1.xml
+++ b/doc/generated/examples/factories_Touch_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
Copy("file.out", "file.in")
Touch("file.out")
</screen>
diff --git a/doc/generated/examples/fileremoval_clean-ex1_1.xml b/doc/generated/examples/fileremoval_clean-ex1_1.xml
index bb09707..c76a7e5 100644
--- a/doc/generated/examples/fileremoval_clean-ex1_1.xml
+++ b/doc/generated/examples/fileremoval_clean-ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
build -o foo.out foo.in
% <userinput>scons -Q -c</userinput>
Removed foo.out
diff --git a/doc/generated/examples/fileremoval_noclean-ex1_1.xml b/doc/generated/examples/fileremoval_noclean-ex1_1.xml
index ab36c3f..45bd878 100644
--- a/doc/generated/examples/fileremoval_noclean-ex1_1.xml
+++ b/doc/generated/examples/fileremoval_noclean-ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o f1.o -c f1.c
cc -o f2.o -c f2.c
cc -o f3.o -c f3.c
diff --git a/doc/generated/examples/fileremoval_precious-ex1_1.xml b/doc/generated/examples/fileremoval_precious-ex1_1.xml
index e8227e6..36e5a25 100644
--- a/doc/generated/examples/fileremoval_precious-ex1_1.xml
+++ b/doc/generated/examples/fileremoval_precious-ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o f1.o -c f1.c
cc -o f2.o -c f2.c
cc -o f3.o -c f3.c
diff --git a/doc/generated/examples/hierarchy_Return_1.xml b/doc/generated/examples/hierarchy_Return_1.xml
index 64b981a..e5ab7f7 100644
--- a/doc/generated/examples/hierarchy_Return_1.xml
+++ b/doc/generated/examples/hierarchy_Return_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o bar/bar.o -c bar/bar.c
cc -o foo/foo.o -c foo/foo.c
ar rc libprog.a foo/foo.o bar/bar.o
diff --git a/doc/generated/examples/hierarchy_ex1_1.xml b/doc/generated/examples/hierarchy_ex1_1.xml
index 50beb93..bb5cc7b 100644
--- a/doc/generated/examples/hierarchy_ex1_1.xml
+++ b/doc/generated/examples/hierarchy_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o prog1/foo1.o -c prog1/foo1.c
cc -o prog1/foo2.o -c prog1/foo2.c
cc -o prog1/main.o -c prog1/main.c
diff --git a/doc/generated/examples/hierarchy_ex2_1.xml b/doc/generated/examples/hierarchy_ex2_1.xml
index 1f781f8..800a921 100644
--- a/doc/generated/examples/hierarchy_ex2_1.xml
+++ b/doc/generated/examples/hierarchy_ex2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o lib/foo1.o -c lib/foo1.c
cc -o src/prog/foo2.o -c src/prog/foo2.c
cc -o src/prog/main.o -c src/prog/main.c
diff --git a/doc/generated/examples/hierarchy_ex3_1.xml b/doc/generated/examples/hierarchy_ex3_1.xml
index cb5a0ce..473c9f4 100644
--- a/doc/generated/examples/hierarchy_ex3_1.xml
+++ b/doc/generated/examples/hierarchy_ex3_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o src/prog/foo2.o -c src/prog/foo2.c
cc -o src/prog/main.o -c src/prog/main.c
cc -o /usr/joe/lib/foo1.o -c /usr/joe/lib/foo1.c
diff --git a/doc/generated/examples/install_ex1_1.xml b/doc/generated/examples/install_ex1_1.xml
index 69a9f28..776f7e8 100644
--- a/doc/generated/examples/install_ex1_1.xml
+++ b/doc/generated/examples/install_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% <userinput>scons -Q /usr/bin</userinput>
diff --git a/doc/generated/examples/install_ex2_1.xml b/doc/generated/examples/install_ex2_1.xml
index 66caba3..98de9c4 100644
--- a/doc/generated/examples/install_ex2_1.xml
+++ b/doc/generated/examples/install_ex2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
% <userinput>scons -Q install</userinput>
diff --git a/doc/generated/examples/install_ex3_1.xml b/doc/generated/examples/install_ex3_1.xml
index 5e79808..e306111 100644
--- a/doc/generated/examples/install_ex3_1.xml
+++ b/doc/generated/examples/install_ex3_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q install</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q install</userinput>
cc -o goodbye.o -c goodbye.c
cc -o goodbye goodbye.o
Install file: "goodbye" as "/usr/bin/goodbye"
diff --git a/doc/generated/examples/install_ex4_1.xml b/doc/generated/examples/install_ex4_1.xml
index 277ab7a..36cd90c 100644
--- a/doc/generated/examples/install_ex4_1.xml
+++ b/doc/generated/examples/install_ex4_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q install</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q install</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
Install file: "hello" as "/usr/bin/hello-new"
diff --git a/doc/generated/examples/install_ex5_1.xml b/doc/generated/examples/install_ex5_1.xml
index 9cfc178..89f7c56 100644
--- a/doc/generated/examples/install_ex5_1.xml
+++ b/doc/generated/examples/install_ex5_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q install</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q install</userinput>
cc -o goodbye.o -c goodbye.c
cc -o goodbye goodbye.o
Install file: "goodbye" as "/usr/bin/goodbye-new"
diff --git a/doc/generated/examples/java_JAVACLASSDIR_1.xml b/doc/generated/examples/java_JAVACLASSDIR_1.xml
index e87345e..5e0709a 100644
--- a/doc/generated/examples/java_JAVACLASSDIR_1.xml
+++ b/doc/generated/examples/java_JAVACLASSDIR_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
javac -d classes -sourcepath src/pkg/sub src/pkg/sub/Example1.java src/pkg/sub/Example2.java src/pkg/sub/Example3.java
javah -d native -classpath classes pkg.sub.Example1 pkg.sub.Example2 pkg.sub.Example3
</screen>
diff --git a/doc/generated/examples/java_RMIC_1.xml b/doc/generated/examples/java_RMIC_1.xml
index be8c953..4db895e 100644
--- a/doc/generated/examples/java_RMIC_1.xml
+++ b/doc/generated/examples/java_RMIC_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
javac -d classes -sourcepath src/pkg/sub src/pkg/sub/Example1.java src/pkg/sub/Example2.java
rmic -d outdir -classpath classes pkg.sub.Example1 pkg.sub.Example2
</screen>
diff --git a/doc/generated/examples/java_jar1_1.xml b/doc/generated/examples/java_jar1_1.xml
index 6f5afa0..de93227 100644
--- a/doc/generated/examples/java_jar1_1.xml
+++ b/doc/generated/examples/java_jar1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
javac -d classes -sourcepath src src/Example1.java src/Example2.java src/Example3.java
jar cf test.jar classes
</screen>
diff --git a/doc/generated/examples/java_jar2_1.xml b/doc/generated/examples/java_jar2_1.xml
index 70e161b..9e942e2 100644
--- a/doc/generated/examples/java_jar2_1.xml
+++ b/doc/generated/examples/java_jar2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
javac -d classes -sourcepath prog1 prog1/Example1.java prog1/Example2.java
javac -d classes -sourcepath prog2 prog2/Example3.java prog2/Example4.java
jar cf prog1.jar -C classes Example1.class -C classes Example2.class
diff --git a/doc/generated/examples/java_java-classes_1.xml b/doc/generated/examples/java_java-classes_1.xml
index 2ebc85c..6f02f5f 100644
--- a/doc/generated/examples/java_java-classes_1.xml
+++ b/doc/generated/examples/java_java-classes_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
javac -d classes -sourcepath src src/Example1.java src/Example2.java src/Example3.java
% <userinput>scons -Q classes</userinput>
scons: `classes' is up to date.
diff --git a/doc/generated/examples/java_java-classes_2.xml b/doc/generated/examples/java_java-classes_2.xml
index 9a24f70..31f6028 100644
--- a/doc/generated/examples/java_java-classes_2.xml
+++ b/doc/generated/examples/java_java-classes_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
javac -d classes -sourcepath src src/Example1.java src/Example2.java src/Example3.java
% <userinput>scons -Q -c classes</userinput>
Removed classes/Example1.class
diff --git a/doc/generated/examples/java_java_1.xml b/doc/generated/examples/java_java_1.xml
index a6e69c1..551a5d4 100644
--- a/doc/generated/examples/java_java_1.xml
+++ b/doc/generated/examples/java_java_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
javac -d classes -sourcepath src src/Example1.java src/Example2.java src/Example3.java
</screen>
diff --git a/doc/generated/examples/java_javah_1.xml b/doc/generated/examples/java_javah_1.xml
index e87345e..5e0709a 100644
--- a/doc/generated/examples/java_javah_1.xml
+++ b/doc/generated/examples/java_javah_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
javac -d classes -sourcepath src/pkg/sub src/pkg/sub/Example1.java src/pkg/sub/Example2.java src/pkg/sub/Example3.java
javah -d native -classpath classes pkg.sub.Example1 pkg.sub.Example2 pkg.sub.Example3
</screen>
diff --git a/doc/generated/examples/java_javah_file_1.xml b/doc/generated/examples/java_javah_file_1.xml
index a0e74d5..163a53d 100644
--- a/doc/generated/examples/java_javah_file_1.xml
+++ b/doc/generated/examples/java_javah_file_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
javac -d classes -sourcepath src/pkg/sub src/pkg/sub/Example1.java src/pkg/sub/Example2.java src/pkg/sub/Example3.java
javah -o native.h -classpath classes pkg.sub.Example1 pkg.sub.Example2 pkg.sub.Example3
</screen>
diff --git a/doc/generated/examples/lesssimple_ex2_1.xml b/doc/generated/examples/lesssimple_ex2_1.xml
index 834f88c..6093f0c 100644
--- a/doc/generated/examples/lesssimple_ex2_1.xml
+++ b/doc/generated/examples/lesssimple_ex2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o file1.o -c file1.c
cc -o file2.o -c file2.c
cc -o prog.o -c prog.c
diff --git a/doc/generated/examples/lesssimple_ex3_1.xml b/doc/generated/examples/lesssimple_ex3_1.xml
index 415205b..b3ac2f0 100644
--- a/doc/generated/examples/lesssimple_ex3_1.xml
+++ b/doc/generated/examples/lesssimple_ex3_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o file1.o -c file1.c
cc -o file2.o -c file2.c
cc -o prog.o -c prog.c
diff --git a/doc/generated/examples/lesssimple_ex3_2.xml b/doc/generated/examples/lesssimple_ex3_2.xml
index 2eee32b..835f048 100644
--- a/doc/generated/examples/lesssimple_ex3_2.xml
+++ b/doc/generated/examples/lesssimple_ex3_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
cl /Fofile1.obj /c file1.c /nologo
cl /Fofile2.obj /c file2.c /nologo
cl /Foprog.obj /c prog.c /nologo
diff --git a/doc/generated/examples/lesssimple_ex4_1.xml b/doc/generated/examples/lesssimple_ex4_1.xml
index 4d9267e..87af41d 100644
--- a/doc/generated/examples/lesssimple_ex4_1.xml
+++ b/doc/generated/examples/lesssimple_ex4_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o bar1.o -c bar1.c
cc -o bar2.o -c bar2.c
cc -o bar bar1.o bar2.o
diff --git a/doc/generated/examples/lesssimple_ex5_1.xml b/doc/generated/examples/lesssimple_ex5_1.xml
index e1c35d4..0043e11 100644
--- a/doc/generated/examples/lesssimple_ex5_1.xml
+++ b/doc/generated/examples/lesssimple_ex5_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o bar1.o -c bar1.c
cc -o bar2.o -c bar2.c
cc -o common1.o -c common1.c
diff --git a/doc/generated/examples/lesssimple_target_1.xml b/doc/generated/examples/lesssimple_target_1.xml
index 76f0de9..a958acb 100644
--- a/doc/generated/examples/lesssimple_target_1.xml
+++ b/doc/generated/examples/lesssimple_target_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c hello.c
cc -o new_hello hello.o
</screen>
diff --git a/doc/generated/examples/lesssimple_target_2.xml b/doc/generated/examples/lesssimple_target_2.xml
index 0babd04..ef7b241 100644
--- a/doc/generated/examples/lesssimple_target_2.xml
+++ b/doc/generated/examples/lesssimple_target_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
cl /Fohello.obj /c hello.c /nologo
link /nologo /OUT:new_hello.exe hello.obj
embedManifestExeCheck(target, source, env)
diff --git a/doc/generated/examples/libraries_SharedLibrary_1.xml b/doc/generated/examples/libraries_SharedLibrary_1.xml
index 80df708..2300891 100644
--- a/doc/generated/examples/libraries_SharedLibrary_1.xml
+++ b/doc/generated/examples/libraries_SharedLibrary_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o f1.os -c f1.c
cc -o f2.os -c f2.c
cc -o f3.os -c f3.c
diff --git a/doc/generated/examples/libraries_SharedLibrary_2.xml b/doc/generated/examples/libraries_SharedLibrary_2.xml
index c2894d5..b6b484d 100644
--- a/doc/generated/examples/libraries_SharedLibrary_2.xml
+++ b/doc/generated/examples/libraries_SharedLibrary_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
cl /Fof1.obj /c f1.c /nologo
cl /Fof2.obj /c f2.c /nologo
cl /Fof3.obj /c f3.c /nologo
diff --git a/doc/generated/examples/libraries_ex1_1.xml b/doc/generated/examples/libraries_ex1_1.xml
index 0449b31..bfd69b4 100644
--- a/doc/generated/examples/libraries_ex1_1.xml
+++ b/doc/generated/examples/libraries_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o f1.o -c f1.c
cc -o f2.o -c f2.c
cc -o f3.o -c f3.c
diff --git a/doc/generated/examples/libraries_ex1_2.xml b/doc/generated/examples/libraries_ex1_2.xml
index 9256d4f..912e7ad 100644
--- a/doc/generated/examples/libraries_ex1_2.xml
+++ b/doc/generated/examples/libraries_ex1_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
cl /Fof1.obj /c f1.c /nologo
cl /Fof2.obj /c f2.c /nologo
cl /Fof3.obj /c f3.c /nologo
diff --git a/doc/generated/examples/libraries_ex2_1.xml b/doc/generated/examples/libraries_ex2_1.xml
index 7389203..c43f7e9 100644
--- a/doc/generated/examples/libraries_ex2_1.xml
+++ b/doc/generated/examples/libraries_ex2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o f1.o -c f1.c
cc -o f2.o -c f2.c
cc -o f3.o -c f3.c
diff --git a/doc/generated/examples/libraries_ex2_2.xml b/doc/generated/examples/libraries_ex2_2.xml
index 17ec5b5..84b4d75 100644
--- a/doc/generated/examples/libraries_ex2_2.xml
+++ b/doc/generated/examples/libraries_ex2_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
cl /Fof1.obj /c f1.c /nologo
cl /Fof2.obj /c f2.c /nologo
cl /Fof3.obj /c f3.c /nologo
diff --git a/doc/generated/examples/libraries_ex3_1.xml b/doc/generated/examples/libraries_ex3_1.xml
index 1b4fb3c..9dd6ca9 100644
--- a/doc/generated/examples/libraries_ex3_1.xml
+++ b/doc/generated/examples/libraries_ex3_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o prog.o -c prog.c
cc -o prog prog.o -L/usr/lib -L/usr/local/lib -lm
</screen>
diff --git a/doc/generated/examples/libraries_ex3_2.xml b/doc/generated/examples/libraries_ex3_2.xml
index 2a64da1..e5ec4ce 100644
--- a/doc/generated/examples/libraries_ex3_2.xml
+++ b/doc/generated/examples/libraries_ex3_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
cl /Foprog.obj /c prog.c /nologo
link /nologo /OUT:prog.exe /LIBPATH:\usr\lib /LIBPATH:\usr\local\lib m.lib prog.obj
embedManifestExeCheck(target, source, env)
diff --git a/doc/generated/examples/libraries_objects_1.xml b/doc/generated/examples/libraries_objects_1.xml
index 97623d9..5d732da 100644
--- a/doc/generated/examples/libraries_objects_1.xml
+++ b/doc/generated/examples/libraries_objects_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o f1.o -c f1.c
cc -o f3.o -c f3.c
ar rc libfoo.a f1.o f2.o f3.o f4.o
diff --git a/doc/generated/examples/mergeflags_MergeFlags1_1.xml b/doc/generated/examples/mergeflags_MergeFlags1_1.xml
index a5a6915..8f18fd8 100644
--- a/doc/generated/examples/mergeflags_MergeFlags1_1.xml
+++ b/doc/generated/examples/mergeflags_MergeFlags1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
['-option', '-O1', '-whatever', '-O3']
scons: `.' is up to date.
</screen>
diff --git a/doc/generated/examples/mergeflags_MergeFlags2_1.xml b/doc/generated/examples/mergeflags_MergeFlags2_1.xml
index d807d66..8cae827 100644
--- a/doc/generated/examples/mergeflags_MergeFlags2_1.xml
+++ b/doc/generated/examples/mergeflags_MergeFlags2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
['/include', '/usr/local/include', '/usr/include', '/usr/opt/include']
scons: `.' is up to date.
</screen>
diff --git a/doc/generated/examples/mergeflags_MergeFlags3_1.xml b/doc/generated/examples/mergeflags_MergeFlags3_1.xml
index 324d960..d4f23d4 100644
--- a/doc/generated/examples/mergeflags_MergeFlags3_1.xml
+++ b/doc/generated/examples/mergeflags_MergeFlags3_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
['-option', '-O1', '-whatever', '-O3']
['/include', '/usr/local/include', '/usr/include', '/usr/opt/include']
scons: `.' is up to date.
diff --git a/doc/generated/examples/misc_Exit_1.xml b/doc/generated/examples/misc_Exit_1.xml
index 65ccf9b..6af378f 100644
--- a/doc/generated/examples/misc_Exit_1.xml
+++ b/doc/generated/examples/misc_Exit_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q FUTURE=1</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q FUTURE=1</userinput>
The FUTURE option is not supported yet!
% <userinput>scons -Q</userinput>
cc -o hello.o -c hello.c
diff --git a/doc/generated/examples/misc_FindFile1a_1.xml b/doc/generated/examples/misc_FindFile1a_1.xml
index 2b18f6e..eca0328 100644
--- a/doc/generated/examples/misc_FindFile1a_1.xml
+++ b/doc/generated/examples/misc_FindFile1a_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
None
&lt;class 'SCons.Node.FS.File'&gt; exists
scons: `.' is up to date.
diff --git a/doc/generated/examples/misc_FindFile1b_1.xml b/doc/generated/examples/misc_FindFile1b_1.xml
index f16dc95..894b483 100644
--- a/doc/generated/examples/misc_FindFile1b_1.xml
+++ b/doc/generated/examples/misc_FindFile1b_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
nonesuch.h: None
config.h: config.h
private.h: src/include/private.h
diff --git a/doc/generated/examples/misc_FindFile1d_1.xml b/doc/generated/examples/misc_FindFile1d_1.xml
index e0e8e8d..5ab499f 100644
--- a/doc/generated/examples/misc_FindFile1d_1.xml
+++ b/doc/generated/examples/misc_FindFile1d_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
sub1/multiple
sub2/multiple
sub3/multiple
diff --git a/doc/generated/examples/misc_FindFile2_1.xml b/doc/generated/examples/misc_FindFile2_1.xml
index 5aea252..149c5d5 100644
--- a/doc/generated/examples/misc_FindFile2_1.xml
+++ b/doc/generated/examples/misc_FindFile2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
leaf
derived
cat &gt; derived leaf
diff --git a/doc/generated/examples/misc_FindFile2_2.xml b/doc/generated/examples/misc_FindFile2_2.xml
index 5aea252..149c5d5 100644
--- a/doc/generated/examples/misc_FindFile2_2.xml
+++ b/doc/generated/examples/misc_FindFile2_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
leaf
derived
cat &gt; derived leaf
diff --git a/doc/generated/examples/misc_FindFile3_1.xml b/doc/generated/examples/misc_FindFile3_1.xml
index 026212c..2c09fed 100644
--- a/doc/generated/examples/misc_FindFile3_1.xml
+++ b/doc/generated/examples/misc_FindFile3_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
build/leaf
scons: `.' is up to date.
</screen>
diff --git a/doc/generated/examples/misc_Flatten1_1.xml b/doc/generated/examples/misc_Flatten1_1.xml
index b25ef5f..54720bb 100644
--- a/doc/generated/examples/misc_Flatten1_1.xml
+++ b/doc/generated/examples/misc_Flatten1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o prog1.o -c prog1.c
cc -o prog2.o -c -DFOO prog2.c
cc -o prog1 prog1.o prog2.o
diff --git a/doc/generated/examples/misc_Flatten2_1.xml b/doc/generated/examples/misc_Flatten2_1.xml
index 5c9502d..58ffe6b 100644
--- a/doc/generated/examples/misc_Flatten2_1.xml
+++ b/doc/generated/examples/misc_Flatten2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
AttributeError: 'NodeList' object has no attribute 'abspath':
File "/home/my/project/SConstruct", line 8:
print object_file.abspath
diff --git a/doc/generated/examples/nodes_GetBuildPath_1.xml b/doc/generated/examples/nodes_GetBuildPath_1.xml
index d8160f3..376f65e 100644
--- a/doc/generated/examples/nodes_GetBuildPath_1.xml
+++ b/doc/generated/examples/nodes_GetBuildPath_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
['foo.c', 'sub/dir/value']
scons: `.' is up to date.
</screen>
diff --git a/doc/generated/examples/nodes_ex1_1.xml b/doc/generated/examples/nodes_ex1_1.xml
index fc72480..e7eb8c4 100644
--- a/doc/generated/examples/nodes_ex1_1.xml
+++ b/doc/generated/examples/nodes_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o goodbye.o -c -DGOODBYE goodbye.c
cc -o hello.o -c -DHELLO hello.c
cc -o hello hello.o goodbye.o
diff --git a/doc/generated/examples/nodes_ex1_2.xml b/doc/generated/examples/nodes_ex1_2.xml
index cc92ae6..a1ed1fb 100644
--- a/doc/generated/examples/nodes_ex1_2.xml
+++ b/doc/generated/examples/nodes_ex1_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
cl /Fogoodbye.obj /c goodbye.c -DGOODBYE
cl /Fohello.obj /c hello.c -DHELLO
link /nologo /OUT:hello.exe hello.obj goodbye.obj
diff --git a/doc/generated/examples/nodes_exists_1.xml b/doc/generated/examples/nodes_exists_1.xml
index c618a6c..a290b1c 100644
--- a/doc/generated/examples/nodes_exists_1.xml
+++ b/doc/generated/examples/nodes_exists_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
hello does not exist!
cc -o hello.o -c hello.c
cc -o hello hello.o
diff --git a/doc/generated/examples/nodes_print_1.xml b/doc/generated/examples/nodes_print_1.xml
index dd8fcbb..11a3f45 100644
--- a/doc/generated/examples/nodes_print_1.xml
+++ b/doc/generated/examples/nodes_print_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
The object file is: hello.o
The program file is: hello
cc -o hello.o -c hello.c
diff --git a/doc/generated/examples/nodes_print_2.xml b/doc/generated/examples/nodes_print_2.xml
index 58bb703..a62b522 100644
--- a/doc/generated/examples/nodes_print_2.xml
+++ b/doc/generated/examples/nodes_print_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
The object file is: hello.obj
The program file is: hello.exe
cl /Fohello.obj /c hello.c /nologo
diff --git a/doc/generated/examples/output_Progress-TARGET_1.xml b/doc/generated/examples/output_Progress-TARGET_1.xml
index 29abc9f..b233c6e 100644
--- a/doc/generated/examples/output_Progress-TARGET_1.xml
+++ b/doc/generated/examples/output_Progress-TARGET_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
Evaluating SConstruct
Evaluating f1.c
Evaluating f1.o
diff --git a/doc/generated/examples/output_ex1_1.xml b/doc/generated/examples/output_ex1_1.xml
index 2576b31..535960b 100644
--- a/doc/generated/examples/output_ex1_1.xml
+++ b/doc/generated/examples/output_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -h</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -h</userinput>
scons: Reading SConscript files ...
scons: done reading SConscript files.
diff --git a/doc/generated/examples/output_ex2_1.xml b/doc/generated/examples/output_ex2_1.xml
index e206c33..e951c3a 100644
--- a/doc/generated/examples/output_ex2_1.xml
+++ b/doc/generated/examples/output_ex2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -h</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -h</userinput>
scons: Reading SConscript files ...
scons: done reading SConscript files.
diff --git a/doc/generated/examples/output_ex2_2.xml b/doc/generated/examples/output_ex2_2.xml
index 126fc54..8dca6c3 100644
--- a/doc/generated/examples/output_ex2_2.xml
+++ b/doc/generated/examples/output_ex2_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -h</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -h</userinput>
scons: Reading SConscript files ...
scons: done reading SConscript files.
diff --git a/doc/generated/examples/output_gbf2_1.xml b/doc/generated/examples/output_gbf2_1.xml
index e72965f..c31b41a 100644
--- a/doc/generated/examples/output_gbf2_1.xml
+++ b/doc/generated/examples/output_gbf2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
scons: `.' is up to date.
Build succeeded.
% <userinput>scons -Q fail=1</userinput>
diff --git a/doc/generated/examples/parseflags_ex1_1.xml b/doc/generated/examples/parseflags_ex1_1.xml
index d385662..d6e4d96 100644
--- a/doc/generated/examples/parseflags_ex1_1.xml
+++ b/doc/generated/examples/parseflags_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
CPPPATH ['/opt/include']
LIBPATH ['/opt/lib']
LIBS ['foo']
diff --git a/doc/generated/examples/parseflags_ex1_2.xml b/doc/generated/examples/parseflags_ex1_2.xml
index 29985a2..4c115d0 100644
--- a/doc/generated/examples/parseflags_ex1_2.xml
+++ b/doc/generated/examples/parseflags_ex1_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
CPPPATH ['/opt/include']
LIBPATH ['/opt/lib']
LIBS ['foo']
diff --git a/doc/generated/examples/parseflags_ex2_1.xml b/doc/generated/examples/parseflags_ex2_1.xml
index 8026ca0..da84ee3 100644
--- a/doc/generated/examples/parseflags_ex2_1.xml
+++ b/doc/generated/examples/parseflags_ex2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
CCFLAGS -whatever
cc -o f1.o -c -whatever f1.c
cc -o f1 f1.o
diff --git a/doc/generated/examples/parseflags_ex3_1.xml b/doc/generated/examples/parseflags_ex3_1.xml
index d385662..d6e4d96 100644
--- a/doc/generated/examples/parseflags_ex3_1.xml
+++ b/doc/generated/examples/parseflags_ex3_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
CPPPATH ['/opt/include']
LIBPATH ['/opt/lib']
LIBS ['foo']
diff --git a/doc/generated/examples/parseflags_ex4_1.xml b/doc/generated/examples/parseflags_ex4_1.xml
index d385662..d6e4d96 100644
--- a/doc/generated/examples/parseflags_ex4_1.xml
+++ b/doc/generated/examples/parseflags_ex4_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
CPPPATH ['/opt/include']
LIBPATH ['/opt/lib']
LIBS ['foo']
diff --git a/doc/generated/examples/repositories_CPPPATH3_1.xml b/doc/generated/examples/repositories_CPPPATH3_1.xml
index 558678d..d53ffdb 100644
--- a/doc/generated/examples/repositories_CPPPATH3_1.xml
+++ b/doc/generated/examples/repositories_CPPPATH3_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c -Idir1 -I/r1/dir1 -I/r2/dir1 -Idir2 -I/r1/dir2 -I/r2/dir2 -Idir3 -I/r1/dir3 -I/r2/dir3 hello.c
cc -o hello hello.o
</screen>
diff --git a/doc/generated/examples/repositories_CPPPATH_1.xml b/doc/generated/examples/repositories_CPPPATH_1.xml
index f5ad671..6c5a2d1 100644
--- a/doc/generated/examples/repositories_CPPPATH_1.xml
+++ b/doc/generated/examples/repositories_CPPPATH_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c -I. -I/usr/repository1 hello.c
cc -o hello hello.o
</screen>
diff --git a/doc/generated/examples/repositories_ex1_1.xml b/doc/generated/examples/repositories_ex1_1.xml
index d1250c2..a21fdc8 100644
--- a/doc/generated/examples/repositories_ex1_1.xml
+++ b/doc/generated/examples/repositories_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c hello.c
cc -o hello hello.o
</screen>
diff --git a/doc/generated/examples/repositories_ex2_1.xml b/doc/generated/examples/repositories_ex2_1.xml
index 146a074..819c936 100644
--- a/doc/generated/examples/repositories_ex2_1.xml
+++ b/doc/generated/examples/repositories_ex2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c /usr/repository1/hello.c
cc -o hello hello.o
</screen>
diff --git a/doc/generated/examples/repositories_ex3_1.xml b/doc/generated/examples/repositories_ex3_1.xml
index b3f07a2..76d69cd 100644
--- a/doc/generated/examples/repositories_ex3_1.xml
+++ b/doc/generated/examples/repositories_ex3_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c /usr/repository2/hello.c
cc -o hello hello.o
</screen>
diff --git a/doc/generated/examples/repositories_ex4_1.xml b/doc/generated/examples/repositories_ex4_1.xml
index 1d3e41a..8911683 100644
--- a/doc/generated/examples/repositories_ex4_1.xml
+++ b/doc/generated/examples/repositories_ex4_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>cd /usr/repository1</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>cd /usr/repository1</userinput>
% <userinput>scons -Q</userinput>
cc -o file1.o -c file1.c
cc -o file2.o -c file2.c
diff --git a/doc/generated/examples/repositories_quote1_1.xml b/doc/generated/examples/repositories_quote1_1.xml
index e9f362d..d2ba624 100644
--- a/doc/generated/examples/repositories_quote1_1.xml
+++ b/doc/generated/examples/repositories_quote1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o hello.o -c -I. -I/usr/repository1 /usr/repository1/hello.c
cc -o hello hello.o
</screen>
diff --git a/doc/generated/examples/separate_builddir_1.xml b/doc/generated/examples/separate_builddir_1.xml
index e470a6d..a763172 100644
--- a/doc/generated/examples/separate_builddir_1.xml
+++ b/doc/generated/examples/separate_builddir_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>ls src</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>ls src</userinput>
hello.c
% <userinput>scons -Q</userinput>
cc -o build/hello.o -c build/hello.c
diff --git a/doc/generated/examples/separate_builddir_sconscript_1.xml b/doc/generated/examples/separate_builddir_sconscript_1.xml
index 34a07bd..5694a56 100644
--- a/doc/generated/examples/separate_builddir_sconscript_1.xml
+++ b/doc/generated/examples/separate_builddir_sconscript_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>ls src</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>ls src</userinput>
SConscript hello.c
% <userinput>scons -Q</userinput>
cc -o build/hello.o -c build/hello.c
diff --git a/doc/generated/examples/separate_duplicate0_1.xml b/doc/generated/examples/separate_duplicate0_1.xml
index 13a25d3..207c5d7 100644
--- a/doc/generated/examples/separate_duplicate0_1.xml
+++ b/doc/generated/examples/separate_duplicate0_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>ls src</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>ls src</userinput>
hello.c
% <userinput>scons -Q</userinput>
cc -o build/hello.o -c src/hello.c
diff --git a/doc/generated/examples/separate_ex1_1.xml b/doc/generated/examples/separate_ex1_1.xml
index 34a07bd..5694a56 100644
--- a/doc/generated/examples/separate_ex1_1.xml
+++ b/doc/generated/examples/separate_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>ls src</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>ls src</userinput>
SConscript hello.c
% <userinput>scons -Q</userinput>
cc -o build/hello.o -c build/hello.c
diff --git a/doc/generated/examples/separate_glob_builddir_sconscript_1.xml b/doc/generated/examples/separate_glob_builddir_sconscript_1.xml
index 95b7650..7cdb420 100644
--- a/doc/generated/examples/separate_glob_builddir_sconscript_1.xml
+++ b/doc/generated/examples/separate_glob_builddir_sconscript_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>ls src</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>ls src</userinput>
SConscript f1.c f2.c f2.h
% <userinput>scons -Q</userinput>
cc -o build/f1.o -c build/f1.c
diff --git a/doc/generated/examples/sideeffect_parallel_1.xml b/doc/generated/examples/sideeffect_parallel_1.xml
index 18f834a..9478c52 100644
--- a/doc/generated/examples/sideeffect_parallel_1.xml
+++ b/doc/generated/examples/sideeffect_parallel_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --jobs=2</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --jobs=2</userinput>
echo &gt; file1.out data1
echo &gt; file2.out data2
</screen>
diff --git a/doc/generated/examples/sideeffect_shared_1.xml b/doc/generated/examples/sideeffect_shared_1.xml
index 11cfec7..2abb806 100644
--- a/doc/generated/examples/sideeffect_shared_1.xml
+++ b/doc/generated/examples/sideeffect_shared_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --jobs=2</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --jobs=2</userinput>
./build --log logfile.txt file1.in file1.out
./build --log logfile.txt file2.in file2.out
</screen>
diff --git a/doc/generated/examples/sideeffect_simple_1.xml b/doc/generated/examples/sideeffect_simple_1.xml
index 9fdf074..e88630c 100644
--- a/doc/generated/examples/sideeffect_simple_1.xml
+++ b/doc/generated/examples/sideeffect_simple_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --jobs=2</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --jobs=2</userinput>
File "/home/my/project/SConstruct", line 4
'echo &gt;$TARGET data1; echo &gt;log updated file1'))
diff --git a/doc/generated/examples/simple_Object_1.xml b/doc/generated/examples/simple_Object_1.xml
index 33a86a7..6d5c80d 100644
--- a/doc/generated/examples/simple_Object_1.xml
+++ b/doc/generated/examples/simple_Object_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons</userinput>
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
diff --git a/doc/generated/examples/simple_Object_2.xml b/doc/generated/examples/simple_Object_2.xml
index 42b773a..3686006 100644
--- a/doc/generated/examples/simple_Object_2.xml
+++ b/doc/generated/examples/simple_Object_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons</userinput>
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
diff --git a/doc/generated/examples/simple_clean_1.xml b/doc/generated/examples/simple_clean_1.xml
index 0affa24..21adbe7 100644
--- a/doc/generated/examples/simple_clean_1.xml
+++ b/doc/generated/examples/simple_clean_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons</userinput>
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
diff --git a/doc/generated/examples/simple_clean_2.xml b/doc/generated/examples/simple_clean_2.xml
index 3ccedf4..26f3c37 100644
--- a/doc/generated/examples/simple_clean_2.xml
+++ b/doc/generated/examples/simple_clean_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons</userinput>
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
diff --git a/doc/generated/examples/simple_declarative_1.xml b/doc/generated/examples/simple_declarative_1.xml
index effcd54..01061cf 100644
--- a/doc/generated/examples/simple_declarative_1.xml
+++ b/doc/generated/examples/simple_declarative_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons</userinput>
scons: Reading SConscript files ...
Calling Program('hello.c')
Calling Program('goodbye.c')
diff --git a/doc/generated/examples/simple_ex1_1.xml b/doc/generated/examples/simple_ex1_1.xml
index a855deb..5833ede 100644
--- a/doc/generated/examples/simple_ex1_1.xml
+++ b/doc/generated/examples/simple_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons</userinput>
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
diff --git a/doc/generated/examples/simple_ex1_2.xml b/doc/generated/examples/simple_ex1_2.xml
index b3d11cd..f0e07a1 100644
--- a/doc/generated/examples/simple_ex1_2.xml
+++ b/doc/generated/examples/simple_ex1_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons</userinput>
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
diff --git a/doc/generated/examples/simple_ex1_3.xml b/doc/generated/examples/simple_ex1_3.xml
index b3d11cd..f0e07a1 100644
--- a/doc/generated/examples/simple_ex1_3.xml
+++ b/doc/generated/examples/simple_ex1_3.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons</userinput>
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
diff --git a/doc/generated/examples/simple_ex1_4.xml b/doc/generated/examples/simple_ex1_4.xml
index 4087bcf..80c7b63 100644
--- a/doc/generated/examples/simple_ex1_4.xml
+++ b/doc/generated/examples/simple_ex1_4.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -Q</userinput>
cl /Fohello.obj /c hello.c /nologo
link /nologo /OUT:hello.exe hello.obj
embedManifestExeCheck(target, source, env)
diff --git a/doc/generated/examples/simple_java_1.xml b/doc/generated/examples/simple_java_1.xml
index 53cc8aa..75cc6cc 100644
--- a/doc/generated/examples/simple_java_1.xml
+++ b/doc/generated/examples/simple_java_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons</userinput>
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
diff --git a/doc/generated/examples/sourcecode_bitkeeper_1.xml b/doc/generated/examples/sourcecode_bitkeeper_1.xml
index c02c973..a070ada 100644
--- a/doc/generated/examples/sourcecode_bitkeeper_1.xml
+++ b/doc/generated/examples/sourcecode_bitkeeper_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
bk get hello.c
cc -o hello.o -c hello.c
cc -o hello hello.o
diff --git a/doc/generated/examples/sourcecode_cvs_1.xml b/doc/generated/examples/sourcecode_cvs_1.xml
index c2165cb..9ec7cd4 100644
--- a/doc/generated/examples/sourcecode_cvs_1.xml
+++ b/doc/generated/examples/sourcecode_cvs_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cvs -d /usr/local/CVS co hello.c
cc -o hello.o -c hello.c
cc -o hello hello.o
diff --git a/doc/generated/examples/sourcecode_rcs_1.xml b/doc/generated/examples/sourcecode_rcs_1.xml
index 75def9c..5e120eb 100644
--- a/doc/generated/examples/sourcecode_rcs_1.xml
+++ b/doc/generated/examples/sourcecode_rcs_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
co hello.c
cc -o hello.o -c hello.c
cc -o hello hello.o
diff --git a/doc/generated/examples/sourcecode_sccs_1.xml b/doc/generated/examples/sourcecode_sccs_1.xml
index 0be5f83..354b680 100644
--- a/doc/generated/examples/sourcecode_sccs_1.xml
+++ b/doc/generated/examples/sourcecode_sccs_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
sccs get hello.c
cc -o hello.o -c hello.c
cc -o hello hello.o
diff --git a/doc/generated/examples/tasks_ex1_1.xml b/doc/generated/examples/tasks_ex1_1.xml
index f8b323e..5760a45 100644
--- a/doc/generated/examples/tasks_ex1_1.xml
+++ b/doc/generated/examples/tasks_ex1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o app main.cpp
cat &lt; foo.bar2 &gt; foo.cpp
cc -o app2 main2.cpp foo.cpp
diff --git a/doc/generated/examples/troubleshoot_Dump_1.xml b/doc/generated/examples/troubleshoot_Dump_1.xml
index d1191eb..248e85c 100644
--- a/doc/generated/examples/troubleshoot_Dump_1.xml
+++ b/doc/generated/examples/troubleshoot_Dump_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons</userinput>
scons: Reading SConscript files ...
{ 'BUILDERS': {'_InternalInstall': &lt;function InstallBuilderWrapper at 0x700000&amp;gt;, '_InternalInstallVersionedLib': &lt;function InstallVersionedBuilderWrapper at 0x700000&amp;gt;, '_InternalInstallAs': &lt;function InstallAsBuilderWrapper at 0x700000&amp;gt;},
'CONFIGUREDIR': '#/.sconf_temp',
@@ -53,7 +53,7 @@ scons: Reading SConscript files ...
'SHLIBSUFFIX': '.so',
'SHOBJPREFIX': '$OBJPREFIX',
'SHOBJSUFFIX': '$OBJSUFFIX',
- 'SPAWN': &lt;function spawnvpe_spawn at 0x700000&amp;gt;,
+ 'SPAWN': &lt;function subprocess_spawn at 0x700000&amp;gt;,
'TARGET_ARCH': None,
'TARGET_OS': None,
'TEMPFILE': &lt;class 'SCons.Platform.TempFileMunge'&gt;,
@@ -63,6 +63,7 @@ scons: Reading SConscript files ...
'_CPPINCFLAGS': '$( ${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
'_LIBDIRFLAGS': '$( ${_concat(LIBDIRPREFIX, LIBPATH, LIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
'_LIBFLAGS': '${_concat(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, __env__)}',
+ '__DRPATH': '$_DRPATH',
'__RPATH': '$_RPATH',
'_concat': &lt;function _concat at 0x700000&amp;gt;,
'_defines': &lt;function _defines at 0x700000&amp;gt;,
diff --git a/doc/generated/examples/troubleshoot_Dump_2.xml b/doc/generated/examples/troubleshoot_Dump_2.xml
index 2fdb1bc..17c9de5 100644
--- a/doc/generated/examples/troubleshoot_Dump_2.xml
+++ b/doc/generated/examples/troubleshoot_Dump_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons</userinput>
scons: Reading SConscript files ...
{ 'BUILDERS': {'_InternalInstallVersionedLib': &lt;function InstallVersionedBuilderWrapper at 0x700000&amp;gt;, '_InternalInstall': &lt;function InstallBuilderWrapper at 0x700000&amp;gt;, 'Object': &lt;SCons.Builder.CompositeBuilder object at 0x700000&amp;gt;, 'PCH': &lt;SCons.Builder.BuilderBase object at 0x700000&amp;gt;, 'RES': &lt;SCons.Builder.BuilderBase object at 0x700000&amp;gt;, 'SharedObject': &lt;SCons.Builder.CompositeBuilder object at 0x700000&amp;gt;, 'StaticObject': &lt;SCons.Builder.CompositeBuilder object at 0x700000&amp;gt;, '_InternalInstallAs': &lt;function InstallAsBuilderWrapper at 0x700000&amp;gt;},
'CC': 'cl',
@@ -86,8 +86,8 @@ scons: Reading SConscript files ...
'SHOBJSUFFIX': '$OBJSUFFIX',
'SPAWN': &lt;function spawn at 0x700000&amp;gt;,
'STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME': 1,
- 'TARGET_ARCH': '',
- 'TARGET_OS': 'win32',
+ 'TARGET_ARCH': None,
+ 'TARGET_OS': None,
'TEMPFILE': &lt;class 'SCons.Platform.TempFileMunge'&gt;,
'TEMPFILEPREFIX': '@',
'TOOLS': ['msvc', 'install', 'install'],
diff --git a/doc/generated/examples/troubleshoot_Dump_ENV_1.xml b/doc/generated/examples/troubleshoot_Dump_ENV_1.xml
index 818bbcc..786491f 100644
--- a/doc/generated/examples/troubleshoot_Dump_ENV_1.xml
+++ b/doc/generated/examples/troubleshoot_Dump_ENV_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons</userinput>
scons: Reading SConscript files ...
{ 'PATH': '/usr/local/bin:/opt/bin:/bin:/usr/bin'}
scons: done reading SConscript files.
diff --git a/doc/generated/examples/troubleshoot_Dump_ENV_2.xml b/doc/generated/examples/troubleshoot_Dump_ENV_2.xml
index 4ea3a2f..eb6b735 100644
--- a/doc/generated/examples/troubleshoot_Dump_ENV_2.xml
+++ b/doc/generated/examples/troubleshoot_Dump_ENV_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons</userinput>
scons: Reading SConscript files ...
{ 'PATH': 'C:\\WINDOWS\\System32',
'PATHEXT': '.COM;.EXE;.BAT;.CMD',
diff --git a/doc/generated/examples/troubleshoot_explain1_1.xml b/doc/generated/examples/troubleshoot_explain1_1.xml
index 50fb303..2a9547d 100644
--- a/doc/generated/examples/troubleshoot_explain1_1.xml
+++ b/doc/generated/examples/troubleshoot_explain1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cp file.in file.oout
% <userinput>scons -Q</userinput>
cp file.in file.oout
diff --git a/doc/generated/examples/troubleshoot_explain1_2.xml b/doc/generated/examples/troubleshoot_explain1_2.xml
index a58a2d3..9864cd7 100644
--- a/doc/generated/examples/troubleshoot_explain1_2.xml
+++ b/doc/generated/examples/troubleshoot_explain1_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --debug=explain</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --debug=explain</userinput>
scons: building `file.out' because it doesn't exist
cp file.in file.oout
</screen>
diff --git a/doc/generated/examples/troubleshoot_explain1_3.xml b/doc/generated/examples/troubleshoot_explain1_3.xml
index b62be87..0bdaace 100644
--- a/doc/generated/examples/troubleshoot_explain1_3.xml
+++ b/doc/generated/examples/troubleshoot_explain1_3.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --warn=target-not-built</userinput>
-scons: building `file.out' because it doesn't exist
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --warn=target-not-built</userinput>
cp file.in file.oout
scons: warning: Cannot find target file.out after building
+File "/home/garyo/src/scons-scons/bootstrap/src/script/scons.py", line 199, in &lt;module&gt;
</screen>
diff --git a/doc/generated/examples/troubleshoot_explain2_1.xml b/doc/generated/examples/troubleshoot_explain2_1.xml
index 3b5374f..cd95a44 100644
--- a/doc/generated/examples/troubleshoot_explain2_1.xml
+++ b/doc/generated/examples/troubleshoot_explain2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o file1.o -c file1.c
cc -o file2.o -c file2.c
cc -o file3.o -c file3.c
diff --git a/doc/generated/examples/troubleshoot_explain3_1.xml b/doc/generated/examples/troubleshoot_explain3_1.xml
index 7e89a26..bacb7e8 100644
--- a/doc/generated/examples/troubleshoot_explain3_1.xml
+++ b/doc/generated/examples/troubleshoot_explain3_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
cc -o file1.o -c -I. file1.c
cc -o file2.o -c -I. file2.c
cc -o file3.o -c -I. file3.c
diff --git a/doc/generated/examples/troubleshoot_findlibs_1.xml b/doc/generated/examples/troubleshoot_findlibs_1.xml
index 0b34b73..8fc4e5f 100644
--- a/doc/generated/examples/troubleshoot_findlibs_1.xml
+++ b/doc/generated/examples/troubleshoot_findlibs_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --debug=findlibs</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --debug=findlibs</userinput>
findlibs: looking for 'libfoo.a' in 'libs1' ...
findlibs: ... FOUND 'libfoo.a' in 'libs1'
findlibs: looking for 'libfoo.so' in 'libs1' ...
diff --git a/doc/generated/examples/troubleshoot_stacktrace_1.xml b/doc/generated/examples/troubleshoot_stacktrace_1.xml
index 7228f77..cc3ca7b 100644
--- a/doc/generated/examples/troubleshoot_stacktrace_1.xml
+++ b/doc/generated/examples/troubleshoot_stacktrace_1.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q</userinput>
scons: *** [prog.o] Source `prog.c' not found, needed by target `prog.o'.
</screen>
diff --git a/doc/generated/examples/troubleshoot_stacktrace_2.xml b/doc/generated/examples/troubleshoot_stacktrace_2.xml
index 6b88dd1..1ab65ee 100644
--- a/doc/generated/examples/troubleshoot_stacktrace_2.xml
+++ b/doc/generated/examples/troubleshoot_stacktrace_2.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --debug=stacktrace</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --debug=stacktrace</userinput>
scons: *** [prog.o] Source `prog.c' not found, needed by target `prog.o'.
scons: internal stack trace:
File "bootstrap/src/engine/SCons/Job.py", line 199, in start
task.prepare()
- File "bootstrap/src/engine/SCons/Script/Main.py", line 168, in prepare
+ File "bootstrap/src/engine/SCons/Script/Main.py", line 173, in prepare
return SCons.Taskmaster.OutOfDateTask.prepare(self)
- File "bootstrap/src/engine/SCons/Taskmaster.py", line 189, in prepare
+ File "bootstrap/src/engine/SCons/Taskmaster.py", line 191, in prepare
executor.prepare()
- File "bootstrap/src/engine/SCons/Executor.py", line 392, in prepare
+ File "bootstrap/src/engine/SCons/Executor.py", line 396, in prepare
raise SCons.Errors.StopError(msg % (s, self.batches[0].targets[0]))
</screen>
diff --git a/doc/generated/examples/troubleshoot_taskmastertrace_1.xml b/doc/generated/examples/troubleshoot_taskmastertrace_1.xml
index f1c2582..578951d 100644
--- a/doc/generated/examples/troubleshoot_taskmastertrace_1.xml
+++ b/doc/generated/examples/troubleshoot_taskmastertrace_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --taskmastertrace=- prog</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --taskmastertrace=- prog</userinput>
Taskmaster: Looking for a node to evaluate
Taskmaster: Considering node &lt;no_state 0 'prog'&gt; and its children:
diff --git a/doc/generated/examples/troubleshoot_tree1_1.xml b/doc/generated/examples/troubleshoot_tree1_1.xml
index c082c0e..4ccadc6 100644
--- a/doc/generated/examples/troubleshoot_tree1_1.xml
+++ b/doc/generated/examples/troubleshoot_tree1_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=all</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --tree=all</userinput>
cc -o f1.o -c -I. f1.c
cc -o f2.o -c -I. f2.c
cc -o f3.o -c -I. f3.c
diff --git a/doc/generated/examples/troubleshoot_tree1_2.xml b/doc/generated/examples/troubleshoot_tree1_2.xml
index 0a27f8b..0bd4874 100644
--- a/doc/generated/examples/troubleshoot_tree1_2.xml
+++ b/doc/generated/examples/troubleshoot_tree1_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=all f2.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --tree=all f2.o</userinput>
cc -o f2.o -c -I. f2.c
+-f2.o
+-f2.c
diff --git a/doc/generated/examples/troubleshoot_tree1_3.xml b/doc/generated/examples/troubleshoot_tree1_3.xml
index 7d26ee9..75fa841 100644
--- a/doc/generated/examples/troubleshoot_tree1_3.xml
+++ b/doc/generated/examples/troubleshoot_tree1_3.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=all f1.o f3.o</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --tree=all f1.o f3.o</userinput>
cc -o f1.o -c -I. f1.c
+-f1.o
+-f1.c
diff --git a/doc/generated/examples/troubleshoot_tree1_4.xml b/doc/generated/examples/troubleshoot_tree1_4.xml
index 0d974db..409bce9 100644
--- a/doc/generated/examples/troubleshoot_tree1_4.xml
+++ b/doc/generated/examples/troubleshoot_tree1_4.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=status</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --tree=status</userinput>
cc -o f1.o -c -I. f1.c
cc -o f2.o -c -I. f2.c
cc -o f3.o -c -I. f3.c
diff --git a/doc/generated/examples/troubleshoot_tree1_5.xml b/doc/generated/examples/troubleshoot_tree1_5.xml
index a219aef..b852ab0 100644
--- a/doc/generated/examples/troubleshoot_tree1_5.xml
+++ b/doc/generated/examples/troubleshoot_tree1_5.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=derived</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --tree=derived</userinput>
cc -o f1.o -c -I. f1.c
cc -o f2.o -c -I. f2.c
cc -o f3.o -c -I. f3.c
diff --git a/doc/generated/examples/troubleshoot_tree1_6.xml b/doc/generated/examples/troubleshoot_tree1_6.xml
index 4d3c972..a0d42d7 100644
--- a/doc/generated/examples/troubleshoot_tree1_6.xml
+++ b/doc/generated/examples/troubleshoot_tree1_6.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=derived,status</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --tree=derived,status</userinput>
cc -o f1.o -c -I. f1.c
cc -o f2.o -c -I. f2.c
cc -o f3.o -c -I. f3.c
diff --git a/doc/generated/examples/troubleshoot_tree2_1.xml b/doc/generated/examples/troubleshoot_tree2_1.xml
index 7b786e3..85febf5 100644
--- a/doc/generated/examples/troubleshoot_tree2_1.xml
+++ b/doc/generated/examples/troubleshoot_tree2_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=all</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --tree=all</userinput>
cc -o f1.o -c -I. f1.c
cc -o f2.o -c -I. f2.c
cc -o f3.o -c -I. f3.c
diff --git a/doc/generated/examples/troubleshoot_tree2_2.xml b/doc/generated/examples/troubleshoot_tree2_2.xml
index 2338622..5380fad 100644
--- a/doc/generated/examples/troubleshoot_tree2_2.xml
+++ b/doc/generated/examples/troubleshoot_tree2_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q --tree=prune</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q --tree=prune</userinput>
cc -o f1.o -c -I. f1.c
cc -o f2.o -c -I. f2.c
cc -o f3.o -c -I. f3.c
diff --git a/doc/generated/examples/variants_ex_1.xml b/doc/generated/examples/variants_ex_1.xml
index cbc47ab..12a14d6 100644
--- a/doc/generated/examples/variants_ex_1.xml
+++ b/doc/generated/examples/variants_ex_1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">% <userinput>scons -Q OS=linux</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">% <userinput>scons -Q OS=linux</userinput>
Install file: "build/linux/world/world.h" as "export/linux/include/world.h"
cc -o build/linux/hello/hello.o -c -Iexport/linux/include build/linux/hello/hello.c
cc -o build/linux/world/world.o -c -Iexport/linux/include build/linux/world/world.c
diff --git a/doc/generated/examples/variants_ex_2.xml b/doc/generated/examples/variants_ex_2.xml
index ac883de..c129cc4 100644
--- a/doc/generated/examples/variants_ex_2.xml
+++ b/doc/generated/examples/variants_ex_2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">C:\&gt;<userinput>scons -Q OS=windows</userinput>
+<screen xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">C:\&gt;<userinput>scons -Q OS=windows</userinput>
Install file: "build/windows/world/world.h" as "export/windows/include/world.h"
cl /Fobuild\windows\hello\hello.obj /c build\windows\hello\hello.c /nologo /Iexport\windows\include
cl /Fobuild\windows\world\world.obj /c build\windows\world\world.c /nologo /Iexport\windows\include
diff --git a/doc/generated/functions.gen b/doc/generated/functions.gen
index 072b91c..62a9ab3 100644
--- a/doc/generated/functions.gen
+++ b/doc/generated/functions.gen
@@ -12,7 +12,7 @@
%variables-mod;
]>
-<variablelist xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<variablelist xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<varlistentry id="f-Action">
<term>
<literal>Action(action, [cmd/str/fun, [var, ...]] [option=value, ...])</literal>
diff --git a/doc/generated/tools.gen b/doc/generated/tools.gen
index a0a709e..5e4c8bd 100644
--- a/doc/generated/tools.gen
+++ b/doc/generated/tools.gen
@@ -12,7 +12,7 @@
%variables-mod;
]>
-<variablelist xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<variablelist xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<varlistentry id="t-386asm">
<term>386asm</term>
<listitem>
@@ -142,10 +142,9 @@ for the platform on which SCons is running.
<term>dmd</term>
<listitem>
<para xmlns="http://www.scons.org/dbxsd/v1.0">
-Sets construction variables for D language compilers
-(the Digital Mars D compiler, or GDC).
+Sets construction variables for D language compiler DMD.
</para>
-</listitem>
+<para>Sets: &cv-link-DC;, &cv-link-DCOM;, &cv-link-DDEBUG;, &cv-link-DDEBUGPREFIX;, &cv-link-DDEBUGSUFFIX;, &cv-link-DFILESUFFIX;, &cv-link-DFLAGPREFIX;, &cv-link-DFLAGS;, &cv-link-DFLAGSUFFIX;, &cv-link-DINCPREFIX;, &cv-link-DINCSUFFIX;, &cv-link-DLIB;, &cv-link-DLIBCOM;, &cv-link-DLIBDIRPREFIX;, &cv-link-DLIBDIRSUFFIX;, &cv-link-DLIBFLAGPREFIX;, &cv-link-DLIBFLAGSUFFIX;, &cv-link-DLIBLINKPREFIX;, &cv-link-DLIBLINKSUFFIX;, &cv-link-DLINK;, &cv-link-DLINKCOM;, &cv-link-DLINKFLAGS;, &cv-link-DPATH;, &cv-link-DVERPREFIX;, &cv-link-DVERSIONS;, &cv-link-DVERSUFFIX;, &cv-link-RPATHPREFIX;, &cv-link-RPATHSUFFIX;, &cv-link-SHDC;, &cv-link-SHDCOM;, &cv-link-SHDLINK;, &cv-link-SHDLINKCOM;, &cv-link-SHDLINKFLAGS;, &cv-link-STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME;, &cv-link-_DDEBUGFLAGS;, &cv-link-_DFLAGS;, &cv-link-_DINCFLAGS;, &cv-link-_DLIBDIRFLAGS;, &cv-link-_DLIBFLAGS;, &cv-link-_DLIBFLAGS;, &cv-link-_DVERFLAGS;, &cv-link-_RPATH;.</para></listitem>
</varlistentry>
<varlistentry id="t-docbook">
<term>docbook</term>
@@ -375,6 +374,14 @@ Set construction variables for the <application xmlns="http://www.scons.org/dbxs
</para>
<para>Sets: &cv-link-CC;, &cv-link-CCVERSION;, &cv-link-SHCCFLAGS;.</para></listitem>
</varlistentry>
+ <varlistentry id="t-gdc">
+ <term>gdc</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the D language compiler GDC.
+</para>
+<para>Sets: &cv-link-DC;, &cv-link-DCOM;, &cv-link-DDEBUG;, &cv-link-DDEBUGPREFIX;, &cv-link-DDEBUGSUFFIX;, &cv-link-DFILESUFFIX;, &cv-link-DFLAGPREFIX;, &cv-link-DFLAGS;, &cv-link-DFLAGSUFFIX;, &cv-link-DINCPREFIX;, &cv-link-DINCSUFFIX;, &cv-link-DLIB;, &cv-link-DLIBCOM;, &cv-link-DLIBFLAGPREFIX;, &cv-link-DLIBFLAGSUFFIX;, &cv-link-DLINK;, &cv-link-DLINKCOM;, &cv-link-DLINKFLAGPREFIX;, &cv-link-DLINKFLAGS;, &cv-link-DLINKFLAGSUFFIX;, &cv-link-DPATH;, &cv-link-DVERPREFIX;, &cv-link-DVERSIONS;, &cv-link-DVERSUFFIX;, &cv-link-RPATHPREFIX;, &cv-link-RPATHSUFFIX;, &cv-link-SHDC;, &cv-link-SHDCOM;, &cv-link-SHDLINK;, &cv-link-SHDLINKCOM;, &cv-link-SHDLINKFLAGS;, &cv-link-STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME;, &cv-link-_DDEBUGFLAGS;, &cv-link-_DFLAGS;, &cv-link-_DINCFLAGS;, &cv-link-_DLIBFLAGS;, &cv-link-_DVERFLAGS;, &cv-link-_RPATH;.</para></listitem>
+ </varlistentry>
<varlistentry id="t-gettext">
<term>gettext</term>
<listitem>
@@ -586,6 +593,14 @@ Sets construction variables for the <application xmlns="http://www.scons.org/dbx
</para>
<para>Sets: &cv-link-LATEX;, &cv-link-LATEXCOM;, &cv-link-LATEXFLAGS;.</para><para>Uses: &cv-link-LATEXCOMSTR;.</para></listitem>
</varlistentry>
+ <varlistentry id="t-ldc">
+ <term>ldc</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Sets construction variables for the D language compiler LDC2.
+</para>
+<para>Sets: &cv-link-DC;, &cv-link-DCOM;, &cv-link-DDEBUG;, &cv-link-DDEBUGPREFIX;, &cv-link-DDEBUGSUFFIX;, &cv-link-DFILESUFFIX;, &cv-link-DFLAGPREFIX;, &cv-link-DFLAGS;, &cv-link-DFLAGSUFFIX;, &cv-link-DINCPREFIX;, &cv-link-DINCSUFFIX;, &cv-link-DLIB;, &cv-link-DLIBCOM;, &cv-link-DLIBDIRPREFIX;, &cv-link-DLIBDIRSUFFIX;, &cv-link-DLIBFLAGPREFIX;, &cv-link-DLIBFLAGSUFFIX;, &cv-link-DLIBLINKPREFIX;, &cv-link-DLIBLINKSUFFIX;, &cv-link-DLINK;, &cv-link-DLINKCOM;, &cv-link-DLINKFLAGPREFIX;, &cv-link-DLINKFLAGS;, &cv-link-DLINKFLAGSUFFIX;, &cv-link-DPATH;, &cv-link-DVERPREFIX;, &cv-link-DVERSIONS;, &cv-link-DVERSUFFIX;, &cv-link-RPATHPREFIX;, &cv-link-RPATHSUFFIX;, &cv-link-SHDC;, &cv-link-SHDCOM;, &cv-link-SHDLINK;, &cv-link-SHDLINKCOM;, &cv-link-SHDLINKFLAGS;, &cv-link-STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME;, &cv-link-_DDEBUGFLAGS;, &cv-link-_DFLAGS;, &cv-link-_DINCFLAGS;, &cv-link-_DLIBDIRFLAGS;, &cv-link-_DLIBFLAGS;, &cv-link-_DLIBFLAGS;, &cv-link-_DVERFLAGS;, &cv-link-_RPATH;.</para></listitem>
+ </varlistentry>
<varlistentry id="t-lex">
<term>lex</term>
<listitem>
@@ -752,19 +767,19 @@ Sets construction variables for the
</para>
<para>Sets: &cv-link-AS;, &cv-link-ASCOM;, &cv-link-ASFLAGS;, &cv-link-ASPPCOM;, &cv-link-ASPPFLAGS;.</para><para>Uses: &cv-link-ASCOMSTR;, &cv-link-ASPPCOMSTR;.</para></listitem>
</varlistentry>
- <varlistentry id="t-packaging">
- <term>packaging</term>
+ <varlistentry id="t-Packaging">
+ <term>Packaging</term>
<listitem>
<para xmlns="http://www.scons.org/dbxsd/v1.0">
-A framework for building binary and source packages.
+Sets construction variables for the <function xmlns="http://www.scons.org/dbxsd/v1.0">Package</function> Builder.
</para>
</listitem>
</varlistentry>
- <varlistentry id="t-Packaging">
- <term>Packaging</term>
+ <varlistentry id="t-packaging">
+ <term>packaging</term>
<listitem>
<para xmlns="http://www.scons.org/dbxsd/v1.0">
-Sets construction variables for the <function xmlns="http://www.scons.org/dbxsd/v1.0">Package</function> Builder.
+A framework for building binary and source packages.
</para>
</listitem>
</varlistentry>
diff --git a/doc/generated/tools.mod b/doc/generated/tools.mod
index 0a746b0..13072bf 100644
--- a/doc/generated/tools.mod
+++ b/doc/generated/tools.mod
@@ -37,6 +37,7 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
<!ENTITY t-g77 "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>g77</literal>">
<!ENTITY t-gas "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>gas</literal>">
<!ENTITY t-gcc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>gcc</literal>">
+<!ENTITY t-gdc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>gdc</literal>">
<!ENTITY t-gettext "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>gettext</literal>">
<!ENTITY t-gfortran "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>gfortran</literal>">
<!ENTITY t-gnulink "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>gnulink</literal>">
@@ -56,6 +57,7 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
<!ENTITY t-javac "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>javac</literal>">
<!ENTITY t-javah "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>javah</literal>">
<!ENTITY t-latex "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>latex</literal>">
+<!ENTITY t-ldc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>ldc</literal>">
<!ENTITY t-lex "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>lex</literal>">
<!ENTITY t-link "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>link</literal>">
<!ENTITY t-linkloc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>linkloc</literal>">
@@ -74,8 +76,8 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
<!ENTITY t-mwcc "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>mwcc</literal>">
<!ENTITY t-mwld "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>mwld</literal>">
<!ENTITY t-nasm "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>nasm</literal>">
-<!ENTITY t-packaging "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>packaging</literal>">
<!ENTITY t-Packaging "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>Packaging</literal>">
+<!ENTITY t-packaging "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>packaging</literal>">
<!ENTITY t-pdf "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>pdf</literal>">
<!ENTITY t-pdflatex "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>pdflatex</literal>">
<!ENTITY t-pdftex "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>pdftex</literal>">
@@ -144,6 +146,7 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
<!ENTITY t-link-g77 "<link linkend='t-g77' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>g77</literal></link>">
<!ENTITY t-link-gas "<link linkend='t-gas' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>gas</literal></link>">
<!ENTITY t-link-gcc "<link linkend='t-gcc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>gcc</literal></link>">
+<!ENTITY t-link-gdc "<link linkend='t-gdc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>gdc</literal></link>">
<!ENTITY t-link-gettext "<link linkend='t-gettext' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>gettext</literal></link>">
<!ENTITY t-link-gfortran "<link linkend='t-gfortran' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>gfortran</literal></link>">
<!ENTITY t-link-gnulink "<link linkend='t-gnulink' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>gnulink</literal></link>">
@@ -163,6 +166,7 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
<!ENTITY t-link-javac "<link linkend='t-javac' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>javac</literal></link>">
<!ENTITY t-link-javah "<link linkend='t-javah' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>javah</literal></link>">
<!ENTITY t-link-latex "<link linkend='t-latex' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>latex</literal></link>">
+<!ENTITY t-link-ldc "<link linkend='t-ldc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>ldc</literal></link>">
<!ENTITY t-link-lex "<link linkend='t-lex' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>lex</literal></link>">
<!ENTITY t-link-link "<link linkend='t-link' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>link</literal></link>">
<!ENTITY t-link-linkloc "<link linkend='t-linkloc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>linkloc</literal></link>">
@@ -181,8 +185,8 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
<!ENTITY t-link-mwcc "<link linkend='t-mwcc' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>mwcc</literal></link>">
<!ENTITY t-link-mwld "<link linkend='t-mwld' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>mwld</literal></link>">
<!ENTITY t-link-nasm "<link linkend='t-nasm' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>nasm</literal></link>">
-<!ENTITY t-link-packaging "<link linkend='t-packaging' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>packaging</literal></link>">
<!ENTITY t-link-Packaging "<link linkend='t-Packaging' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>Packaging</literal></link>">
+<!ENTITY t-link-packaging "<link linkend='t-packaging' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>packaging</literal></link>">
<!ENTITY t-link-pdf "<link linkend='t-pdf' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>pdf</literal></link>">
<!ENTITY t-link-pdflatex "<link linkend='t-pdflatex' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>pdflatex</literal></link>">
<!ENTITY t-link-pdftex "<link linkend='t-pdftex' xmlns='http://www.scons.org/dbxsd/v1.0'><literal>pdftex</literal></link>">
diff --git a/doc/generated/variables.gen b/doc/generated/variables.gen
index efdac8e..34b9017 100644
--- a/doc/generated/variables.gen
+++ b/doc/generated/variables.gen
@@ -12,7 +12,7 @@
%variables-mod;
]>
-<variablelist xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+<variablelist xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<varlistentry id="cv-AR">
<term>AR</term>
<listitem>
@@ -863,6 +863,54 @@ depending on the specific C++ compiler being used.
</para>
</listitem>
</varlistentry>
+ <varlistentry id="cv-DC">
+ <term>DC</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DC.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DCOM">
+ <term>DCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DCOM.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DDEBUG">
+ <term>DDEBUG</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DDEBUG.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_DDEBUGFLAGS">
+ <term>_DDEBUGFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+_DDEBUGFLAGS.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DDEBUGPREFIX">
+ <term>DDEBUGPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DDEBUGPREFIX.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DDEBUGSUFFIX">
+ <term>DDEBUGSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DDEBUGSUFFIX.
+</para>
+</listitem>
+ </varlistentry>
<varlistentry id="cv-DESCRIPTION">
<term>DESCRIPTION</term>
<listitem>
@@ -886,6 +934,70 @@ section of an RPM
</para>
</listitem>
</varlistentry>
+ <varlistentry id="cv-DFILESUFFIX">
+ <term>DFILESUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DFILESUFFIX.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DFLAGPREFIX">
+ <term>DFLAGPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DFLAGPREFIX.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_DFLAGS">
+ <term>_DFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+_DFLAGS.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DFLAGS">
+ <term>DFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DFLAGS.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DFLAGSUFFIX">
+ <term>DFLAGSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DFLAGSUFFIX.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_DINCFLAGS">
+ <term>_DINCFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+_DINCFLAGS.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DINCPREFIX">
+ <term>DINCPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DINCPREFIX.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DINCSUFFIX">
+ <term>DINCSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DINCSUFFIX.
+</para>
+</listitem>
+ </varlistentry>
<varlistentry id="cv-Dir">
<term>Dir</term>
<listitem>
@@ -909,6 +1021,126 @@ into a list of Dir instances relative to the target being built.
</para>
</listitem>
</varlistentry>
+ <varlistentry id="cv-DLIB">
+ <term>DLIB</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DLIB.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DLIBCOM">
+ <term>DLIBCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DLIBCOM.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_DLIBDIRFLAGS">
+ <term>_DLIBDIRFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+_DLIBDIRFLAGS.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DLIBDIRPREFIX">
+ <term>DLIBDIRPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DLIBDIRPREFIX.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DLIBDIRSUFFIX">
+ <term>DLIBDIRSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DLIBDIRSUFFIX.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DLIBFLAGPREFIX">
+ <term>DLIBFLAGPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DLIBFLAGPREFIX.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-_DLIBFLAGS">
+ <term>_DLIBFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+_DLIBFLAGS.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DLIBFLAGSUFFIX">
+ <term>DLIBFLAGSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DLIBFLAGSUFFIX.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DLIBLINKPREFIX">
+ <term>DLIBLINKPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DLIBLINKPREFIX.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DLIBLINKSUFFIX">
+ <term>DLIBLINKSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DLIBLINKSUFFIX.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DLINK">
+ <term>DLINK</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DLINK.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DLINKCOM">
+ <term>DLINKCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DLINKCOM.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DLINKFLAGPREFIX">
+ <term>DLINKFLAGPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DLINKFLAGPREFIX.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DLINKFLAGS">
+ <term>DLINKFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DLINKFLAGS.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DLINKFLAGSUFFIX">
+ <term>DLINKFLAGSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DLINKFLAGSUFFIX.
+</para>
+</listitem>
+ </varlistentry>
<varlistentry id="cv-DOCBOOK_DEFAULT_XSL_EPUB">
<term>DOCBOOK_DEFAULT_XSL_EPUB</term>
<listitem>
@@ -1106,6 +1338,14 @@ for <literal>saxon</literal> and <literal>saxon-xslt</literal>, respectively.
</para>
</listitem>
</varlistentry>
+ <varlistentry id="cv-DPATH">
+ <term>DPATH</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DPATH.
+</para>
+</listitem>
+ </varlistentry>
<varlistentry id="cv-DSUFFIXES">
<term>DSUFFIXES</term>
<listitem>
@@ -1120,6 +1360,38 @@ The default list is:
</example_commands>
</listitem>
</varlistentry>
+ <varlistentry id="cv-_DVERFLAGS">
+ <term>_DVERFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+_DVERFLAGS.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DVERPREFIX">
+ <term>DVERPREFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DVERPREFIX.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DVERSIONS">
+ <term>DVERSIONS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DVERSIONS.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-DVERSUFFIX">
+ <term>DVERSUFFIX</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+DVERSUFFIX.
+</para>
+</listitem>
+ </varlistentry>
<varlistentry id="cv-DVIPDF">
<term>DVIPDF</term>
<listitem>
@@ -2370,6 +2642,15 @@ is <quote><literal>-dNOPAUSE -dBATCH -sDEVICE=pdfwrite</literal></quote>
<term>HOST_ARCH</term>
<listitem>
<para xmlns="http://www.scons.org/dbxsd/v1.0">
+ The name of the host hardware architecture used to create the Environment.
+ If a platform is specified when creating the Environment, then
+ that Platform's logic will handle setting this value.
+ This value is immutable, and should not be changed by the user after
+ the Environment is initialized.
+ Currently only set for Win32.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
Sets the host architecture for Visual Studio compiler. If not set,
default to the detected host architecture: note that this may depend
on the python you are using.
@@ -2385,16 +2666,7 @@ Valid values are the same as for <envar xmlns="http://www.scons.org/dbxsd/v1.0">
This is currently only used on Windows, but in the future it will be
used on other OSes as well.
</para>
-
-<para xmlns="http://www.scons.org/dbxsd/v1.0">
- The name of the host hardware architecture used to create the Environment.
- If a platform is specified when creating the Environment, then
- that Platform's logic will handle setting this value.
- This value is immutable, and should not be changed by the user after
- the Environment is initialized.
- Currently only set for Win32.
-</para>
- </listitem>
+</listitem>
</varlistentry>
<varlistentry id="cv-HOST_OS">
<term>HOST_OS</term>
@@ -2590,7 +2862,7 @@ The command line used to call the Java archive tool.
<para xmlns="http://www.scons.org/dbxsd/v1.0">
The string displayed when the Java archive tool
is called
-If this is not set, then <envar xmlns="http://www.scons.org/dbxsd/v1.0">$JARCOM</envar> (the command line) is displayed.
+If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-JARCOM"><envar>$JARCOM</envar></link> (the command line) is displayed.
</para>
<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
@@ -2600,7 +2872,7 @@ env = Environment(JARCOMSTR = "JARchiving $SOURCES into $TARGET")
<para xmlns="http://www.scons.org/dbxsd/v1.0">
The string displayed when the Java archive tool
is called
-If this is not set, then <link xmlns="http://www.scons.org/dbxsd/v1.0" linkend="cv-JARCOM"><envar>$JARCOM</envar></link> (the command line) is displayed.
+If this is not set, then <envar xmlns="http://www.scons.org/dbxsd/v1.0">$JARCOM</envar> (the command line) is displayed.
</para>
<example_commands xmlns="http://www.scons.org/dbxsd/v1.0">
@@ -3680,9 +3952,28 @@ If <envar xmlns="http://www.scons.org/dbxsd/v1.0">$MSVC_VERSION</envar> is not s
latest version of Visual C/C++ installed on your system. If the
specified version isn't installed, tool initialization will fail.
This variable must be passed as an argument to the Environment()
-constructor; setting it later has no effect. Set it to an unexpected
-value (e.g. "XXX") to see the valid values on your system.
+constructor; setting it later has no effect.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+Valid values for Windows are
+<literal>12.0</literal>,
+<literal>12.0Exp</literal>,
+<literal>11.0</literal>,
+<literal>11.0Exp</literal>,
+<literal>10.0</literal>,
+<literal>10.0Exp</literal>,
+<literal>9.0</literal>,
+<literal>9.0Exp</literal>,
+<literal>8.0</literal>,
+<literal>8.0Exp</literal>,
+<literal>7.1</literal>,
+<literal>7.0</literal>,
+and <literal>6.0</literal>.
+Versions ending in <literal>Exp</literal> refer to "Express" or
+"Express for Desktop" editions.
</para>
+
</listitem>
</varlistentry>
<varlistentry id="cv-MSVS">
@@ -5489,6 +5780,46 @@ to generate shared-library objects.
</para>
</listitem>
</varlistentry>
+ <varlistentry id="cv-SHDC">
+ <term>SHDC</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+SHDC.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHDCOM">
+ <term>SHDCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+SHDCOM.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHDLINK">
+ <term>SHDLINK</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+SHDLINK.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHDLINKCOM">
+ <term>SHDLINKCOM</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+SHDLINKCOM.
+</para>
+</listitem>
+ </varlistentry>
+ <varlistentry id="cv-SHDLINKFLAGS">
+ <term>SHDLINKFLAGS</term>
+ <listitem>
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
+SHDLINKFLAGS.
+</para>
+</listitem>
+ </varlistentry>
<varlistentry id="cv-SHELL">
<term>SHELL</term>
<listitem>
@@ -6061,6 +6392,14 @@ in which the command should be executed.
</para>
</listitem>
</varlistentry>
+ <varlistentry id="cv-STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME">
+ <term>STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME</term>
+ <listitem>
+ <para xmlns="http://www.scons.org/dbxsd/v1.0">
+ When this variable is true, static objects and shared objects are assumed to be the same; that is, SCons does not check for linking static objects into a shared library.
+ </para>
+ </listitem>
+ </varlistentry>
<varlistentry id="cv-SUBST_DICT">
<term>SUBST_DICT</term>
<listitem>
@@ -6374,6 +6713,13 @@ that may not be set or used in a construction environment.
<term>TARGET_ARCH</term>
<listitem>
<para xmlns="http://www.scons.org/dbxsd/v1.0">
+ The name of the target hardware architecture for the compiled objects
+ created by this Environment.
+ This defaults to the value of HOST_ARCH, and the user can override it.
+ Currently only set for Win32.
+</para>
+
+<para xmlns="http://www.scons.org/dbxsd/v1.0">
Sets the target architecture for Visual Studio compiler (i.e. the arch
of the binaries generated by the compiler). If not set, default to
<envar xmlns="http://www.scons.org/dbxsd/v1.0">$HOST_ARCH</envar>, or, if that is unset, to the architecture of the
@@ -6398,14 +6744,7 @@ and <literal>ia64</literal> (Itanium).
For example, if you want to compile 64-bit binaries, you would set
<literal>TARGET_ARCH='x86_64'</literal> in your SCons environment.
</para>
-
-<para xmlns="http://www.scons.org/dbxsd/v1.0">
- The name of the target hardware architecture for the compiled objects
- created by this Environment.
- This defaults to the value of HOST_ARCH, and the user can override it.
- Currently only set for Win32.
-</para>
- </listitem>
+</listitem>
</varlistentry>
<varlistentry id="cv-TARGET_OS">
<term>TARGET_OS</term>
diff --git a/doc/generated/variables.mod b/doc/generated/variables.mod
index b55b218..473c8a2 100644
--- a/doc/generated/variables.mod
+++ b/doc/generated/variables.mod
@@ -66,10 +66,39 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
<!ENTITY cv-CXXFILESUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CXXFILESUFFIX</envar>">
<!ENTITY cv-CXXFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CXXFLAGS</envar>">
<!ENTITY cv-CXXVERSION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$CXXVERSION</envar>">
+<!ENTITY cv-DC "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DC</envar>">
+<!ENTITY cv-DCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DCOM</envar>">
+<!ENTITY cv-DDEBUG "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DDEBUG</envar>">
+<!ENTITY cv-_DDEBUGFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_DDEBUGFLAGS</envar>">
+<!ENTITY cv-DDEBUGPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DDEBUGPREFIX</envar>">
+<!ENTITY cv-DDEBUGSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DDEBUGSUFFIX</envar>">
<!ENTITY cv-DESCRIPTION "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DESCRIPTION</envar>">
<!ENTITY cv-DESCRIPTION_lang "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DESCRIPTION_lang</envar>">
+<!ENTITY cv-DFILESUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DFILESUFFIX</envar>">
+<!ENTITY cv-DFLAGPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DFLAGPREFIX</envar>">
+<!ENTITY cv-_DFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_DFLAGS</envar>">
+<!ENTITY cv-DFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DFLAGS</envar>">
+<!ENTITY cv-DFLAGSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DFLAGSUFFIX</envar>">
+<!ENTITY cv-_DINCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_DINCFLAGS</envar>">
+<!ENTITY cv-DINCPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DINCPREFIX</envar>">
+<!ENTITY cv-DINCSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DINCSUFFIX</envar>">
<!ENTITY cv-Dir "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$Dir</envar>">
<!ENTITY cv-Dirs "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$Dirs</envar>">
+<!ENTITY cv-DLIB "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DLIB</envar>">
+<!ENTITY cv-DLIBCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DLIBCOM</envar>">
+<!ENTITY cv-_DLIBDIRFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_DLIBDIRFLAGS</envar>">
+<!ENTITY cv-DLIBDIRPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DLIBDIRPREFIX</envar>">
+<!ENTITY cv-DLIBDIRSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DLIBDIRSUFFIX</envar>">
+<!ENTITY cv-DLIBFLAGPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DLIBFLAGPREFIX</envar>">
+<!ENTITY cv-_DLIBFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_DLIBFLAGS</envar>">
+<!ENTITY cv-DLIBFLAGSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DLIBFLAGSUFFIX</envar>">
+<!ENTITY cv-DLIBLINKPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DLIBLINKPREFIX</envar>">
+<!ENTITY cv-DLIBLINKSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DLIBLINKSUFFIX</envar>">
+<!ENTITY cv-DLINK "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DLINK</envar>">
+<!ENTITY cv-DLINKCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DLINKCOM</envar>">
+<!ENTITY cv-DLINKFLAGPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DLINKFLAGPREFIX</envar>">
+<!ENTITY cv-DLINKFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DLINKFLAGS</envar>">
+<!ENTITY cv-DLINKFLAGSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DLINKFLAGSUFFIX</envar>">
<!ENTITY cv-DOCBOOK_DEFAULT_XSL_EPUB "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_DEFAULT_XSL_EPUB</envar>">
<!ENTITY cv-DOCBOOK_DEFAULT_XSL_HTML "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_DEFAULT_XSL_HTML</envar>">
<!ENTITY cv-DOCBOOK_DEFAULT_XSL_HTMLCHUNKED "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_DEFAULT_XSL_HTMLCHUNKED</envar>">
@@ -91,7 +120,12 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
<!ENTITY cv-DOCBOOK_XSLTPROCCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_XSLTPROCCOMSTR</envar>">
<!ENTITY cv-DOCBOOK_XSLTPROCFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_XSLTPROCFLAGS</envar>">
<!ENTITY cv-DOCBOOK_XSLTPROCPARAMS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DOCBOOK_XSLTPROCPARAMS</envar>">
+<!ENTITY cv-DPATH "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DPATH</envar>">
<!ENTITY cv-DSUFFIXES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DSUFFIXES</envar>">
+<!ENTITY cv-_DVERFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$_DVERFLAGS</envar>">
+<!ENTITY cv-DVERPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DVERPREFIX</envar>">
+<!ENTITY cv-DVERSIONS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DVERSIONS</envar>">
+<!ENTITY cv-DVERSUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DVERSUFFIX</envar>">
<!ENTITY cv-DVIPDF "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DVIPDF</envar>">
<!ENTITY cv-DVIPDFCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DVIPDFCOM</envar>">
<!ENTITY cv-DVIPDFCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$DVIPDFCOMSTR</envar>">
@@ -418,6 +452,11 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
<!ENTITY cv-SHCXXCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHCXXCOM</envar>">
<!ENTITY cv-SHCXXCOMSTR "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHCXXCOMSTR</envar>">
<!ENTITY cv-SHCXXFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHCXXFLAGS</envar>">
+<!ENTITY cv-SHDC "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHDC</envar>">
+<!ENTITY cv-SHDCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHDCOM</envar>">
+<!ENTITY cv-SHDLINK "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHDLINK</envar>">
+<!ENTITY cv-SHDLINKCOM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHDLINKCOM</envar>">
+<!ENTITY cv-SHDLINKFLAGS "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHDLINKFLAGS</envar>">
<!ENTITY cv-SHELL "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHELL</envar>">
<!ENTITY cv-SHF03 "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF03</envar>">
<!ENTITY cv-SHF03COM "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SHF03COM</envar>">
@@ -463,6 +502,7 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
<!ENTITY cv-SOURCE_URL "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SOURCE_URL</envar>">
<!ENTITY cv-SOURCES "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SOURCES</envar>">
<!ENTITY cv-SPAWN "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SPAWN</envar>">
+<!ENTITY cv-STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME</envar>">
<!ENTITY cv-SUBST_DICT "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SUBST_DICT</envar>">
<!ENTITY cv-SUBSTFILEPREFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SUBSTFILEPREFIX</envar>">
<!ENTITY cv-SUBSTFILESUFFIX "<envar xmlns='http://www.scons.org/dbxsd/v1.0'>$SUBSTFILESUFFIX</envar>">
@@ -648,10 +688,39 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
<!ENTITY cv-link-CXXFILESUFFIX "<link linkend='cv-CXXFILESUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CXXFILESUFFIX</envar></link>">
<!ENTITY cv-link-CXXFLAGS "<link linkend='cv-CXXFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CXXFLAGS</envar></link>">
<!ENTITY cv-link-CXXVERSION "<link linkend='cv-CXXVERSION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$CXXVERSION</envar></link>">
+<!ENTITY cv-link-DC "<link linkend='cv-DC' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DC</envar></link>">
+<!ENTITY cv-link-DCOM "<link linkend='cv-DCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DCOM</envar></link>">
+<!ENTITY cv-link-DDEBUG "<link linkend='cv-DDEBUG' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DDEBUG</envar></link>">
+<!ENTITY cv-link-_DDEBUGFLAGS "<link linkend='cv-_DDEBUGFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_DDEBUGFLAGS</envar></link>">
+<!ENTITY cv-link-DDEBUGPREFIX "<link linkend='cv-DDEBUGPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DDEBUGPREFIX</envar></link>">
+<!ENTITY cv-link-DDEBUGSUFFIX "<link linkend='cv-DDEBUGSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DDEBUGSUFFIX</envar></link>">
<!ENTITY cv-link-DESCRIPTION "<link linkend='cv-DESCRIPTION' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DESCRIPTION</envar></link>">
<!ENTITY cv-link-DESCRIPTION_lang "<link linkend='cv-DESCRIPTION_lang' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DESCRIPTION_lang</envar></link>">
+<!ENTITY cv-link-DFILESUFFIX "<link linkend='cv-DFILESUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DFILESUFFIX</envar></link>">
+<!ENTITY cv-link-DFLAGPREFIX "<link linkend='cv-DFLAGPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DFLAGPREFIX</envar></link>">
+<!ENTITY cv-link-_DFLAGS "<link linkend='cv-_DFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_DFLAGS</envar></link>">
+<!ENTITY cv-link-DFLAGS "<link linkend='cv-DFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DFLAGS</envar></link>">
+<!ENTITY cv-link-DFLAGSUFFIX "<link linkend='cv-DFLAGSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DFLAGSUFFIX</envar></link>">
+<!ENTITY cv-link-_DINCFLAGS "<link linkend='cv-_DINCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_DINCFLAGS</envar></link>">
+<!ENTITY cv-link-DINCPREFIX "<link linkend='cv-DINCPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DINCPREFIX</envar></link>">
+<!ENTITY cv-link-DINCSUFFIX "<link linkend='cv-DINCSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DINCSUFFIX</envar></link>">
<!ENTITY cv-link-Dir "<link linkend='cv-Dir' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$Dir</envar></link>">
<!ENTITY cv-link-Dirs "<link linkend='cv-Dirs' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$Dirs</envar></link>">
+<!ENTITY cv-link-DLIB "<link linkend='cv-DLIB' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DLIB</envar></link>">
+<!ENTITY cv-link-DLIBCOM "<link linkend='cv-DLIBCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DLIBCOM</envar></link>">
+<!ENTITY cv-link-_DLIBDIRFLAGS "<link linkend='cv-_DLIBDIRFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_DLIBDIRFLAGS</envar></link>">
+<!ENTITY cv-link-DLIBDIRPREFIX "<link linkend='cv-DLIBDIRPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DLIBDIRPREFIX</envar></link>">
+<!ENTITY cv-link-DLIBDIRSUFFIX "<link linkend='cv-DLIBDIRSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DLIBDIRSUFFIX</envar></link>">
+<!ENTITY cv-link-DLIBFLAGPREFIX "<link linkend='cv-DLIBFLAGPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DLIBFLAGPREFIX</envar></link>">
+<!ENTITY cv-link-_DLIBFLAGS "<link linkend='cv-_DLIBFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_DLIBFLAGS</envar></link>">
+<!ENTITY cv-link-DLIBFLAGSUFFIX "<link linkend='cv-DLIBFLAGSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DLIBFLAGSUFFIX</envar></link>">
+<!ENTITY cv-link-DLIBLINKPREFIX "<link linkend='cv-DLIBLINKPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DLIBLINKPREFIX</envar></link>">
+<!ENTITY cv-link-DLIBLINKSUFFIX "<link linkend='cv-DLIBLINKSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DLIBLINKSUFFIX</envar></link>">
+<!ENTITY cv-link-DLINK "<link linkend='cv-DLINK' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DLINK</envar></link>">
+<!ENTITY cv-link-DLINKCOM "<link linkend='cv-DLINKCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DLINKCOM</envar></link>">
+<!ENTITY cv-link-DLINKFLAGPREFIX "<link linkend='cv-DLINKFLAGPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DLINKFLAGPREFIX</envar></link>">
+<!ENTITY cv-link-DLINKFLAGS "<link linkend='cv-DLINKFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DLINKFLAGS</envar></link>">
+<!ENTITY cv-link-DLINKFLAGSUFFIX "<link linkend='cv-DLINKFLAGSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DLINKFLAGSUFFIX</envar></link>">
<!ENTITY cv-link-DOCBOOK_DEFAULT_XSL_EPUB "<link linkend='cv-DOCBOOK_DEFAULT_XSL_EPUB' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_DEFAULT_XSL_EPUB</envar></link>">
<!ENTITY cv-link-DOCBOOK_DEFAULT_XSL_HTML "<link linkend='cv-DOCBOOK_DEFAULT_XSL_HTML' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_DEFAULT_XSL_HTML</envar></link>">
<!ENTITY cv-link-DOCBOOK_DEFAULT_XSL_HTMLCHUNKED "<link linkend='cv-DOCBOOK_DEFAULT_XSL_HTMLCHUNKED' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_DEFAULT_XSL_HTMLCHUNKED</envar></link>">
@@ -673,7 +742,12 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
<!ENTITY cv-link-DOCBOOK_XSLTPROCCOMSTR "<link linkend='cv-DOCBOOK_XSLTPROCCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_XSLTPROCCOMSTR</envar></link>">
<!ENTITY cv-link-DOCBOOK_XSLTPROCFLAGS "<link linkend='cv-DOCBOOK_XSLTPROCFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_XSLTPROCFLAGS</envar></link>">
<!ENTITY cv-link-DOCBOOK_XSLTPROCPARAMS "<link linkend='cv-DOCBOOK_XSLTPROCPARAMS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DOCBOOK_XSLTPROCPARAMS</envar></link>">
+<!ENTITY cv-link-DPATH "<link linkend='cv-DPATH' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DPATH</envar></link>">
<!ENTITY cv-link-DSUFFIXES "<link linkend='cv-DSUFFIXES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DSUFFIXES</envar></link>">
+<!ENTITY cv-link-_DVERFLAGS "<link linkend='cv-_DVERFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$_DVERFLAGS</envar></link>">
+<!ENTITY cv-link-DVERPREFIX "<link linkend='cv-DVERPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DVERPREFIX</envar></link>">
+<!ENTITY cv-link-DVERSIONS "<link linkend='cv-DVERSIONS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DVERSIONS</envar></link>">
+<!ENTITY cv-link-DVERSUFFIX "<link linkend='cv-DVERSUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DVERSUFFIX</envar></link>">
<!ENTITY cv-link-DVIPDF "<link linkend='cv-DVIPDF' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DVIPDF</envar></link>">
<!ENTITY cv-link-DVIPDFCOM "<link linkend='cv-DVIPDFCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DVIPDFCOM</envar></link>">
<!ENTITY cv-link-DVIPDFCOMSTR "<link linkend='cv-DVIPDFCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$DVIPDFCOMSTR</envar></link>">
@@ -1000,6 +1074,11 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
<!ENTITY cv-link-SHCXXCOM "<link linkend='cv-SHCXXCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHCXXCOM</envar></link>">
<!ENTITY cv-link-SHCXXCOMSTR "<link linkend='cv-SHCXXCOMSTR' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHCXXCOMSTR</envar></link>">
<!ENTITY cv-link-SHCXXFLAGS "<link linkend='cv-SHCXXFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHCXXFLAGS</envar></link>">
+<!ENTITY cv-link-SHDC "<link linkend='cv-SHDC' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHDC</envar></link>">
+<!ENTITY cv-link-SHDCOM "<link linkend='cv-SHDCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHDCOM</envar></link>">
+<!ENTITY cv-link-SHDLINK "<link linkend='cv-SHDLINK' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHDLINK</envar></link>">
+<!ENTITY cv-link-SHDLINKCOM "<link linkend='cv-SHDLINKCOM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHDLINKCOM</envar></link>">
+<!ENTITY cv-link-SHDLINKFLAGS "<link linkend='cv-SHDLINKFLAGS' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHDLINKFLAGS</envar></link>">
<!ENTITY cv-link-SHELL "<link linkend='cv-SHELL' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHELL</envar></link>">
<!ENTITY cv-link-SHF03 "<link linkend='cv-SHF03' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF03</envar></link>">
<!ENTITY cv-link-SHF03COM "<link linkend='cv-SHF03COM' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SHF03COM</envar></link>">
@@ -1045,6 +1124,7 @@ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
<!ENTITY cv-link-SOURCE_URL "<link linkend='cv-SOURCE_URL' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SOURCE_URL</envar></link>">
<!ENTITY cv-link-SOURCES "<link linkend='cv-SOURCES' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SOURCES</envar></link>">
<!ENTITY cv-link-SPAWN "<link linkend='cv-SPAWN' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SPAWN</envar></link>">
+<!ENTITY cv-link-STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME "<link linkend='cv-STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME</envar></link>">
<!ENTITY cv-link-SUBST_DICT "<link linkend='cv-SUBST_DICT' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SUBST_DICT</envar></link>">
<!ENTITY cv-link-SUBSTFILEPREFIX "<link linkend='cv-SUBSTFILEPREFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SUBSTFILEPREFIX</envar></link>">
<!ENTITY cv-link-SUBSTFILESUFFIX "<link linkend='cv-SUBSTFILESUFFIX' xmlns='http://www.scons.org/dbxsd/v1.0'><envar>$SUBSTFILESUFFIX</envar></link>">
diff --git a/doc/man/SConstruct b/doc/man/SConstruct
index 7127ff2..51cdd44 100644
--- a/doc/man/SConstruct
+++ b/doc/man/SConstruct
@@ -3,7 +3,7 @@
#
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
diff --git a/doc/man/epub.xsl b/doc/man/epub.xsl
index 18da970..ebbd85a 100644
--- a/doc/man/epub.xsl
+++ b/doc/man/epub.xsl
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/man/html.xsl b/doc/man/html.xsl
index 250bdad..f1c94ac 100644
--- a/doc/man/html.xsl
+++ b/doc/man/html.xsl
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -32,6 +32,7 @@
<xsl:param name="l10n.gentext.default.language" select="'en'"/>
<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="section.label.includes.component.label" select="1"/>
<xsl:param name="html.stylesheet" select="'scons.css'"/>
<xsl:param name="generate.toc">
/appendix toc,title
diff --git a/doc/man/pdf.xsl b/doc/man/pdf.xsl
index 5eb5627..1ce5454 100644
--- a/doc/man/pdf.xsl
+++ b/doc/man/pdf.xsl
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -33,6 +33,7 @@
<xsl:include href="scons_title.xsl"/>
<xsl:param name="l10n.gentext.default.language" select="'en'"/>
<xsl:param name="section.autolabel" select="1"></xsl:param>
+<xsl:param name="section.label.includes.component.label" select="1"/>
<xsl:param name="paper.type" select="'letter'"></xsl:param>
<xsl:param name="body.start.indent">0pt</xsl:param>
<xsl:param name="shade.verbatim" select="1"></xsl:param>
diff --git a/doc/man/scons-time.xml b/doc/man/scons-time.xml
index 026c24d..4c46ae0 100644
--- a/doc/man/scons-time.xml
+++ b/doc/man/scons-time.xml
@@ -1,43 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- lifted from troff+man by doclifter -->
-<refentry id='sconstime1'
- xmlns="http://www.scons.org/dbxsd/v1.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
-<!-- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation -->
+<!--
-<!-- Permission is hereby granted, free of charge, to any person obtaining -->
-<!-- a copy of this software and associated documentation files (the -->
-<!-- "Software"), to deal in the Software without restriction, including -->
-<!-- without limitation the rights to use, copy, modify, merge, publish, -->
-<!-- distribute, sublicense, and/or sell copies of the Software, and to -->
-<!-- permit persons to whom the Software is furnished to do so, subject to -->
-<!-- the following conditions: -->
+ Copyright (c) 2001 - 2014 The SCons Foundation
-<!-- The above copyright notice and this permission notice shall be included -->
-<!-- in all copies or substantial portions of the Software. -->
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
-<!-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -->
-<!-- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -->
-<!-- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -->
-<!-- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -->
-<!-- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -->
-<!-- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -->
-<!-- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -->
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
-<!-- doc/man/scons-time.xml 2014/03/02 14:18:15 garyo -->
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-<!-- ES \- Example Start \- indents and turns off line fill -->
-<!-- EE \- Example End \- ends indent and turns line fill back on -->
-<!-- '\"========================================================================== -->
-<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
-<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
-<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
-<!-- '\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -->
+-->
+
+<!-- lifted from troff+man by doclifter -->
+<refentry id='sconstime1'
+ xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<refmeta>
<refentrytitle>SCONS-TIME</refentrytitle>
<manvolnum>1</manvolnum>
-<refmiscinfo class='source'>March 2014</refmiscinfo>
+<refmiscinfo class='source'>July 2014</refmiscinfo>
</refmeta>
<refnamediv id='name'>
<refname>scons-time</refname>
diff --git a/doc/man/scons.css b/doc/man/scons.css
index 6941abb..ff9b5a1 100644
--- a/doc/man/scons.css
+++ b/doc/man/scons.css
@@ -6,11 +6,11 @@ body {
}
-a {
+a:link {
color: #80572a;
}
-a:hover {
+a:link:hover {
color: #d72816;
text-decoration: none;
}
diff --git a/doc/man/scons.xml b/doc/man/scons.xml
index d9bd74d..af73173 100644
--- a/doc/man/scons.xml
+++ b/doc/man/scons.xml
@@ -1,4 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
<!DOCTYPE reference [
<!ENTITY % version SYSTEM "../version.xml">
@@ -17,29 +41,7 @@
<!-- lifted from troff+man by doclifter -->
<reference xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
-<!-- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation -->
-
-<!-- Permission is hereby granted, free of charge, to any person obtaining -->
-<!-- a copy of this software and associated documentation files (the -->
-<!-- "Software"), to deal in the Software without restriction, including -->
-<!-- without limitation the rights to use, copy, modify, merge, publish, -->
-<!-- distribute, sublicense, and/or sell copies of the Software, and to -->
-<!-- permit persons to whom the Software is furnished to do so, subject to -->
-<!-- the following conditions: -->
-
-<!-- The above copyright notice and this permission notice shall be included -->
-<!-- in all copies or substantial portions of the Software. -->
-
-<!-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -->
-<!-- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -->
-<!-- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -->
-<!-- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -->
-<!-- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -->
-<!-- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -->
-<!-- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -->
-
-<!-- doc/man/scons.xml 2014/03/02 14:18:15 garyo -->
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<referenceinfo>
<title>SCons &buildversion;</title>
@@ -50,19 +52,19 @@
<surname>Knight</surname>
</author>
- <corpauthor>Steven Knight</corpauthor>
+ <corpauthor>Steven Knight and the SCons Development Team</corpauthor>
- <pubdate>2004, 2005, 2006, 2007, 2008, 2009, 2010</pubdate>
+ <pubdate>2004 - 2014</pubdate>
<copyright>
- <year>2004, 2005, 2006, 2007, 2008, 2009, 2010</year>
- <holder>Steven Knight</holder>
+ <year>2004 - 2014</year>
+ <holder>The SCons Foundation</holder>
</copyright>
<releaseinfo>version &buildversion;</releaseinfo>
-
+
<mediaobject role="cover"><imageobject><imagedata fileref="cover.jpg" format="JPG"/></imageobject></mediaobject>
-
+
</referenceinfo>
<title>SCons &buildversion;</title>
@@ -73,7 +75,7 @@
<refmeta>
<refentrytitle>SCONS</refentrytitle>
<manvolnum>1</manvolnum>
-<refmiscinfo class='source'>March 2014</refmiscinfo>
+<refmiscinfo class='source'>July 2014</refmiscinfo>
</refmeta>
<refnamediv id='name'>
<refname>scons</refname>
@@ -4934,7 +4936,7 @@ multi-stage builder.</para>
<term>single_source</term>
<listitem>
<para>Specifies that this builder expects exactly one source file per call. Giving
-more than one source file without target files results in implicitely calling
+more than one source file without target files results in implicitly calling
the builder multiple times (once for each source given). Giving multiple
source files together with target files results in a UserError exception.</para>
@@ -5116,7 +5118,7 @@ function will turn its
<emphasis role="bold">action</emphasis>
keyword argument into an appropriate
internal Action object.
-You can also explicity create Action objects
+You can also explicitly create Action objects
using the
<emphasis role="bold">Action</emphasis>()
global function,
@@ -6123,7 +6125,7 @@ So in the following case:</para>
<literallayout class="monospaced">
env['COND'] = 0
env.Command('foo.out', 'foo.in',
-<!-- '''echo ${COND==1 and 'FOO' or 'BAR'} &gt; $TARGET''') -->
+ '''echo ${COND==1 and 'FOO' or 'BAR'} &gt; $TARGET''')
</literallayout>
<para>the command executed will be either</para>
<literallayout class="monospaced">
@@ -7093,9 +7095,9 @@ source code.</para>
</refsect1>
<refsect1 id='authors'><title>AUTHORS</title>
-<para>Steven Knight &lt;knight@baldmt.com&gt;
-<!-- .br -->
-Anthony Roach &lt;aroach@electriceyeball.com&gt;</para>
+<para>Originally: Steven Knight &lt;knight@baldmt.com&gt; and Anthony Roach &lt;aroach@electriceyeball.com&gt;
+Since 2010: The SCons Development Team &lt;scons-dev@scons.org&gt;
+</para>
</refsect1>
</refentry>
</reference>
diff --git a/doc/man/scons_title.xsl b/doc/man/scons_title.xsl
index 6093c20..54dd33c 100644
--- a/doc/man/scons_title.xsl
+++ b/doc/man/scons_title.xsl
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/man/sconsign.xml b/doc/man/sconsign.xml
index 7989566..a7dd735 100644
--- a/doc/man/sconsign.xml
+++ b/doc/man/sconsign.xml
@@ -1,40 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Copyright (c) 2001 - 2014 The SCons Foundation
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-->
+
<!-- lifted from troff+man by doclifter -->
<refentry id='sconsign1'
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
-<!-- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation -->
-
-<!-- Permission is hereby granted, free of charge, to any person obtaining -->
-<!-- a copy of this software and associated documentation files (the -->
-<!-- "Software"), to deal in the Software without restriction, including -->
-<!-- without limitation the rights to use, copy, modify, merge, publish, -->
-<!-- distribute, sublicense, and/or sell copies of the Software, and to -->
-<!-- permit persons to whom the Software is furnished to do so, subject to -->
-<!-- the following conditions: -->
-
-<!-- The above copyright notice and this permission notice shall be included -->
-<!-- in all copies or substantial portions of the Software. -->
-
-<!-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -->
-<!-- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -->
-<!-- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -->
-<!-- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -->
-<!-- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -->
-<!-- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -->
-<!-- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -->
-
-<!-- doc/man/sconsign.xml 2014/03/02 14:18:15 garyo -->
-
-<!-- ES \- Example Start \- indents and turns off line fill -->
-<!-- ES listing suppressed (not used) -->
-<!-- EE \- Example End \- ends indent and turns line fill back on -->
-<!-- EE listing suppressed (not used) -->
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<refmeta>
<refentrytitle>SCONSIGN</refentrytitle>
<manvolnum>1</manvolnum>
-<refmiscinfo class='source'>March 2014</refmiscinfo>
+<refmiscinfo class='source'>July 2014</refmiscinfo>
</refmeta>
<refnamediv id='name'>
<refname>sconsign</refname>
diff --git a/doc/python10/SConstruct b/doc/python10/SConstruct
index c02cf5e..c59b61d 100644
--- a/doc/python10/SConstruct
+++ b/doc/python10/SConstruct
@@ -3,7 +3,7 @@
#
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
diff --git a/doc/python10/abstract.xml b/doc/python10/abstract.xml
index 22bc750..0c38537 100644
--- a/doc/python10/abstract.xml
+++ b/doc/python10/abstract.xml
@@ -6,11 +6,11 @@
<abstract xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/python10/acks.xml b/doc/python10/acks.xml
index 9316ea2..1451eef 100644
--- a/doc/python10/acks.xml
+++ b/doc/python10/acks.xml
@@ -7,12 +7,12 @@
<section id="sect-acks"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Acknowledgements</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/python10/copyright.xml b/doc/python10/copyright.xml
index 27f7e8c..74672a6 100644
--- a/doc/python10/copyright.xml
+++ b/doc/python10/copyright.xml
@@ -6,11 +6,11 @@
<legalnotice xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/python10/design.xml b/doc/python10/design.xml
index 7fe7853..376e7f4 100644
--- a/doc/python10/design.xml
+++ b/doc/python10/design.xml
@@ -7,12 +7,12 @@
<section id="sect-design"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Architecture</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/python10/future.xml b/doc/python10/future.xml
index 6c6b756..2356cac 100644
--- a/doc/python10/future.xml
+++ b/doc/python10/future.xml
@@ -7,12 +7,12 @@
<section id="sect-future"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Future Directions</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/python10/install.xml b/doc/python10/install.xml
index 17f1e83..cc95c82 100644
--- a/doc/python10/install.xml
+++ b/doc/python10/install.xml
@@ -7,12 +7,12 @@
<section id="sect-install"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Installation</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/python10/intro.xml b/doc/python10/intro.xml
index 79500e6..27e8cb4 100644
--- a/doc/python10/intro.xml
+++ b/doc/python10/intro.xml
@@ -7,12 +7,12 @@
<section id="sect-intro"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Introduction</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/python10/main.xml b/doc/python10/main.xml
index 30124ce..dbcd482 100644
--- a/doc/python10/main.xml
+++ b/doc/python10/main.xml
@@ -9,11 +9,11 @@
<article xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
-
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -35,7 +35,7 @@
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-->
-
+
<articleinfo>
<title>SCons Design and Implementation</title>
@@ -46,8 +46,8 @@
<copyright>
<year>2001</year>
- <year>2002</year>
- <holder>Steven Knight</holder>
+ <year>2014</year>
+ <holder>The SCons Foundation</holder>
</copyright>
<pubdate>2002</pubdate>
diff --git a/doc/python10/process.xml b/doc/python10/process.xml
index 5f8f964..36c5ecb 100644
--- a/doc/python10/process.xml
+++ b/doc/python10/process.xml
@@ -7,12 +7,12 @@
<section id="sect-process"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Development Process</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/python10/summary.xml b/doc/python10/summary.xml
index 1b09f97..e3eee53 100644
--- a/doc/python10/summary.xml
+++ b/doc/python10/summary.xml
@@ -7,12 +7,12 @@
<section id="sect-summary"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Summary</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/Alias.xml b/doc/reference/Alias.xml
index 652ad56..8e46c57 100644
--- a/doc/reference/Alias.xml
+++ b/doc/reference/Alias.xml
@@ -7,12 +7,12 @@
<section id="sect-Alias"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The Alias Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/CFile.xml b/doc/reference/CFile.xml
index 3c0b05b..045357b 100644
--- a/doc/reference/CFile.xml
+++ b/doc/reference/CFile.xml
@@ -7,12 +7,12 @@
<section id="sect-CFile"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The CFile Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/CXXFile.xml b/doc/reference/CXXFile.xml
index e90465a..9bd751a 100644
--- a/doc/reference/CXXFile.xml
+++ b/doc/reference/CXXFile.xml
@@ -7,12 +7,12 @@
<section id="sect-CXXFile"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The CXXFile Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/Command.xml b/doc/reference/Command.xml
index e3fbc00..a99de16 100644
--- a/doc/reference/Command.xml
+++ b/doc/reference/Command.xml
@@ -7,12 +7,12 @@
<section id="sect-Command"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The Command Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/Install.xml b/doc/reference/Install.xml
index 7a71f23..a7e5858 100644
--- a/doc/reference/Install.xml
+++ b/doc/reference/Install.xml
@@ -7,12 +7,12 @@
<section id="sect-Install"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The Install Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/InstallAs.xml b/doc/reference/InstallAs.xml
index bdd7406..ffb400d 100644
--- a/doc/reference/InstallAs.xml
+++ b/doc/reference/InstallAs.xml
@@ -7,12 +7,12 @@
<section id="sect-InstallAs"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The InstallAs Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/Library.xml b/doc/reference/Library.xml
index b005ff7..c7c3d4f 100644
--- a/doc/reference/Library.xml
+++ b/doc/reference/Library.xml
@@ -7,12 +7,12 @@
<section id="sect-Library"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The Library Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/Object.xml b/doc/reference/Object.xml
index 1de1c7b..f01b53b 100644
--- a/doc/reference/Object.xml
+++ b/doc/reference/Object.xml
@@ -7,12 +7,12 @@
<section id="sect-Object"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The Object Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/PCH.xml b/doc/reference/PCH.xml
index c5392a7..11dc44a 100644
--- a/doc/reference/PCH.xml
+++ b/doc/reference/PCH.xml
@@ -7,12 +7,12 @@
<section id="sect-PCH"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The PCH Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/PDF.xml b/doc/reference/PDF.xml
index 51f33a6..d154049 100644
--- a/doc/reference/PDF.xml
+++ b/doc/reference/PDF.xml
@@ -7,12 +7,12 @@
<section id="sect-PDF"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The PDF Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/PostScript.xml b/doc/reference/PostScript.xml
index b75e62d..e38481a 100644
--- a/doc/reference/PostScript.xml
+++ b/doc/reference/PostScript.xml
@@ -7,12 +7,12 @@
<section id="sect-PostScript"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The PDF Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/Program.xml b/doc/reference/Program.xml
index 81f18de..da4b23c 100644
--- a/doc/reference/Program.xml
+++ b/doc/reference/Program.xml
@@ -7,12 +7,12 @@
<section id="sect-Program"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The Program Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/RES.xml b/doc/reference/RES.xml
index 0af508e..17114d6 100644
--- a/doc/reference/RES.xml
+++ b/doc/reference/RES.xml
@@ -7,12 +7,12 @@
<section id="sect-RES"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The RES Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/SConstruct b/doc/reference/SConstruct
index 6fb5c05..8f1e128 100644
--- a/doc/reference/SConstruct
+++ b/doc/reference/SConstruct
@@ -3,7 +3,7 @@
#
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
diff --git a/doc/reference/SharedLibrary.xml b/doc/reference/SharedLibrary.xml
index 58fc8bd..5b6ceaa 100644
--- a/doc/reference/SharedLibrary.xml
+++ b/doc/reference/SharedLibrary.xml
@@ -7,12 +7,12 @@
<section id="sect-SharedLibrary"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The SharedLibrary Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/SharedObject.xml b/doc/reference/SharedObject.xml
index dcb97ad..bb03f23 100644
--- a/doc/reference/SharedObject.xml
+++ b/doc/reference/SharedObject.xml
@@ -7,12 +7,12 @@
<section id="sect-SharedObject"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The SharedObject Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/StaticLibrary.xml b/doc/reference/StaticLibrary.xml
index daa9520..f1032cc 100644
--- a/doc/reference/StaticLibrary.xml
+++ b/doc/reference/StaticLibrary.xml
@@ -7,12 +7,12 @@
<section id="sect-StaticLibrary"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The StaticLibrary Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/StaticObject.xml b/doc/reference/StaticObject.xml
index 6d83c71..d5185f5 100644
--- a/doc/reference/StaticObject.xml
+++ b/doc/reference/StaticObject.xml
@@ -7,12 +7,12 @@
<section id="sect-StaticObject"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>The StaticObject Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/chtml.xsl b/doc/reference/chtml.xsl
index 500b029..abf0944 100644
--- a/doc/reference/chtml.xsl
+++ b/doc/reference/chtml.xsl
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -33,6 +33,7 @@
<xsl:param name="base.dir" select="'scons-reference/'"/>
<xsl:param name="l10n.gentext.default.language" select="'en'"/>
<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="section.label.includes.component.label" select="1"/>
<xsl:param name="html.stylesheet" select="'scons.css'"/>
<xsl:param name="generate.toc">
/appendix toc,title
diff --git a/doc/reference/copyright.xml b/doc/reference/copyright.xml
index 0f087b2..96b6ea8 100644
--- a/doc/reference/copyright.xml
+++ b/doc/reference/copyright.xml
@@ -6,11 +6,11 @@
<legalnotice xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/errors.xml b/doc/reference/errors.xml
index 18f0231..32a0894 100644
--- a/doc/reference/errors.xml
+++ b/doc/reference/errors.xml
@@ -7,12 +7,12 @@
<chapter id="chap-errors"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Errors Generated by &SCons;</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/html.xsl b/doc/reference/html.xsl
index 2c94958..5b03fa1 100644
--- a/doc/reference/html.xsl
+++ b/doc/reference/html.xsl
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -32,6 +32,7 @@
<xsl:param name="l10n.gentext.default.language" select="'en'"/>
<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="section.label.includes.component.label" select="1"/>
<xsl:param name="html.stylesheet" select="'scons.css'"/>
<xsl:param name="generate.toc">
/appendix toc,title
diff --git a/doc/reference/main.xml b/doc/reference/main.xml
index 5255628..5f44253 100644
--- a/doc/reference/main.xml
+++ b/doc/reference/main.xml
@@ -12,11 +12,11 @@
<book xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/pdf.xsl b/doc/reference/pdf.xsl
index c8acf1b..57c246b 100644
--- a/doc/reference/pdf.xsl
+++ b/doc/reference/pdf.xsl
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -33,6 +33,7 @@
<xsl:include href="scons_title.xsl"/>
<xsl:param name="l10n.gentext.default.language" select="'en'"/>
<xsl:param name="section.autolabel" select="1"></xsl:param>
+<xsl:param name="section.label.includes.component.label" select="1"/>
<xsl:param name="paper.type" select="'letter'"></xsl:param>
<xsl:param name="body.start.indent">0pt</xsl:param>
<xsl:param name="shade.verbatim" select="1"></xsl:param>
diff --git a/doc/reference/preface.xml b/doc/reference/preface.xml
index 6cc58d9..0fe5d98 100644
--- a/doc/reference/preface.xml
+++ b/doc/reference/preface.xml
@@ -7,12 +7,12 @@
<chapter id="chap-preface"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Preface</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/reference/scons.css b/doc/reference/scons.css
index 6941abb..ff9b5a1 100644
--- a/doc/reference/scons.css
+++ b/doc/reference/scons.css
@@ -6,11 +6,11 @@ body {
}
-a {
+a:link {
color: #80572a;
}
-a:hover {
+a:link:hover {
color: #d72816;
text-decoration: none;
}
diff --git a/doc/reference/scons_title.xsl b/doc/reference/scons_title.xsl
index 52ca405..7fc9589 100644
--- a/doc/reference/scons_title.xsl
+++ b/doc/reference/scons_title.xsl
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/scons.mod b/doc/scons.mod
index 044a4a1..2445d2f 100644
--- a/doc/scons.mod
+++ b/doc/scons.mod
@@ -1,6 +1,6 @@
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
An SCons-specific DTD module, for use with SCons DocBook
documentation, that contains names, phrases, acronyms, etc. used
@@ -525,8 +525,8 @@
-->
<!ENTITY scons-announce "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>announce@scons.tigris.org</literal>">
-<!ENTITY scons-devel "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>dev@scons.tigris.org</literal>">
-<!ENTITY scons-users "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>users@scons.tigris.org</literal>">
+<!ENTITY scons-devel "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>scons-dev@scons.org</literal>">
+<!ENTITY scons-users "<literal xmlns='http://www.scons.org/dbxsd/v1.0'>scons-users@scons.org</literal>">
<!--
diff --git a/doc/user/README b/doc/user/README
index 132d5e4..b8ab21f 100644
--- a/doc/user/README
+++ b/doc/user/README
@@ -1,4 +1,4 @@
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
When adding a new file, add it to main.xml and MANIFEST.
diff --git a/doc/user/SConstruct b/doc/user/SConstruct
index fa38396..fdba463 100644
--- a/doc/user/SConstruct
+++ b/doc/user/SConstruct
@@ -3,7 +3,7 @@
#
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
diff --git a/doc/user/actions.xml b/doc/user/actions.xml
index 7973549..eed7ca3 100644
--- a/doc/user/actions.xml
+++ b/doc/user/actions.xml
@@ -17,12 +17,12 @@
<chapter id="chap-actions"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>&SCons; Actions</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/add-method.xml b/doc/user/add-method.xml
index 50a2d01..1518f9a 100644
--- a/doc/user/add-method.xml
+++ b/doc/user/add-method.xml
@@ -17,12 +17,12 @@
<chapter id="chap-add-method"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Pseudo-Builders: the AddMethod function</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/alias.xml b/doc/user/alias.xml
index 883ebef..11f0f21 100644
--- a/doc/user/alias.xml
+++ b/doc/user/alias.xml
@@ -17,12 +17,12 @@
<chapter id="chap-alias"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Alias Targets</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/ant.xml b/doc/user/ant.xml
index 1808d9e..9062970 100644
--- a/doc/user/ant.xml
+++ b/doc/user/ant.xml
@@ -17,12 +17,12 @@
<appendix id="app-ant"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Converting From Ant</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/build-install.xml b/doc/user/build-install.xml
index d3e0875..f5e4da4 100644
--- a/doc/user/build-install.xml
+++ b/doc/user/build-install.xml
@@ -21,12 +21,12 @@
<chapter id="chap-build-install"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Building and Installing &SCons;</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/builders-built-in.xml b/doc/user/builders-built-in.xml
index 455b7a3..8cb20dd 100644
--- a/doc/user/builders-built-in.xml
+++ b/doc/user/builders-built-in.xml
@@ -17,12 +17,12 @@
<chapter id="chap-builders-built-in"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Built-In Builders</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/builders-commands.xml b/doc/user/builders-commands.xml
index 5e179a4..ade9a44 100644
--- a/doc/user/builders-commands.xml
+++ b/doc/user/builders-commands.xml
@@ -17,12 +17,12 @@
<chapter id="chap-builders-commands"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Not Writing a Builder: the &Command; Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/builders-writing.xml b/doc/user/builders-writing.xml
index bc7983d..b659d4b 100644
--- a/doc/user/builders-writing.xml
+++ b/doc/user/builders-writing.xml
@@ -17,12 +17,12 @@
<chapter id="chap-builders-writing"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Writing Your Own Builders</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/builders.xml b/doc/user/builders.xml
index c1ac032..d520612 100644
--- a/doc/user/builders.xml
+++ b/doc/user/builders.xml
@@ -16,12 +16,12 @@
<appendix id="app-builders"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Builders</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/caching.xml b/doc/user/caching.xml
index 2f5642b..b3883d0 100644
--- a/doc/user/caching.xml
+++ b/doc/user/caching.xml
@@ -17,12 +17,12 @@
<chapter id="chap-caching"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Caching Built Files</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/chtml.xsl b/doc/user/chtml.xsl
index 5c9591a..15680b0 100644
--- a/doc/user/chtml.xsl
+++ b/doc/user/chtml.xsl
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -33,6 +33,7 @@
<xsl:param name="base.dir" select="'scons-user/'"/>
<xsl:param name="l10n.gentext.default.language" select="'en'"/>
<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="section.label.includes.component.label" select="1"/>
<xsl:param name="html.stylesheet" select="'scons.css'"/>
<xsl:param name="generate.toc">
/appendix toc,title
diff --git a/doc/user/command-line.xml b/doc/user/command-line.xml
index 2819d3d..6c4681d 100644
--- a/doc/user/command-line.xml
+++ b/doc/user/command-line.xml
@@ -17,12 +17,12 @@
<chapter id="chap-command-line"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Controlling a Build From the Command Line</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/copyright.xml b/doc/user/copyright.xml
index de8fac9..1e7b487 100644
--- a/doc/user/copyright.xml
+++ b/doc/user/copyright.xml
@@ -6,11 +6,11 @@
<legalnotice xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/depends.xml b/doc/user/depends.xml
index 5049565..b71a9ec 100644
--- a/doc/user/depends.xml
+++ b/doc/user/depends.xml
@@ -17,12 +17,12 @@
<chapter id="chap-depends"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Dependencies</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/environments.xml b/doc/user/environments.xml
index 64625f4..778ccc4 100644
--- a/doc/user/environments.xml
+++ b/doc/user/environments.xml
@@ -17,12 +17,12 @@
<chapter id="chap-environments"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Environments</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/epub.xsl b/doc/user/epub.xsl
index ecc5c8b..485bc97 100644
--- a/doc/user/epub.xsl
+++ b/doc/user/epub.xsl
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/errors.xml b/doc/user/errors.xml
index 174d4b7..e74a3ca 100644
--- a/doc/user/errors.xml
+++ b/doc/user/errors.xml
@@ -17,12 +17,12 @@
<chapter id="chap-errors"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Errors</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/example.xml b/doc/user/example.xml
index 0165b95..d0ca4d8 100644
--- a/doc/user/example.xml
+++ b/doc/user/example.xml
@@ -17,12 +17,12 @@
<appendix id="app-example"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Complex &SCons; Example</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/factories.xml b/doc/user/factories.xml
index 806e36b..e620ece 100644
--- a/doc/user/factories.xml
+++ b/doc/user/factories.xml
@@ -17,12 +17,12 @@
<chapter id="chap-factories"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Platform-Independent File System Manipulation</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/file-removal.xml b/doc/user/file-removal.xml
index 1b58abe..8e55c57 100644
--- a/doc/user/file-removal.xml
+++ b/doc/user/file-removal.xml
@@ -17,12 +17,12 @@
<chapter id="chap-file-removal"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Controlling Removal of Targets</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/functions.xml b/doc/user/functions.xml
index 76a3449..4a325a7 100644
--- a/doc/user/functions.xml
+++ b/doc/user/functions.xml
@@ -16,12 +16,12 @@
<appendix id="app-functions"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Functions and Environment Methods</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/gettext.xml b/doc/user/gettext.xml
index c9cbcdb..0ebf9a0 100644
--- a/doc/user/gettext.xml
+++ b/doc/user/gettext.xml
@@ -17,12 +17,12 @@
<chapter id="chap-gettext"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Internationalization and localization with gettext</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/hierarchy.xml b/doc/user/hierarchy.xml
index c0664ee..bb7fd2a 100644
--- a/doc/user/hierarchy.xml
+++ b/doc/user/hierarchy.xml
@@ -17,12 +17,12 @@
<chapter id="chap-hierarchical"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Hierarchical Builds</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/html.xsl b/doc/user/html.xsl
index fd10751..e86b047 100644
--- a/doc/user/html.xsl
+++ b/doc/user/html.xsl
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -32,6 +32,7 @@
<xsl:param name="l10n.gentext.default.language" select="'en'"/>
<xsl:param name="section.autolabel" select="1"/>
+<xsl:param name="section.label.includes.component.label" select="1"/>
<xsl:param name="html.stylesheet" select="'scons.css'"/>
<xsl:param name="generate.toc">
/appendix toc,title
diff --git a/doc/user/install.xml b/doc/user/install.xml
index e229268..cec03c6 100644
--- a/doc/user/install.xml
+++ b/doc/user/install.xml
@@ -17,12 +17,12 @@
<chapter id="chap-install"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Installing Files in Other Directories: the &Install; Builder</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/java.xml b/doc/user/java.xml
index 95b20d2..b94baea 100644
--- a/doc/user/java.xml
+++ b/doc/user/java.xml
@@ -16,12 +16,12 @@
<chapter id="chap-java"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Java Builds</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/less-simple.xml b/doc/user/less-simple.xml
index 5bda302..a71a4ac 100644
--- a/doc/user/less-simple.xml
+++ b/doc/user/less-simple.xml
@@ -16,12 +16,12 @@
<chapter id="chap-less-simple"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Less Simple Things to Do With Builds</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/libraries.xml b/doc/user/libraries.xml
index aa4561e..dda850c 100644
--- a/doc/user/libraries.xml
+++ b/doc/user/libraries.xml
@@ -16,12 +16,12 @@
<chapter id="chap-libraries"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Building and Linking with Libraries</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/main.xml b/doc/user/main.xml
index afb5d51..ebdf35b 100644
--- a/doc/user/main.xml
+++ b/doc/user/main.xml
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -62,7 +62,7 @@
<book xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<bookinfo>
<title>SCons &buildversion;</title>
<subtitle>User Guide</subtitle>
@@ -72,17 +72,17 @@
<surname>Knight</surname>
</author>
- <corpauthor>Steven Knight</corpauthor>
+ <corpauthor>Steven Knight and the SCons Development Team</corpauthor>
- <pubdate>2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014</pubdate>
+ <pubdate>2004 - 2014</pubdate>
<copyright>
- <year>2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014</year>
- <holder>Steven Knight</holder>
+ <year>2004 - 2014</year>
+ <holder>The SCons Foundation</holder>
</copyright>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
-
+
<releaseinfo>version &buildversion;</releaseinfo>
<mediaobject role="cover"><imageobject><imagedata fileref="cover.jpg" format="JPG"/></imageobject></mediaobject>
@@ -96,7 +96,7 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="nodes.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="depends.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="environments.xml"/>
-
+
<chapter id="chap-manip-options">
<title>Automatically Putting Command-line Options into their Construction Variables</title>
<!-- TODO: This intro paragraph should describe at a high-level
diff --git a/doc/user/make.xml b/doc/user/make.xml
index 69dd7f4..f57da75 100644
--- a/doc/user/make.xml
+++ b/doc/user/make.xml
@@ -16,12 +16,12 @@
<appendix id="app-make"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Converting From Make</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/mergeflags.xml b/doc/user/mergeflags.xml
index 6434c1c..615724a 100644
--- a/doc/user/mergeflags.xml
+++ b/doc/user/mergeflags.xml
@@ -16,12 +16,12 @@
<section id="sect-mergeflags"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Merging Options into the Environment: the &MergeFlags; Function</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/misc.xml b/doc/user/misc.xml
index 1d892a4..0c56b43 100644
--- a/doc/user/misc.xml
+++ b/doc/user/misc.xml
@@ -16,12 +16,12 @@
<chapter id="chap-misc"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Miscellaneous Functionality</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/nodes.xml b/doc/user/nodes.xml
index c355ca6..ff6ee66 100644
--- a/doc/user/nodes.xml
+++ b/doc/user/nodes.xml
@@ -16,12 +16,12 @@
<chapter id="chap-nodes"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Node Objects</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/output.xml b/doc/user/output.xml
index f0d3134..4908832 100644
--- a/doc/user/output.xml
+++ b/doc/user/output.xml
@@ -16,12 +16,12 @@
<chapter id="chap-output"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Controlling Build Output</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/parseconfig.xml b/doc/user/parseconfig.xml
index 205416b..7ac567d 100644
--- a/doc/user/parseconfig.xml
+++ b/doc/user/parseconfig.xml
@@ -16,12 +16,12 @@
<section id="sect-parseconfig"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Finding Installed Library Information: the &ParseConfig; Function</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/parseflags.xml b/doc/user/parseflags.xml
index d5012e1..b306f72 100644
--- a/doc/user/parseflags.xml
+++ b/doc/user/parseflags.xml
@@ -16,12 +16,12 @@
<section id="sect-parseflags"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Separating Compile Arguments into their Variables: the &ParseFlags; Function</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/pdf.xsl b/doc/user/pdf.xsl
index b536092..51eb6fe 100644
--- a/doc/user/pdf.xsl
+++ b/doc/user/pdf.xsl
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -33,6 +33,7 @@
<xsl:include href="scons_title.xsl"/>
<xsl:param name="l10n.gentext.default.language" select="'en'"/>
<xsl:param name="section.autolabel" select="1"></xsl:param>
+<xsl:param name="section.label.includes.component.label" select="1"/>
<xsl:param name="paper.type" select="'letter'"></xsl:param>
<xsl:param name="body.start.indent">0pt</xsl:param>
<xsl:param name="shade.verbatim" select="1"></xsl:param>
diff --git a/doc/user/preface.xml b/doc/user/preface.xml
index 3937e57..a71e7ad 100644
--- a/doc/user/preface.xml
+++ b/doc/user/preface.xml
@@ -16,12 +16,12 @@
<preface id="chap-preface"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Preface</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/python.xml b/doc/user/python.xml
index 67b7671..843dca0 100644
--- a/doc/user/python.xml
+++ b/doc/user/python.xml
@@ -17,12 +17,12 @@
<appendix id="app-python"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Python overview</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/repositories.xml b/doc/user/repositories.xml
index c0ca5ee..974fbcd 100644
--- a/doc/user/repositories.xml
+++ b/doc/user/repositories.xml
@@ -16,12 +16,12 @@
<chapter id="chap-repositories"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Building From Code Repositories</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/run.xml b/doc/user/run.xml
index 464a5a8..548fc4f 100644
--- a/doc/user/run.xml
+++ b/doc/user/run.xml
@@ -16,12 +16,12 @@
<chapter id="chap-run"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>How to Run &SCons;</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/scanners.xml b/doc/user/scanners.xml
index 32faf29..bc489c4 100644
--- a/doc/user/scanners.xml
+++ b/doc/user/scanners.xml
@@ -16,12 +16,12 @@
<chapter id="chap-scanners"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Writing Scanners</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/sconf.xml b/doc/user/sconf.xml
index d5881e9..410325c 100644
--- a/doc/user/sconf.xml
+++ b/doc/user/sconf.xml
@@ -16,12 +16,12 @@
<chapter id="chap-sconf"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Multi-Platform Configuration (&Autoconf; Functionality)</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/scons.css b/doc/user/scons.css
index 6941abb..ff9b5a1 100644
--- a/doc/user/scons.css
+++ b/doc/user/scons.css
@@ -6,11 +6,11 @@ body {
}
-a {
+a:link {
color: #80572a;
}
-a:hover {
+a:link:hover {
color: #d72816;
text-decoration: none;
}
diff --git a/doc/user/scons_title.xsl b/doc/user/scons_title.xsl
index 52ca405..7fc9589 100644
--- a/doc/user/scons_title.xsl
+++ b/doc/user/scons_title.xsl
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/separate.xml b/doc/user/separate.xml
index e973795..4d12ebd 100644
--- a/doc/user/separate.xml
+++ b/doc/user/separate.xml
@@ -16,12 +16,12 @@
<chapter id="chap-separate"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Separating Source and Build Directories</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/sideeffect.xml b/doc/user/sideeffect.xml
index 72af9cc..711d6e7 100644
--- a/doc/user/sideeffect.xml
+++ b/doc/user/sideeffect.xml
@@ -16,12 +16,12 @@
<chapter id="chap-sideeffect"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Sideeffect files</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/simple.xml b/doc/user/simple.xml
index 3ddb0dc..73bc473 100644
--- a/doc/user/simple.xml
+++ b/doc/user/simple.xml
@@ -16,12 +16,12 @@
<chapter id="chap-simple"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Simple Builds</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/sourcecode.xml b/doc/user/sourcecode.xml
index a1234fc..07b9b57 100644
--- a/doc/user/sourcecode.xml
+++ b/doc/user/sourcecode.xml
@@ -16,12 +16,12 @@
<chapter id="chap-sourcecode"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Fetching Files From Source Code Management Systems</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/tasks.xml b/doc/user/tasks.xml
index 68112a1..da2163b 100644
--- a/doc/user/tasks.xml
+++ b/doc/user/tasks.xml
@@ -16,12 +16,12 @@
<appendix id="app-tasks"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Handling Common Tasks</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/tools.xml b/doc/user/tools.xml
index 351096d..38b5b25 100644
--- a/doc/user/tools.xml
+++ b/doc/user/tools.xml
@@ -16,12 +16,12 @@
<appendix id="app-tools"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Tools</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/troubleshoot.xml b/doc/user/troubleshoot.xml
index 183f9c4..d9a7276 100644
--- a/doc/user/troubleshoot.xml
+++ b/doc/user/troubleshoot.xml
@@ -16,12 +16,12 @@
<chapter id="chap-troubleshooting"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Troubleshooting</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/variables.xml b/doc/user/variables.xml
index 644893b..a3632c3 100644
--- a/doc/user/variables.xml
+++ b/doc/user/variables.xml
@@ -16,12 +16,12 @@
<appendix id="app-variables"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Construction Variables</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/doc/user/variants.xml b/doc/user/variants.xml
index 7915dfd..71781f6 100644
--- a/doc/user/variants.xml
+++ b/doc/user/variants.xml
@@ -16,12 +16,12 @@
<chapter id="chap-variants"
xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<title>Variant Builds</title>
<!--
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+ Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/src/Announce.txt b/src/Announce.txt
index 89721e1..7379db4 100644
--- a/src/Announce.txt
+++ b/src/Announce.txt
@@ -19,7 +19,7 @@ effectively, please go to http://scons.org/lists.php#users to sign up for
the scons-users mailing list.
-RELEASE 2.3.1 - Mon, 02 Mar 2014 13:53:45 -0400
+RELEASE 2.3.2 - Mon, 04 Jul 2014 17:37:39 -0400
Please consult the RELEASE.txt file for a summary of changes since the last
release and consult the CHANGES.txt file for complete a list of changes
@@ -28,6 +28,27 @@ RELEASE 2.3.1 - Mon, 02 Mar 2014 13:53:45 -0400
Please note the following important changes since release 2.3.0:
+ -- BitKeeper, CVS, Perforce, RCS, SCCS are deprecated from the
+ default toolset and will be removed from the default toolset
+ in future SCons versions to speed up SCons initialization.
+ The tools themselves continue to be supported.
+
+ -- Support for Visual Studio 12.0Exp and 2013
+
+ -- Revamp of D language support, focusing on D v2.
+ D v1 is now deprecated.
+
+ -- Fixed NoClean() for multi-target builders.
+
+ -- RPM and m4 are no longer in the default toolset on Windows.
+ Should improve startup speed.
+
+ -- TeX fixes: -synctex=1 and cleaning auxiliary files.
+
+ -- Fixes to the Docbook tool.
+
+ Please note the following important changes since release 2.3.0:
+
-- Fix failure to relink when LINKCOM or libs change, introduced in
2.3.0.
@@ -319,7 +340,7 @@ RELEASE 2.3.1 - Mon, 02 Mar 2014 13:53:45 -0400
Python 1.5, 2.0 or 2.1 release or sub-release:
scons: warning: Support for pre-2.2 Python (VERSION) is deprecated.
- If this will cause hardship, contact dev@scons.tigris.org.
+ If this will cause hardship, contact scons-dev@scons.org
You may disable all warnings about deprecated features by adding
the option "--warn=no-deprecated" to the command line or to the
@@ -1095,5 +1116,5 @@ improve SCons for your needs.
Gary Oberbrunner and Bill Deegan, maintainers
Thanks to all the contributors for all your help!
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
-src/Announce.txt 2014/03/02 14:18:15 garyo
+Copyright (c) 2001 - 2014 The SCons Foundation
+src/Announce.txt 2014/07/05 09:42:21 garyo
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index 0b7c192..a0344ea 100644
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -4,7 +4,61 @@
Change Log
-RELEASE 2.3.1 - Mon, 02 Mar 2014 13:53:45 -0400
+RELEASE 2.3.2 - Mon, 04 Jul 2014 17:37:39 -0400
+
+ From veon on bitbucket:
+ - Fixed handling of nested ifs in CPP scanner PreProcessor class.
+
+ From Michael Haubenwallner:
+ - Respect user's CC/CXX values; don't always overwrite in generate()
+ - Delegate linker Tool.exists() to CC/CXX Tool.exists().
+
+ From Amir Szekely:
+ - Fixed NoClean() for multi-target builders (#2353).
+
+ From Russel Winder:
+ - Revamp of the D language support. Tools for DMD, GDC and LDC provided
+ and integrated with the C and C++ linking. NOTE: This is only tested
+ with D v2. Support for D v1 is now deprecated.
+
+ From Paweł Tomulik:
+ - Fix SConf tests that write output
+
+ From Gary Oberbrunner:
+ - get default RPM architecture more robustly when building RPMs
+
+ From Shane Gannon:
+ - Support for Visual Studio 2013 (12.0)
+
+ From Sye van der Veen:
+ - Support for Visual Studio 12.0Exp, and fixes for earlier MSVS
+ versions.
+
+ From Anatoly Techtonik:
+ - Several improvements for running scons.py from source:
+ * engine files form source directory take priority over all other
+ importable versions
+ * message about scons.py running from source is removed to fix tests
+ that were failing because of this extra line in the output
+ * error message when SCons import fails now lists lookup paths
+ - Remove support for QMTest harness from runtest.py
+ - Remove RPM and m4 from default tools on Windows
+ - BitKeeper, CVS, Perforce, RCS, SCCS are deprecated from default
+ tools and will be removed in future SCons versions to speed up
+ SCons initialization (it will still be possible to use these tools
+ explicitly)
+
+ From Dirk Baechle:
+ - Update XML doc editor configuration
+ - Fix: Allow varlist to be specified as list of strings for Actions (#2754)
+
+ From Rob Managan:
+ - Updated the TeX builder to support use of the -synctex=1
+ option and the files it creates.
+ - Updated the TeX builder to correctly clean auxiliary files when
+ the biblatex package is used.
+
+RELEASE 2.3.1
From Andrew Featherstone:
- Added support for EPUB output format to the DocBook tool.
@@ -5734,5 +5788,5 @@ A brief overview of important functionality available in release 0.01:
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
-src/CHANGES.txt 2014/03/02 14:18:15 garyo
+Copyright (c) 2001 - 2014 The SCons Foundation
+src/CHANGES.txt 2014/07/05 09:42:21 garyo
diff --git a/src/LICENSE.txt b/src/LICENSE.txt
index dab75df..32aa74a 100644
--- a/src/LICENSE.txt
+++ b/src/LICENSE.txt
@@ -1,4 +1,4 @@
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/src/README.txt b/src/README.txt
index f9d8242..7e63816 100644
--- a/src/README.txt
+++ b/src/README.txt
@@ -2,7 +2,7 @@
SCons - a software construction tool
- Version 2.3.1
+ Version 2.3.2
This is SCons, a tool for building software (and other files). SCons is
@@ -56,7 +56,7 @@ provided Python-standard setup script as follows:
By default, the above command will do the following:
- -- Install the version-numbered "scons-2.3.1" and "sconsign-2.3.1"
+ -- Install the version-numbered "scons-2.3.2" and "sconsign-2.3.2"
scripts in the default system script directory (/usr/bin or
C:\Python*\Scripts, for example). This can be disabled by
specifying the "--no-version-script" option on the command
@@ -70,17 +70,17 @@ By default, the above command will do the following:
making it the default on your system.
On UNIX or Linux systems, you can have the "scons" and "sconsign"
- scripts be hard links or symbolic links to the "scons-2.3.1" and
- "sconsign-2.3.1" scripts by specifying the "--hardlink-scons"
+ scripts be hard links or symbolic links to the "scons-2.3.2" and
+ "sconsign-2.3.2" scripts by specifying the "--hardlink-scons"
or "--symlink-scons" options on the command line.
- -- Install "scons-2.3.1.bat" and "scons.bat" wrapper scripts in the
+ -- Install "scons-2.3.2.bat" and "scons.bat" wrapper scripts in the
Python prefix directory on Windows (C:\Python*, for example).
This can be disabled by specifying the "--no-install-bat" option
on the command line.
On UNIX or Linux systems, the "--install-bat" option may be
- specified to have "scons-2.3.1.bat" and "scons.bat" files
+ specified to have "scons-2.3.2.bat" and "scons.bat" files
installed in the default system script directory, which is useful
if you want to install SCons in a shared file system directory
that can be used to execute SCons from both UNIX/Linux and
@@ -88,7 +88,7 @@ By default, the above command will do the following:
-- Install the SCons build engine (a Python module) in an
appropriate version-numbered SCons library directory
- (/usr/lib/scons-2.3.1 or C:\Python*\scons-2.3.1, for example).
+ (/usr/lib/scons-2.3.2 or C:\Python*\scons-2.3.2, for example).
See below for more options related to installing the build
engine library.
@@ -174,7 +174,7 @@ Submission page:
You can also send mail to the SCons developers' mailing list:
- dev@scons.tigris.org
+ scons-dev@scons.org
But even if you send email to the mailing list please make sure that you
ALSO submit a bug report to the project page bug tracker, because bug
@@ -187,11 +187,11 @@ MAILING LISTS
An active mailing list for users of SCons is available. You may send
questions or comments to the list at:
- users@scons.tigris.org
+ scons-users@scons.org
You may subscribe to the mailing list by sending email to:
- users-subscribe@scons.tigris.org
+ scons-users-join@scons.org
There is also a low-volume mailing list available for announcements
about SCons. Subscribe by sending email to:
@@ -239,5 +239,5 @@ With plenty of help from the SCons Development team:
Greg Spencer
Christoph Wiedemann
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
-src/README.txt 2014/03/02 14:18:15 garyo
+Copyright (c) 2001 - 2014 The SCons Foundation
+src/README.txt 2014/07/05 09:42:21 garyo
diff --git a/src/RELEASE.txt b/src/RELEASE.txt
index 4cda76d..2f231ca 100644
--- a/src/RELEASE.txt
+++ b/src/RELEASE.txt
@@ -1,80 +1,51 @@
- A new SCons release, 2.3.1, is now available
+ A new SCons release, 2.3.2, is now available
on the SCons download page:
http://www.scons.org/download.php
- This release adds several new features and fixes many issues,
- including a serious regression in linking (failure to re-link if
- linker options are changed).
+ This is a maintenance release, focusing on bug fixes.
- Here is a summary of the changes since 2.3.0:
+ Here is a summary of the changes since 2.3.1:
NEW FUNCTIONALITY
- - Add Pseudo command to mark targets which should not exist after
- they are built.
- - Add support for a readonly cache (--cache-readonly)
- - Added cyglink linker that uses Cygwin naming conventions for
- shared libraries and automatically generates import libraries.
- - Added optional ZIPROOT to Zip tool.
+ - Support for Visual Studio 12.0Exp and 2013 (12.0).
DEPRECATED FUNCTIONALITY
- -
+ - RPM and m4 are no longer in the default toolset on Windows.
+ - BitKeeper, CVS, Perforce, RCS, SCCS are deprecated from the
+ default toolset and will be removed from the default toolset
+ in future SCons versions.
+ - D language, version 1, is now deprecated. Version 2 is
+ supported.
CHANGED/ENHANCED EXISTING FUNCTIONALITY
- - DocBook tool can now output EPUB format
- - Allow multiple options to be specified with --debug=a,b,c
- - Update bootstrap.py so it can be used from any dir, to run
- SCons from a source (non-installed) dir.
- - Added release_target_info() to File nodes, which helps to
- reduce memory consumption in clean builds and update runs
- of large projects.
- - Print full stack on certain errors, for debugging.
- - Improve documentation for Textfile builder.
+ - Revamp of D language support.
+ Tools for DMD, GDC and LDC are provided, and integrated
+ with the C and C++ linking.
+ - TeX builder now supports -synctex=1
+ - TeX builder cleans auxiliary files correctly with biblatex.
FIXES
- - Stop leaking file handles to subprocesses by switching to using subprocess
- always.
- - Generally try harder to print out a message on build errors
- - Added a switch to warn on missing targets
- - Always print stats if requested
- - Check for 8.3 filenames on cygwin as well as win32 to make variant_dir work properly.
- - Make sure SharedLibrary depends on all dependent libs (by depending on SHLINKCOM)
- - Fixed the setup of linker flags for a versioned SharedLibrary
- under OpenBSD (#2916).
- - Improve error if Visual Studio bat file not found.
- - Allow Subst.Literal string objects to be compared with each other,
- so they work better in AddUnique() and Remove().
- - Fixed the handling of long options in the command-line
- parsing (#2929).
- - Fixed misspelled variable in intelc.py (#2928).
- - VS2012 & VS2010: Resolve initialization issues by adding path to reg.exe
- in shell used to run batch files.
- - MSVC Support: fixed defaulting TARGET_ARCH to HOST_ARCH. It should be
- None if not explicitly set.
- - MSVC: Fixed issue where if more than one Architectures compilers are
- detected, it would take the last one found, and not the first.
- - Fixed spelling errors in MAN pages (#2897).
- - Fixed description of ignore_case for EnumVariable in the
- MAN page (#2774).
+ - Fixed handling of nested ifs in CPP scanner PreProcessor class.
+ - Respect user's CC/CXX values; don't always overwrite in generate()
+ - Delegate linker Tool.exists() to CC/CXX Tool.exists().
+ - Fixed NoClean() for multi-target builders (#2353).
+ - Fix SConf tests that write output
+ - get default RPM architecture more robustly when building RPMs
+ - Allow varlist to be specified as list of strings for Actions (#2754)
+ - Fixes to Docbook tool
PACKAGING
- - No changes
+ - Update XML doc editor configuration
DEVELOPMENT
- - Count statistics of instances are now collected only when
- the --debug=count command-line option is used (#2922).
- - Test harness: fail_test() can now print a message to help debugging.
- - Require rpmbuild when building SCons package.
- - Replaced old SGML-based documentation toolchain with a more modern
- approach, that also requires less external dependencies (programs and
- Python packages). Added a customized Docbook XSD for strict validation of
- all input XML files.
+ - Improvements to running scons.py from the source tree
Thanks to:
Dirk Baechle,
@@ -89,8 +60,10 @@ Thanks to:
Luca Falavigna,
Andrew Featherstone,
Alexandre Feblot,
+ Shane Gannon,
Alexander Goomenyuk,
Justin Gullingsrud,
+ Michael Haubenwallner,
Joshua Hughes,
Alexey Klimkin,
Steven Knight,
@@ -109,15 +82,18 @@ Thanks to:
smallbub on Bitbucket,
Sohail Somani,
Stefan Sperling,
+ Amir Szekely,
Tom Tanner,
Anatoly Techtonik,
Bogdan Tenea,
Paweł Tomulik,
+ Sye van der Veen,
+ veon on bitbucket,
Greg Ward,
Allen Weeks,
Russel Winder,
Joe Zuntz
for their contributions to this and prior releases.
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
-src/RELEASE.txt 2014/03/02 14:18:15 garyo
+Copyright (c) 2001 - 2014 The SCons Foundation
+src/RELEASE.txt 2014/07/05 09:42:21 garyo
diff --git a/src/engine/MANIFEST.in b/src/engine/MANIFEST.in
index 0afda50..f62d16e 100644
--- a/src/engine/MANIFEST.in
+++ b/src/engine/MANIFEST.in
@@ -65,6 +65,7 @@ SCons/Tool/cc.py
SCons/Tool/cyglink.py
SCons/Tool/cvf.py
SCons/Tool/CVS.py
+SCons/Tool/DCommon.py
SCons/Tool/default.py
SCons/Tool/dmd.py
SCons/Tool/docbook/__init__.py
@@ -82,6 +83,7 @@ SCons/Tool/g++.py
SCons/Tool/g77.py
SCons/Tool/gas.py
SCons/Tool/gcc.py
+SCons/Tool/gdc.py
SCons/Tool/gfortran.py
SCons/Tool/gnulink.py
SCons/Tool/gs.py
@@ -102,6 +104,7 @@ SCons/Tool/JavaCommon.py
SCons/Tool/javac.py
SCons/Tool/javah.py
SCons/Tool/latex.py
+SCons/Tool/ldc.py
SCons/Tool/lex.py
SCons/Tool/link.py
SCons/Tool/linkloc.py
diff --git a/src/engine/SCons/Action.py b/src/engine/SCons/Action.py
index 0e31124..23e32ac 100644
--- a/src/engine/SCons/Action.py
+++ b/src/engine/SCons/Action.py
@@ -76,7 +76,7 @@ way for wrapping up the functions.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -97,7 +97,7 @@ way for wrapping up the functions.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Action.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Action.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -337,7 +337,7 @@ def _do_create_keywords(args, kw):
'You must either pass a string or a callback which '
'accepts (target, source, env) as parameters.')
if len(args) > 1:
- kw['varlist'] = args[1:] + kw['varlist']
+ kw['varlist'] = tuple(SCons.Util.flatten(args[1:])) + kw['varlist']
if kw.get('strfunction', _null) is not _null \
and kw.get('cmdstr', _null) is not _null:
raise SCons.Errors.UserError(
@@ -679,12 +679,13 @@ def _subproc(scons_env, cmd, error = 'ignore', **kw):
# return a dummy Popen instance that only returns error
class dummyPopen(object):
def __init__(self, e): self.exception = e
- def communicate(self): return ('','')
+ def communicate(self,input=None): return ('','')
def wait(self): return -self.exception.errno
stdin = None
class f(object):
def read(self): return ''
def readline(self): return ''
+ def __iter__(self): return iter(())
stdout = stderr = f()
return dummyPopen(e)
diff --git a/src/engine/SCons/Action.xml b/src/engine/SCons/Action.xml
index 9c120e2..a0a6421 100644
--- a/src/engine/SCons/Action.xml
+++ b/src/engine/SCons/Action.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<cvar name="IMPLICIT_COMMAND_DEPENDENCIES">
<summary>
@@ -143,4 +143,4 @@ in which the command should be executed.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/ActionTests.py b/src/engine/SCons/ActionTests.py
index dfc43fb..8c9d710 100644
--- a/src/engine/SCons/ActionTests.py
+++ b/src/engine/SCons/ActionTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/ActionTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/ActionTests.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -49,6 +49,7 @@ import SCons.Environment
import SCons.Errors
import TestCmd
+import TestUnit
# Initial setup of the common environment for all tests,
# a temporary working directory containing a
@@ -185,9 +186,8 @@ class DummyNode(object):
if os.name == 'java':
python = os.path.join(sys.prefix, 'jython')
else:
- python = sys.executable
-
-_python_ = '"' + python + '"'
+ python = os.environ.get('python_executable', sys.executable)
+_python_ = test.escape(python)
_null = SCons.Action._null
@@ -211,6 +211,9 @@ def test_varlist(pos_call, str_call, cmd, cmdstrfunc, **kw):
a = call_action((cmd, cmdstrfunc, 'a', 'b', 'c'))
assert a.varlist == ('a', 'b', 'c'), a.varlist
+ a = call_action((cmd, cmdstrfunc, ['a', 'b', 'c']))
+ assert a.varlist == ('a', 'b', 'c'), a.varlist
+
kw['varlist'] = 'foo'
a = call_action((cmd, cmdstrfunc))
assert a.varlist == ('foo',), a.varlist
@@ -2109,8 +2112,8 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Builder.py b/src/engine/SCons/Builder.py
index 0b5f291..142ca81 100644
--- a/src/engine/SCons/Builder.py
+++ b/src/engine/SCons/Builder.py
@@ -76,7 +76,7 @@ There are the following methods for internal use within this module:
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -97,7 +97,7 @@ There are the following methods for internal use within this module:
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Builder.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Builder.py 2014/07/05 09:42:21 garyo"
import collections
diff --git a/src/engine/SCons/BuilderTests.py b/src/engine/SCons/BuilderTests.py
index ed079e8..47987a2 100644
--- a/src/engine/SCons/BuilderTests.py
+++ b/src/engine/SCons/BuilderTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/BuilderTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/BuilderTests.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -40,6 +40,7 @@ import sys
import unittest
import TestCmd
+import TestUnit
import SCons.Action
import SCons.Builder
@@ -1632,8 +1633,8 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/CacheDir.py b/src/engine/SCons/CacheDir.py
index 8ac8fa9..43c7f0e 100644
--- a/src/engine/SCons/CacheDir.py
+++ b/src/engine/SCons/CacheDir.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/CacheDir.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/CacheDir.py 2014/07/05 09:42:21 garyo"
__doc__ = """
CacheDir support
diff --git a/src/engine/SCons/CacheDirTests.py b/src/engine/SCons/CacheDirTests.py
index 116d902..ad8dc80 100644
--- a/src/engine/SCons/CacheDirTests.py
+++ b/src/engine/SCons/CacheDirTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/CacheDirTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/CacheDirTests.py 2014/07/05 09:42:21 garyo"
import os.path
import shutil
@@ -29,6 +29,7 @@ import sys
import unittest
from TestCmd import TestCmd
+import TestUnit
import SCons.CacheDir
@@ -287,8 +288,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Debug.py b/src/engine/SCons/Debug.py
index 08d7570..23994d3 100644
--- a/src/engine/SCons/Debug.py
+++ b/src/engine/SCons/Debug.py
@@ -6,7 +6,7 @@ needed by most users.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ needed by most users.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Debug.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Debug.py 2014/07/05 09:42:21 garyo"
import os
import sys
diff --git a/src/engine/SCons/Defaults.py b/src/engine/SCons/Defaults.py
index dd726f1..9e33bfa 100644
--- a/src/engine/SCons/Defaults.py
+++ b/src/engine/SCons/Defaults.py
@@ -10,7 +10,7 @@ from distutils.msvccompiler.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -33,7 +33,7 @@ from distutils.msvccompiler.
#
from __future__ import division
-__revision__ = "src/engine/SCons/Defaults.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Defaults.py 2014/07/05 09:42:21 garyo"
import os
@@ -144,6 +144,9 @@ ShCAction = SCons.Action.Action("$SHCCCOM", "$SHCCCOMSTR")
CXXAction = SCons.Action.Action("$CXXCOM", "$CXXCOMSTR")
ShCXXAction = SCons.Action.Action("$SHCXXCOM", "$SHCXXCOMSTR")
+DAction = SCons.Action.Action("$DCOM", "$DCOMSTR")
+ShDAction = SCons.Action.Action("$SHDCOM", "$SHDCOMSTR")
+
ASAction = SCons.Action.Action("$ASCOM", "$ASCOMSTR")
ASPPAction = SCons.Action.Action("$ASPPCOM", "$ASPPCOMSTR")
@@ -321,7 +324,7 @@ def _stripixes(prefix, itms, suffix, stripprefixes, stripsuffixes, env, c=None):
where it finds them. This is used by tools (like the GNU linker)
that need to turn something like 'libfoo.a' into '-lfoo'.
"""
-
+
if not itms:
return itms
@@ -335,7 +338,7 @@ def _stripixes(prefix, itms, suffix, stripprefixes, stripsuffixes, env, c=None):
c = env_c
else:
c = _concat_ixes
-
+
stripprefixes = list(map(env.subst, SCons.Util.flatten(stripprefixes)))
stripsuffixes = list(map(env.subst, SCons.Util.flatten(stripsuffixes)))
@@ -413,7 +416,7 @@ def _defines(prefix, defs, suffix, env, c=_concat_ixes):
"""
return c(prefix, env.subst_path(processDefines(defs)), suffix, env)
-
+
class NullCmdGenerator(object):
"""This is a callable class that can be used in place of other
command generators if you don't want them to do anything.
@@ -449,7 +452,7 @@ class Variable_Method_Caller(object):
self.method = method
def __call__(self, *args, **kw):
try: 1//0
- except ZeroDivisionError:
+ except ZeroDivisionError:
# Don't start iterating with the current stack-frame to
# prevent creating reference cycles (f_back is safe).
frame = sys.exc_info()[2].tb_frame.f_back
diff --git a/src/engine/SCons/Defaults.xml b/src/engine/SCons/Defaults.xml
index 194d639..1f17311 100644
--- a/src/engine/SCons/Defaults.xml
+++ b/src/engine/SCons/Defaults.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<cvar name ="_concat">
<summary>
@@ -583,4 +583,4 @@ from source code management systems.
</summary>
</scons_function>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/DefaultsTests.py b/src/engine/SCons/DefaultsTests.py
index 543d7f8..61b0f51 100644
--- a/src/engine/SCons/DefaultsTests.py
+++ b/src/engine/SCons/DefaultsTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/DefaultsTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/DefaultsTests.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -32,6 +32,7 @@ import unittest
from collections import UserDict
import TestCmd
+import TestUnit
import SCons.Errors
@@ -82,8 +83,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Environment.py b/src/engine/SCons/Environment.py
index 5644a30..467007c 100644
--- a/src/engine/SCons/Environment.py
+++ b/src/engine/SCons/Environment.py
@@ -10,7 +10,7 @@ Environment
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ Environment
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Environment.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Environment.py 2014/07/05 09:42:21 garyo"
import copy
@@ -1803,8 +1803,8 @@ class Base(SubstitutionEnvironment):
pass
elif SCons.Util.is_String(pathext):
pathext = self.subst(pathext)
- prog = self.subst(prog)
- path = SCons.Util.WhereIs(prog, path, pathext, reject)
+ prog = SCons.Util.CLVar(self.subst(prog)) # support "program --with-args"
+ path = SCons.Util.WhereIs(prog[0], path, pathext, reject)
if path: return path
return None
@@ -2149,7 +2149,7 @@ class Base(SubstitutionEnvironment):
def SourceCode(self, entry, builder):
"""Arrange for a source code builder for (part of) a tree."""
msg = """SourceCode() has been deprecated and there is no replacement.
-\tIf you need this function, please contact dev@scons.tigris.org."""
+\tIf you need this function, please contact scons-dev@scons.org"""
SCons.Warnings.warn(SCons.Warnings.DeprecatedSourceCodeWarning, msg)
entries = self.arg2nodes(entry, self.fs.Entry)
for entry in entries:
diff --git a/src/engine/SCons/Environment.xml b/src/engine/SCons/Environment.xml
index 77660d5..4ed606c 100644
--- a/src/engine/SCons/Environment.xml
+++ b/src/engine/SCons/Environment.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<!-- Construction variables -->
@@ -3624,4 +3624,4 @@ list, if any.
</summary>
</scons_function>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/EnvironmentTests.py b/src/engine/SCons/EnvironmentTests.py
index d012e0d..03a3c43 100644
--- a/src/engine/SCons/EnvironmentTests.py
+++ b/src/engine/SCons/EnvironmentTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/EnvironmentTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/EnvironmentTests.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -29,10 +29,12 @@ import copy
import io
import os
import sys
-import TestCmd
import unittest
from collections import UserDict as UD, UserList as UL
+import TestCmd
+import TestUnit
+
from SCons.Environment import *
import SCons.Warnings
@@ -3999,8 +4001,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Errors.py b/src/engine/SCons/Errors.py
index bbdfc57..4c8aada 100644
--- a/src/engine/SCons/Errors.py
+++ b/src/engine/SCons/Errors.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ and user errors in SCons.
"""
-__revision__ = "src/engine/SCons/Errors.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Errors.py 2014/07/05 09:42:21 garyo"
import SCons.Util
diff --git a/src/engine/SCons/ErrorsTests.py b/src/engine/SCons/ErrorsTests.py
index 84f798b..3d3448e 100644
--- a/src/engine/SCons/ErrorsTests.py
+++ b/src/engine/SCons/ErrorsTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,10 +21,13 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/ErrorsTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/ErrorsTests.py 2014/07/05 09:42:21 garyo"
import sys
import unittest
+
+import TestUnit
+
import SCons.Errors
@@ -99,8 +102,7 @@ class ErrorsTestCase(unittest.TestCase):
if __name__ == "__main__":
suite = unittest.makeSuite(ErrorsTestCase, 'test_')
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Executor.py b/src/engine/SCons/Executor.py
index c9f64e4..602fffc 100644
--- a/src/engine/SCons/Executor.py
+++ b/src/engine/SCons/Executor.py
@@ -6,7 +6,7 @@ Nodes.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Nodes.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Executor.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Executor.py 2014/07/05 09:42:21 garyo"
import collections
diff --git a/src/engine/SCons/ExecutorTests.py b/src/engine/SCons/ExecutorTests.py
index 294ac1f..675e9fe 100644
--- a/src/engine/SCons/ExecutorTests.py
+++ b/src/engine/SCons/ExecutorTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,11 +21,13 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/ExecutorTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/ExecutorTests.py 2014/07/05 09:42:21 garyo"
import sys
import unittest
+import TestUnit
+
import SCons.Executor
@@ -455,8 +457,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Job.py b/src/engine/SCons/Job.py
index 43a8ae5..70abd53 100644
--- a/src/engine/SCons/Job.py
+++ b/src/engine/SCons/Job.py
@@ -7,7 +7,7 @@ stop, and wait on jobs.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ stop, and wait on jobs.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Job.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Job.py 2014/07/05 09:42:21 garyo"
import SCons.compat
diff --git a/src/engine/SCons/JobTests.py b/src/engine/SCons/JobTests.py
index 5c7e707..9b4a6c1 100644
--- a/src/engine/SCons/JobTests.py
+++ b/src/engine/SCons/JobTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -20,15 +20,19 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/JobTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/JobTests.py 2014/07/05 09:42:21 garyo"
import unittest
import random
import math
-import SCons.Job
import sys
import time
+import TestUnit
+
+import SCons.Job
+
+
# a large number
num_sines = 10000
@@ -521,8 +525,8 @@ def suite():
return suite
if __name__ == "__main__":
- runner = unittest.TextTestRunner()
- result = runner.run(suite())
+ runner = TestUnit.cli.get_runner()
+ result = runner().run(suite())
if (len(result.failures) == 0
and len(result.errors) == 1
and isinstance(result.errors[0][0], SerialTestCase)
diff --git a/src/engine/SCons/Memoize.py b/src/engine/SCons/Memoize.py
index 50dce3b..c4569ee 100644
--- a/src/engine/SCons/Memoize.py
+++ b/src/engine/SCons/Memoize.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Memoize.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Memoize.py 2014/07/05 09:42:21 garyo"
__doc__ = """Memoizer
diff --git a/src/engine/SCons/MemoizeTests.py b/src/engine/SCons/MemoizeTests.py
index 7ad1bb4..40eabe3 100644
--- a/src/engine/SCons/MemoizeTests.py
+++ b/src/engine/SCons/MemoizeTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,11 +21,13 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/MemoizeTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/MemoizeTests.py 2014/07/05 09:42:21 garyo"
import sys
import unittest
+import TestUnit
+
import SCons.Memoize
@@ -180,8 +182,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Node/Alias.py b/src/engine/SCons/Node/Alias.py
index 0b8f9b0..1573b74 100644
--- a/src/engine/SCons/Node/Alias.py
+++ b/src/engine/SCons/Node/Alias.py
@@ -8,7 +8,7 @@ This creates a hash of global Aliases (dummy targets).
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ This creates a hash of global Aliases (dummy targets).
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Node/Alias.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Node/Alias.py 2014/07/05 09:42:21 garyo"
import collections
diff --git a/src/engine/SCons/Node/AliasTests.py b/src/engine/SCons/Node/AliasTests.py
index e49514e..e1b9b7e 100644
--- a/src/engine/SCons/Node/AliasTests.py
+++ b/src/engine/SCons/Node/AliasTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,11 +21,13 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Node/AliasTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Node/AliasTests.py 2014/07/05 09:42:21 garyo"
import sys
import unittest
+import TestUnit
+
import SCons.Errors
import SCons.Node.Alias
@@ -120,8 +122,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py
index f54b0ab..6cf740b 100644
--- a/src/engine/SCons/Node/FS.py
+++ b/src/engine/SCons/Node/FS.py
@@ -11,7 +11,7 @@ that can be used by scripts or modules looking for the canonical default.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ that can be used by scripts or modules looking for the canonical default.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Node/FS.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Node/FS.py 2014/07/05 09:42:21 garyo"
import fnmatch
import os
diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py
index e347d3b..87fbd9f 100644
--- a/src/engine/SCons/Node/FSTests.py
+++ b/src/engine/SCons/Node/FSTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -22,7 +22,7 @@
#
from __future__ import division
-__revision__ = "src/engine/SCons/Node/FSTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Node/FSTests.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -31,10 +31,12 @@ import os.path
import sys
import time
import unittest
-from TestCmd import TestCmd
import shutil
import stat
+from TestCmd import TestCmd
+import TestUnit
+
import SCons.Errors
import SCons.Node.FS
import SCons.Util
@@ -3755,8 +3757,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py
index 19dcfd4..e5a9a2a 100644
--- a/src/engine/SCons/Node/NodeTests.py
+++ b/src/engine/SCons/Node/NodeTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -20,7 +20,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Node/NodeTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Node/NodeTests.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -30,6 +30,8 @@ import re
import sys
import unittest
+import TestUnit
+
import SCons.Errors
import SCons.Node
import SCons.Util
@@ -1311,8 +1313,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Node/Python.py b/src/engine/SCons/Node/Python.py
index 8936b6d..f2c0d5f 100644
--- a/src/engine/SCons/Node/Python.py
+++ b/src/engine/SCons/Node/Python.py
@@ -5,7 +5,7 @@ Python nodes.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Python nodes.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Node/Python.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Node/Python.py 2014/07/05 09:42:21 garyo"
import SCons.Node
diff --git a/src/engine/SCons/Node/PythonTests.py b/src/engine/SCons/Node/PythonTests.py
index b82ce2b..b1629c7 100644
--- a/src/engine/SCons/Node/PythonTests.py
+++ b/src/engine/SCons/Node/PythonTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,11 +21,13 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Node/PythonTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Node/PythonTests.py 2014/07/05 09:42:21 garyo"
import sys
import unittest
+import TestUnit
+
import SCons.Errors
import SCons.Node.Python
@@ -120,8 +122,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py
index e6a3001..25956ad 100644
--- a/src/engine/SCons/Node/__init__.py
+++ b/src/engine/SCons/Node/__init__.py
@@ -20,7 +20,7 @@ be able to depend on any other type of "thing."
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -41,7 +41,7 @@ be able to depend on any other type of "thing."
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Node/__init__.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Node/__init__.py 2014/07/05 09:42:21 garyo"
import collections
import copy
diff --git a/src/engine/SCons/Options/BoolOption.py b/src/engine/SCons/Options/BoolOption.py
index cc05944..4952b0d 100644
--- a/src/engine/SCons/Options/BoolOption.py
+++ b/src/engine/SCons/Options/BoolOption.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Options/BoolOption.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Options/BoolOption.py 2014/07/05 09:42:21 garyo"
__doc__ = """Place-holder for the old SCons.Options module hierarchy
diff --git a/src/engine/SCons/Options/EnumOption.py b/src/engine/SCons/Options/EnumOption.py
index 5ff79ba..cd1ced8 100644
--- a/src/engine/SCons/Options/EnumOption.py
+++ b/src/engine/SCons/Options/EnumOption.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Options/EnumOption.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Options/EnumOption.py 2014/07/05 09:42:21 garyo"
__doc__ = """Place-holder for the old SCons.Options module hierarchy
diff --git a/src/engine/SCons/Options/ListOption.py b/src/engine/SCons/Options/ListOption.py
index 190dff2..5bbcf65 100644
--- a/src/engine/SCons/Options/ListOption.py
+++ b/src/engine/SCons/Options/ListOption.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Options/ListOption.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Options/ListOption.py 2014/07/05 09:42:21 garyo"
__doc__ = """Place-holder for the old SCons.Options module hierarchy
diff --git a/src/engine/SCons/Options/PackageOption.py b/src/engine/SCons/Options/PackageOption.py
index 254b491..5acbfcd 100644
--- a/src/engine/SCons/Options/PackageOption.py
+++ b/src/engine/SCons/Options/PackageOption.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Options/PackageOption.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Options/PackageOption.py 2014/07/05 09:42:21 garyo"
__doc__ = """Place-holder for the old SCons.Options module hierarchy
diff --git a/src/engine/SCons/Options/PathOption.py b/src/engine/SCons/Options/PathOption.py
index bdde473..af714c7 100644
--- a/src/engine/SCons/Options/PathOption.py
+++ b/src/engine/SCons/Options/PathOption.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Options/PathOption.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Options/PathOption.py 2014/07/05 09:42:21 garyo"
__doc__ = """Place-holder for the old SCons.Options module hierarchy
diff --git a/src/engine/SCons/Options/__init__.py b/src/engine/SCons/Options/__init__.py
index e704de0..a888e46 100644
--- a/src/engine/SCons/Options/__init__.py
+++ b/src/engine/SCons/Options/__init__.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Options/__init__.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Options/__init__.py 2014/07/05 09:42:21 garyo"
__doc__ = """Place-holder for the old SCons.Options module hierarchy
diff --git a/src/engine/SCons/PathList.py b/src/engine/SCons/PathList.py
index 301c72f..efb08aa 100644
--- a/src/engine/SCons/PathList.py
+++ b/src/engine/SCons/PathList.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/PathList.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/PathList.py 2014/07/05 09:42:21 garyo"
__doc__ = """SCons.PathList
diff --git a/src/engine/SCons/PathListTests.py b/src/engine/SCons/PathListTests.py
index 8fdc370..dd9d96e 100644
--- a/src/engine/SCons/PathListTests.py
+++ b/src/engine/SCons/PathListTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,11 +21,13 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/PathListTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/PathListTests.py 2014/07/05 09:42:21 garyo"
import sys
import unittest
+import TestUnit
+
import SCons.PathList
@@ -196,8 +198,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Platform/PlatformTests.py b/src/engine/SCons/Platform/PlatformTests.py
index 093b804..94a697b 100644
--- a/src/engine/SCons/Platform/PlatformTests.py
+++ b/src/engine/SCons/Platform/PlatformTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/PlatformTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Platform/PlatformTests.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -29,6 +29,8 @@ import collections
import sys
import unittest
+import TestUnit
+
import SCons.Errors
import SCons.Platform
@@ -118,8 +120,7 @@ class PlatformTestCase(unittest.TestCase):
if __name__ == "__main__":
suite = unittest.makeSuite(PlatformTestCase, 'test_')
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Platform/__init__.py b/src/engine/SCons/Platform/__init__.py
index 25ea93e..f8d8041 100644
--- a/src/engine/SCons/Platform/__init__.py
+++ b/src/engine/SCons/Platform/__init__.py
@@ -20,7 +20,7 @@ their own platform definition.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -42,7 +42,7 @@ their own platform definition.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/__init__.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Platform/__init__.py 2014/07/05 09:42:21 garyo"
import SCons.compat
diff --git a/src/engine/SCons/Platform/__init__.xml b/src/engine/SCons/Platform/__init__.xml
index f80cefb..d3cce6c 100644
--- a/src/engine/SCons/Platform/__init__.xml
+++ b/src/engine/SCons/Platform/__init__.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<cvar name="ESCAPE">
<summary>
@@ -241,4 +241,4 @@ or '-via' for ARM toolchain.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Platform/aix.py b/src/engine/SCons/Platform/aix.py
index 98d4d8f..4d9ea92 100644
--- a/src/engine/SCons/Platform/aix.py
+++ b/src/engine/SCons/Platform/aix.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,13 +30,17 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/aix.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Platform/aix.py 2014/07/05 09:42:21 garyo"
import os
+import subprocess
import posix
-def get_xlc(env, xlc=None, xlc_r=None, packages=[]):
+import SCons.Util
+import SCons.Action
+
+def get_xlc(env, xlc=None, packages=[]):
# Use the AIX package installer tool lslpp to figure out where a
# given xl* compiler is installed and what version it is.
xlcPath = None
@@ -44,18 +48,30 @@ def get_xlc(env, xlc=None, xlc_r=None, packages=[]):
if xlc is None:
xlc = env.get('CC', 'xlc')
- if xlc_r is None:
- xlc_r = xlc + '_r'
+ if SCons.Util.is_List(xlc):
+ xlc = xlc[0]
for package in packages:
- cmd = "lslpp -fc " + package + " 2>/dev/null | egrep '" + xlc + "([^-_a-zA-Z0-9].*)?$'"
- line = os.popen(cmd).readline()
- if line:
- v, p = line.split(':')[1:3]
- xlcVersion = v.split()[1]
- xlcPath = p.split()[0]
- xlcPath = xlcPath[:xlcPath.rindex('/')]
- break
- return (xlcPath, xlc, xlc_r, xlcVersion)
+ # find the installed filename, which may be a symlink as well
+ pipe = SCons.Action._subproc(env, ['lslpp', '-fc', package],
+ stdin = 'devnull',
+ stderr = 'devnull',
+ stdout = subprocess.PIPE)
+ # output of lslpp is something like this:
+ # #Path:Fileset:File
+ # /usr/lib/objrepos:vac.C 6.0.0.0:/usr/vac/exe/xlCcpp
+ # /usr/lib/objrepos:vac.C 6.0.0.0:/usr/vac/bin/xlc_r -> /usr/vac/bin/xlc
+ for line in pipe.stdout:
+ if xlcPath:
+ continue # read everything to let lslpp terminate
+ fileset, filename = line.split(':')[1:3]
+ filename = filename.split()[0]
+ if ('/' in xlc and filename == xlc) \
+ or ('/' not in xlc and filename.endswith('/' + xlc)):
+ xlcVersion = fileset.split()[1]
+ xlcPath, sep, xlc = filename.rpartition('/')
+ pass
+ pass
+ return (xlcPath, xlc, xlcVersion)
def generate(env):
posix.generate(env)
diff --git a/src/engine/SCons/Platform/cygwin.py b/src/engine/SCons/Platform/cygwin.py
index 7429407..781f12d 100644
--- a/src/engine/SCons/Platform/cygwin.py
+++ b/src/engine/SCons/Platform/cygwin.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/cygwin.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Platform/cygwin.py 2014/07/05 09:42:21 garyo"
import posix
from SCons.Platform import TempFileMunge
diff --git a/src/engine/SCons/Platform/darwin.py b/src/engine/SCons/Platform/darwin.py
index 3307839..bf61000 100644
--- a/src/engine/SCons/Platform/darwin.py
+++ b/src/engine/SCons/Platform/darwin.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/darwin.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Platform/darwin.py 2014/07/05 09:42:21 garyo"
import posix
import os
diff --git a/src/engine/SCons/Platform/hpux.py b/src/engine/SCons/Platform/hpux.py
index 5c003ca..9e5fe6a 100644
--- a/src/engine/SCons/Platform/hpux.py
+++ b/src/engine/SCons/Platform/hpux.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/hpux.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Platform/hpux.py 2014/07/05 09:42:21 garyo"
import posix
diff --git a/src/engine/SCons/Platform/irix.py b/src/engine/SCons/Platform/irix.py
index abb2a58..4287f97 100644
--- a/src/engine/SCons/Platform/irix.py
+++ b/src/engine/SCons/Platform/irix.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/irix.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Platform/irix.py 2014/07/05 09:42:21 garyo"
import posix
diff --git a/src/engine/SCons/Platform/os2.py b/src/engine/SCons/Platform/os2.py
index 83cd7ef..93b7b95 100644
--- a/src/engine/SCons/Platform/os2.py
+++ b/src/engine/SCons/Platform/os2.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/os2.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Platform/os2.py 2014/07/05 09:42:21 garyo"
import win32
def generate(env):
diff --git a/src/engine/SCons/Platform/posix.py b/src/engine/SCons/Platform/posix.py
index 5deb2d0..eb4f6c9 100644
--- a/src/engine/SCons/Platform/posix.py
+++ b/src/engine/SCons/Platform/posix.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/posix.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Platform/posix.py 2014/07/05 09:42:21 garyo"
import errno
import os
@@ -113,6 +113,10 @@ def generate(env):
# This platform supports RPATH specifications.
env['__RPATH'] = '$_RPATH'
+ # GDC is GCC family, but DMD and LDC have different options.
+ # Must be able to have GCC and DMD work in the same build, so:
+ env['__DRPATH'] = '$_DRPATH'
+
# Local Variables:
# tab-width:4
# indent-tabs-mode:nil
diff --git a/src/engine/SCons/Platform/posix.xml b/src/engine/SCons/Platform/posix.xml
index be67d87..9d3771f 100644
--- a/src/engine/SCons/Platform/posix.xml
+++ b/src/engine/SCons/Platform/posix.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<cvar name="RPATH">
<summary>
@@ -77,4 +77,4 @@ when the &cv-_RPATH; variable is automatically generated.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Platform/sunos.py b/src/engine/SCons/Platform/sunos.py
index 911b97f..a9d3001 100644
--- a/src/engine/SCons/Platform/sunos.py
+++ b/src/engine/SCons/Platform/sunos.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/sunos.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Platform/sunos.py 2014/07/05 09:42:21 garyo"
import posix
diff --git a/src/engine/SCons/Platform/sunos.xml b/src/engine/SCons/Platform/sunos.xml
index a2a8f38..d6d978c 100644
--- a/src/engine/SCons/Platform/sunos.xml
+++ b/src/engine/SCons/Platform/sunos.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<cvar name="PKGCHK">
@@ -52,4 +52,4 @@ The default is
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Platform/win32.py b/src/engine/SCons/Platform/win32.py
index b7b65e1..6511f12 100644
--- a/src/engine/SCons/Platform/win32.py
+++ b/src/engine/SCons/Platform/win32.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Platform/win32.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Platform/win32.py 2014/07/05 09:42:21 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Platform/win32.xml b/src/engine/SCons/Platform/win32.xml
index cf1c746..75ae3df 100644
--- a/src/engine/SCons/Platform/win32.xml
+++ b/src/engine/SCons/Platform/win32.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<cvar name="MAXLINELENGTH">
<summary>
@@ -34,4 +34,4 @@ are linked via a temporary file name.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/SConf.py b/src/engine/SCons/SConf.py
index 63f04c3..c32f726 100644
--- a/src/engine/SCons/SConf.py
+++ b/src/engine/SCons/SConf.py
@@ -1,10 +1,19 @@
"""SCons.SConf
Autoconf-like configuration support.
+
+In other words, this package allows to run series of tests to detect
+capabilities of current system and generate config files (header files
+in C/C++) that turn on system-specific options and optimizations.
+
+For example, it is possible to detect if optional libraries are present
+on current system and generate config that makes compiler include them.
+C compilers do not have ability to catch ImportError if some library is
+not found, so these checks should be done externally.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +35,7 @@ Autoconf-like configuration support.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/SConf.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/SConf.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -110,16 +119,22 @@ def _createConfigH(target, source, env):
def _stringConfigH(target, source, env):
return "scons: Configure: creating " + str(target[0])
-def CreateConfigHBuilder(env):
- """Called just before the building targets phase begins."""
+
+def NeedConfigHBuilder():
if len(_ac_config_hs) == 0:
- return
+ return False
+ else:
+ return True
+
+def CreateConfigHBuilder(env):
+ """Called if necessary just before the building targets phase begins."""
action = SCons.Action.Action(_createConfigH,
_stringConfigH)
sconfigHBld = SCons.Builder.Builder(action=action)
env.Append( BUILDERS={'SConfigHBuilder':sconfigHBld} )
for k in _ac_config_hs.keys():
env.SConfigHBuilder(k, env.Value(_ac_config_hs[k]))
+
class SConfWarning(SCons.Warnings.Warning):
pass
@@ -180,7 +195,13 @@ class Streamer(object):
def write(self, str):
if self.orig:
self.orig.write(str)
- self.s.write(str)
+ try:
+ self.s.write(str)
+ except TypeError as e:
+ if e.message.startswith('unicode argument expected'):
+ self.s.write(str.decode())
+ else:
+ raise
def writelines(self, lines):
for l in lines:
diff --git a/src/engine/SCons/SConfTests.py b/src/engine/SCons/SConfTests.py
index d9e314a..2eed690 100644
--- a/src/engine/SCons/SConfTests.py
+++ b/src/engine/SCons/SConfTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/SConfTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/SConfTests.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -33,6 +33,8 @@ from types import *
import unittest
import TestCmd
+import TestUnit
+
sys.stdout = io.StringIO()
@@ -752,9 +754,7 @@ int main() {
if __name__ == "__main__":
suite = unittest.makeSuite(SConfTestCase, 'test_')
- res = unittest.TextTestRunner().run(suite)
- if not res.wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/SConsign.py b/src/engine/SCons/SConsign.py
index a0061e8..e03b4a0 100644
--- a/src/engine/SCons/SConsign.py
+++ b/src/engine/SCons/SConsign.py
@@ -5,7 +5,7 @@ Writing and reading information to the .sconsign file or files.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Writing and reading information to the .sconsign file or files.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/SConsign.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/SConsign.py 2014/07/05 09:42:21 garyo"
import SCons.compat
diff --git a/src/engine/SCons/SConsignTests.py b/src/engine/SCons/SConsignTests.py
index e02bb40..1ef02ba 100644
--- a/src/engine/SCons/SConsignTests.py
+++ b/src/engine/SCons/SConsignTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,13 +21,15 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/SConsignTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/SConsignTests.py 2014/07/05 09:42:21 garyo"
import os
import sys
-import TestCmd
import unittest
+import TestCmd
+import TestUnit
+
import SCons.dblite
import SCons.SConsign
@@ -387,8 +389,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Scanner/C.py b/src/engine/SCons/Scanner/C.py
index fedfe23..2b59620 100644
--- a/src/engine/SCons/Scanner/C.py
+++ b/src/engine/SCons/Scanner/C.py
@@ -5,7 +5,7 @@ This module implements the depenency scanner for C/C++ code.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ This module implements the depenency scanner for C/C++ code.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/C.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/C.py 2014/07/05 09:42:21 garyo"
import SCons.Node.FS
import SCons.Scanner
diff --git a/src/engine/SCons/Scanner/CTests.py b/src/engine/SCons/Scanner/CTests.py
index 3cf0d9c..bee3f51 100644
--- a/src/engine/SCons/Scanner/CTests.py
+++ b/src/engine/SCons/Scanner/CTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,16 +21,18 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/CTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/CTests.py 2014/07/05 09:42:21 garyo"
import SCons.compat
import collections
import os
import sys
-import TestCmd
import unittest
+import TestCmd
+import TestUnit
+
import SCons.Node.FS
import SCons.Warnings
@@ -457,10 +459,7 @@ def suite():
return suite
if __name__ == "__main__":
- runner = unittest.TextTestRunner()
- result = runner.run(suite())
- if not result.wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite())
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Scanner/D.py b/src/engine/SCons/Scanner/D.py
index 76762b8..89f7ff8 100644
--- a/src/engine/SCons/Scanner/D.py
+++ b/src/engine/SCons/Scanner/D.py
@@ -8,7 +8,7 @@ Coded by Andy Friesen
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ Coded by Andy Friesen
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/D.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/D.py 2014/07/05 09:42:21 garyo"
import re
diff --git a/src/engine/SCons/Scanner/Dir.py b/src/engine/SCons/Scanner/Dir.py
index 3c3f227..327d636 100644
--- a/src/engine/SCons/Scanner/Dir.py
+++ b/src/engine/SCons/Scanner/Dir.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -20,7 +20,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Scanner/Dir.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/Dir.py 2014/07/05 09:42:21 garyo"
import SCons.Node.FS
import SCons.Scanner
diff --git a/src/engine/SCons/Scanner/DirTests.py b/src/engine/SCons/Scanner/DirTests.py
index 0f312cb..4f059a0 100644
--- a/src/engine/SCons/Scanner/DirTests.py
+++ b/src/engine/SCons/Scanner/DirTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,13 +21,15 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/DirTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/DirTests.py 2014/07/05 09:42:21 garyo"
import os.path
import sys
import unittest
import TestCmd
+import TestUnit
+
import SCons.Node.FS
import SCons.Scanner.Dir
@@ -126,10 +128,7 @@ def suite():
return suite
if __name__ == "__main__":
- runner = unittest.TextTestRunner()
- result = runner.run(suite())
- if not result.wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite())
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Scanner/Fortran.py b/src/engine/SCons/Scanner/Fortran.py
index 858c89a..5468031 100644
--- a/src/engine/SCons/Scanner/Fortran.py
+++ b/src/engine/SCons/Scanner/Fortran.py
@@ -5,7 +5,7 @@ This module implements the dependency scanner for Fortran code.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ This module implements the dependency scanner for Fortran code.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Scanner/Fortran.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/Fortran.py 2014/07/05 09:42:21 garyo"
import re
diff --git a/src/engine/SCons/Scanner/FortranTests.py b/src/engine/SCons/Scanner/FortranTests.py
index 24ccb85..f304218 100644
--- a/src/engine/SCons/Scanner/FortranTests.py
+++ b/src/engine/SCons/Scanner/FortranTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/FortranTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/FortranTests.py 2014/07/05 09:42:21 garyo"
import os
import os.path
@@ -33,6 +33,7 @@ import SCons.Node.FS
import SCons.Warnings
import TestCmd
+import TestUnit
original = os.getcwd()
@@ -531,10 +532,7 @@ def suite():
return suite
if __name__ == "__main__":
- runner = unittest.TextTestRunner()
- result = runner.run(suite())
- if not result.wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite())
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Scanner/IDL.py b/src/engine/SCons/Scanner/IDL.py
index d271056..8fd1912 100644
--- a/src/engine/SCons/Scanner/IDL.py
+++ b/src/engine/SCons/Scanner/IDL.py
@@ -6,7 +6,7 @@ Definition Language) files.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ Definition Language) files.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/IDL.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/IDL.py 2014/07/05 09:42:21 garyo"
import SCons.Node.FS
import SCons.Scanner
diff --git a/src/engine/SCons/Scanner/IDLTests.py b/src/engine/SCons/Scanner/IDLTests.py
index 34a587d..4cddcc6 100644
--- a/src/engine/SCons/Scanner/IDLTests.py
+++ b/src/engine/SCons/Scanner/IDLTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,14 +21,17 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/IDLTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/IDLTests.py 2014/07/05 09:42:21 garyo"
-import TestCmd
-import SCons.Scanner.IDL
import unittest
import sys
import os
import os.path
+
+import TestCmd
+import TestUnit
+
+import SCons.Scanner.IDL
import SCons.Node.FS
import SCons.Warnings
@@ -441,10 +444,7 @@ def suite():
return suite
if __name__ == "__main__":
- runner = unittest.TextTestRunner()
- result = runner.run(suite())
- if not result.wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite())
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Scanner/LaTeX.py b/src/engine/SCons/Scanner/LaTeX.py
index 21c9ba1..51c8e20 100644
--- a/src/engine/SCons/Scanner/LaTeX.py
+++ b/src/engine/SCons/Scanner/LaTeX.py
@@ -5,7 +5,7 @@ This module implements the dependency scanner for LaTeX code.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ This module implements the dependency scanner for LaTeX code.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/LaTeX.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/LaTeX.py 2014/07/05 09:42:21 garyo"
import os.path
import re
diff --git a/src/engine/SCons/Scanner/LaTeXTests.py b/src/engine/SCons/Scanner/LaTeXTests.py
index 6b2fc21..80fe1dc 100644
--- a/src/engine/SCons/Scanner/LaTeXTests.py
+++ b/src/engine/SCons/Scanner/LaTeXTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/LaTeXTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/LaTeXTests.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -31,6 +31,8 @@ import sys
import unittest
import TestCmd
+import TestUnit
+
import SCons.Node.FS
import SCons.Scanner.LaTeX
@@ -150,10 +152,7 @@ def suite():
return suite
if __name__ == "__main__":
- runner = unittest.TextTestRunner()
- result = runner.run(suite())
- if not result.wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite())
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Scanner/Prog.py b/src/engine/SCons/Scanner/Prog.py
index 65c9503..07ffd62 100644
--- a/src/engine/SCons/Scanner/Prog.py
+++ b/src/engine/SCons/Scanner/Prog.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/Prog.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/Prog.py 2014/07/05 09:42:21 garyo"
import SCons.Node
import SCons.Node.FS
diff --git a/src/engine/SCons/Scanner/ProgTests.py b/src/engine/SCons/Scanner/ProgTests.py
index b9fde1d..072a295 100644
--- a/src/engine/SCons/Scanner/ProgTests.py
+++ b/src/engine/SCons/Scanner/ProgTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,13 +21,15 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/ProgTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/ProgTests.py 2014/07/05 09:42:21 garyo"
import os.path
import sys
import unittest
import TestCmd
+import TestUnit
+
import SCons.Node.FS
import SCons.Scanner.Prog
@@ -249,10 +251,7 @@ def suite():
return suite
if __name__ == "__main__":
- runner = unittest.TextTestRunner()
- result = runner.run(suite())
- if not result.wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite())
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Scanner/RC.py b/src/engine/SCons/Scanner/RC.py
index 4b473eb..ff2359b 100644
--- a/src/engine/SCons/Scanner/RC.py
+++ b/src/engine/SCons/Scanner/RC.py
@@ -6,7 +6,7 @@ Definition Language) files.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ Definition Language) files.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/RC.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/RC.py 2014/07/05 09:42:21 garyo"
import SCons.Node.FS
import SCons.Scanner
diff --git a/src/engine/SCons/Scanner/RCTests.py b/src/engine/SCons/Scanner/RCTests.py
index ed8991c..c698a1c 100644
--- a/src/engine/SCons/Scanner/RCTests.py
+++ b/src/engine/SCons/Scanner/RCTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,14 +21,17 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/RCTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/RCTests.py 2014/07/05 09:42:21 garyo"
-import TestCmd
-import SCons.Scanner.RC
import unittest
import sys
import collections
import os
+
+import TestCmd
+import TestUnit
+
+import SCons.Scanner.RC
import SCons.Node.FS
import SCons.Warnings
@@ -164,10 +167,7 @@ def suite():
return suite
if __name__ == "__main__":
- runner = unittest.TextTestRunner()
- result = runner.run(suite())
- if not result.wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite())
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Scanner/ScannerTests.py b/src/engine/SCons/Scanner/ScannerTests.py
index 523de77..def79b9 100644
--- a/src/engine/SCons/Scanner/ScannerTests.py
+++ b/src/engine/SCons/Scanner/ScannerTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -20,7 +20,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Scanner/ScannerTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/ScannerTests.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -28,6 +28,8 @@ import collections
import sys
import unittest
+import TestUnit
+
import SCons.Scanner
class DummyFS(object):
@@ -593,10 +595,7 @@ def suite():
return suite
if __name__ == "__main__":
- runner = unittest.TextTestRunner()
- result = runner.run(suite())
- if not result.wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite())
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Scanner/__init__.py b/src/engine/SCons/Scanner/__init__.py
index bfd25fd..b846ade 100644
--- a/src/engine/SCons/Scanner/__init__.py
+++ b/src/engine/SCons/Scanner/__init__.py
@@ -5,7 +5,7 @@ The Scanner package for the SCons software construction utility.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ The Scanner package for the SCons software construction utility.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Scanner/__init__.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Scanner/__init__.py 2014/07/05 09:42:21 garyo"
import re
diff --git a/src/engine/SCons/Scanner/__init__.xml b/src/engine/SCons/Scanner/__init__.xml
index 410f388..f6d8660 100644
--- a/src/engine/SCons/Scanner/__init__.xml
+++ b/src/engine/SCons/Scanner/__init__.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<scons_function name="FindPathDirs">
@@ -88,4 +88,4 @@ scanner = Scanner(name = 'myscanner',
</summary>
</scons_function>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Script/Interactive.py b/src/engine/SCons/Script/Interactive.py
index 1bc4fc8..b800882 100644
--- a/src/engine/SCons/Script/Interactive.py
+++ b/src/engine/SCons/Script/Interactive.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -20,7 +20,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Script/Interactive.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Script/Interactive.py 2014/07/05 09:42:21 garyo"
__doc__ = """
SCons interactive mode
diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py
index 164c61d..b38f13f 100644
--- a/src/engine/SCons/Script/Main.py
+++ b/src/engine/SCons/Script/Main.py
@@ -13,7 +13,7 @@ it goes here.
unsupported_python_version = (2, 3, 0)
deprecated_python_version = (2, 7, 0)
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -34,7 +34,7 @@ deprecated_python_version = (2, 7, 0)
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Script/Main.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Script/Main.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -312,7 +312,7 @@ class BuildTask(SCons.Taskmaster.OutOfDateTask):
class CleanTask(SCons.Taskmaster.AlwaysTask):
"""An SCons clean task."""
- def fs_delete(self, path, pathstr, remove=1):
+ def fs_delete(self, path, pathstr, remove=True):
try:
if os.path.lexists(path):
if os.path.isfile(path) or os.path.islink(path):
@@ -339,37 +339,41 @@ class CleanTask(SCons.Taskmaster.AlwaysTask):
except (IOError, OSError), e:
print "scons: Could not remove '%s':" % pathstr, e.strerror
- def show(self):
+ def _get_files_to_clean(self):
+ result = []
target = self.targets[0]
- if (target.has_builder() or target.side_effect) and not target.noclean:
- for t in self.targets:
- if not t.isdir():
- display("Removed " + str(t))
- if target in SCons.Environment.CleanTargets:
- files = SCons.Environment.CleanTargets[target]
- for f in files:
- self.fs_delete(f.abspath, str(f), 0)
+ if target.has_builder() or target.side_effect:
+ result = [t for t in self.targets if not t.noclean]
+ return result
- def remove(self):
+ def _clean_targets(self, remove=True):
target = self.targets[0]
- if (target.has_builder() or target.side_effect) and not target.noclean:
- for t in self.targets:
- try:
- removed = t.remove()
- except OSError, e:
- # An OSError may indicate something like a permissions
- # issue, an IOError would indicate something like
- # the file not existing. In either case, print a
- # message and keep going to try to remove as many
- # targets aa possible.
- print "scons: Could not remove '%s':" % str(t), e.strerror
- else:
- if removed:
- display("Removed " + str(t))
if target in SCons.Environment.CleanTargets:
files = SCons.Environment.CleanTargets[target]
for f in files:
- self.fs_delete(f.abspath, str(f))
+ self.fs_delete(f.abspath, str(f), remove)
+
+ def show(self):
+ for t in self._get_files_to_clean():
+ if not t.isdir():
+ display("Removed " + str(t))
+ self._clean_targets(remove=False)
+
+ def remove(self):
+ for t in self._get_files_to_clean():
+ try:
+ removed = t.remove()
+ except OSError, e:
+ # An OSError may indicate something like a permissions
+ # issue, an IOError would indicate something like
+ # the file not existing. In either case, print a
+ # message and keep going to try to remove as many
+ # targets aa possible.
+ print "scons: Could not remove '%s':" % str(t), e.strerror
+ else:
+ if removed:
+ display("Removed " + str(t))
+ self._clean_targets(remove=True)
execute = remove
@@ -1021,13 +1025,17 @@ def _main(parser):
# in case they disabled the warning in the SConscript files.
if python_version_deprecated():
msg = "Support for pre-%s Python version (%s) is deprecated.\n" + \
- " If this will cause hardship, contact dev@scons.tigris.org."
+ " If this will cause hardship, contact scons-dev@scons.org"
deprecated_version_string = ".".join(map(str, deprecated_python_version))
SCons.Warnings.warn(SCons.Warnings.PythonVersionWarning,
msg % (deprecated_version_string, python_version_string()))
if not options.help:
- SCons.SConf.CreateConfigHBuilder(SCons.Defaults.DefaultEnvironment())
+ # [ ] Clarify why we need to create Builder here at all, and
+ # why it is created in DefaultEnvironment
+ # https://bitbucket.org/scons/scons/commits/d27a548aeee8ad5e67ea75c2d19a7d305f784e30
+ if SCons.SConf.NeedConfigHBuilder():
+ SCons.SConf.CreateConfigHBuilder(SCons.Defaults.DefaultEnvironment())
# Now re-parse the command-line options (any to the left of a '--'
# argument, that is) with any user-defined command-line options that
@@ -1343,7 +1351,7 @@ def main():
pass
parts.append(version_string("engine", SCons))
parts.append(path_string("engine", SCons))
- parts.append("Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation")
+ parts.append("Copyright (c) 2001 - 2014 The SCons Foundation")
version = ''.join(parts)
import SConsOptions
diff --git a/src/engine/SCons/Script/Main.xml b/src/engine/SCons/Script/Main.xml
index 162dfac..e494328 100644
--- a/src/engine/SCons/Script/Main.xml
+++ b/src/engine/SCons/Script/Main.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<scons_function name="AddOption">
diff --git a/src/engine/SCons/Script/MainTests.py b/src/engine/SCons/Script/MainTests.py
index 25977fa..879ee4f 100644
--- a/src/engine/SCons/Script/MainTests.py
+++ b/src/engine/SCons/Script/MainTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,9 +21,12 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Script/MainTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Script/MainTests.py 2014/07/05 09:42:21 garyo"
import unittest
+
+import TestUnit
+
import SCons.Errors
import SCons.Script.Main
@@ -43,8 +46,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Script/SConsOptions.py b/src/engine/SCons/Script/SConsOptions.py
index 09f71b7..10c3a98 100644
--- a/src/engine/SCons/Script/SConsOptions.py
+++ b/src/engine/SCons/Script/SConsOptions.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Script/SConsOptions.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Script/SConsOptions.py 2014/07/05 09:42:21 garyo"
import optparse
import re
diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py
index 52aade2..9f837aa 100644
--- a/src/engine/SCons/Script/SConscript.py
+++ b/src/engine/SCons/Script/SConscript.py
@@ -6,7 +6,7 @@ files.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ files.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from __future__ import division
-__revision__ = "src/engine/SCons/Script/SConscript.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Script/SConscript.py 2014/07/05 09:42:21 garyo"
import SCons
import SCons.Action
diff --git a/src/engine/SCons/Script/SConscript.xml b/src/engine/SCons/Script/SConscript.xml
index 9fab301..1c72b4d 100644
--- a/src/engine/SCons/Script/SConscript.xml
+++ b/src/engine/SCons/Script/SConscript.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<scons_function name="Default">
@@ -593,4 +593,4 @@ SConscript('src/SConscript', variant_dir='build/ppc', duplicate=0)
</summary>
</scons_function>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Script/SConscriptTests.py b/src/engine/SCons/Script/SConscriptTests.py
index 6a2dcda..807d263 100644
--- a/src/engine/SCons/Script/SConscriptTests.py
+++ b/src/engine/SCons/Script/SConscriptTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Script/SConscriptTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Script/SConscriptTests.py 2014/07/05 09:42:21 garyo"
import SCons.Script.SConscript
diff --git a/src/engine/SCons/Script/__init__.py b/src/engine/SCons/Script/__init__.py
index c27dacd..d327753 100644
--- a/src/engine/SCons/Script/__init__.py
+++ b/src/engine/SCons/Script/__init__.py
@@ -12,7 +12,7 @@ it goes here.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -34,7 +34,7 @@ it goes here.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Script/__init__.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Script/__init__.py 2014/07/05 09:42:21 garyo"
import time
start_time = time.time()
diff --git a/src/engine/SCons/Sig.py b/src/engine/SCons/Sig.py
index 66803dd..4581793 100644
--- a/src/engine/SCons/Sig.py
+++ b/src/engine/SCons/Sig.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Sig.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Sig.py 2014/07/05 09:42:21 garyo"
__doc__ = """Place-holder for the old SCons.Sig module hierarchy
diff --git a/src/engine/SCons/Subst.py b/src/engine/SCons/Subst.py
index 0ca6490..1246e36 100644
--- a/src/engine/SCons/Subst.py
+++ b/src/engine/SCons/Subst.py
@@ -5,7 +5,7 @@ SCons string substitution.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ SCons string substitution.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Subst.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Subst.py 2014/07/05 09:42:21 garyo"
import collections
import re
diff --git a/src/engine/SCons/Subst.xml b/src/engine/SCons/Subst.xml
index 26abf10..6b32372 100644
--- a/src/engine/SCons/Subst.xml
+++ b/src/engine/SCons/Subst.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<scons_function name="AllowSubstExceptions">
@@ -70,4 +70,4 @@ AllowSubstExceptions(IndexError, NameError, ZeroDivisionError)
</summary>
</scons_function>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/SubstTests.py b/src/engine/SCons/SubstTests.py
index a0b7288..396faaa 100644
--- a/src/engine/SCons/SubstTests.py
+++ b/src/engine/SCons/SubstTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/SubstTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/SubstTests.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -31,6 +31,8 @@ import unittest
from collections import UserDict
+import TestUnit
+
import SCons.Errors
from SCons.Subst import *
@@ -1233,8 +1235,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py
index 5e4851a..2c5ca5e 100644
--- a/src/engine/SCons/Taskmaster.py
+++ b/src/engine/SCons/Taskmaster.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -47,7 +47,7 @@ interface and the SCons build engine. There are two key classes here:
target(s) that it decides need to be evaluated and/or built.
"""
-__revision__ = "src/engine/SCons/Taskmaster.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Taskmaster.py 2014/07/05 09:42:21 garyo"
from itertools import chain
import operator
diff --git a/src/engine/SCons/TaskmasterTests.py b/src/engine/SCons/TaskmasterTests.py
index ff5f30d..139f8fd 100644
--- a/src/engine/SCons/TaskmasterTests.py
+++ b/src/engine/SCons/TaskmasterTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -22,7 +22,7 @@
#
from __future__ import division
-__revision__ = "src/engine/SCons/TaskmasterTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/TaskmasterTests.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -30,6 +30,8 @@ import copy
import sys
import unittest
+import TestUnit
+
import SCons.Taskmaster
import SCons.Errors
@@ -1223,8 +1225,7 @@ Taskmaster: No candidate anymore.
if __name__ == "__main__":
suite = unittest.makeSuite(TaskmasterTestCase, 'test_')
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Tool/386asm.py b/src/engine/SCons/Tool/386asm.py
index 0d96b3d..dbe8d52 100644
--- a/src/engine/SCons/Tool/386asm.py
+++ b/src/engine/SCons/Tool/386asm.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/386asm.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/386asm.py 2014/07/05 09:42:21 garyo"
from SCons.Tool.PharLapCommon import addPharLapPaths
import SCons.Util
diff --git a/src/engine/SCons/Tool/386asm.xml b/src/engine/SCons/Tool/386asm.xml
index 5eafbe7..5122698 100644
--- a/src/engine/SCons/Tool/386asm.xml
+++ b/src/engine/SCons/Tool/386asm.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="386asm">
<summary>
@@ -45,4 +45,4 @@ for the Phar Lap ETS embedded operating system.
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/BitKeeper.py b/src/engine/SCons/Tool/BitKeeper.py
index f99054c..1f20f01 100644
--- a/src/engine/SCons/Tool/BitKeeper.py
+++ b/src/engine/SCons/Tool/BitKeeper.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/BitKeeper.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/BitKeeper.py 2014/07/05 09:42:21 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/BitKeeper.xml b/src/engine/SCons/Tool/BitKeeper.xml
index aff9a90..799ff03 100644
--- a/src/engine/SCons/Tool/BitKeeper.xml
+++ b/src/engine/SCons/Tool/BitKeeper.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="BitKeeper">
<summary>
@@ -120,4 +120,4 @@ env.SourceCode('.', env.BitKeeper())
</summary>
</scons_function>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/CVS.py b/src/engine/SCons/Tool/CVS.py
index 035ee63..9b08368 100644
--- a/src/engine/SCons/Tool/CVS.py
+++ b/src/engine/SCons/Tool/CVS.py
@@ -8,7 +8,7 @@ selection method.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/CVS.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/CVS.py 2014/07/05 09:42:21 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/CVS.xml b/src/engine/SCons/Tool/CVS.xml
index b8e16ed..ab1e3b3 100644
--- a/src/engine/SCons/Tool/CVS.xml
+++ b/src/engine/SCons/Tool/CVS.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="CVS">
<summary>
@@ -156,4 +156,4 @@ env.SourceCode('.', env.CVS('/usr/local/CVSROOT', 'foo/bar'))
</summary>
</scons_function>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/DCommon.py b/src/engine/SCons/Tool/DCommon.py
new file mode 100644
index 0000000..ebced53
--- /dev/null
+++ b/src/engine/SCons/Tool/DCommon.py
@@ -0,0 +1,56 @@
+"""SCons.Tool.DCommon
+
+Common code for the various D tools.
+
+Coded by Russel Winder (russel@winder.org.uk)
+2012-09-06
+"""
+#
+# Copyright (c) 2001 - 2014 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+__revision__ = "src/engine/SCons/Tool/DCommon.py 2014/07/05 09:42:21 garyo"
+
+import os.path
+
+def isD(env, source):
+ if not source:
+ return 0
+ for s in source:
+ if s.sources:
+ ext = os.path.splitext(str(s.sources[0]))[1]
+ if ext == '.d':
+ return 1
+ return 0
+
+def addDPATHToEnv(env, executable):
+ dPath = env.WhereIs(executable)
+ if dPath:
+ phobosDir = dPath[:dPath.rindex(executable)] + '/../src/phobos'
+ if os.path.isdir(phobosDir):
+ env.Append(DPATH=[phobosDir])
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/src/engine/SCons/Tool/FortranCommon.py b/src/engine/SCons/Tool/FortranCommon.py
index bd211ef..6a41afb 100644
--- a/src/engine/SCons/Tool/FortranCommon.py
+++ b/src/engine/SCons/Tool/FortranCommon.py
@@ -5,7 +5,7 @@ Stuff for processing Fortran, common to all fortran dialects.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Stuff for processing Fortran, common to all fortran dialects.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/FortranCommon.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/FortranCommon.py 2014/07/05 09:42:21 garyo"
import re
import os.path
diff --git a/src/engine/SCons/Tool/GettextCommon.py b/src/engine/SCons/Tool/GettextCommon.py
index db8d950..f71a524 100644
--- a/src/engine/SCons/Tool/GettextCommon.py
+++ b/src/engine/SCons/Tool/GettextCommon.py
@@ -3,7 +3,7 @@
Used by several tools of `gettext` toolset.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -24,7 +24,7 @@ Used by several tools of `gettext` toolset.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/GettextCommon.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/GettextCommon.py 2014/07/05 09:42:21 garyo"
import SCons.Warnings
import re
diff --git a/src/engine/SCons/Tool/JavaCommon.py b/src/engine/SCons/Tool/JavaCommon.py
index 8e5473d..55dc558 100644
--- a/src/engine/SCons/Tool/JavaCommon.py
+++ b/src/engine/SCons/Tool/JavaCommon.py
@@ -5,7 +5,7 @@ Stuff for processing Java.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Stuff for processing Java.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/JavaCommon.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/JavaCommon.py 2014/07/05 09:42:21 garyo"
import os
import os.path
@@ -244,7 +244,8 @@ if java_parsing:
return self
# If that's an inner class which is declared in a method, it
# requires an index prepended to the class-name, e.g.
- # 'Foo$1Inner' (Tigris Issue 2087)
+ # 'Foo$1Inner'
+ # http://scons.tigris.org/issues/show_bug.cgi?id=2087
if self.outer_state.localClasses and \
self.outer_state.stackBrackets[-1] > \
self.outer_state.stackBrackets[-2]+1:
diff --git a/src/engine/SCons/Tool/JavaCommonTests.py b/src/engine/SCons/Tool/JavaCommonTests.py
index 06a1677..0ecfc42 100644
--- a/src/engine/SCons/Tool/JavaCommonTests.py
+++ b/src/engine/SCons/Tool/JavaCommonTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,12 +21,15 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/JavaCommonTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/JavaCommonTests.py 2014/07/05 09:42:21 garyo"
import os.path
import sys
import unittest
+import TestUnit
+
+import SCons.Scanner.IDL
import SCons.Tool.JavaCommon
@@ -570,8 +573,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Tool/MSCommon/__init__.py b/src/engine/SCons/Tool/MSCommon/__init__.py
index 6efdcce..9d09b66 100644
--- a/src/engine/SCons/Tool/MSCommon/__init__.py
+++ b/src/engine/SCons/Tool/MSCommon/__init__.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/MSCommon/__init__.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/MSCommon/__init__.py 2014/07/05 09:42:21 garyo"
__doc__ = """
Common functions for Microsoft Visual Studio and Visual C/C++.
diff --git a/src/engine/SCons/Tool/MSCommon/arch.py b/src/engine/SCons/Tool/MSCommon/arch.py
index 3fc4eed..4edeea7 100644
--- a/src/engine/SCons/Tool/MSCommon/arch.py
+++ b/src/engine/SCons/Tool/MSCommon/arch.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/MSCommon/arch.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/MSCommon/arch.py 2014/07/05 09:42:21 garyo"
__doc__ = """Module to define supported Windows chip architectures.
"""
diff --git a/src/engine/SCons/Tool/MSCommon/common.py b/src/engine/SCons/Tool/MSCommon/common.py
index 006e17e..4bccae7 100644
--- a/src/engine/SCons/Tool/MSCommon/common.py
+++ b/src/engine/SCons/Tool/MSCommon/common.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/MSCommon/common.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/MSCommon/common.py 2014/07/05 09:42:21 garyo"
__doc__ = """
Common helper functions for working with the Microsoft tool chain.
diff --git a/src/engine/SCons/Tool/MSCommon/netframework.py b/src/engine/SCons/Tool/MSCommon/netframework.py
index fef75eb..1ff9654 100644
--- a/src/engine/SCons/Tool/MSCommon/netframework.py
+++ b/src/engine/SCons/Tool/MSCommon/netframework.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -20,7 +20,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/MSCommon/netframework.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/MSCommon/netframework.py 2014/07/05 09:42:21 garyo"
__doc__ = """
"""
diff --git a/src/engine/SCons/Tool/MSCommon/sdk.py b/src/engine/SCons/Tool/MSCommon/sdk.py
index 320ef4c..fcf25e9 100644
--- a/src/engine/SCons/Tool/MSCommon/sdk.py
+++ b/src/engine/SCons/Tool/MSCommon/sdk.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/MSCommon/sdk.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/MSCommon/sdk.py 2014/07/05 09:42:21 garyo"
__doc__ = """Module to detect the Platform/Windows SDK
diff --git a/src/engine/SCons/Tool/MSCommon/vc.py b/src/engine/SCons/Tool/MSCommon/vc.py
index 582bf23..19bcc7d 100644
--- a/src/engine/SCons/Tool/MSCommon/vc.py
+++ b/src/engine/SCons/Tool/MSCommon/vc.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@
# * test on 64 bits XP + VS 2005 (and VS 6 if possible)
# * SDK
# * Assembly
-__revision__ = "src/engine/SCons/Tool/MSCommon/vc.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/MSCommon/vc.py 2014/07/05 09:42:21 garyo"
__doc__ = """Module for Visual C/C++ detection and configuration.
"""
@@ -89,6 +89,7 @@ _ARCH_TO_CANONICAL = {
_HOST_TARGET_ARCH_TO_BAT_ARCH = {
("x86", "x86"): "x86",
("x86", "amd64"): "x86_amd64",
+ ("x86", "x86_amd64"): "x86_amd64",
("amd64", "x86_amd64"): "x86_amd64", # This is present in (at least) VS2012 express
("amd64", "amd64"): "amd64",
("amd64", "x86"): "x86",
@@ -131,9 +132,15 @@ def get_host_target(env):
return (host, target,req_target_platform)
-_VCVER = ["11.0", "11.0Exp", "10.0", "10.0Exp", "9.0", "9.0Exp","8.0", "8.0Exp","7.1", "7.0", "6.0"]
+# If you update this, update SupportedVSList in Tool/MSCommon/vs.py, and the
+# MSVC_VERSION documentation in Tool/msvc.xml.
+_VCVER = ["12.0", "12.0Exp", "11.0", "11.0Exp", "10.0", "10.0Exp", "9.0", "9.0Exp","8.0", "8.0Exp","7.1", "7.0", "6.0"]
_VCVER_TO_PRODUCT_DIR = {
+ '12.0' : [
+ r'Microsoft\VisualStudio\12.0\Setup\VC\ProductDir'],
+ '12.0Exp' : [
+ r'Microsoft\VCExpress\12.0\Setup\VC\ProductDir'],
'11.0': [
r'Microsoft\VisualStudio\11.0\Setup\VC\ProductDir'],
'11.0Exp' : [
@@ -298,8 +305,21 @@ def reset_installed_vcs():
"""Make it try again to find VC. This is just for the tests."""
__INSTALLED_VCS_RUN = None
+# Running these batch files isn't cheap: most of the time spent in
+# msvs.generate() is due to vcvars*.bat. In a build that uses "tools='msvs'"
+# in multiple environments, for example:
+# env1 = Environment(tools='msvs')
+# env2 = Environment(tools='msvs')
+# we can greatly improve the speed of the second and subsequent Environment
+# (or Clone) calls by memoizing the environment variables set by vcvars*.bat.
+script_env_stdout_cache = {}
def script_env(script, args=None):
- stdout = common.get_output(script, args)
+ cache_key = (script, args)
+ stdout = script_env_stdout_cache.get(cache_key, None)
+ if stdout is None:
+ stdout = common.get_output(script, args)
+ script_env_stdout_cache[cache_key] = stdout
+
# Stupid batch files do not set return code: we take a look at the
# beginning of the output for an error message instead
olines = stdout.splitlines()
@@ -416,7 +436,7 @@ def msvc_find_valid_batch_script(env,version):
if not vc_script and sdk_script:
debug('vc.py:msvc_find_valid_batch_script() use_script 4: trying sdk script: %s'%(sdk_script))
try:
- d = script_env(sdk_script,args=[])
+ d = script_env(sdk_script)
except BatchFileExecutionError,e:
debug('vc.py:msvc_find_valid_batch_script() use_script 5: failed running SDK script %s: Error:%s'%(repr(sdk_script),e))
continue
diff --git a/src/engine/SCons/Tool/MSCommon/vs.py b/src/engine/SCons/Tool/MSCommon/vs.py
index 783ca2e..78697cc 100644
--- a/src/engine/SCons/Tool/MSCommon/vs.py
+++ b/src/engine/SCons/Tool/MSCommon/vs.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/MSCommon/vs.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/MSCommon/vs.py 2014/07/05 09:42:21 garyo"
__doc__ = """Module to detect Visual Studio and/or Visual C/C++
"""
@@ -73,7 +73,7 @@ class VisualStudio(object):
debug('find_vs_dir(): no installed VC %s' % self.vc_version)
return None
return dir
-
+
def find_vs_dir_by_reg(self):
root = 'Software\\'
@@ -91,13 +91,13 @@ class VisualStudio(object):
debug('find_vs_dir_by_reg(): found VS in registry: %s' % comps)
return comps
return None
-
+
def find_vs_dir(self):
""" Can use registry or location of VC to find vs dir
First try to find by registry, and if that fails find via VC dir
"""
-
-
+
+
if True:
vs_dir=self.find_vs_dir_by_reg()
return vs_dir
@@ -115,7 +115,7 @@ class VisualStudio(object):
debug('find_executable(): %s not on file system' % executable)
return None
return executable
-
+
#
def get_batch_file(self):
@@ -199,102 +199,96 @@ class VisualStudio(object):
# good money for in preference to whatever Microsoft makes available
# for free.
#
-# If you update this list, update the documentation in Tool/msvs.xml.
+# If you update this list, update _VCVER and _VCVER_TO_PRODUCT_DIR in
+# Tool/MSCommon/vc.py, and the MSVC_VERSION documentation in Tool/msvc.xml.
SupportedVSList = [
- # Visual Studio 2010
- # TODO: find the settings, perhaps from someone with a CTP copy?
- #VisualStudio('TBD',
- # hkey_root=r'TBD',
- # common_tools_var='TBD',
- # executable_path=r'TBD',
- # default_dirname='TBD',
- #),
-
- # Visual Studio 11
- # The batch file we look for is in the VC directory,
- # so the devenv.com executable is up in ..\..\Common7\IDE.
+ # Visual Studio 2013
+ VisualStudio('12.0',
+ vc_version='12.0',
+ sdk_version='8.1A',
+ hkeys=[r'Microsoft\VisualStudio\12.0\Setup\VS\ProductDir'],
+ common_tools_var='VS120COMNTOOLS',
+ executable_path=r'Common7\IDE\devenv.com',
+ batch_file_path=r'Common7\Tools\vsvars32.bat',
+ supported_arch=['x86', 'amd64'],
+ ),
+
+ # Visual C++ 2013 Express Edition (for Desktop)
+ VisualStudio('12.0Exp',
+ vc_version='12.0',
+ sdk_version='8.1A',
+ hkeys=[r'Microsoft\VisualStudio\12.0\Setup\VS\ProductDir'],
+ common_tools_var='VS120COMNTOOLS',
+ executable_path=r'Common7\IDE\WDExpress.exe',
+ batch_file_path=r'Common7\Tools\vsvars32.bat',
+ supported_arch=['x86', 'amd64'],
+ ),
+
+ # Visual Studio 2012
VisualStudio('11.0',
- sdk_version='6.1',
+ sdk_version='8.0A',
hkeys=[r'Microsoft\VisualStudio\11.0\Setup\VS\ProductDir'],
common_tools_var='VS110COMNTOOLS',
executable_path=r'Common7\IDE\devenv.com',
batch_file_path=r'Common7\Tools\vsvars32.bat',
- default_dirname='Microsoft Visual Studio 11',
supported_arch=['x86', 'amd64'],
),
- # Visual C++ 11 Express Edition
- # The batch file we look for is in the VC directory,
- # so the VCExpress.exe executable is up in ..\..\Common7\IDE.
+ # Visual C++ 2012 Express Edition (for Desktop)
VisualStudio('11.0Exp',
vc_version='11.0',
- sdk_version='6.1',
- hkeys=[r'Microsoft\VCExpress\11.0\Setup\VS\ProductDir'],
+ sdk_version='8.0A',
+ hkeys=[r'Microsoft\VisualStudio\11.0\Setup\VS\ProductDir'],
common_tools_var='VS110COMNTOOLS',
- executable_path=r'Common7\IDE\VCExpress.exe',
+ executable_path=r'Common7\IDE\WDExpress.exe',
batch_file_path=r'Common7\Tools\vsvars32.bat',
- default_dirname='Microsoft Visual Studio 11',
- supported_arch=['x86'],
+ supported_arch=['x86', 'amd64'],
),
# Visual Studio 2010
- # The batch file we look for is in the VC directory,
- # so the devenv.com executable is up in ..\..\Common7\IDE.
VisualStudio('10.0',
- sdk_version='6.1',
+ sdk_version='7.0A',
hkeys=[r'Microsoft\VisualStudio\10.0\Setup\VS\ProductDir'],
common_tools_var='VS100COMNTOOLS',
executable_path=r'Common7\IDE\devenv.com',
batch_file_path=r'Common7\Tools\vsvars32.bat',
- default_dirname='Microsoft Visual Studio 10',
supported_arch=['x86', 'amd64'],
),
# Visual C++ 2010 Express Edition
- # The batch file we look for is in the VC directory,
- # so the VCExpress.exe executable is up in ..\..\Common7\IDE.
VisualStudio('10.0Exp',
vc_version='10.0',
- sdk_version='6.1',
+ sdk_version='7.0A',
hkeys=[r'Microsoft\VCExpress\10.0\Setup\VS\ProductDir'],
common_tools_var='VS100COMNTOOLS',
executable_path=r'Common7\IDE\VCExpress.exe',
batch_file_path=r'Common7\Tools\vsvars32.bat',
- default_dirname='Microsoft Visual Studio 10',
supported_arch=['x86'],
),
# Visual Studio 2008
- # The batch file we look for is in the VC directory,
- # so the devenv.com executable is up in ..\..\Common7\IDE.
VisualStudio('9.0',
- sdk_version='6.1',
+ sdk_version='6.0A',
hkeys=[r'Microsoft\VisualStudio\9.0\Setup\VS\ProductDir'],
common_tools_var='VS90COMNTOOLS',
executable_path=r'Common7\IDE\devenv.com',
batch_file_path=r'Common7\Tools\vsvars32.bat',
- default_dirname='Microsoft Visual Studio 9',
supported_arch=['x86', 'amd64'],
),
# Visual C++ 2008 Express Edition
- # The batch file we look for is in the VC directory,
- # so the VCExpress.exe executable is up in ..\..\Common7\IDE.
VisualStudio('9.0Exp',
vc_version='9.0',
- sdk_version='6.1',
+ sdk_version='6.0A',
hkeys=[r'Microsoft\VCExpress\9.0\Setup\VS\ProductDir'],
common_tools_var='VS90COMNTOOLS',
executable_path=r'Common7\IDE\VCExpress.exe',
batch_file_path=r'Common7\Tools\vsvars32.bat',
- default_dirname='Microsoft Visual Studio 9',
supported_arch=['x86'],
),
# Visual Studio 2005
- # The batch file we look for is in the VC directory,
- # so the devenv.com executable is up in ..\..\Common7\IDE.
VisualStudio('8.0',
sdk_version='6.0A',
hkeys=[r'Microsoft\VisualStudio\8.0\Setup\VS\ProductDir'],
@@ -306,8 +300,6 @@ SupportedVSList = [
),
# Visual C++ 2005 Express Edition
- # The batch file we look for is in the VC directory,
- # so the VCExpress.exe executable is up in ..\..\Common7\IDE.
VisualStudio('8.0Exp',
vc_version='8.0Exp',
sdk_version='6.0A',
@@ -320,8 +312,6 @@ SupportedVSList = [
),
# Visual Studio .NET 2003
- # The batch file we look for is in the Common7\Tools directory,
- # so the devenv.com executable is next door in ..\IDE.
VisualStudio('7.1',
sdk_version='6.0',
hkeys=[r'Microsoft\VisualStudio\7.1\Setup\VS\ProductDir'],
@@ -333,8 +323,6 @@ SupportedVSList = [
),
# Visual Studio .NET
- # The batch file we look for is in the Common7\Tools directory,
- # so the devenv.com executable is next door in ..\IDE.
VisualStudio('7.0',
sdk_version='2003R2',
hkeys=[r'Microsoft\VisualStudio\7.0\Setup\VS\ProductDir'],
@@ -393,11 +381,11 @@ def reset_installed_visual_studios():
InstalledVSMap = None
for vs in SupportedVSList:
vs.reset()
-
+
# Need to clear installed VC's as well as they are used in finding
# installed VS's
SCons.Tool.MSCommon.vc.reset_installed_vcs()
-
+
# We may be asked to update multiple construction environments with
# SDK information. When doing this, we check on-disk for whether
@@ -462,7 +450,7 @@ def get_default_version(env):
If no version was requested by the user through the MSVS environment
variable, query all the available the visual studios through
- query_versions, and take the highest one.
+ get_installed_visual_studios, and take the highest one.
Return
------
@@ -470,6 +458,7 @@ def get_default_version(env):
the default version.
"""
if 'MSVS' not in env or not SCons.Util.is_Dict(env['MSVS']):
+ # get all versions, and remember them for speed later
versions = [vs.version for vs in get_installed_visual_studios()]
env['MSVS'] = {'VERSIONS' : versions}
else:
@@ -479,6 +468,8 @@ def get_default_version(env):
if versions:
env['MSVS_VERSION'] = versions[0] #use highest version by default
else:
+ debug('get_default_version: WARNING: no installed versions found, '
+ 'using first in SupportedVSList (%s)'%SupportedVSList[0].version)
env['MSVS_VERSION'] = SupportedVSList[0].version
env['MSVS']['VERSION'] = env['MSVS_VERSION']
diff --git a/src/engine/SCons/Tool/Perforce.py b/src/engine/SCons/Tool/Perforce.py
index 3e132ad..4b84de4 100644
--- a/src/engine/SCons/Tool/Perforce.py
+++ b/src/engine/SCons/Tool/Perforce.py
@@ -8,7 +8,7 @@ selection method.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/Perforce.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/Perforce.py 2014/07/05 09:42:21 garyo"
import os
diff --git a/src/engine/SCons/Tool/Perforce.xml b/src/engine/SCons/Tool/Perforce.xml
index 65edfe9..7cb0023 100644
--- a/src/engine/SCons/Tool/Perforce.xml
+++ b/src/engine/SCons/Tool/Perforce.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="Perforce">
<summary>
@@ -126,4 +126,4 @@ USERNAME.
</summary>
</scons_function>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/PharLapCommon.py b/src/engine/SCons/Tool/PharLapCommon.py
index dc5e9db..247d918 100644
--- a/src/engine/SCons/Tool/PharLapCommon.py
+++ b/src/engine/SCons/Tool/PharLapCommon.py
@@ -7,7 +7,7 @@ Phar Lap ETS tool chain. Right now, this is linkloc and
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ Phar Lap ETS tool chain. Right now, this is linkloc and
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/PharLapCommon.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/PharLapCommon.py 2014/07/05 09:42:21 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/PharLapCommonTests.py b/src/engine/SCons/Tool/PharLapCommonTests.py
index 6b3e1e2..aca9ac3 100644
--- a/src/engine/SCons/Tool/PharLapCommonTests.py
+++ b/src/engine/SCons/Tool/PharLapCommonTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,13 +21,15 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/PharLapCommonTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/PharLapCommonTests.py 2014/07/05 09:42:21 garyo"
import unittest
import os.path
import os
import sys
+import TestUnit
+
import SCons.Errors
from SCons.Tool.PharLapCommon import *
@@ -58,8 +60,7 @@ class PharLapCommonTestCase(unittest.TestCase):
if __name__ == "__main__":
suite = unittest.makeSuite(PharLapCommonTestCase, 'test_')
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Tool/RCS.py b/src/engine/SCons/Tool/RCS.py
index 4ecb499..20f85d4 100644
--- a/src/engine/SCons/Tool/RCS.py
+++ b/src/engine/SCons/Tool/RCS.py
@@ -8,7 +8,7 @@ selection method.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/RCS.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/RCS.py 2014/07/05 09:42:21 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/RCS.xml b/src/engine/SCons/Tool/RCS.xml
index 3902355..e197767 100644
--- a/src/engine/SCons/Tool/RCS.xml
+++ b/src/engine/SCons/Tool/RCS.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="RCS">
<summary>
@@ -139,4 +139,4 @@ for a specific subdirectory.
</summary>
</scons_function>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/SCCS.py b/src/engine/SCons/Tool/SCCS.py
index cee057b..a26cec4 100644
--- a/src/engine/SCons/Tool/SCCS.py
+++ b/src/engine/SCons/Tool/SCCS.py
@@ -8,7 +8,7 @@ selection method.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/SCCS.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/SCCS.py 2014/07/05 09:42:21 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/SCCS.xml b/src/engine/SCons/Tool/SCCS.xml
index 4cc3a42..4f0d2e9 100644
--- a/src/engine/SCons/Tool/SCCS.xml
+++ b/src/engine/SCons/Tool/SCCS.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="SCCS">
<summary>
@@ -130,4 +130,4 @@ for a specific subdirectory.
</summary>
</scons_function>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/Subversion.py b/src/engine/SCons/Tool/Subversion.py
index 3b45b12..6ea0684 100644
--- a/src/engine/SCons/Tool/Subversion.py
+++ b/src/engine/SCons/Tool/Subversion.py
@@ -8,7 +8,7 @@ selection method.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/Subversion.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/Subversion.py 2014/07/05 09:42:21 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/Subversion.xml b/src/engine/SCons/Tool/Subversion.xml
index 953a735..c6909b7 100644
--- a/src/engine/SCons/Tool/Subversion.xml
+++ b/src/engine/SCons/Tool/Subversion.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<!--
<tool name="Subversion">
@@ -132,4 +132,4 @@ env.SourceCode('.', env.Subversion('file:///usr/local/Subversion', 'foo/bar'))
</scons_function>
-->
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/ToolTests.py b/src/engine/SCons/Tool/ToolTests.py
index 1487ce7..bc68620 100644
--- a/src/engine/SCons/Tool/ToolTests.py
+++ b/src/engine/SCons/Tool/ToolTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,11 +21,13 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/ToolTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/ToolTests.py 2014/07/05 09:42:21 garyo"
import sys
import unittest
+import TestUnit
+
import SCons.Errors
import SCons.Tool
@@ -49,6 +51,8 @@ class ToolTestCase(unittest.TestCase):
return self.dict.__contains__(key)
def has_key(self, key):
return key in self.dict
+ def subst(self, string, *args, **kwargs):
+ return string
env = Environment()
env['BUILDERS'] = {}
env['ENV'] = {}
@@ -76,8 +80,7 @@ class ToolTestCase(unittest.TestCase):
if __name__ == "__main__":
suite = unittest.makeSuite(ToolTestCase, 'test_')
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py
index b946507..947b7a5 100644
--- a/src/engine/SCons/Tool/__init__.py
+++ b/src/engine/SCons/Tool/__init__.py
@@ -14,7 +14,7 @@ tool definition.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -35,7 +35,7 @@ tool definition.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/__init__.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/__init__.py 2014/07/05 09:42:21 garyo"
import imp
import sys
@@ -705,7 +705,7 @@ def tool_list(platform, env):
assemblers = ['masm', 'nasm', 'gas', '386asm' ]
fortran_compilers = ['gfortran', 'g77', 'ifl', 'cvf', 'f95', 'f90', 'fortran']
ars = ['mslib', 'ar', 'tlib']
- other_plat_tools=['msvs','midl']
+ other_plat_tools = ['msvs', 'midl']
elif str(platform) == 'os2':
"prefer IBM tools on OS/2"
linkers = ['ilink', 'gnulink', ]#'mslink']
@@ -772,6 +772,9 @@ def tool_list(platform, env):
fortran_compilers = ['gfortran', 'g77', 'ifort', 'ifl', 'f95', 'f90', 'f77']
ars = ['ar', 'mslib']
+ if not str(platform) == 'win32':
+ other_plat_tools += ['m4', 'rpm']
+
c_compiler = FindTool(c_compilers, env) or c_compilers[0]
# XXX this logic about what tool provides what should somehow be
@@ -795,12 +798,13 @@ def tool_list(platform, env):
fortran_compiler = FindTool(fortran_compilers, env) or fortran_compilers[0]
ar = FindTool(ars, env) or ars[0]
+ d_compilers = ['dmd', 'gdc', 'ldc']
+ d_compiler = FindTool(d_compilers, env) or d_compilers[0]
+
other_tools = FindAllTools(other_plat_tools + [
- 'dmd',
#TODO: merge 'install' into 'filesystem' and
# make 'filesystem' the default
'filesystem',
- 'm4',
'wix', #'midl', 'msvs',
# Parser generators
'lex', 'yacc',
@@ -812,14 +816,14 @@ def tool_list(platform, env):
'dvipdf', 'dvips', 'gs',
'tex', 'latex', 'pdflatex', 'pdftex',
# Archivers
- 'tar', 'zip', 'rpm',
+ 'tar', 'zip',
# SourceCode factories
'BitKeeper', 'CVS', 'Perforce',
'RCS', 'SCCS', # 'Subversion',
], env)
tools = ([linker, c_compiler, cxx_compiler,
- fortran_compiler, assembler, ar]
+ fortran_compiler, assembler, ar, d_compiler]
+ other_tools)
return [x for x in tools if x]
diff --git a/src/engine/SCons/Tool/__init__.xml b/src/engine/SCons/Tool/__init__.xml
index deceaa3..ef1280c 100644
--- a/src/engine/SCons/Tool/__init__.xml
+++ b/src/engine/SCons/Tool/__init__.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<builder name="CFile">
<summary>
diff --git a/src/engine/SCons/Tool/aixc++.py b/src/engine/SCons/Tool/aixc++.py
index 6f1ea5b..d1dc8f3 100644
--- a/src/engine/SCons/Tool/aixc++.py
+++ b/src/engine/SCons/Tool/aixc++.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/aixc++.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/aixc++.py 2014/07/05 09:42:21 garyo"
import os.path
@@ -43,32 +43,25 @@ packages = ['vacpp.cmp.core', 'vacpp.cmp.batch', 'vacpp.cmp.C', 'ibmcxx.cmp']
def get_xlc(env):
xlc = env.get('CXX', 'xlC')
- xlc_r = env.get('SHCXX', 'xlC_r')
- return SCons.Platform.aix.get_xlc(env, xlc, xlc_r, packages)
-
-def smart_cxxflags(source, target, env, for_signature):
- build_dir = env.GetBuildPath()
- if build_dir:
- return '-qtempinc=' + os.path.join(build_dir, 'tempinc')
- return ''
+ return SCons.Platform.aix.get_xlc(env, xlc, packages)
def generate(env):
"""Add Builders and construction variables for xlC / Visual Age
suite to an Environment."""
- path, _cxx, _shcxx, version = get_xlc(env)
- if path:
+ path, _cxx, version = get_xlc(env)
+ if path and _cxx:
_cxx = os.path.join(path, _cxx)
- _shcxx = os.path.join(path, _shcxx)
+
+ if 'CXX' not in env:
+ env['CXX'] = _cxx
cplusplus.generate(env)
- env['CXX'] = _cxx
- env['SHCXX'] = _shcxx
- env['CXXVERSION'] = version
- env['SHOBJSUFFIX'] = '.pic.o'
+ if version:
+ env['CXXVERSION'] = version
def exists(env):
- path, _cxx, _shcxx, version = get_xlc(env)
+ path, _cxx, version = get_xlc(env)
if path and _cxx:
xlc = os.path.join(path, _cxx)
if os.path.exists(xlc):
diff --git a/src/engine/SCons/Tool/aixc++.xml b/src/engine/SCons/Tool/aixc++.xml
index 75d9be8..cbc7620 100644
--- a/src/engine/SCons/Tool/aixc++.xml
+++ b/src/engine/SCons/Tool/aixc++.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="aixc++">
<summary>
@@ -39,4 +39,4 @@ Sets construction variables for the IMB xlc / Visual Age C++ compiler.
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/aixcc.py b/src/engine/SCons/Tool/aixcc.py
index bdcb681..fc40a12 100644
--- a/src/engine/SCons/Tool/aixcc.py
+++ b/src/engine/SCons/Tool/aixcc.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/aixcc.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/aixcc.py 2014/07/05 09:42:21 garyo"
import os.path
@@ -42,25 +42,25 @@ packages = ['vac.C', 'ibmcxx.cmp']
def get_xlc(env):
xlc = env.get('CC', 'xlc')
- xlc_r = env.get('SHCC', 'xlc_r')
- return SCons.Platform.aix.get_xlc(env, xlc, xlc_r, packages)
+ return SCons.Platform.aix.get_xlc(env, xlc, packages)
def generate(env):
"""Add Builders and construction variables for xlc / Visual Age
suite to an Environment."""
- path, _cc, _shcc, version = get_xlc(env)
- if path:
+ path, _cc, version = get_xlc(env)
+ if path and _cc:
_cc = os.path.join(path, _cc)
- _shcc = os.path.join(path, _shcc)
+
+ if 'CC' not in env:
+ env['CC'] = _cc
cc.generate(env)
- env['CC'] = _cc
- env['SHCC'] = _shcc
- env['CCVERSION'] = version
+ if version:
+ env['CCVERSION'] = version
def exists(env):
- path, _cc, _shcc, version = get_xlc(env)
+ path, _cc, version = get_xlc(env)
if path and _cc:
xlc = os.path.join(path, _cc)
if os.path.exists(xlc):
diff --git a/src/engine/SCons/Tool/aixcc.xml b/src/engine/SCons/Tool/aixcc.xml
index 153e191..2051252 100644
--- a/src/engine/SCons/Tool/aixcc.xml
+++ b/src/engine/SCons/Tool/aixcc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="aixcc">
<summary>
@@ -38,4 +38,4 @@ Sets construction variables for the IBM xlc / Visual Age C compiler.
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/aixf77.py b/src/engine/SCons/Tool/aixf77.py
index 3a8400b..83c0644 100644
--- a/src/engine/SCons/Tool/aixf77.py
+++ b/src/engine/SCons/Tool/aixf77.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/aixf77.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/aixf77.py 2014/07/05 09:42:21 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/aixf77.xml b/src/engine/SCons/Tool/aixf77.xml
index e28b31b..350a821 100644
--- a/src/engine/SCons/Tool/aixf77.xml
+++ b/src/engine/SCons/Tool/aixf77.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="aixf77">
<summary>
@@ -37,4 +37,4 @@ Sets construction variables for the IBM Visual Age f77 Fortran compiler.
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/aixlink.py b/src/engine/SCons/Tool/aixlink.py
index 44a7ca5..1b83843 100644
--- a/src/engine/SCons/Tool/aixlink.py
+++ b/src/engine/SCons/Tool/aixlink.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,14 +30,13 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/aixlink.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/aixlink.py 2014/07/05 09:42:21 garyo"
import os
import os.path
import SCons.Util
-import aixcc
import link
cplusplus = __import__('c++', globals(), locals(), [])
@@ -62,12 +61,14 @@ def generate(env):
env['SHLIBSUFFIX'] = '.a'
def exists(env):
- path, _cc, _shcc, version = aixcc.get_xlc(env)
- if path and _cc:
- xlc = os.path.join(path, _cc)
- if os.path.exists(xlc):
- return xlc
- return None
+ # TODO: sync with link.smart_link() to choose a linker
+ linkers = { 'CXX': ['aixc++'], 'CC': ['aixcc'] }
+ alltools = []
+ for langvar, linktools in linkers.items():
+ if langvar in env: # use CC over CXX when user specified CC but not CXX
+ return SCons.Tool.FindTool(linktools, env)
+ alltools.extend(linktools)
+ return SCons.Tool.FindTool(alltools, env)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Tool/aixlink.xml b/src/engine/SCons/Tool/aixlink.xml
index ceb8231..c3bdc9f 100644
--- a/src/engine/SCons/Tool/aixlink.xml
+++ b/src/engine/SCons/Tool/aixlink.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="aixlink">
<summary>
@@ -39,4 +39,4 @@ Sets construction variables for the IBM Visual Age linker.
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/applelink.py b/src/engine/SCons/Tool/applelink.py
index 70ad558..1d44433 100644
--- a/src/engine/SCons/Tool/applelink.py
+++ b/src/engine/SCons/Tool/applelink.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/applelink.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/applelink.py 2014/07/05 09:42:21 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/applelink.xml b/src/engine/SCons/Tool/applelink.xml
index f3f1a2d..6d485ee 100644
--- a/src/engine/SCons/Tool/applelink.xml
+++ b/src/engine/SCons/Tool/applelink.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="applelink">
<summary>
@@ -152,4 +152,4 @@ containing the linker command-line options corresponding to
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/ar.py b/src/engine/SCons/Tool/ar.py
index d9ef9a4..958deb4 100644
--- a/src/engine/SCons/Tool/ar.py
+++ b/src/engine/SCons/Tool/ar.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/ar.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/ar.py 2014/07/05 09:42:21 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/ar.xml b/src/engine/SCons/Tool/ar.xml
index 6c307d1..309735d 100644
--- a/src/engine/SCons/Tool/ar.xml
+++ b/src/engine/SCons/Tool/ar.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="ar">
<summary>
@@ -118,4 +118,4 @@ General options passed to the archive indexer.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/as.py b/src/engine/SCons/Tool/as.py
index d245f7b..885baa2 100644
--- a/src/engine/SCons/Tool/as.py
+++ b/src/engine/SCons/Tool/as.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/as.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/as.py 2014/07/05 09:42:21 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/as.xml b/src/engine/SCons/Tool/as.xml
index 70fc036..0927d44 100644
--- a/src/engine/SCons/Tool/as.xml
+++ b/src/engine/SCons/Tool/as.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="as">
<summary>
@@ -122,4 +122,4 @@ The default is to use the value of &cv-link-ASFLAGS;.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/bcc32.py b/src/engine/SCons/Tool/bcc32.py
index ce4f234..651f15f 100644
--- a/src/engine/SCons/Tool/bcc32.py
+++ b/src/engine/SCons/Tool/bcc32.py
@@ -5,7 +5,7 @@ XXX
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ XXX
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/bcc32.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/bcc32.py 2014/07/05 09:42:21 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/bcc32.xml b/src/engine/SCons/Tool/bcc32.xml
index 0511ff5..40a3b22 100644
--- a/src/engine/SCons/Tool/bcc32.xml
+++ b/src/engine/SCons/Tool/bcc32.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="bcc32">
<summary>
@@ -52,4 +52,4 @@ Sets construction variables for the bcc32 compiler.
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/c++.py b/src/engine/SCons/Tool/c++.py
index 7b98b76..a35bdf9 100644
--- a/src/engine/SCons/Tool/c++.py
+++ b/src/engine/SCons/Tool/c++.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/c++.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/c++.py 2014/07/05 09:42:21 garyo"
import os.path
@@ -72,7 +72,8 @@ def generate(env):
SCons.Tool.cc.add_common_cc_variables(env)
- env['CXX'] = 'c++'
+ if 'CXX' not in env:
+ env['CXX'] = env.Detect(compilers) or compilers[0]
env['CXXFLAGS'] = SCons.Util.CLVar('')
env['CXXCOM'] = '$CXX -o $TARGET -c $CXXFLAGS $CCFLAGS $_CCCOMCOM $SOURCES'
env['SHCXX'] = '$CXX'
@@ -90,7 +91,7 @@ def generate(env):
env['CXXFILESUFFIX'] = '.cc'
def exists(env):
- return env.Detect(compilers)
+ return env.Detect(env.get('CXX', compilers))
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Tool/c++.xml b/src/engine/SCons/Tool/c++.xml
index 30b93f1..110d7cb 100644
--- a/src/engine/SCons/Tool/c++.xml
+++ b/src/engine/SCons/Tool/c++.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="cXX">
<summary>
@@ -138,4 +138,4 @@ to generate shared-library objects.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/cc.py b/src/engine/SCons/Tool/cc.py
index 0702138..5b5ab05 100644
--- a/src/engine/SCons/Tool/cc.py
+++ b/src/engine/SCons/Tool/cc.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/cc.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/cc.py 2014/07/05 09:42:21 garyo"
import SCons.Tool
import SCons.Defaults
@@ -62,6 +62,8 @@ def add_common_cc_variables(env):
if 'SHCCFLAGS' not in env:
env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
+compilers = ['cc']
+
def generate(env):
"""
Add Builders and construction variables for C compilers to an Environment.
@@ -76,7 +78,8 @@ def generate(env):
add_common_cc_variables(env)
- env['CC'] = 'cc'
+ if 'CC' not in env:
+ env['CC'] = env.Detect(compilers) or compilers[0]
env['CFLAGS'] = SCons.Util.CLVar('')
env['CCCOM'] = '$CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES'
env['SHCC'] = '$CC'
@@ -93,7 +96,7 @@ def generate(env):
env['CFILESUFFIX'] = '.c'
def exists(env):
- return env.Detect('cc')
+ return env.Detect(env.get('CC', compilers))
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Tool/cc.xml b/src/engine/SCons/Tool/cc.xml
index ec2b5ee..bd43478 100644
--- a/src/engine/SCons/Tool/cc.xml
+++ b/src/engine/SCons/Tool/cc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="cc">
<summary>
@@ -205,4 +205,4 @@ to generate shared-library objects.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/cvf.py b/src/engine/SCons/Tool/cvf.py
index d35c1b1..3b712ad 100644
--- a/src/engine/SCons/Tool/cvf.py
+++ b/src/engine/SCons/Tool/cvf.py
@@ -5,7 +5,7 @@ Tool-specific initialization for the Compaq Visual Fortran compiler.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Tool-specific initialization for the Compaq Visual Fortran compiler.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/cvf.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/cvf.py 2014/07/05 09:42:21 garyo"
import fortran
diff --git a/src/engine/SCons/Tool/cvf.xml b/src/engine/SCons/Tool/cvf.xml
index 12e4596..d21c6a9 100644
--- a/src/engine/SCons/Tool/cvf.xml
+++ b/src/engine/SCons/Tool/cvf.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="cvf">
<summary>
@@ -50,4 +50,4 @@ Sets construction variables for the Compaq Visual Fortran compiler.
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/default.py b/src/engine/SCons/Tool/default.py
index ccb215c..4b733cd 100644
--- a/src/engine/SCons/Tool/default.py
+++ b/src/engine/SCons/Tool/default.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/default.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/default.py 2014/07/05 09:42:21 garyo"
import SCons.Tool
diff --git a/src/engine/SCons/Tool/default.xml b/src/engine/SCons/Tool/default.xml
index 4c94598..5f4abdb 100644
--- a/src/engine/SCons/Tool/default.xml
+++ b/src/engine/SCons/Tool/default.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="default">
<summary>
@@ -32,4 +32,4 @@ for the platform on which SCons is running.
</summary>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/dmd.py b/src/engine/SCons/Tool/dmd.py
index 67355b1..aae9a27 100644
--- a/src/engine/SCons/Tool/dmd.py
+++ b/src/engine/SCons/Tool/dmd.py
@@ -3,14 +3,14 @@
Tool-specific initialization for the Digital Mars D compiler.
(http://digitalmars.com/d)
-Coded by Andy Friesen (andy@ikagames.com)
+Originally coded by Andy Friesen (andy@ikagames.com)
15 November 2003
-Amended by Russel Winder (russel@russel.org.uk)
-2010-02-07
+Evolved by Russel Winder (russel@winder.org.uk)
+2010-02-07 onwards
There are a number of problems with this script at this point in time.
-The one that irritates me the most is the Windows linker setup. The D
+The one that irritates the most is the Windows linker setup. The D
linker doesn't have a way to add lib paths on the commandline, as far
as I can see. You have to specify paths relative to the SConscript or
use absolute paths. To hack around it, add '#/blah'. This will link
@@ -18,14 +18,15 @@ blah.lib from the directory where SConstruct resides.
Compiler variables:
DC - The name of the D compiler to use. Defaults to dmd or gdmd,
- whichever is found.
+ whichever is found.
DPATH - List of paths to search for import modules.
DVERSIONS - List of version tags to enable when compiling.
DDEBUG - List of debug tags to enable when compiling.
Linker related variables:
LIBS - List of library files to link in.
- DLINK - Name of the linker to use. Defaults to dmd or gdmd.
+ DLINK - Name of the linker to use. Defaults to dmd or gdmd,
+ whichever is found.
DLINKFLAGS - List of linker flags.
Lib tool variables:
@@ -35,7 +36,7 @@ Lib tool variables:
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -57,9 +58,10 @@ Lib tool variables:
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/dmd.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/dmd.py 2014/07/05 09:42:21 garyo"
import os
+import subprocess
import SCons.Action
import SCons.Builder
@@ -67,57 +69,36 @@ import SCons.Defaults
import SCons.Scanner.D
import SCons.Tool
-# Adapted from c++.py
-def isD(source):
- if not source:
- return 0
+import SCons.Tool.DCommon
- for s in source:
- if s.sources:
- ext = os.path.splitext(str(s.sources[0]))[1]
- if ext == '.d':
- return 1
- return 0
-
-smart_link = {}
-
-smart_lib = {}
def generate(env):
- global smart_link
- global smart_lib
-
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
- DAction = SCons.Action.Action('$DCOM', '$DCOMSTR')
-
- static_obj.add_action('.d', DAction)
- shared_obj.add_action('.d', DAction)
+ static_obj.add_action('.d', SCons.Defaults.DAction)
+ shared_obj.add_action('.d', SCons.Defaults.ShDAction)
static_obj.add_emitter('.d', SCons.Defaults.StaticObjectEmitter)
shared_obj.add_emitter('.d', SCons.Defaults.SharedObjectEmitter)
- dc = env.Detect(['dmd', 'gdmd'])
- env['DC'] = dc
+ env['DC'] = env.Detect(['dmd', 'gdmd'])
env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -of$TARGET $SOURCES'
env['_DINCFLAGS'] = '$( ${_concat(DINCPREFIX, DPATH, DINCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
env['_DVERFLAGS'] = '$( ${_concat(DVERPREFIX, DVERSIONS, DVERSUFFIX, __env__)} $)'
env['_DDEBUGFLAGS'] = '$( ${_concat(DDEBUGPREFIX, DDEBUG, DDEBUGSUFFIX, __env__)} $)'
env['_DFLAGS'] = '$( ${_concat(DFLAGPREFIX, DFLAGS, DFLAGSUFFIX, __env__)} $)'
+ env['SHDC'] = '$DC'
+ env['SHDCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -fPIC -of$TARGET $SOURCES'
+
env['DPATH'] = ['#/']
env['DFLAGS'] = []
env['DVERSIONS'] = []
env['DDEBUG'] = []
- if dc:
- # Add the path to the standard library.
- # This is merely for the convenience of the dependency scanner.
- dmd_path = env.WhereIs(dc)
- if dmd_path:
- x = dmd_path.rindex(dc)
- phobosDir = dmd_path[:x] + '/../src/phobos'
- if os.path.isdir(phobosDir):
- env.Append(DPATH = [phobosDir])
+ env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 0
+
+ if env['DC']:
+ SCons.Tool.DCommon.addDPATHToEnv(env, env['DC'])
env['DINCPREFIX'] = '-I'
env['DINCSUFFIX'] = ''
@@ -129,106 +110,39 @@ def generate(env):
env['DFLAGSUFFIX'] = ''
env['DFILESUFFIX'] = '.d'
- # Need to use the Digital Mars linker/lib on windows.
- # *nix can just use GNU link.
- if env['PLATFORM'] == 'win32':
- env['DLINK'] = '$DC'
- env['DLINKCOM'] = '$DLINK -of$TARGET $SOURCES $DFLAGS $DLINKFLAGS $_DLINKLIBFLAGS'
- env['DLIB'] = 'lib'
- env['DLIBCOM'] = '$DLIB $_DLIBFLAGS -c $TARGET $SOURCES $_DLINKLIBFLAGS'
-
- env['_DLINKLIBFLAGS'] = '$( ${_concat(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
- env['_DLIBFLAGS'] = '$( ${_concat(DLIBFLAGPREFIX, DLIBFLAGS, DLIBFLAGSUFFIX, __env__)} $)'
- env['DLINKFLAGS'] = []
- env['DLIBLINKPREFIX'] = ''
- env['DLIBLINKSUFFIX'] = '.lib'
- env['DLIBFLAGPREFIX'] = '-'
- env['DLIBFLAGSUFFIX'] = ''
- env['DLINKFLAGPREFIX'] = '-'
- env['DLINKFLAGSUFFIX'] = ''
-
- SCons.Tool.createStaticLibBuilder(env)
-
- # Basically, we hijack the link and ar builders with our own.
- # these builders check for the presence of D source, and swap out
- # the system's defaults for the Digital Mars tools. If there's no D
- # source, then we silently return the previous settings.
- linkcom = env.get('LINKCOM')
- try:
- env['SMART_LINKCOM'] = smart_link[linkcom]
- except KeyError:
- def _smartLink(source, target, env, for_signature,
- defaultLinker=linkcom):
- if isD(source):
- # XXX I'm not sure how to add a $DLINKCOMSTR variable
- # so that it works with this _smartLink() logic,
- # and I don't have a D compiler/linker to try it out,
- # so we'll leave it alone for now.
- return '$DLINKCOM'
- else:
- return defaultLinker
- env['SMART_LINKCOM'] = smart_link[linkcom] = _smartLink
-
- arcom = env.get('ARCOM')
- try:
- env['SMART_ARCOM'] = smart_lib[arcom]
- except KeyError:
- def _smartLib(source, target, env, for_signature,
- defaultLib=arcom):
- if isD(source):
- # XXX I'm not sure how to add a $DLIBCOMSTR variable
- # so that it works with this _smartLib() logic, and
- # I don't have a D compiler/archiver to try it out,
- # so we'll leave it alone for now.
- return '$DLIBCOM'
- else:
- return defaultLib
- env['SMART_ARCOM'] = smart_lib[arcom] = _smartLib
-
- # It is worth noting that the final space in these strings is
- # absolutely pivotal. SCons sees these as actions and not generators
- # if it is not there. (very bad)
- env['ARCOM'] = '$SMART_ARCOM '
- env['LINKCOM'] = '$SMART_LINKCOM '
- else: # assuming linux
- linkcom = env.get('LINKCOM')
- try:
- env['SMART_LINKCOM'] = smart_link[linkcom]
- except KeyError:
- def _smartLink(source, target, env, for_signature,
- defaultLinker=linkcom, dc=dc):
- if isD(source):
- try:
- libs = env['LIBS']
- except KeyError:
- libs = []
- if dc == 'dmd':
- # TODO: This assumes that the dmd executable is in the
- # bin directory and that the libraries are in a peer
- # directory lib. This true of the Digital Mars
- # distribution but . . .
- import glob
- dHome = env.WhereIs(dc).replace('/dmd' , '/..')
- if glob.glob(dHome + '/lib/*phobos2*'):
- if 'phobos2' not in libs:
- env.Append(LIBPATH = [dHome + '/lib'])
- env.Append(LIBS = ['phobos2'])
- # TODO: Find out when there will be a
- # 64-bit version of D.
- env.Append(LINKFLAGS = ['-m32'])
- else:
- if 'phobos' not in libs:
- env.Append(LIBS = ['phobos'])
- elif dc is 'gdmd':
- env.Append(LIBS = ['gphobos'])
- if 'pthread' not in libs:
- env.Append(LIBS = ['pthread'])
- if 'm' not in libs:
- env.Append(LIBS = ['m'])
- return defaultLinker
- env['SMART_LINKCOM'] = smart_link[linkcom] = _smartLink
-
- env['LINKCOM'] = '$SMART_LINKCOM '
+ env['DLINK'] = '$DC'
+ env['DLINKFLAGS'] = SCons.Util.CLVar('')
+ env['DLINKCOM'] = '$DLINK -of$TARGET $DLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS'
+
+ env['DSHLINK'] = '$DC'
+ env['DSHLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -defaultlib=libphobos2.so')
+ env['SHDLINKCOM'] = '$DLINK -of$TARGET $DSHLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS'
+
+ env['DLIBLINKPREFIX'] = '' if env['PLATFORM'] == 'win32' else '-L-l'
+ env['DLIBLINKSUFFIX'] = '.lib' if env['PLATFORM'] == 'win32' else ''
+ env['_DLIBFLAGS'] = '${_stripixes(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__)}'
+
+ env['DLIBDIRPREFIX'] = '-L-L'
+ env['DLIBDIRSUFFIX'] = ''
+ env['_DLIBDIRFLAGS'] = '$( ${_concat(DLIBDIRPREFIX, LIBPATH, DLIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
+
+
+ env['DLIB'] = 'lib' if env['PLATFORM'] == 'win32' else 'ar cr'
+ env['DLIBCOM'] = '$DLIB $_DLIBFLAGS {} $TARGET $SOURCES $_DLIBFLAGS'.format('-c' if env['PLATFORM'] == 'win32' else '')
+
+ #env['_DLIBFLAGS'] = '$( ${_concat(DLIBFLAGPREFIX, DLIBFLAGS, DLIBFLAGSUFFIX, __env__)} $)'
+
+ env['DLIBFLAGPREFIX'] = '-'
+ env['DLIBFLAGSUFFIX'] = ''
+
+ # __RPATH is set to $_RPATH in the platform specification if that
+ # platform supports it.
+ env['DRPATHPREFIX'] = '-L-rpath='
+ env['DRPATHSUFFIX'] = ''
+ env['_DRPATH'] = '${_concat(DRPATHPREFIX, RPATH, DRPATHSUFFIX, __env__)}'
+
+ SCons.Tool.createStaticLibBuilder(env)
+
def exists(env):
return env.Detect(['dmd', 'gdmd'])
diff --git a/src/engine/SCons/Tool/dmd.xml b/src/engine/SCons/Tool/dmd.xml
index 7f8f535..794c4ba 100644
--- a/src/engine/SCons/Tool/dmd.xml
+++ b/src/engine/SCons/Tool/dmd.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,27 +21,28 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="dmd">
<summary>
<para>
-Sets construction variables for D language compilers
-(the Digital Mars D compiler, or GDC).
+Sets construction variables for D language compiler DMD.
</para>
</summary>
<sets>
-<item><!--</item>
<item>DC</item>
<item>DCOM</item>
<item>_DINCFLAGS</item>
<item>_DVERFLAGS</item>
<item>_DDEBUGFLAGS</item>
<item>_DFLAGS</item>
+<item>SHDC</item>
+<item>SHDCOM</item>
<item>DPATH</item>
<item>DFLAGS</item>
<item>DVERSIONS</item>
<item>DDEBUG</item>
+<item>STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME</item>
<item>DINCPREFIX</item>
<item>DINCSUFFIX</item>
<item>DVERPREFIX</item>
@@ -50,27 +51,30 @@ Sets construction variables for D language compilers
<item>DDEBUGSUFFIX</item>
<item>DFLAGPREFIX</item>
<item>DFLAGSUFFIX</item>
-<item>DFLESUFFIX</item>
+<item>DFILESUFFIX</item>
<item>DLINK</item>
+<item>DLINKFLAGS</item>
<item>DLINKCOM</item>
+<item>SHDLINK</item>
+<item>SHDLINKFLAGS</item>
+<item>SHDLINKCOM</item>
+<item>DLIBLINKPREFIX</item>
+<item>DLIBLINKSUFFIX</item>
+<item>_DLIBFLAGS</item>
+<item>DLIBDIRPREFIX</item>
+<item>DLIBDIRSUFFIX</item>
+<item>_DLIBDIRFLAGS</item>
<item>DLIB</item>
<item>DLIBCOM</item>
-<item>_DLINKLIBFLAGS</item>
<item>_DLIBFLAGS</item>
-<item>DLINKFLAGS</item>
-<item>DLIBLINKPREFIX</item>
-<item>DLIBLINKSUFFIX</item>
<item>DLIBFLAGPREFIX</item>
<item>DLIBFLAGSUFFIX</item>
-<item>DLINKFLAGPREFIX</item>
-<item>DLINKFLAGSUFFIX</item>
-<item>LINKCOM</item>
-<item>ARCOM</item>
-<item>LIBS</item>
-<item>--></item>
+<item>RPATHPREFIX</item>
+<item>RPATHSUFFIX</item>
+<item>_RPATH</item>
</sets>
<uses>
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/docbook/__init__.py b/src/engine/SCons/Tool/docbook/__init__.py
index 72ea175..26a1a95 100644
--- a/src/engine/SCons/Tool/docbook/__init__.py
+++ b/src/engine/SCons/Tool/docbook/__init__.py
@@ -242,7 +242,7 @@ def __xml_scan(node, env, path, arg):
styledoc = libxml2.parseFile(xsl_file)
style = libxslt.parseStylesheetDoc(styledoc)
- doc = libxml2.parseFile(str(node))
+ doc = libxml2.readFile(str(node), None, libxml2.XML_PARSE_NOENT)
result = style.applyStylesheet(doc, None)
depfiles = []
@@ -348,7 +348,7 @@ def __xinclude_libxml2(target, source, env):
Resolving XIncludes, using the libxml2 module.
"""
doc = libxml2.readFile(str(source[0]), None, libxml2.XML_PARSE_NOENT)
- doc.xincludeProcess()
+ doc.xincludeProcessFlags(libxml2.XML_PARSE_NOENT)
doc.saveFile(str(target[0]))
doc.freeDoc()
@@ -429,6 +429,11 @@ def DocbookEpub(env, target, source=None, *args, **kw):
mime_file.close()
zf.write(mime_file.name, compress_type = zipfile.ZIP_STORED)
for s in source:
+ if os.path.isfile(str(s)):
+ head, tail = os.path.split(str(s))
+ if not head:
+ continue
+ s = head
for dirpath, dirnames, filenames in os.walk(str(s)):
for fname in filenames:
path = os.path.join(dirpath, fname)
diff --git a/src/engine/SCons/Tool/docbook/__init__.xml b/src/engine/SCons/Tool/docbook/__init__.xml
index 1bb1e48..4e44530 100644
--- a/src/engine/SCons/Tool/docbook/__init__.xml
+++ b/src/engine/SCons/Tool/docbook/__init__.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="docbook">
<summary>
diff --git a/src/engine/SCons/Tool/docbook/docs/manual.xml b/src/engine/SCons/Tool/docbook/docs/manual.xml
index e232c6a..60e94bc 100644
--- a/src/engine/SCons/Tool/docbook/docs/manual.xml
+++ b/src/engine/SCons/Tool/docbook/docs/manual.xml
@@ -263,7 +263,7 @@ with large input files may occur. There will definitely arise the need for
adding features, or a variable. Let us know if you can think of a nice
improvement or have worked on a bugfix/patch with success. Enter your issues at the
Launchpad bug tracker for the Docbook Tool, or write to the User General Discussion
-list of SCons at <literal>users@scons.tigris.org</literal>.
+list of SCons at <literal>scons-users@tigris.org</literal>.
</para>
</section>
diff --git a/src/engine/SCons/Tool/dvi.py b/src/engine/SCons/Tool/dvi.py
index f5caf21..eb5fd7b 100644
--- a/src/engine/SCons/Tool/dvi.py
+++ b/src/engine/SCons/Tool/dvi.py
@@ -5,7 +5,7 @@ Common DVI Builder definition for various other Tool modules that use it.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Common DVI Builder definition for various other Tool modules that use it.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/dvi.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/dvi.py 2014/07/05 09:42:21 garyo"
import SCons.Builder
import SCons.Tool
diff --git a/src/engine/SCons/Tool/dvi.xml b/src/engine/SCons/Tool/dvi.xml
index 7699629..bde5caa 100644
--- a/src/engine/SCons/Tool/dvi.xml
+++ b/src/engine/SCons/Tool/dvi.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="dvi">
<summary>
@@ -91,4 +91,4 @@ env.DVI(target = 'ccc.dvi', source = 'ccc.latex')
</builder>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/dvipdf.py b/src/engine/SCons/Tool/dvipdf.py
index a49a112..d909364 100644
--- a/src/engine/SCons/Tool/dvipdf.py
+++ b/src/engine/SCons/Tool/dvipdf.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/dvipdf.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/dvipdf.py 2014/07/05 09:42:21 garyo"
import SCons.Action
import SCons.Defaults
diff --git a/src/engine/SCons/Tool/dvipdf.xml b/src/engine/SCons/Tool/dvipdf.xml
index add7823..b8e89f9 100644
--- a/src/engine/SCons/Tool/dvipdf.xml
+++ b/src/engine/SCons/Tool/dvipdf.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="dvipdf">
<summary>
@@ -81,4 +81,4 @@ A deprecated synonym for &cv-link-DVIPDFCOM;.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/dvips.py b/src/engine/SCons/Tool/dvips.py
index 2b09245..544b7eb 100644
--- a/src/engine/SCons/Tool/dvips.py
+++ b/src/engine/SCons/Tool/dvips.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/dvips.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/dvips.py 2014/07/05 09:42:21 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/dvips.xml b/src/engine/SCons/Tool/dvips.xml
index 706b2e2..53980eb 100644
--- a/src/engine/SCons/Tool/dvips.xml
+++ b/src/engine/SCons/Tool/dvips.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="dvips">
<summary>
@@ -115,4 +115,4 @@ The prefix used for PostScript file names.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/f03.py b/src/engine/SCons/Tool/f03.py
index 258db70..9fad649 100644
--- a/src/engine/SCons/Tool/f03.py
+++ b/src/engine/SCons/Tool/f03.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/f03.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/f03.py 2014/07/05 09:42:21 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/f03.xml b/src/engine/SCons/Tool/f03.xml
index bc2bf26..73b6c02 100644
--- a/src/engine/SCons/Tool/f03.xml
+++ b/src/engine/SCons/Tool/f03.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="f03">
<summary>
@@ -308,4 +308,4 @@ If this is not set, then &cv-link-SHF03PPCOM; or &cv-link-SHFORTRANPPCOM;
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/f77.py b/src/engine/SCons/Tool/f77.py
index c56f727..b5e055b 100644
--- a/src/engine/SCons/Tool/f77.py
+++ b/src/engine/SCons/Tool/f77.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/f77.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/f77.py 2014/07/05 09:42:21 garyo"
import SCons.Defaults
import SCons.Scanner.Fortran
diff --git a/src/engine/SCons/Tool/f77.xml b/src/engine/SCons/Tool/f77.xml
index 8410705..f1ac1dc 100644
--- a/src/engine/SCons/Tool/f77.xml
+++ b/src/engine/SCons/Tool/f77.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="f77">
<summary>
@@ -321,4 +321,4 @@ If this is not set, then &cv-link-SHF77PPCOM; or &cv-link-SHFORTRANPPCOM;
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/f90.py b/src/engine/SCons/Tool/f90.py
index 39be3b4..7973090 100644
--- a/src/engine/SCons/Tool/f90.py
+++ b/src/engine/SCons/Tool/f90.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/f90.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/f90.py 2014/07/05 09:42:21 garyo"
import SCons.Defaults
import SCons.Scanner.Fortran
diff --git a/src/engine/SCons/Tool/f90.xml b/src/engine/SCons/Tool/f90.xml
index c1c895e..6dc6917 100644
--- a/src/engine/SCons/Tool/f90.xml
+++ b/src/engine/SCons/Tool/f90.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="f90">
<summary>
@@ -307,4 +307,4 @@ If this is not set, then &cv-link-SHF90PPCOM; or &cv-link-SHFORTRANPPCOM;
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/f95.py b/src/engine/SCons/Tool/f95.py
index 3acc39a..6ce9513 100644
--- a/src/engine/SCons/Tool/f95.py
+++ b/src/engine/SCons/Tool/f95.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/f95.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/f95.py 2014/07/05 09:42:21 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/f95.xml b/src/engine/SCons/Tool/f95.xml
index ab151a0..6b020f3 100644
--- a/src/engine/SCons/Tool/f95.xml
+++ b/src/engine/SCons/Tool/f95.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="f95">
<summary>
@@ -308,4 +308,4 @@ If this is not set, then &cv-link-SHF95PPCOM; or &cv-link-SHFORTRANPPCOM;
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/filesystem.py b/src/engine/SCons/Tool/filesystem.py
index 3c124b7..ad018e9 100644
--- a/src/engine/SCons/Tool/filesystem.py
+++ b/src/engine/SCons/Tool/filesystem.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/filesystem.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/filesystem.py 2014/07/05 09:42:21 garyo"
import SCons
from SCons.Tool.install import copyFunc
diff --git a/src/engine/SCons/Tool/fortran.py b/src/engine/SCons/Tool/fortran.py
index b3b0d0b..072752f 100644
--- a/src/engine/SCons/Tool/fortran.py
+++ b/src/engine/SCons/Tool/fortran.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/fortran.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/fortran.py 2014/07/05 09:42:21 garyo"
import re
diff --git a/src/engine/SCons/Tool/fortran.xml b/src/engine/SCons/Tool/fortran.xml
index c89ec3e..60881cb 100644
--- a/src/engine/SCons/Tool/fortran.xml
+++ b/src/engine/SCons/Tool/fortran.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="fortran">
<summary>
@@ -372,4 +372,4 @@ If this is not set, then &cv-link-SHFORTRANPPCOM;
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/g++.py b/src/engine/SCons/Tool/g++.py
index d894644..837fde3 100644
--- a/src/engine/SCons/Tool/g++.py
+++ b/src/engine/SCons/Tool/g++.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/g++.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/g++.py 2014/07/05 09:42:21 garyo"
import os.path
import re
@@ -40,6 +40,8 @@ import subprocess
import SCons.Tool
import SCons.Util
+import gcc
+
cplusplus = __import__('c++', globals(), locals(), [])
compilers = ['g++']
@@ -48,9 +50,10 @@ def generate(env):
"""Add Builders and construction variables for g++ to an Environment."""
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
- cplusplus.generate(env)
+ if 'CXX' not in env:
+ env['CXX'] = env.Detect(compilers) or compilers[0]
- env['CXX'] = env.Detect(compilers)
+ cplusplus.generate(env)
# platform specific settings
if env['PLATFORM'] == 'aix':
@@ -62,26 +65,13 @@ def generate(env):
elif env['PLATFORM'] == 'sunos':
env['SHOBJSUFFIX'] = '.pic.o'
# determine compiler version
- if env['CXX']:
- #pipe = SCons.Action._subproc(env, [env['CXX'], '-dumpversion'],
- pipe = SCons.Action._subproc(env, [env['CXX'], '--version'],
- stdin = 'devnull',
- stderr = 'devnull',
- stdout = subprocess.PIPE)
- if pipe.wait() != 0: return
- # -dumpversion was added in GCC 3.0. As long as we're supporting
- # GCC versions older than that, we should use --version and a
- # regular expression.
- #line = pipe.stdout.read().strip()
- #if line:
- # env['CXXVERSION'] = line
- line = pipe.stdout.readline()
- match = re.search(r'[0-9]+(\.[0-9]+)+', line)
- if match:
- env['CXXVERSION'] = match.group(0)
+ version = gcc.detect_version(env, env['CXX'])
+ if version:
+ env['CXXVERSION'] = version
def exists(env):
- return env.Detect(compilers)
+ # is executable, and is a GNU compiler (or accepts '--version' at least)
+ return gcc.detect_version(env, env.Detect(env.get('CXX', compilers)))
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Tool/g++.xml b/src/engine/SCons/Tool/g++.xml
index c22dab7..5d1a085 100644
--- a/src/engine/SCons/Tool/g++.xml
+++ b/src/engine/SCons/Tool/g++.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="g++">
<summary>
@@ -38,4 +38,4 @@ Set construction variables for the &gXX; C++ compiler.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/g77.py b/src/engine/SCons/Tool/g77.py
index 7a7b7ae..e77250e 100644
--- a/src/engine/SCons/Tool/g77.py
+++ b/src/engine/SCons/Tool/g77.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/g77.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/g77.py 2014/07/05 09:42:21 garyo"
import SCons.Util
from SCons.Tool.FortranCommon import add_all_to_env, add_f77_to_env
diff --git a/src/engine/SCons/Tool/g77.xml b/src/engine/SCons/Tool/g77.xml
index 797e4c6..8b71d25 100644
--- a/src/engine/SCons/Tool/g77.xml
+++ b/src/engine/SCons/Tool/g77.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="g77">
<summary>
@@ -33,4 +33,4 @@ to set variables.
</summary>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/gas.py b/src/engine/SCons/Tool/gas.py
index f016c96..3226b62 100644
--- a/src/engine/SCons/Tool/gas.py
+++ b/src/engine/SCons/Tool/gas.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/gas.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/gas.py 2014/07/05 09:42:21 garyo"
as_module = __import__('as', globals(), locals(), [])
diff --git a/src/engine/SCons/Tool/gas.xml b/src/engine/SCons/Tool/gas.xml
index a63997f..61b68fb 100644
--- a/src/engine/SCons/Tool/gas.xml
+++ b/src/engine/SCons/Tool/gas.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="gas">
<summary>
@@ -35,4 +35,4 @@ Calls the &t-as; module.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/gcc.py b/src/engine/SCons/Tool/gcc.py
index 09e4831..fb5e475 100644
--- a/src/engine/SCons/Tool/gcc.py
+++ b/src/engine/SCons/Tool/gcc.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/gcc.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/gcc.py 2014/07/05 09:42:21 garyo"
import cc
import os
@@ -44,34 +44,54 @@ compilers = ['gcc', 'cc']
def generate(env):
"""Add Builders and construction variables for gcc to an Environment."""
+
+ if 'CC' not in env:
+ env['CC'] = env.Detect(compilers) or compilers[0]
+
cc.generate(env)
- env['CC'] = env.Detect(compilers) or 'gcc'
if env['PLATFORM'] in ['cygwin', 'win32']:
env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
else:
env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS -fPIC')
# determine compiler version
- if env['CC']:
- #pipe = SCons.Action._subproc(env, [env['CC'], '-dumpversion'],
- pipe = SCons.Action._subproc(env, [env['CC'], '--version'],
- stdin = 'devnull',
- stderr = 'devnull',
- stdout = subprocess.PIPE)
- if pipe.wait() != 0: return
- # -dumpversion was added in GCC 3.0. As long as we're supporting
- # GCC versions older than that, we should use --version and a
- # regular expression.
- #line = pipe.stdout.read().strip()
- #if line:
- # env['CCVERSION'] = line
- line = pipe.stdout.readline()
- match = re.search(r'[0-9]+(\.[0-9]+)+', line)
- if match:
- env['CCVERSION'] = match.group(0)
+ version = detect_version(env, env['CC'])
+ if version:
+ env['CCVERSION'] = version
def exists(env):
- return env.Detect(compilers)
+ # is executable, and is a GNU compiler (or accepts '--version' at least)
+ return detect_version(env, env.Detect(env.get('CC', compilers)))
+
+def detect_version(env, cc):
+ """Return the version of the GNU compiler, or None if it is not a GNU compiler."""
+ cc = env.subst(cc)
+ if not cc:
+ return None
+ version = None
+ #pipe = SCons.Action._subproc(env, SCons.Util.CLVar(cc) + ['-dumpversion'],
+ pipe = SCons.Action._subproc(env, SCons.Util.CLVar(cc) + ['--version'],
+ stdin = 'devnull',
+ stderr = 'devnull',
+ stdout = subprocess.PIPE)
+ # -dumpversion was added in GCC 3.0. As long as we're supporting
+ # GCC versions older than that, we should use --version and a
+ # regular expression.
+ #line = pipe.stdout.read().strip()
+ #if line:
+ # version = line
+ line = pipe.stdout.readline()
+ match = re.search(r'[0-9]+(\.[0-9]+)+', line)
+ if match:
+ version = match.group(0)
+ # Non-GNU compiler's output (like AIX xlc's) may exceed the stdout buffer:
+ # So continue with reading to let the child process actually terminate.
+ while pipe.stdout.readline():
+ pass
+ ret = pipe.wait()
+ if ret != 0:
+ return None
+ return version
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Tool/gcc.xml b/src/engine/SCons/Tool/gcc.xml
index dcc38cc..5c0a7be 100644
--- a/src/engine/SCons/Tool/gcc.xml
+++ b/src/engine/SCons/Tool/gcc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="gcc">
<summary>
@@ -36,4 +36,4 @@ Set construction variables for the &gcc; C compiler.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/gdc.py b/src/engine/SCons/Tool/gdc.py
new file mode 100644
index 0000000..7c2ab95
--- /dev/null
+++ b/src/engine/SCons/Tool/gdc.py
@@ -0,0 +1,130 @@
+"""SCons.Tool.gdc
+
+Tool-specific initialization for the GDC compiler.
+(https://github.com/D-Programming-GDC/GDC)
+
+Developed by Russel Winder (russel@winder.org.uk)
+2012-05-09 onwards
+
+Compiler variables:
+ DC - The name of the D compiler to use. Defaults to gdc.
+ DPATH - List of paths to search for import modules.
+ DVERSIONS - List of version tags to enable when compiling.
+ DDEBUG - List of debug tags to enable when compiling.
+
+Linker related variables:
+ LIBS - List of library files to link in.
+ DLINK - Name of the linker to use. Defaults to gdc.
+ DLINKFLAGS - List of linker flags.
+
+Lib tool variables:
+ DLIB - Name of the lib tool to use. Defaults to lib.
+ DLIBFLAGS - List of flags to pass to the lib tool.
+ LIBS - Same as for the linker. (libraries to pull into the .lib)
+"""
+
+#
+# Copyright (c) 2001 - 2014 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+__revision__ = "src/engine/SCons/Tool/gdc.py 2014/07/05 09:42:21 garyo"
+
+import SCons.Action
+import SCons.Defaults
+import SCons.Tool
+
+import SCons.Tool.DCommon
+
+
+def generate(env):
+ static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
+
+ static_obj.add_action('.d', SCons.Defaults.DAction)
+ shared_obj.add_action('.d', SCons.Defaults.ShDAction)
+ static_obj.add_emitter('.d', SCons.Defaults.StaticObjectEmitter)
+ shared_obj.add_emitter('.d', SCons.Defaults.SharedObjectEmitter)
+
+ env['DC'] = env.Detect('gdc')
+ env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -o $TARGET $SOURCES'
+ env['_DINCFLAGS'] = '$( ${_concat(DINCPREFIX, DPATH, DINCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
+ env['_DVERFLAGS'] = '$( ${_concat(DVERPREFIX, DVERSIONS, DVERSUFFIX, __env__)} $)'
+ env['_DDEBUGFLAGS'] = '$( ${_concat(DDEBUGPREFIX, DDEBUG, DDEBUGSUFFIX, __env__)} $)'
+ env['_DFLAGS'] = '$( ${_concat(DFLAGPREFIX, DFLAGS, DFLAGSUFFIX, __env__)} $)'
+
+ env['SHDC'] = '$DC'
+ env['SHDCOM'] = '$SHDC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -fPIC -c -o $TARGET $SOURCES'
+
+ env['DPATH'] = ['#/']
+ env['DFLAGS'] = []
+ env['DVERSIONS'] = []
+ env['DDEBUG'] = []
+
+ env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 0
+
+ if env['DC']:
+ SCons.Tool.DCommon.addDPATHToEnv(env, env['DC'])
+
+ env['DINCPREFIX'] = '-I'
+ env['DINCSUFFIX'] = ''
+ env['DVERPREFIX'] = '-version='
+ env['DVERSUFFIX'] = ''
+ env['DDEBUGPREFIX'] = '-debug='
+ env['DDEBUGSUFFIX'] = ''
+ env['DFLAGPREFIX'] = '-'
+ env['DFLAGSUFFIX'] = ''
+ env['DFILESUFFIX'] = '.d'
+
+ env['DLINK'] = '$DC'
+ env['DLINKFLAGS'] = SCons.Util.CLVar('')
+ env['DLINKCOM'] = '$DLINK -o $TARGET $DLINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
+
+ env['SHDLINK'] = '$DC'
+ env['SHDLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared')
+ env['SHDLINKCOM'] = '$DLINK -o $TARGET $DLINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
+
+ env['DLIB'] = 'lib' if env['PLATFORM'] == 'win32' else 'ar cr'
+ env['DLIBCOM'] = '$DLIB $_DLIBFLAGS {} $TARGET $SOURCES $_DLINKLIBFLAGS'.format('-c' if env['PLATFORM'] == 'win32' else '')
+
+ env['_DLIBFLAGS'] = '$( ${_concat(DLIBFLAGPREFIX, DLIBFLAGS, DLIBFLAGSUFFIX, __env__)} $)'
+
+ env['DLIBFLAGPREFIX'] = '-'
+ env['DLIBFLAGSUFFIX'] = ''
+ env['DLINKFLAGPREFIX'] = '-'
+ env['DLINKFLAGSUFFIX'] = ''
+
+ # __RPATH is set to $_RPATH in the platform specification if that
+ # platform supports it.
+ env['RPATHPREFIX'] = '-Wl,-rpath='
+ env['RPATHSUFFIX'] = ''
+ env['_RPATH'] = '${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}'
+
+ SCons.Tool.createStaticLibBuilder(env)
+
+
+def exists(env):
+ return env.Detect('gdc')
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/src/engine/SCons/Tool/gdc.xml b/src/engine/SCons/Tool/gdc.xml
new file mode 100644
index 0000000..fa64572
--- /dev/null
+++ b/src/engine/SCons/Tool/gdc.xml
@@ -0,0 +1,388 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2001 - 2014 The SCons Foundation
+
+This file is processed by the bin/SConsDoc.py module.
+See its __doc__ string for a discussion of the format.
+-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd">
+
+<tool name="gdc">
+<summary>
+<para>
+Sets construction variables for the D language compiler GDC.
+</para>
+</summary>
+<sets>
+<item>DC</item>
+<item>DCOM</item>
+<item>_DINCFLAGS</item>
+<item>_DVERFLAGS</item>
+<item>_DDEBUGFLAGS</item>
+<item>_DFLAGS</item>
+<item>SHDC</item>
+<item>SHDCOM</item>
+<item>DPATH</item>
+<item>DFLAGS</item>
+<item>DVERSIONS</item>
+<item>DDEBUG</item>
+<item>STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME</item>
+<item>DINCPREFIX</item>
+<item>DINCSUFFIX</item>
+<item>DVERPREFIX</item>
+<item>DVERSUFFIX</item>
+<item>DDEBUGPREFIX</item>
+<item>DDEBUGSUFFIX</item>
+<item>DFLAGPREFIX</item>
+<item>DFLAGSUFFIX</item>
+<item>DFILESUFFIX</item>
+<item>DLINK</item>
+<item>DLINKFLAGS</item>
+<item>DLINKCOM</item>
+<item>SHDLINK</item>
+<item>SHDLINKFLAGS</item>
+<item>SHDLINKCOM</item>
+<item>DLIB</item>
+<item>DLIBCOM</item>
+<item>_DLIBFLAGS</item>
+<item>DLIBFLAGPREFIX</item>
+<item>DLIBFLAGSUFFIX</item>
+<item>DLINKFLAGPREFIX</item>
+<item>DLINKFLAGSUFFIX</item>
+<item>RPATHPREFIX</item>
+<item>RPATHSUFFIX</item>
+<item>_RPATH</item>
+</sets>
+<uses>
+</uses>
+</tool>
+
+<cvar name="DC">
+<summary>
+<para>
+DC.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DCOM">
+<summary>
+<para>
+DCOM.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DDEBUG">
+<summary>
+<para>
+DDEBUG.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DDEBUGPREFIX">
+<summary>
+<para>
+DDEBUGPREFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DDEBUGSUFFIX">
+<summary>
+<para>
+DDEBUGSUFFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DFILESUFFIX">
+<summary>
+<para>
+DFILESUFFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DFLAGPREFIX">
+<summary>
+<para>
+DFLAGPREFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DFLAGS">
+<summary>
+<para>
+DFLAGS.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DFLAGSUFFIX">
+<summary>
+<para>
+DFLAGSUFFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DINCPREFIX">
+<summary>
+<para>
+DINCPREFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DINCSUFFIX">
+<summary>
+<para>
+DINCSUFFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLIB">
+<summary>
+<para>
+DLIB.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLIBCOM">
+<summary>
+<para>
+DLIBCOM.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLIBDIRPREFIX">
+<summary>
+<para>
+DLIBDIRPREFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLIBDIRSUFFIX">
+<summary>
+<para>
+DLIBDIRSUFFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLIBFLAGPREFIX">
+<summary>
+<para>
+DLIBFLAGPREFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLIBFLAGSUFFIX">
+<summary>
+<para>
+DLIBFLAGSUFFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLIBLINKPREFIX">
+<summary>
+<para>
+DLIBLINKPREFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLIBLINKSUFFIX">
+<summary>
+<para>
+DLIBLINKSUFFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLINK">
+<summary>
+<para>
+DLINK.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLINKCOM">
+<summary>
+<para>
+DLINKCOM.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLINKFLAGPREFIX">
+<summary>
+<para>
+DLINKFLAGPREFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLINKFLAGS">
+<summary>
+<para>
+DLINKFLAGS.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLINKFLAGSUFFIX">
+<summary>
+<para>
+DLINKFLAGSUFFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DPATH">
+<summary>
+<para>
+DPATH.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DVERPREFIX">
+<summary>
+<para>
+DVERPREFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DVERSIONS">
+<summary>
+<para>
+DVERSIONS.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DVERSUFFIX">
+<summary>
+<para>
+DVERSUFFIX.
+</para>
+</summary>
+</cvar>
+
+<cvar name="SHDC">
+<summary>
+<para>
+SHDC.
+</para>
+</summary>
+</cvar>
+
+<cvar name="SHDCOM">
+<summary>
+<para>
+SHDCOM.
+</para>
+</summary>
+</cvar>
+
+<cvar name="SHDLINK">
+<summary>
+<para>
+SHDLINK.
+</para>
+</summary>
+</cvar>
+
+<cvar name="SHDLINKCOM">
+<summary>
+<para>
+SHDLINKCOM.
+</para>
+</summary>
+</cvar>
+
+<cvar name="SHDLINKFLAGS">
+<summary>
+<para>
+SHDLINKFLAGS.
+</para>
+</summary>
+</cvar>
+
+<cvar name="_DDEBUGFLAGS">
+<summary>
+<para>
+_DDEBUGFLAGS.
+</para>
+</summary>
+</cvar>
+
+<cvar name="_DFLAGS">
+<summary>
+<para>
+_DFLAGS.
+</para>
+</summary>
+</cvar>
+
+<cvar name="_DINCFLAGS">
+<summary>
+<para>
+_DINCFLAGS.
+</para>
+</summary>
+</cvar>
+
+<cvar name="_DLIBDIRFLAGS">
+<summary>
+<para>
+_DLIBDIRFLAGS.
+</para>
+</summary>
+</cvar>
+
+<cvar name="_DLIBFLAGS">
+<summary>
+<para>
+_DLIBFLAGS.
+</para>
+</summary>
+</cvar>
+
+<cvar name="_DVERFLAGS">
+<summary>
+<para>
+_DVERFLAGS.
+</para>
+</summary>
+</cvar>
+
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/gettext.py b/src/engine/SCons/Tool/gettext.py
index 8a25888..af9f897 100644
--- a/src/engine/SCons/Tool/gettext.py
+++ b/src/engine/SCons/Tool/gettext.py
@@ -2,7 +2,7 @@
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -23,7 +23,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/gettext.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/gettext.py 2014/07/05 09:42:21 garyo"
#############################################################################
def generate(env,**kw):
diff --git a/src/engine/SCons/Tool/gettext.xml b/src/engine/SCons/Tool/gettext.xml
index 667d6a7..251c16a 100644
--- a/src/engine/SCons/Tool/gettext.xml
+++ b/src/engine/SCons/Tool/gettext.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="gettext">
<summary>
@@ -254,4 +254,4 @@ default file named
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/gfortran.py b/src/engine/SCons/Tool/gfortran.py
index 4d2c137..a178f82 100644
--- a/src/engine/SCons/Tool/gfortran.py
+++ b/src/engine/SCons/Tool/gfortran.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/gfortran.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/gfortran.py 2014/07/05 09:42:21 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/gfortran.xml b/src/engine/SCons/Tool/gfortran.xml
index 1cacfbc..69e222a 100644
--- a/src/engine/SCons/Tool/gfortran.xml
+++ b/src/engine/SCons/Tool/gfortran.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="gfortran">
<summary>
@@ -45,4 +45,4 @@ Sets construction variables for the GNU F95/F2003 GNU compiler.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/gnulink.py b/src/engine/SCons/Tool/gnulink.py
index d475de4..a0cf937 100644
--- a/src/engine/SCons/Tool/gnulink.py
+++ b/src/engine/SCons/Tool/gnulink.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,14 +31,12 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/gnulink.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/gnulink.py 2014/07/05 09:42:21 garyo"
import SCons.Util
import link
-linkers = ['g++', 'gcc']
-
def generate(env):
"""Add Builders and construction variables for gnulink to an Environment."""
link.generate(env)
@@ -53,7 +51,14 @@ def generate(env):
env['_RPATH'] = '${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}'
def exists(env):
- return env.Detect(linkers)
+ # TODO: sync with link.smart_link() to choose a linker
+ linkers = { 'CXX': ['g++'], 'CC': ['gcc'] }
+ alltools = []
+ for langvar, linktools in linkers.items():
+ if langvar in env: # use CC over CXX when user specified CC but not CXX
+ return SCons.Tool.FindTool(linktools, env)
+ alltools.extend(linktools)
+ return SCons.Tool.FindTool(alltools, env) # find CXX or CC
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Tool/gnulink.xml b/src/engine/SCons/Tool/gnulink.xml
index bbbf7f0..4f31842 100644
--- a/src/engine/SCons/Tool/gnulink.xml
+++ b/src/engine/SCons/Tool/gnulink.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="gnulink">
<summary>
@@ -36,4 +36,4 @@ Set construction variables for GNU linker/loader.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/gs.py b/src/engine/SCons/Tool/gs.py
index 91c6434..a507be8 100644
--- a/src/engine/SCons/Tool/gs.py
+++ b/src/engine/SCons/Tool/gs.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/gs.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/gs.py 2014/07/05 09:42:21 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/gs.xml b/src/engine/SCons/Tool/gs.xml
index 235aaaf..c3dad48 100644
--- a/src/engine/SCons/Tool/gs.xml
+++ b/src/engine/SCons/Tool/gs.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="gs">
<summary>
@@ -97,4 +97,4 @@ env.Gs('cover.jpg','scons-scons.pdf',
</summary>
</builder>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/hpc++.py b/src/engine/SCons/Tool/hpc++.py
index 4920cff..c73b129 100644
--- a/src/engine/SCons/Tool/hpc++.py
+++ b/src/engine/SCons/Tool/hpc++.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/hpc++.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/hpc++.py 2014/07/05 09:42:21 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/hpc++.xml b/src/engine/SCons/Tool/hpc++.xml
index 83a88e9..4495ad3 100644
--- a/src/engine/SCons/Tool/hpc++.xml
+++ b/src/engine/SCons/Tool/hpc++.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="hpc++">
<summary>
@@ -31,4 +31,4 @@ Set construction variables for the compilers aCC on HP/UX systems.
</summary>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/hpcc.py b/src/engine/SCons/Tool/hpcc.py
index bb745ba..d9dbbb7 100644
--- a/src/engine/SCons/Tool/hpcc.py
+++ b/src/engine/SCons/Tool/hpcc.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/hpcc.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/hpcc.py 2014/07/05 09:42:21 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/hpcc.xml b/src/engine/SCons/Tool/hpcc.xml
index d9a23a2..d7dccad 100644
--- a/src/engine/SCons/Tool/hpcc.xml
+++ b/src/engine/SCons/Tool/hpcc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="hpcc">
<summary>
@@ -38,4 +38,4 @@ Calls the &t-cXX; tool for additional variables.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/hplink.py b/src/engine/SCons/Tool/hplink.py
index ea979f5..fd2e0ae 100644
--- a/src/engine/SCons/Tool/hplink.py
+++ b/src/engine/SCons/Tool/hplink.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/hplink.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/hplink.py 2014/07/05 09:42:21 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/hplink.xml b/src/engine/SCons/Tool/hplink.xml
index da51fe6..ff5cbb8 100644
--- a/src/engine/SCons/Tool/hplink.xml
+++ b/src/engine/SCons/Tool/hplink.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="hplink">
<summary>
@@ -36,4 +36,4 @@ Sets construction variables for the linker on HP/UX systems.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/icc.py b/src/engine/SCons/Tool/icc.py
index ac0629c..67baed0 100644
--- a/src/engine/SCons/Tool/icc.py
+++ b/src/engine/SCons/Tool/icc.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/icc.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/icc.py 2014/07/05 09:42:21 garyo"
import cc
diff --git a/src/engine/SCons/Tool/icc.xml b/src/engine/SCons/Tool/icc.xml
index 5d4f587..d32c1d9 100644
--- a/src/engine/SCons/Tool/icc.xml
+++ b/src/engine/SCons/Tool/icc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="icc">
<summary>
@@ -50,4 +50,4 @@ Sets construction variables for the
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/icl.py b/src/engine/SCons/Tool/icl.py
index 518a902..17ad4ca 100644
--- a/src/engine/SCons/Tool/icl.py
+++ b/src/engine/SCons/Tool/icl.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/icl.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/icl.py 2014/07/05 09:42:21 garyo"
import SCons.Tool.intelc
diff --git a/src/engine/SCons/Tool/icl.xml b/src/engine/SCons/Tool/icl.xml
index 77f576b..4ab7215 100644
--- a/src/engine/SCons/Tool/icl.xml
+++ b/src/engine/SCons/Tool/icl.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="icl">
<summary>
@@ -32,4 +32,4 @@ Calls the &t-intelc; Tool module to set its variables.
</summary>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/ifl.py b/src/engine/SCons/Tool/ifl.py
index 6e52fca..a7b2772 100644
--- a/src/engine/SCons/Tool/ifl.py
+++ b/src/engine/SCons/Tool/ifl.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/ifl.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/ifl.py 2014/07/05 09:42:21 garyo"
import SCons.Defaults
from SCons.Scanner.Fortran import FortranScan
diff --git a/src/engine/SCons/Tool/ifl.xml b/src/engine/SCons/Tool/ifl.xml
index 406e11c..860d8fa 100644
--- a/src/engine/SCons/Tool/ifl.xml
+++ b/src/engine/SCons/Tool/ifl.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="ifl">
<summary>
@@ -44,4 +44,4 @@ Sets construction variables for the Intel Fortran compiler.
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/ifort.py b/src/engine/SCons/Tool/ifort.py
index c61dc12..fe941ee 100644
--- a/src/engine/SCons/Tool/ifort.py
+++ b/src/engine/SCons/Tool/ifort.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/ifort.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/ifort.py 2014/07/05 09:42:21 garyo"
import SCons.Defaults
from SCons.Scanner.Fortran import FortranScan
diff --git a/src/engine/SCons/Tool/ifort.xml b/src/engine/SCons/Tool/ifort.xml
index 341a0f5..5a604f0 100644
--- a/src/engine/SCons/Tool/ifort.xml
+++ b/src/engine/SCons/Tool/ifort.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="ifort">
<summary>
@@ -46,4 +46,4 @@ of the Intel Fortran compiler for Linux.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/ilink.py b/src/engine/SCons/Tool/ilink.py
index 7cd94d7..6def57b 100644
--- a/src/engine/SCons/Tool/ilink.py
+++ b/src/engine/SCons/Tool/ilink.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/ilink.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/ilink.py 2014/07/05 09:42:21 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/ilink.xml b/src/engine/SCons/Tool/ilink.xml
index c3cff75..379a4b1 100644
--- a/src/engine/SCons/Tool/ilink.xml
+++ b/src/engine/SCons/Tool/ilink.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="ilink">
<summary>
@@ -43,4 +43,4 @@ Sets construction variables for the
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/ilink32.py b/src/engine/SCons/Tool/ilink32.py
index c8a49db..d7fae38 100644
--- a/src/engine/SCons/Tool/ilink32.py
+++ b/src/engine/SCons/Tool/ilink32.py
@@ -5,7 +5,7 @@ XXX
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ XXX
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/ilink32.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/ilink32.py 2014/07/05 09:42:21 garyo"
import SCons.Tool
import SCons.Tool.bcc32
diff --git a/src/engine/SCons/Tool/ilink32.xml b/src/engine/SCons/Tool/ilink32.xml
index d5c4c5f..e97c018 100644
--- a/src/engine/SCons/Tool/ilink32.xml
+++ b/src/engine/SCons/Tool/ilink32.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="ilink32">
<summary>
@@ -43,4 +43,4 @@ Sets construction variables for the Borland
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/install.py b/src/engine/SCons/Tool/install.py
index 8c32650..33e005a 100644
--- a/src/engine/SCons/Tool/install.py
+++ b/src/engine/SCons/Tool/install.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/install.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/install.py 2014/07/05 09:42:21 garyo"
import os
import re
diff --git a/src/engine/SCons/Tool/install.xml b/src/engine/SCons/Tool/install.xml
index 057a006..9dddca3 100644
--- a/src/engine/SCons/Tool/install.xml
+++ b/src/engine/SCons/Tool/install.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="install">
@@ -89,4 +89,4 @@ env.InstallAs(target = ['../lib/libfoo.a', '../lib/libbar.a'],
</summary>
</builder>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/intelc.py b/src/engine/SCons/Tool/intelc.py
index 1bd799f..37042f8 100644
--- a/src/engine/SCons/Tool/intelc.py
+++ b/src/engine/SCons/Tool/intelc.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from __future__ import division
-__revision__ = "src/engine/SCons/Tool/intelc.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/intelc.py 2014/07/05 09:42:21 garyo"
import math, sys, os.path, glob, string, re
@@ -156,7 +156,43 @@ def get_intel_registry_value(valuename, version=None, abi=None):
try:
k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, K)
except SCons.Util.RegError:
- raise MissingRegistryError("%s was not found in the registry, for Intel compiler version %s, abi='%s'"%(K, version,abi))
+ # For version 13 and later, check UUID subkeys for valuename
+ if is_win64:
+ K = 'Software\\Wow6432Node\\Intel\\Suites\\' + version + "\\Defaults\\C++\\" + abi.upper()
+ else:
+ K = 'Software\\Intel\\Suites\\' + version + "\\Defaults\\C++\\" + abi.upper()
+ try:
+ k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, K)
+ uuid = SCons.Util.RegQueryValueEx(k, 'SubKey')[0]
+
+ if is_win64:
+ K = 'Software\\Wow6432Node\\Intel\\Suites\\' + version + "\\" + uuid + "\\C++"
+ else:
+ K = 'Software\\Intel\\Suites\\' + version + "\\" + uuid + "\\C++"
+ k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, K)
+
+ try:
+ v = SCons.Util.RegQueryValueEx(k, valuename)[0]
+ return v # or v.encode('iso-8859-1', 'replace') to remove unicode?
+ except SCons.Util.RegError:
+ if abi.upper() == 'EM64T':
+ abi = 'em64t_native'
+ if is_win64:
+ K = 'Software\\Wow6432Node\\Intel\\Suites\\' + version + "\\" + uuid + "\\C++\\" + abi.upper()
+ else:
+ K = 'Software\\Intel\\Suites\\' + version + "\\" + uuid + "\\C++\\" + abi.upper()
+ k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, K)
+
+ try:
+ v = SCons.Util.RegQueryValueEx(k, valuename)[0]
+ return v # or v.encode('iso-8859-1', 'replace') to remove unicode?
+ except SCons.Util.RegError:
+ raise MissingRegistryError("%s was not found in the registry, for Intel compiler version %s, abi='%s'"%(K, version,abi))
+
+ except SCons.Util.RegError:
+ raise MissingRegistryError("%s was not found in the registry, for Intel compiler version %s, abi='%s'"%(K, version,abi))
+ except WindowsError:
+ raise MissingRegistryError("%s was not found in the registry, for Intel compiler version %s, abi='%s'"%(K, version,abi))
# Get the value:
try:
@@ -180,7 +216,16 @@ def get_all_compiler_versions():
k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE,
keyname)
except WindowsError:
- return []
+ # For version 13 or later, check for default instance UUID
+ if is_win64:
+ keyname = 'Software\\WoW6432Node\\Intel\\Suites'
+ else:
+ keyname = 'Software\\Intel\\Suites'
+ try:
+ k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE,
+ keyname)
+ except WindowsError:
+ return []
i = 0
versions = []
try:
@@ -192,6 +237,9 @@ def get_all_compiler_versions():
# and then the install directory deleted or moved (rather
# than uninstalling properly), so the registry values
# are still there.
+ if subkey == 'Defaults': # Ignore default instances
+ i = i + 1
+ continue
ok = False
for try_abi in ('IA32', 'IA32e', 'IA64', 'EM64T'):
try:
@@ -268,9 +316,17 @@ def get_intel_compiler_top(version, abi):
if not SCons.Util.can_read_reg:
raise NoRegistryModuleError("No Windows registry module was found")
top = get_intel_registry_value('ProductDir', version, abi)
+ archdir={'x86_64': 'intel64',
+ 'amd64' : 'intel64',
+ 'em64t' : 'intel64',
+ 'x86' : 'ia32',
+ 'i386' : 'ia32',
+ 'ia32' : 'ia32'
+ }[abi] # for v11 and greater
# pre-11, icl was in Bin. 11 and later, it's in Bin/<abi> apparently.
if not os.path.exists(os.path.join(top, "Bin", "icl.exe")) \
- and not os.path.exists(os.path.join(top, "Bin", abi, "icl.exe")):
+ and not os.path.exists(os.path.join(top, "Bin", abi, "icl.exe")) \
+ and not os.path.exists(os.path.join(top, "Bin", archdir, "icl.exe")):
raise MissingDirError("Can't find Intel compiler in %s"%(top))
elif is_mac or is_linux:
def find_in_2008style_dir(version):
diff --git a/src/engine/SCons/Tool/intelc.xml b/src/engine/SCons/Tool/intelc.xml
index 2170a6e..c203804 100644
--- a/src/engine/SCons/Tool/intelc.xml
+++ b/src/engine/SCons/Tool/intelc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="intelc">
<summary>
@@ -55,4 +55,4 @@ selected for use.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/ipkg.py b/src/engine/SCons/Tool/ipkg.py
index 3fb58db..ec4c3aa 100644
--- a/src/engine/SCons/Tool/ipkg.py
+++ b/src/engine/SCons/Tool/ipkg.py
@@ -11,7 +11,7 @@ packages fake_root.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -33,7 +33,7 @@ packages fake_root.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/ipkg.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/ipkg.py 2014/07/05 09:42:21 garyo"
import os
diff --git a/src/engine/SCons/Tool/jar.py b/src/engine/SCons/Tool/jar.py
index 8b5c7f1..2077285 100644
--- a/src/engine/SCons/Tool/jar.py
+++ b/src/engine/SCons/Tool/jar.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/jar.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/jar.py 2014/07/05 09:42:21 garyo"
import SCons.Subst
import SCons.Util
diff --git a/src/engine/SCons/Tool/jar.xml b/src/engine/SCons/Tool/jar.xml
index fedaf51..48b5b76 100644
--- a/src/engine/SCons/Tool/jar.xml
+++ b/src/engine/SCons/Tool/jar.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="jar">
<summary>
@@ -148,4 +148,4 @@ by default.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/javac.py b/src/engine/SCons/Tool/javac.py
index 9249989..9bdbcca 100644
--- a/src/engine/SCons/Tool/javac.py
+++ b/src/engine/SCons/Tool/javac.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/javac.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/javac.py 2014/07/05 09:42:21 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/javac.xml b/src/engine/SCons/Tool/javac.xml
index d720293..0c938c2 100644
--- a/src/engine/SCons/Tool/javac.xml
+++ b/src/engine/SCons/Tool/javac.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="javac">
<summary>
@@ -282,4 +282,4 @@ build is actually up to date.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/javacTests.py b/src/engine/SCons/Tool/javacTests.py
index 2280617..6a56bc0 100644
--- a/src/engine/SCons/Tool/javacTests.py
+++ b/src/engine/SCons/Tool/javacTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -24,6 +24,8 @@
import os
import unittest
+import TestUnit
+
import SCons.Tool.javac
class DummyNode(object):
@@ -99,4 +101,5 @@ class pathoptTestCase(unittest.TestCase):
'')
if __name__ == "__main__":
- unittest.main()
+ suite = unittest.makeSuite(pathoptTestCase, 'test_')
+ TestUnit.run(suite)
diff --git a/src/engine/SCons/Tool/javah.py b/src/engine/SCons/Tool/javah.py
index 2c2533d..1db73eb 100644
--- a/src/engine/SCons/Tool/javah.py
+++ b/src/engine/SCons/Tool/javah.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/javah.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/javah.py 2014/07/05 09:42:21 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/javah.xml b/src/engine/SCons/Tool/javah.xml
index 1c99bca..0b31e92 100644
--- a/src/engine/SCons/Tool/javah.xml
+++ b/src/engine/SCons/Tool/javah.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="javah">
<summary>
@@ -134,4 +134,4 @@ for Java classes.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/latex.py b/src/engine/SCons/Tool/latex.py
index 899a508..caa6199 100644
--- a/src/engine/SCons/Tool/latex.py
+++ b/src/engine/SCons/Tool/latex.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/latex.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/latex.py 2014/07/05 09:42:21 garyo"
import SCons.Action
import SCons.Defaults
diff --git a/src/engine/SCons/Tool/latex.xml b/src/engine/SCons/Tool/latex.xml
index f695533..9f67232 100644
--- a/src/engine/SCons/Tool/latex.xml
+++ b/src/engine/SCons/Tool/latex.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="latex">
<summary>
@@ -103,4 +103,4 @@ directories for \include and \import files.
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/ldc.py b/src/engine/SCons/Tool/ldc.py
new file mode 100644
index 0000000..9df5c93
--- /dev/null
+++ b/src/engine/SCons/Tool/ldc.py
@@ -0,0 +1,143 @@
+"""SCons.Tool.ldc
+
+Tool-specific initialization for the LDC compiler.
+(http://www.dsource.org/projects/ldc)
+
+Developed by Russel Winder (russel@winder.org.uk)
+2012-05-09 onwards
+
+Compiler variables:
+ DC - The name of the D compiler to use. Defaults to ldc2.
+ DPATH - List of paths to search for import modules.
+ DVERSIONS - List of version tags to enable when compiling.
+ DDEBUG - List of debug tags to enable when compiling.
+
+Linker related variables:
+ LIBS - List of library files to link in.
+ DLINK - Name of the linker to use. Defaults to ldc2.
+ DLINKFLAGS - List of linker flags.
+
+Lib tool variables:
+ DLIB - Name of the lib tool to use. Defaults to lib.
+ DLIBFLAGS - List of flags to pass to the lib tool.
+ LIBS - Same as for the linker. (libraries to pull into the .lib)
+"""
+
+#
+# Copyright (c) 2001 - 2014 The SCons Foundation
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+__revision__ = "src/engine/SCons/Tool/ldc.py 2014/07/05 09:42:21 garyo"
+
+import os
+import subprocess
+
+import SCons.Action
+import SCons.Builder
+import SCons.Defaults
+import SCons.Scanner.D
+import SCons.Tool
+
+import SCons.Tool.DCommon
+
+
+def generate(env):
+ static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
+
+ static_obj.add_action('.d', SCons.Defaults.DAction)
+ shared_obj.add_action('.d', SCons.Defaults.ShDAction)
+ static_obj.add_emitter('.d', SCons.Defaults.StaticObjectEmitter)
+ shared_obj.add_emitter('.d', SCons.Defaults.SharedObjectEmitter)
+
+ env['DC'] = env.Detect('ldc2')
+ env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -of=$TARGET $SOURCES'
+ env['_DINCFLAGS'] = '$( ${_concat(DINCPREFIX, DPATH, DINCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
+ env['_DVERFLAGS'] = '$( ${_concat(DVERPREFIX, DVERSIONS, DVERSUFFIX, __env__)} $)'
+ env['_DDEBUGFLAGS'] = '$( ${_concat(DDEBUGPREFIX, DDEBUG, DDEBUGSUFFIX, __env__)} $)'
+ env['_DFLAGS'] = '$( ${_concat(DFLAGPREFIX, DFLAGS, DFLAGSUFFIX, __env__)} $)'
+
+ env['SHDC'] = '$DC'
+ env['SHDCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -relocation-model=pic -of=$TARGET $SOURCES'
+
+ env['DPATH'] = ['#/']
+ env['DFLAGS'] = []
+ env['DVERSIONS'] = []
+ env['DDEBUG'] = []
+
+ env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 0
+
+ if env['DC']:
+ SCons.Tool.DCommon.addDPATHToEnv(env, env['DC'])
+
+ env['DINCPREFIX'] = '-I='
+ env['DINCSUFFIX'] = ''
+ env['DVERPREFIX'] = '-version='
+ env['DVERSUFFIX'] = ''
+ env['DDEBUGPREFIX'] = '-debug='
+ env['DDEBUGSUFFIX'] = ''
+ env['DFLAGPREFIX'] = '-'
+ env['DFLAGSUFFIX'] = ''
+ env['DFILESUFFIX'] = '.d'
+
+ env['DLINK'] = '$DC'
+ env['DLINKFLAGS'] = SCons.Util.CLVar('')
+ env['DLINKCOM'] = '$DLINK -of=$TARGET $DLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS'
+
+ env['DSHLINK'] = '$DC'
+ env['DSHLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared')
+ env['SHDLINKCOM'] = '$DLINK -of=$TARGET $DSHLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS'
+
+ env['DLIBLINKPREFIX'] = '' if env['PLATFORM'] == 'win32' else '-L-l'
+ env['DLIBLINKSUFFIX'] = '.lib' if env['PLATFORM'] == 'win32' else ''
+ #env['_DLIBFLAGS'] = '$( ${_concat(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
+ env['_DLIBFLAGS'] = '${_stripixes(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__)}'
+
+ env['DLIBDIRPREFIX'] = '-L-L'
+ env['DLIBDIRSUFFIX'] = ''
+ env['_DLIBDIRFLAGS'] = '$( ${_concat(DLIBDIRPREFIX, LIBPATH, DLIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
+
+
+ env['DLIB'] = 'lib' if env['PLATFORM'] == 'win32' else 'ar cr'
+ env['DLIBCOM'] = '$DLIB $_DLIBFLAGS {} $TARGET $SOURCES $_DLIBFLAGS'.format('-c' if env['PLATFORM'] == 'win32' else '')
+
+ #env['_DLIBFLAGS'] = '$( ${_concat(DLIBFLAGPREFIX, DLIBFLAGS, DLIBFLAGSUFFIX, __env__)} $)'
+
+ env['DLIBFLAGPREFIX'] = '-'
+ env['DLIBFLAGSUFFIX'] = ''
+
+ # __RPATH is set to $_RPATH in the platform specification if that
+ # platform supports it.
+ env['DRPATHPREFIX'] = '-L-rpath='
+ env['DRPATHSUFFIX'] = ''
+ env['_RPATH'] = '${_concat(DRPATHPREFIX, RPATH, DRPATHSUFFIX, __env__)}'
+
+ SCons.Tool.createStaticLibBuilder(env)
+
+
+def exists(env):
+ return env.Detect('ldc2')
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/src/engine/SCons/Tool/ldc.xml b/src/engine/SCons/Tool/ldc.xml
new file mode 100644
index 0000000..36d61e3
--- /dev/null
+++ b/src/engine/SCons/Tool/ldc.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2001 - 2014 The SCons Foundation
+
+This file is processed by the bin/SConsDoc.py module.
+See its __doc__ string for a discussion of the format.
+-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd">
+
+<tool name="ldc">
+<summary>
+<para>
+Sets construction variables for the D language compiler LDC2.
+</para>
+</summary>
+<sets>
+<item>DC</item>
+<item>DCOM</item>
+<item>_DINCFLAGS</item>
+<item>_DVERFLAGS</item>
+<item>_DDEBUGFLAGS</item>
+<item>_DFLAGS</item>
+<item>SHDC</item>
+<item>SHDCOM</item>
+<item>DPATH</item>
+<item>DFLAGS</item>
+<item>DVERSIONS</item>
+<item>DDEBUG</item>
+<item>STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME</item>
+<item>DINCPREFIX</item>
+<item>DINCSUFFIX</item>
+<item>DVERPREFIX</item>
+<item>DVERSUFFIX</item>
+<item>DDEBUGPREFIX</item>
+<item>DDEBUGSUFFIX</item>
+<item>DFLAGPREFIX</item>
+<item>DFLAGSUFFIX</item>
+<item>DFILESUFFIX</item>
+<item>DLINK</item>
+<item>DLINKFLAGS</item>
+<item>DLINKCOM</item>
+<item>SHDLINK</item>
+<item>SHDLINKFLAGS</item>
+<item>SHDLINKCOM</item>
+<item>DLIBLINKPREFIX</item>
+<item>DLIBLINKSUFFIX</item>
+<item>_DLIBFLAGS</item>
+<item>DLIBDIRPREFIX</item>
+<item>DLIBDIRSUFFIX</item>
+<item>_DLIBDIRFLAGS</item>
+<item>DLIB</item>
+<item>DLIBCOM</item>
+<item>_DLIBFLAGS</item>
+<item>DLIBFLAGPREFIX</item>
+<item>DLIBFLAGSUFFIX</item>
+<item>DLINKFLAGPREFIX</item>
+<item>DLINKFLAGSUFFIX</item>
+<item>RPATHPREFIX</item>
+<item>RPATHSUFFIX</item>
+<item>_RPATH</item>
+</sets>
+<uses>
+</uses>
+</tool>
+
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/lex.py b/src/engine/SCons/Tool/lex.py
index 00e292f..5c076d4 100644
--- a/src/engine/SCons/Tool/lex.py
+++ b/src/engine/SCons/Tool/lex.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/lex.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/lex.py 2014/07/05 09:42:21 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/lex.xml b/src/engine/SCons/Tool/lex.xml
index 82ec18f..3c5d07f 100644
--- a/src/engine/SCons/Tool/lex.xml
+++ b/src/engine/SCons/Tool/lex.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="lex">
<summary>
@@ -78,4 +78,4 @@ General options passed to the lexical analyzer generator.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/link.py b/src/engine/SCons/Tool/link.py
index f6e883f..8e299b9 100644
--- a/src/engine/SCons/Tool/link.py
+++ b/src/engine/SCons/Tool/link.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/link.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/link.py 2014/07/05 09:42:21 garyo"
import re
@@ -42,6 +42,8 @@ import SCons.Warnings
from SCons.Tool.FortranCommon import isfortran
+from SCons.Tool.DCommon import isD
+
cplusplus = __import__('c++', globals(), locals(), [])
issued_mixed_link_warning = False
@@ -49,7 +51,8 @@ issued_mixed_link_warning = False
def smart_link(source, target, env, for_signature):
has_cplusplus = cplusplus.iscplusplus(source)
has_fortran = isfortran(env, source)
- if has_cplusplus and has_fortran:
+ has_d = isD(env, source)
+ if has_cplusplus and has_fortran and not has_d:
global issued_mixed_link_warning
if not issued_mixed_link_warning:
msg = "Using $CXX to link Fortran and C++ code together.\n\t" + \
@@ -59,6 +62,10 @@ def smart_link(source, target, env, for_signature):
msg % env.subst('$CXX'))
issued_mixed_link_warning = True
return '$CXX'
+ elif has_d:
+ env['LINKCOM'] = env['DLINKCOM']
+ env['SHLINKCOM'] = env['SHDLINKCOM']
+ return '$DC'
elif has_fortran:
return '$FORTRAN'
elif has_cplusplus:
@@ -138,7 +145,7 @@ def shlib_emitter_names(target, source, env):
print "shlib_emitter_names: side effect: ", name
# add version_name to list of names to be a Side effect
version_names.append(version_name)
-
+
except KeyError:
version = None
return version_names
@@ -178,8 +185,8 @@ def generate(env):
# don't set up the emitter, cause AppendUnique will generate a list
# starting with None :-(
env.Append(LDMODULEEMITTER='$SHLIBEMITTER')
- env['LDMODULEPREFIX'] = '$SHLIBPREFIX'
- env['LDMODULESUFFIX'] = '$SHLIBSUFFIX'
+ env['LDMODULEPREFIX'] = '$SHLIBPREFIX'
+ env['LDMODULESUFFIX'] = '$SHLIBSUFFIX'
env['LDMODULEFLAGS'] = '$SHLINKFLAGS'
env['LDMODULECOM'] = '$LDMODULE -o $TARGET $LDMODULEFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
diff --git a/src/engine/SCons/Tool/link.xml b/src/engine/SCons/Tool/link.xml
index e639d61..e0360ec 100644
--- a/src/engine/SCons/Tool/link.xml
+++ b/src/engine/SCons/Tool/link.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="link">
<summary>
@@ -223,4 +223,13 @@ for the variable that expands to library search path options.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+<cvar name="STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME">
+ <summary>
+ <para>
+ When this variable is true, static objects and shared objects are assumed to be the same; that is, SCons does not check for linking static objects into a shared library.
+ </para>
+ </summary>
+</cvar>
+
+
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/linkloc.py b/src/engine/SCons/Tool/linkloc.py
index 9f5a6dc..a9b97d3 100644
--- a/src/engine/SCons/Tool/linkloc.py
+++ b/src/engine/SCons/Tool/linkloc.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/linkloc.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/linkloc.py 2014/07/05 09:42:21 garyo"
import os.path
import re
diff --git a/src/engine/SCons/Tool/linkloc.xml b/src/engine/SCons/Tool/linkloc.xml
index a5bb901..4e524ad 100644
--- a/src/engine/SCons/Tool/linkloc.xml
+++ b/src/engine/SCons/Tool/linkloc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="linkloc">
<summary>
@@ -51,4 +51,4 @@ linker for the Phar Lap ETS embedded operating system.
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/m4.py b/src/engine/SCons/Tool/m4.py
index 5088b58..11834d4 100644
--- a/src/engine/SCons/Tool/m4.py
+++ b/src/engine/SCons/Tool/m4.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/m4.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/m4.py 2014/07/05 09:42:21 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/m4.xml b/src/engine/SCons/Tool/m4.xml
index 66a45a6..7fb62fd 100644
--- a/src/engine/SCons/Tool/m4.xml
+++ b/src/engine/SCons/Tool/m4.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="m4">
<summary>
@@ -91,4 +91,4 @@ General options passed to the M4 macro preprocessor.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/masm.py b/src/engine/SCons/Tool/masm.py
index 178584d..13ac842 100644
--- a/src/engine/SCons/Tool/masm.py
+++ b/src/engine/SCons/Tool/masm.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/masm.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/masm.py 2014/07/05 09:42:21 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/masm.xml b/src/engine/SCons/Tool/masm.xml
index f56a134..9d28bcf 100644
--- a/src/engine/SCons/Tool/masm.xml
+++ b/src/engine/SCons/Tool/masm.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="masm">
<summary>
@@ -46,4 +46,4 @@ Sets construction variables for the Microsoft assembler.
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/midl.py b/src/engine/SCons/Tool/midl.py
index e5a871f..a92f282 100644
--- a/src/engine/SCons/Tool/midl.py
+++ b/src/engine/SCons/Tool/midl.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/midl.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/midl.py 2014/07/05 09:42:21 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/midl.xml b/src/engine/SCons/Tool/midl.xml
index 272ebac..1b79cf7 100644
--- a/src/engine/SCons/Tool/midl.xml
+++ b/src/engine/SCons/Tool/midl.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="midl">
<summary>
@@ -100,4 +100,4 @@ General options passed to the Microsoft IDL compiler.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/mingw.py b/src/engine/SCons/Tool/mingw.py
index 46ca9e4..8d248b0 100644
--- a/src/engine/SCons/Tool/mingw.py
+++ b/src/engine/SCons/Tool/mingw.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/mingw.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/mingw.py 2014/07/05 09:42:21 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/mingw.xml b/src/engine/SCons/Tool/mingw.xml
index ca394e2..034b521 100644
--- a/src/engine/SCons/Tool/mingw.xml
+++ b/src/engine/SCons/Tool/mingw.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="mingw">
<summary>
@@ -58,4 +58,4 @@ Sets construction variables for MinGW (Minimal Gnu on Windows).
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/msgfmt.py b/src/engine/SCons/Tool/msgfmt.py
index b831738..63f6385 100644
--- a/src/engine/SCons/Tool/msgfmt.py
+++ b/src/engine/SCons/Tool/msgfmt.py
@@ -1,6 +1,6 @@
""" msgfmt tool """
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/msgfmt.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/msgfmt.py 2014/07/05 09:42:21 garyo"
from SCons.Builder import BuilderBase
#############################################################################
diff --git a/src/engine/SCons/Tool/msgfmt.xml b/src/engine/SCons/Tool/msgfmt.xml
index b45bbae..b543a5c 100644
--- a/src/engine/SCons/Tool/msgfmt.xml
+++ b/src/engine/SCons/Tool/msgfmt.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="msgfmt">
<summary>
@@ -142,4 +142,4 @@ See &t-link-msgfmt; tool and &b-link-MOFiles; builder.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/msginit.py b/src/engine/SCons/Tool/msginit.py
index d745dc5..de7c8e1 100644
--- a/src/engine/SCons/Tool/msginit.py
+++ b/src/engine/SCons/Tool/msginit.py
@@ -3,7 +3,7 @@
Tool specific initialization of msginit tool.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -24,7 +24,7 @@ Tool specific initialization of msginit tool.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/msginit.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/msginit.py 2014/07/05 09:42:21 garyo"
import SCons.Warnings
import SCons.Builder
diff --git a/src/engine/SCons/Tool/msginit.xml b/src/engine/SCons/Tool/msginit.xml
index ca298f6..4f314cc 100644
--- a/src/engine/SCons/Tool/msginit.xml
+++ b/src/engine/SCons/Tool/msginit.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="msginit">
<summary>
@@ -222,4 +222,4 @@ See &t-link-msginit; tool and &b-link-POInit; builder.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/msgmerge.py b/src/engine/SCons/Tool/msgmerge.py
index e50824e..d3b91a7 100644
--- a/src/engine/SCons/Tool/msgmerge.py
+++ b/src/engine/SCons/Tool/msgmerge.py
@@ -3,7 +3,7 @@
Tool specific initialization for `msgmerge` tool.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -24,7 +24,7 @@ Tool specific initialization for `msgmerge` tool.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/msgmerge.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/msgmerge.py 2014/07/05 09:42:21 garyo"
#############################################################################
def _update_or_init_po_files(target, source, env):
diff --git a/src/engine/SCons/Tool/msgmerge.xml b/src/engine/SCons/Tool/msgmerge.xml
index 11f5d00..d34481a 100644
--- a/src/engine/SCons/Tool/msgmerge.xml
+++ b/src/engine/SCons/Tool/msgmerge.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="msgmerge">
<summary>
@@ -208,4 +208,4 @@ See &t-link-msgmerge; tool and &b-link-POUpdate; builder.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/mslib.py b/src/engine/SCons/Tool/mslib.py
index 0f95e41..00cea71 100644
--- a/src/engine/SCons/Tool/mslib.py
+++ b/src/engine/SCons/Tool/mslib.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/mslib.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/mslib.py 2014/07/05 09:42:21 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/mslib.xml b/src/engine/SCons/Tool/mslib.xml
index 145b01b..1bb29bf 100644
--- a/src/engine/SCons/Tool/mslib.xml
+++ b/src/engine/SCons/Tool/mslib.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="mslib">
<summary>
@@ -43,4 +43,4 @@ library archiver.
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/mslink.py b/src/engine/SCons/Tool/mslink.py
index 9374ffe..cc5f601 100644
--- a/src/engine/SCons/Tool/mslink.py
+++ b/src/engine/SCons/Tool/mslink.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/mslink.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/mslink.py 2014/07/05 09:42:21 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/mslink.xml b/src/engine/SCons/Tool/mslink.xml
index 71b557e..55fe338 100644
--- a/src/engine/SCons/Tool/mslink.xml
+++ b/src/engine/SCons/Tool/mslink.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="mslink">
<summary>
@@ -347,4 +347,4 @@ generated by Microsoft Visual C/C++.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/mssdk.py b/src/engine/SCons/Tool/mssdk.py
index 6112bff..323ee1d 100644
--- a/src/engine/SCons/Tool/mssdk.py
+++ b/src/engine/SCons/Tool/mssdk.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/mssdk.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/mssdk.py 2014/07/05 09:42:21 garyo"
"""engine.SCons.Tool.mssdk
diff --git a/src/engine/SCons/Tool/mssdk.xml b/src/engine/SCons/Tool/mssdk.xml
index a73bcd9..68b3895 100644
--- a/src/engine/SCons/Tool/mssdk.xml
+++ b/src/engine/SCons/Tool/mssdk.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="mssdk">
<summary>
@@ -74,4 +74,4 @@ and
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/msvc.py b/src/engine/SCons/Tool/msvc.py
index e09fe9f..b236d89 100644
--- a/src/engine/SCons/Tool/msvc.py
+++ b/src/engine/SCons/Tool/msvc.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/msvc.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/msvc.py 2014/07/05 09:42:21 garyo"
import os.path
import re
diff --git a/src/engine/SCons/Tool/msvc.xml b/src/engine/SCons/Tool/msvc.xml
index d614fd0..34e4c89 100644
--- a/src/engine/SCons/Tool/msvc.xml
+++ b/src/engine/SCons/Tool/msvc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="msvc">
<summary>
@@ -347,9 +347,28 @@ If &cv-MSVC_VERSION; is not set, SCons will (by default) select the
latest version of Visual C/C++ installed on your system. If the
specified version isn't installed, tool initialization will fail.
This variable must be passed as an argument to the Environment()
-constructor; setting it later has no effect. Set it to an unexpected
-value (e.g. "XXX") to see the valid values on your system.
+constructor; setting it later has no effect.
</para>
+
+<para>
+Valid values for Windows are
+<literal>12.0</literal>,
+<literal>12.0Exp</literal>,
+<literal>11.0</literal>,
+<literal>11.0Exp</literal>,
+<literal>10.0</literal>,
+<literal>10.0Exp</literal>,
+<literal>9.0</literal>,
+<literal>9.0Exp</literal>,
+<literal>8.0</literal>,
+<literal>8.0Exp</literal>,
+<literal>7.1</literal>,
+<literal>7.0</literal>,
+and <literal>6.0</literal>.
+Versions ending in <literal>Exp</literal> refer to "Express" or
+"Express for Desktop" editions.
+</para>
+
</summary>
</cvar>
@@ -421,4 +440,4 @@ For example, if you want to compile 64-bit binaries, you would set
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/msvs.py b/src/engine/SCons/Tool/msvs.py
index 6e05b47..ab15373 100644
--- a/src/engine/SCons/Tool/msvs.py
+++ b/src/engine/SCons/Tool/msvs.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/msvs.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/msvs.py 2014/07/05 09:42:21 garyo"
import SCons.compat
diff --git a/src/engine/SCons/Tool/msvs.xml b/src/engine/SCons/Tool/msvs.xml
index d26499a..df2c45a 100644
--- a/src/engine/SCons/Tool/msvs.xml
+++ b/src/engine/SCons/Tool/msvs.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="msvs">
<summary>
@@ -654,4 +654,4 @@ from Microsoft Visual Studio project files.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/msvsTests.py b/src/engine/SCons/Tool/msvsTests.py
index b5068fc..04ecf0f 100644
--- a/src/engine/SCons/Tool/msvsTests.py
+++ b/src/engine/SCons/Tool/msvsTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,15 +21,18 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/msvsTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/msvsTests.py 2014/07/05 09:42:21 garyo"
import os
import sys
-import TestCmd
import unittest
import copy
+import TestCmd
+import TestUnit
+
from SCons.Tool.msvs import *
+from SCons.Tool.MSCommon.vs import SupportedVSList
import SCons.Util
import SCons.Warnings
@@ -547,15 +550,17 @@ class msvsTestCase(unittest.TestCase):
def test_get_default_version(self):
"""Test retrieval of the default visual studio version"""
-
+
debug("Testing for default version %s"%self.default_version)
env = DummyEnv()
v1 = get_default_version(env)
if v1:
assert env['MSVS_VERSION'] == self.default_version, \
- ("env['MSVS_VERSION'] != self.default_version",self.default_version, env['MSVS_VERSION'])
+ ("env['MSVS_VERSION'] != self.default_version",
+ env['MSVS_VERSION'],self.default_version)
assert env['MSVS']['VERSION'] == self.default_version, \
- ("env['MSVS']['VERSION'] != self.default_version",self.default_version, env['MSVS']['VERSION'])
+ ("env['MSVS']['VERSION'] != self.default_version",
+ env['MSVS']['VERSION'], self.default_version)
assert v1 == self.default_version, (self.default_version, v1)
env = DummyEnv({'MSVS_VERSION':'7.0'})
@@ -701,7 +706,7 @@ class msvs80TestCase(msvsTestCase):
class msvsEmptyTestCase(msvsTestCase):
"""Test Empty Registry"""
registry = DummyRegistry(regdata_none)
- default_version = '11.0'
+ default_version = SupportedVSList[0].version
highest_version = None
number_of_versions = 0
install_locs = {
@@ -724,7 +729,7 @@ if __name__ == "__main__":
SCons.Util.RegEnumKey = DummyEnumKey
SCons.Util.RegEnumValue = DummyEnumValue
SCons.Util.RegQueryValueEx = DummyQueryValue
-
+
os.path.exists = DummyExists # make sure all files exist :-)
os.path.isfile = DummyExists # make sure all files are files :-)
os.path.isdir = DummyExists # make sure all dirs are dirs :-)
@@ -756,7 +761,7 @@ if __name__ == "__main__":
del os.environ[k]
suite = unittest.makeSuite(test_class, 'test_')
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
+ if not TestUnit.cli.get_runner()().run(suite).wasSuccessful():
exit_val = 1
finally:
os.env = back_osenv
diff --git a/src/engine/SCons/Tool/mwcc.py b/src/engine/SCons/Tool/mwcc.py
index 1f12b48..744eaf7 100644
--- a/src/engine/SCons/Tool/mwcc.py
+++ b/src/engine/SCons/Tool/mwcc.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/mwcc.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/mwcc.py 2014/07/05 09:42:21 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/mwcc.xml b/src/engine/SCons/Tool/mwcc.xml
index 88f68bc..8f90ec3 100644
--- a/src/engine/SCons/Tool/mwcc.xml
+++ b/src/engine/SCons/Tool/mwcc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="mwcc">
<summary>
@@ -77,4 +77,4 @@ on this system.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/mwld.py b/src/engine/SCons/Tool/mwld.py
index 649e220..d16a247 100644
--- a/src/engine/SCons/Tool/mwld.py
+++ b/src/engine/SCons/Tool/mwld.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/mwld.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/mwld.py 2014/07/05 09:42:21 garyo"
import SCons.Tool
diff --git a/src/engine/SCons/Tool/mwld.xml b/src/engine/SCons/Tool/mwld.xml
index 8c32335..273063c 100644
--- a/src/engine/SCons/Tool/mwld.xml
+++ b/src/engine/SCons/Tool/mwld.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="mwld">
<summary>
@@ -47,4 +47,4 @@ Sets construction variables for the Metrowerks CodeWarrior linker.
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/nasm.py b/src/engine/SCons/Tool/nasm.py
index 805eeb0..d8d41c5 100644
--- a/src/engine/SCons/Tool/nasm.py
+++ b/src/engine/SCons/Tool/nasm.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/nasm.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/nasm.py 2014/07/05 09:42:21 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/nasm.xml b/src/engine/SCons/Tool/nasm.xml
index c02ebd3..09872ba 100644
--- a/src/engine/SCons/Tool/nasm.xml
+++ b/src/engine/SCons/Tool/nasm.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="nasm">
<summary>
@@ -43,4 +43,4 @@ Sets construction variables for the
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/packaging.xml b/src/engine/SCons/Tool/packaging.xml
index 2733281..f70d82c 100644
--- a/src/engine/SCons/Tool/packaging.xml
+++ b/src/engine/SCons/Tool/packaging.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="packaging">
<summary>
@@ -107,4 +107,4 @@ by default.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/packaging/__init__.py b/src/engine/SCons/Tool/packaging/__init__.py
index a356f46..065f06b 100644
--- a/src/engine/SCons/Tool/packaging/__init__.py
+++ b/src/engine/SCons/Tool/packaging/__init__.py
@@ -4,7 +4,7 @@ SCons Packaging Tool.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -25,7 +25,7 @@ SCons Packaging Tool.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/packaging/__init__.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/__init__.py 2014/07/05 09:42:21 garyo"
import SCons.Environment
from SCons.Variables import *
diff --git a/src/engine/SCons/Tool/packaging/__init__.xml b/src/engine/SCons/Tool/packaging/__init__.xml
index 741d296..c098786 100644
--- a/src/engine/SCons/Tool/packaging/__init__.xml
+++ b/src/engine/SCons/Tool/packaging/__init__.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="Packaging">
<summary>
@@ -842,4 +842,4 @@ Returns all files "built" by the &b-Install; or &b-InstallAs; builders.
</function>
-->
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/packaging/ipk.py b/src/engine/SCons/Tool/packaging/ipk.py
index c7c2ecb..88d3a4b 100644
--- a/src/engine/SCons/Tool/packaging/ipk.py
+++ b/src/engine/SCons/Tool/packaging/ipk.py
@@ -2,7 +2,7 @@
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -24,7 +24,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/packaging/ipk.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/ipk.py 2014/07/05 09:42:21 garyo"
import SCons.Builder
import SCons.Node.FS
diff --git a/src/engine/SCons/Tool/packaging/msi.py b/src/engine/SCons/Tool/packaging/msi.py
index 5c81c2f..e91be28 100644
--- a/src/engine/SCons/Tool/packaging/msi.py
+++ b/src/engine/SCons/Tool/packaging/msi.py
@@ -4,7 +4,7 @@ The msi packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -25,7 +25,7 @@ The msi packager.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/packaging/msi.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/msi.py 2014/07/05 09:42:21 garyo"
import os
import SCons
diff --git a/src/engine/SCons/Tool/packaging/rpm.py b/src/engine/SCons/Tool/packaging/rpm.py
index 049bf45..eea0dce 100644
--- a/src/engine/SCons/Tool/packaging/rpm.py
+++ b/src/engine/SCons/Tool/packaging/rpm.py
@@ -4,7 +4,7 @@ The rpm packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -25,7 +25,7 @@ The rpm packager.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/packaging/rpm.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/rpm.py 2014/07/05 09:42:21 garyo"
import os
diff --git a/src/engine/SCons/Tool/packaging/src_tarbz2.py b/src/engine/SCons/Tool/packaging/src_tarbz2.py
index 6a98b38..f21a22e 100644
--- a/src/engine/SCons/Tool/packaging/src_tarbz2.py
+++ b/src/engine/SCons/Tool/packaging/src_tarbz2.py
@@ -4,7 +4,7 @@ The tarbz2 SRC packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The tarbz2 SRC packager.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/packaging/src_tarbz2.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/src_tarbz2.py 2014/07/05 09:42:21 garyo"
from SCons.Tool.packaging import putintopackageroot
diff --git a/src/engine/SCons/Tool/packaging/src_targz.py b/src/engine/SCons/Tool/packaging/src_targz.py
index de7d17b..f19a2e5 100644
--- a/src/engine/SCons/Tool/packaging/src_targz.py
+++ b/src/engine/SCons/Tool/packaging/src_targz.py
@@ -4,7 +4,7 @@ The targz SRC packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The targz SRC packager.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/packaging/src_targz.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/src_targz.py 2014/07/05 09:42:21 garyo"
from SCons.Tool.packaging import putintopackageroot
diff --git a/src/engine/SCons/Tool/packaging/src_zip.py b/src/engine/SCons/Tool/packaging/src_zip.py
index 86160de..a500970 100644
--- a/src/engine/SCons/Tool/packaging/src_zip.py
+++ b/src/engine/SCons/Tool/packaging/src_zip.py
@@ -4,7 +4,7 @@ The zip SRC packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The zip SRC packager.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/packaging/src_zip.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/src_zip.py 2014/07/05 09:42:21 garyo"
from SCons.Tool.packaging import putintopackageroot
diff --git a/src/engine/SCons/Tool/packaging/tarbz2.py b/src/engine/SCons/Tool/packaging/tarbz2.py
index 7df6932..288698c 100644
--- a/src/engine/SCons/Tool/packaging/tarbz2.py
+++ b/src/engine/SCons/Tool/packaging/tarbz2.py
@@ -4,7 +4,7 @@ The tarbz2 SRC packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The tarbz2 SRC packager.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/packaging/tarbz2.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/tarbz2.py 2014/07/05 09:42:21 garyo"
from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot
diff --git a/src/engine/SCons/Tool/packaging/targz.py b/src/engine/SCons/Tool/packaging/targz.py
index 6a9024c..75fed12 100644
--- a/src/engine/SCons/Tool/packaging/targz.py
+++ b/src/engine/SCons/Tool/packaging/targz.py
@@ -4,7 +4,7 @@ The targz SRC packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The targz SRC packager.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/packaging/targz.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/targz.py 2014/07/05 09:42:21 garyo"
from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot
diff --git a/src/engine/SCons/Tool/packaging/zip.py b/src/engine/SCons/Tool/packaging/zip.py
index 862589c..b57b655 100644
--- a/src/engine/SCons/Tool/packaging/zip.py
+++ b/src/engine/SCons/Tool/packaging/zip.py
@@ -4,7 +4,7 @@ The zip SRC packager.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ The zip SRC packager.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/packaging/zip.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/packaging/zip.py 2014/07/05 09:42:21 garyo"
from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot
diff --git a/src/engine/SCons/Tool/pdf.py b/src/engine/SCons/Tool/pdf.py
index b93891d..0bd1c08 100644
--- a/src/engine/SCons/Tool/pdf.py
+++ b/src/engine/SCons/Tool/pdf.py
@@ -6,7 +6,7 @@ Add an explicit action to run epstopdf to convert .eps files to .pdf
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@ Add an explicit action to run epstopdf to convert .eps files to .pdf
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/pdf.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/pdf.py 2014/07/05 09:42:21 garyo"
import SCons.Builder
import SCons.Tool
diff --git a/src/engine/SCons/Tool/pdf.xml b/src/engine/SCons/Tool/pdf.xml
index 9e849af..9f5c7a5 100644
--- a/src/engine/SCons/Tool/pdf.xml
+++ b/src/engine/SCons/Tool/pdf.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="pdf">
<summary>
@@ -75,4 +75,4 @@ The suffix used for PDF file names.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/pdflatex.py b/src/engine/SCons/Tool/pdflatex.py
index a5ec458..9c119b0 100644
--- a/src/engine/SCons/Tool/pdflatex.py
+++ b/src/engine/SCons/Tool/pdflatex.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/pdflatex.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/pdflatex.py 2014/07/05 09:42:21 garyo"
import SCons.Action
import SCons.Util
diff --git a/src/engine/SCons/Tool/pdflatex.xml b/src/engine/SCons/Tool/pdflatex.xml
index a4b7825..6177975 100644
--- a/src/engine/SCons/Tool/pdflatex.xml
+++ b/src/engine/SCons/Tool/pdflatex.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="pdflatex">
<summary>
@@ -77,4 +77,4 @@ General options passed to the &pdflatex; utility.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/pdftex.py b/src/engine/SCons/Tool/pdftex.py
index aa002ad..7f21bf6 100644
--- a/src/engine/SCons/Tool/pdftex.py
+++ b/src/engine/SCons/Tool/pdftex.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/pdftex.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/pdftex.py 2014/07/05 09:42:21 garyo"
import os
import SCons.Action
diff --git a/src/engine/SCons/Tool/pdftex.xml b/src/engine/SCons/Tool/pdftex.xml
index b6443d6..9da3d65 100644
--- a/src/engine/SCons/Tool/pdftex.xml
+++ b/src/engine/SCons/Tool/pdftex.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="pdftex">
<summary>
@@ -81,4 +81,4 @@ General options passed to the &pdftex; utility.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/qt.py b/src/engine/SCons/Tool/qt.py
index 22c7770..b633575 100644
--- a/src/engine/SCons/Tool/qt.py
+++ b/src/engine/SCons/Tool/qt.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/qt.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/qt.py 2014/07/05 09:42:21 garyo"
import os.path
import re
diff --git a/src/engine/SCons/Tool/qt.xml b/src/engine/SCons/Tool/qt.xml
index 4c516da..93e3f64 100644
--- a/src/engine/SCons/Tool/qt.xml
+++ b/src/engine/SCons/Tool/qt.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="qt">
<summary>
@@ -403,4 +403,4 @@ Default value is '.ui'. Suffix of designer input files.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/rmic.py b/src/engine/SCons/Tool/rmic.py
index 689d823..0539a50 100644
--- a/src/engine/SCons/Tool/rmic.py
+++ b/src/engine/SCons/Tool/rmic.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/rmic.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/rmic.py 2014/07/05 09:42:21 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/rmic.xml b/src/engine/SCons/Tool/rmic.xml
index 1c0d10b..0c67e61 100644
--- a/src/engine/SCons/Tool/rmic.xml
+++ b/src/engine/SCons/Tool/rmic.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="rmic">
<summary>
@@ -125,4 +125,4 @@ General options passed to the Java RMI stub compiler.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/rpcgen.py b/src/engine/SCons/Tool/rpcgen.py
index 2caf244..6c845af 100644
--- a/src/engine/SCons/Tool/rpcgen.py
+++ b/src/engine/SCons/Tool/rpcgen.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/rpcgen.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/rpcgen.py 2014/07/05 09:42:21 garyo"
from SCons.Builder import Builder
import SCons.Util
diff --git a/src/engine/SCons/Tool/rpcgen.xml b/src/engine/SCons/Tool/rpcgen.xml
index 33b66be..43b8511 100644
--- a/src/engine/SCons/Tool/rpcgen.xml
+++ b/src/engine/SCons/Tool/rpcgen.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="rpcgen">
<summary>
@@ -177,4 +177,4 @@ construction variable.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/rpm.py b/src/engine/SCons/Tool/rpm.py
index 9be0d79..5db0036 100644
--- a/src/engine/SCons/Tool/rpm.py
+++ b/src/engine/SCons/Tool/rpm.py
@@ -11,7 +11,7 @@ tar.gz consisting of the source file and a specfile.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -33,7 +33,7 @@ tar.gz consisting of the source file and a specfile.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/rpm.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/rpm.py 2014/07/05 09:42:21 garyo"
import os
import re
diff --git a/src/engine/SCons/Tool/rpmutils.py b/src/engine/SCons/Tool/rpmutils.py
index f482fbb..5599a8e 100644
--- a/src/engine/SCons/Tool/rpmutils.py
+++ b/src/engine/SCons/Tool/rpmutils.py
@@ -10,11 +10,11 @@ mimic the exact naming rules of the RPM source code.
They were directly derived from the file "rpmrc.in" of the version
rpm-4.9.1.3. For updating to a more recent version of RPM, this Python
script can be used standalone. The usage() function below shows the
-exact syntax.
+exact syntax.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -35,10 +35,11 @@ exact syntax.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/rpmutils.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/rpmutils.py 2014/07/05 09:42:21 garyo"
import platform
+import subprocess
# Start of rpmrc dictionaries (Marker, don't change or remove!)
os_canon = {
@@ -435,20 +436,29 @@ arch_canon = {
# End of rpmrc dictionaries (Marker, don't change or remove!)
-def defaultMachine():
+def defaultMachine(use_rpm_default=True):
""" Return the canonicalized machine name. """
- rmachine = platform.machine()
-
- # Try to lookup the string in the canon table
- if rmachine in arch_canon:
- rmachine = arch_canon[rmachine][0]
-
+
+ if use_rpm_default:
+ try:
+ # This should be the most reliable way to get the default arch
+ rmachine = subprocess.check_output(['rpm', '--eval=%_target_cpu'], shell=False).rstrip()
+ except Exception as e:
+ # Something went wrong, try again by looking up platform.machine()
+ return defaultMachine(False)
+ else:
+ rmachine = platform.machine()
+
+ # Try to lookup the string in the canon table
+ if rmachine in arch_canon:
+ rmachine = arch_canon[rmachine][0]
+
return rmachine
def defaultSystem():
""" Return the canonicalized system name. """
rsystem = platform.system()
-
+
# Try to lookup the string in the canon tables
if rsystem in os_canon:
rsystem = os_canon[rsystem][0]
@@ -523,7 +533,7 @@ def usage():
def main():
import sys
-
+
if len(sys.argv) < 3:
usage()
sys.exit(0)
diff --git a/src/engine/SCons/Tool/sgiar.py b/src/engine/SCons/Tool/sgiar.py
index a1a94a5..a7d662b 100644
--- a/src/engine/SCons/Tool/sgiar.py
+++ b/src/engine/SCons/Tool/sgiar.py
@@ -11,7 +11,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -33,7 +33,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sgiar.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/sgiar.py 2014/07/05 09:42:21 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/sgiar.xml b/src/engine/SCons/Tool/sgiar.xml
index 3f216c4..b392ae3 100644
--- a/src/engine/SCons/Tool/sgiar.xml
+++ b/src/engine/SCons/Tool/sgiar.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="sgiar">
<summary>
@@ -44,4 +44,4 @@ Sets construction variables for the SGI library archiver.
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/sgic++.py b/src/engine/SCons/Tool/sgic++.py
index 4dcdc1d..ba14566 100644
--- a/src/engine/SCons/Tool/sgic++.py
+++ b/src/engine/SCons/Tool/sgic++.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sgic++.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/sgic++.py 2014/07/05 09:42:21 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/sgic++.xml b/src/engine/SCons/Tool/sgic++.xml
index c6f450a..158cfeb 100644
--- a/src/engine/SCons/Tool/sgic++.xml
+++ b/src/engine/SCons/Tool/sgic++.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="sgic++">
<summary>
@@ -38,4 +38,4 @@ Sets construction variables for the SGI C++ compiler.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/sgicc.py b/src/engine/SCons/Tool/sgicc.py
index 15c34c1..0bf5a21 100644
--- a/src/engine/SCons/Tool/sgicc.py
+++ b/src/engine/SCons/Tool/sgicc.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sgicc.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/sgicc.py 2014/07/05 09:42:21 garyo"
import cc
diff --git a/src/engine/SCons/Tool/sgicc.xml b/src/engine/SCons/Tool/sgicc.xml
index 1ba6805..51f0870 100644
--- a/src/engine/SCons/Tool/sgicc.xml
+++ b/src/engine/SCons/Tool/sgicc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="sgicc">
<summary>
@@ -38,4 +38,4 @@ Sets construction variables for the SGI C compiler.
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/sgilink.py b/src/engine/SCons/Tool/sgilink.py
index 10069c6..1c31171 100644
--- a/src/engine/SCons/Tool/sgilink.py
+++ b/src/engine/SCons/Tool/sgilink.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sgilink.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/sgilink.py 2014/07/05 09:42:21 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/sgilink.xml b/src/engine/SCons/Tool/sgilink.xml
index fad921f..e765a7d 100644
--- a/src/engine/SCons/Tool/sgilink.xml
+++ b/src/engine/SCons/Tool/sgilink.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="sgilink">
<summary>
@@ -37,4 +37,4 @@ Sets construction variables for the SGI linker.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/sunar.py b/src/engine/SCons/Tool/sunar.py
index 154e44f..e8a24e0 100644
--- a/src/engine/SCons/Tool/sunar.py
+++ b/src/engine/SCons/Tool/sunar.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sunar.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/sunar.py 2014/07/05 09:42:21 garyo"
import SCons.Defaults
import SCons.Tool
diff --git a/src/engine/SCons/Tool/sunar.xml b/src/engine/SCons/Tool/sunar.xml
index 425527c..289245d 100644
--- a/src/engine/SCons/Tool/sunar.xml
+++ b/src/engine/SCons/Tool/sunar.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="sunar">
<summary>
@@ -45,4 +45,4 @@ Sets construction variables for the Sun library archiver.
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/sunc++.py b/src/engine/SCons/Tool/sunc++.py
index 2f1ceaf..af6c15b 100644
--- a/src/engine/SCons/Tool/sunc++.py
+++ b/src/engine/SCons/Tool/sunc++.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sunc++.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/sunc++.py 2014/07/05 09:42:21 garyo"
import SCons
diff --git a/src/engine/SCons/Tool/sunc++.xml b/src/engine/SCons/Tool/sunc++.xml
index c95d68c..5e35944 100644
--- a/src/engine/SCons/Tool/sunc++.xml
+++ b/src/engine/SCons/Tool/sunc++.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="sunc++">
<summary>
@@ -39,4 +39,4 @@ Sets construction variables for the Sun C++ compiler.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/suncc.py b/src/engine/SCons/Tool/suncc.py
index 67edb8a..e5e70e9 100644
--- a/src/engine/SCons/Tool/suncc.py
+++ b/src/engine/SCons/Tool/suncc.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/suncc.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/suncc.py 2014/07/05 09:42:21 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/suncc.xml b/src/engine/SCons/Tool/suncc.xml
index 8be0d6e..7e1e65b 100644
--- a/src/engine/SCons/Tool/suncc.xml
+++ b/src/engine/SCons/Tool/suncc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="suncc">
<summary>
@@ -37,4 +37,4 @@ Sets construction variables for the Sun C compiler.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/sunf77.py b/src/engine/SCons/Tool/sunf77.py
index 5eb664d..4acb313 100644
--- a/src/engine/SCons/Tool/sunf77.py
+++ b/src/engine/SCons/Tool/sunf77.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sunf77.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/sunf77.py 2014/07/05 09:42:21 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/sunf77.xml b/src/engine/SCons/Tool/sunf77.xml
index f31ed3a..56e6108 100644
--- a/src/engine/SCons/Tool/sunf77.xml
+++ b/src/engine/SCons/Tool/sunf77.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="sunf77">
<summary>
@@ -39,4 +39,4 @@ Set construction variables for the Sun &f77; Fortran compiler.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/sunf90.py b/src/engine/SCons/Tool/sunf90.py
index 0a08c70..6163a89 100644
--- a/src/engine/SCons/Tool/sunf90.py
+++ b/src/engine/SCons/Tool/sunf90.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sunf90.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/sunf90.py 2014/07/05 09:42:21 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/sunf90.xml b/src/engine/SCons/Tool/sunf90.xml
index b68e074..490b6a8 100644
--- a/src/engine/SCons/Tool/sunf90.xml
+++ b/src/engine/SCons/Tool/sunf90.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="sunf90">
<summary>
@@ -39,4 +39,4 @@ Set construction variables for the Sun &f90; Fortran compiler.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/sunf95.py b/src/engine/SCons/Tool/sunf95.py
index fd0be66..a078fd8 100644
--- a/src/engine/SCons/Tool/sunf95.py
+++ b/src/engine/SCons/Tool/sunf95.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sunf95.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/sunf95.py 2014/07/05 09:42:21 garyo"
import SCons.Util
diff --git a/src/engine/SCons/Tool/sunf95.xml b/src/engine/SCons/Tool/sunf95.xml
index cebbe00..ba57486 100644
--- a/src/engine/SCons/Tool/sunf95.xml
+++ b/src/engine/SCons/Tool/sunf95.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="sunf95">
<summary>
@@ -39,4 +39,4 @@ Set construction variables for the Sun &f95; Fortran compiler.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/sunlink.py b/src/engine/SCons/Tool/sunlink.py
index 5cc6024..1746170 100644
--- a/src/engine/SCons/Tool/sunlink.py
+++ b/src/engine/SCons/Tool/sunlink.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/sunlink.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/sunlink.py 2014/07/05 09:42:21 garyo"
import os
import os.path
diff --git a/src/engine/SCons/Tool/sunlink.xml b/src/engine/SCons/Tool/sunlink.xml
index 639f526..7b83354 100644
--- a/src/engine/SCons/Tool/sunlink.xml
+++ b/src/engine/SCons/Tool/sunlink.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="sunlink">
<summary>
@@ -36,4 +36,4 @@ Sets construction variables for the Sun linker.
</sets>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/swig.py b/src/engine/SCons/Tool/swig.py
index 188d229..2413eb0 100644
--- a/src/engine/SCons/Tool/swig.py
+++ b/src/engine/SCons/Tool/swig.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/swig.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/swig.py 2014/07/05 09:42:21 garyo"
import os.path
import re
diff --git a/src/engine/SCons/Tool/swig.xml b/src/engine/SCons/Tool/swig.xml
index d94d67f..4c01050 100644
--- a/src/engine/SCons/Tool/swig.xml
+++ b/src/engine/SCons/Tool/swig.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="swig">
<summary>
@@ -264,4 +264,4 @@ The version number of the SWIG tool.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/tar.py b/src/engine/SCons/Tool/tar.py
index 9c09f0e..6539937 100644
--- a/src/engine/SCons/Tool/tar.py
+++ b/src/engine/SCons/Tool/tar.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/tar.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/tar.py 2014/07/05 09:42:21 garyo"
import SCons.Action
import SCons.Builder
diff --git a/src/engine/SCons/Tool/tar.xml b/src/engine/SCons/Tool/tar.xml
index 28ed5d8..976e457 100644
--- a/src/engine/SCons/Tool/tar.xml
+++ b/src/engine/SCons/Tool/tar.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="tar">
<summary>
@@ -127,4 +127,4 @@ The suffix used for tar file names.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/tex.py b/src/engine/SCons/Tool/tex.py
index 515002c..167059e 100644
--- a/src/engine/SCons/Tool/tex.py
+++ b/src/engine/SCons/Tool/tex.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/tex.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/tex.py 2014/07/05 09:42:21 garyo"
import os.path
import re
@@ -102,6 +102,7 @@ makeacronyms_re = re.compile(r"^[^%\n]*\\makeglossaries", re.MULTILINE)
beamer_re = re.compile(r"^[^%\n]*\\documentclass\{beamer\}", re.MULTILINE)
regex = r'^[^%\n]*\\newglossary\s*\[([^\]]+)\]?\s*\{([^}]*)\}\s*\{([^}]*)\}\s*\{([^}]*)\}\s*\{([^}]*)\}'
newglossary_re = re.compile(regex, re.MULTILINE)
+biblatex_re = re.compile(r"^[^%\n]*\\usepackage.*\{biblatex\}", re.MULTILINE)
newglossary_suffix = []
@@ -684,15 +685,18 @@ def tex_emitter_core(target, source, env, graphics_extensions):
auxfilename = targetbase + '.aux'
logfilename = targetbase + '.log'
flsfilename = targetbase + '.fls'
+ syncfilename = targetbase + '.synctex.gz'
env.SideEffect(auxfilename,target[0])
env.SideEffect(logfilename,target[0])
env.SideEffect(flsfilename,target[0])
+ env.SideEffect(syncfilename,target[0])
if Verbose:
- print "side effect :",auxfilename,logfilename,flsfilename
+ print "side effect :",auxfilename,logfilename,flsfilename,syncfilename
env.Clean(target[0],auxfilename)
env.Clean(target[0],logfilename)
env.Clean(target[0],flsfilename)
+ env.Clean(target[0],syncfilename)
content = source[0].get_text_contents()
@@ -719,7 +723,8 @@ def tex_emitter_core(target, source, env, graphics_extensions):
makeglossaries_re,
makeacronyms_re,
beamer_re,
- newglossary_re ]
+ newglossary_re,
+ biblatex_re ]
# set up list with the file suffixes that need emitting
# when a feature is found
file_tests_suff = [['.aux','aux_file'],
@@ -737,7 +742,8 @@ def tex_emitter_core(target, source, env, graphics_extensions):
['.glo', '.gls', '.glg','glossaries'],
['.acn', '.acr', '.alg','acronyms'],
['.nav', '.snm', '.out', '.toc','beamer'],
- ['newglossary',] ]
+ ['newglossary',],
+ ['.bcf', '.blg','biblatex'] ]
# for newglossary the suffixes are added as we find the command
# build the list of lists
file_tests = []
diff --git a/src/engine/SCons/Tool/tex.xml b/src/engine/SCons/Tool/tex.xml
index c9d5107..31d0717 100644
--- a/src/engine/SCons/Tool/tex.xml
+++ b/src/engine/SCons/Tool/tex.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="tex">
<summary>
@@ -170,4 +170,4 @@ General options passed to the TeX formatter and typesetter.
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/textfile.py b/src/engine/SCons/Tool/textfile.py
index 048b0f0..43a6b60 100644
--- a/src/engine/SCons/Tool/textfile.py
+++ b/src/engine/SCons/Tool/textfile.py
@@ -1,6 +1,6 @@
# -*- python -*-
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -44,7 +44,7 @@ Textfile/Substfile builder for SCons.
is unpredictible whether the expansion will occur.
"""
-__revision__ = "src/engine/SCons/Tool/textfile.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/textfile.py 2014/07/05 09:42:21 garyo"
import SCons
diff --git a/src/engine/SCons/Tool/textfile.xml b/src/engine/SCons/Tool/textfile.xml
index a15525c..c9a79e2 100644
--- a/src/engine/SCons/Tool/textfile.xml
+++ b/src/engine/SCons/Tool/textfile.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="textfile">
<summary>
diff --git a/src/engine/SCons/Tool/tlib.py b/src/engine/SCons/Tool/tlib.py
index 834d5d5..596b12e 100644
--- a/src/engine/SCons/Tool/tlib.py
+++ b/src/engine/SCons/Tool/tlib.py
@@ -5,7 +5,7 @@ XXX
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ XXX
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/tlib.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/tlib.py 2014/07/05 09:42:21 garyo"
import SCons.Tool
import SCons.Tool.bcc32
diff --git a/src/engine/SCons/Tool/tlib.xml b/src/engine/SCons/Tool/tlib.xml
index bc8ced6..a62186a 100644
--- a/src/engine/SCons/Tool/tlib.xml
+++ b/src/engine/SCons/Tool/tlib.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="tlib">
<summary>
@@ -42,4 +42,4 @@ Sets construction variables for the Borlan
</uses>
</tool>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/wix.py b/src/engine/SCons/Tool/wix.py
index 1cc2ef2..da51e97 100644
--- a/src/engine/SCons/Tool/wix.py
+++ b/src/engine/SCons/Tool/wix.py
@@ -8,7 +8,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/wix.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/wix.py 2014/07/05 09:42:21 garyo"
import SCons.Builder
import SCons.Action
diff --git a/src/engine/SCons/Tool/wixTests.py b/src/engine/SCons/Tool/wixTests.py
index db25faa..d871f81 100644
--- a/src/engine/SCons/Tool/wixTests.py
+++ b/src/engine/SCons/Tool/wixTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/wixTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/wixTests.py 2014/07/05 09:42:21 garyo"
import unittest
import os.path
@@ -33,6 +33,8 @@ from SCons.Tool.wix import *
from SCons.Environment import Environment
import TestCmd
+import TestUnit
+
# create fake candle and light, so the tool's exists() method will succeed
test = TestCmd.TestCmd(workdir = '')
@@ -52,8 +54,7 @@ class WixTestCase(unittest.TestCase):
if __name__ == "__main__":
suite = unittest.makeSuite(WixTestCase, 'test_')
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Tool/xgettext.py b/src/engine/SCons/Tool/xgettext.py
index 3224ec9..cd94fae 100644
--- a/src/engine/SCons/Tool/xgettext.py
+++ b/src/engine/SCons/Tool/xgettext.py
@@ -3,7 +3,7 @@
Tool specific initialization of `xgettext` tool.
"""
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -24,7 +24,7 @@ Tool specific initialization of `xgettext` tool.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Tool/xgettext.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/xgettext.py 2014/07/05 09:42:21 garyo"
#############################################################################
class _CmdRunner(object):
diff --git a/src/engine/SCons/Tool/xgettext.xml b/src/engine/SCons/Tool/xgettext.xml
index 8f64a7c..4cbe6fc 100644
--- a/src/engine/SCons/Tool/xgettext.xml
+++ b/src/engine/SCons/Tool/xgettext.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="xgettext">
<summary>
@@ -370,4 +370,4 @@ from &cv-link-XGETTEXTFROM;.
-->
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/yacc.py b/src/engine/SCons/Tool/yacc.py
index 15aca39..a1a490d 100644
--- a/src/engine/SCons/Tool/yacc.py
+++ b/src/engine/SCons/Tool/yacc.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/yacc.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/yacc.py 2014/07/05 09:42:21 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/yacc.xml b/src/engine/SCons/Tool/yacc.xml
index 2b4e964..891ad06 100644
--- a/src/engine/SCons/Tool/yacc.xml
+++ b/src/engine/SCons/Tool/yacc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="yacc">
<summary>
@@ -149,4 +149,4 @@ The default value is
</summary>
</cvar>
-</sconsdoc> \ No newline at end of file
+</sconsdoc>
diff --git a/src/engine/SCons/Tool/zip.py b/src/engine/SCons/Tool/zip.py
index 8a914cf..83cc9c3 100644
--- a/src/engine/SCons/Tool/zip.py
+++ b/src/engine/SCons/Tool/zip.py
@@ -9,7 +9,7 @@ selection method.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/zip.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Tool/zip.py 2014/07/05 09:42:21 garyo"
import os.path
diff --git a/src/engine/SCons/Tool/zip.xml b/src/engine/SCons/Tool/zip.xml
index 644282e..05c29df 100644
--- a/src/engine/SCons/Tool/zip.xml
+++ b/src/engine/SCons/Tool/zip.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+Copyright (c) 2001 - 2014 The SCons Foundation
This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
@@ -21,7 +21,7 @@ See its __doc__ string for a discussion of the format.
<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0/scons.xsd scons.xsd">
+ xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
<tool name="zip">
<summary>
diff --git a/src/engine/SCons/Util.py b/src/engine/SCons/Util.py
index 9fc649b..141fddf 100644
--- a/src/engine/SCons/Util.py
+++ b/src/engine/SCons/Util.py
@@ -3,7 +3,7 @@
Various utility functions go here.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -24,7 +24,7 @@ Various utility functions go here.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Util.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Util.py 2014/07/05 09:42:21 garyo"
import os
import sys
diff --git a/src/engine/SCons/UtilTests.py b/src/engine/SCons/UtilTests.py
index 7b9b9dd..7e5b6b3 100644
--- a/src/engine/SCons/UtilTests.py
+++ b/src/engine/SCons/UtilTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/UtilTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/UtilTests.py 2014/07/05 09:42:21 garyo"
import SCons.compat
@@ -32,6 +32,7 @@ import unittest
from collections import UserDict, UserList, UserString
import TestCmd
+import TestUnit
import SCons.Errors
@@ -789,8 +790,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Variables/BoolVariable.py b/src/engine/SCons/Variables/BoolVariable.py
index e7814bb..974c645 100644
--- a/src/engine/SCons/Variables/BoolVariable.py
+++ b/src/engine/SCons/Variables/BoolVariable.py
@@ -12,7 +12,7 @@ Usage example:
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -34,7 +34,7 @@ Usage example:
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/BoolVariable.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Variables/BoolVariable.py 2014/07/05 09:42:21 garyo"
__all__ = ['BoolVariable',]
diff --git a/src/engine/SCons/Variables/BoolVariableTests.py b/src/engine/SCons/Variables/BoolVariableTests.py
index 7c16460..ce67f51 100644
--- a/src/engine/SCons/Variables/BoolVariableTests.py
+++ b/src/engine/SCons/Variables/BoolVariableTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,11 +21,13 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/BoolVariableTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Variables/BoolVariableTests.py 2014/07/05 09:42:21 garyo"
import sys
import unittest
+import TestUnit
+
import SCons.Errors
import SCons.Variables
@@ -117,8 +119,7 @@ class BoolVariableTestCase(unittest.TestCase):
if __name__ == "__main__":
suite = unittest.makeSuite(BoolVariableTestCase, 'test_')
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Variables/EnumVariable.py b/src/engine/SCons/Variables/EnumVariable.py
index 33fa45b..1402077 100644
--- a/src/engine/SCons/Variables/EnumVariable.py
+++ b/src/engine/SCons/Variables/EnumVariable.py
@@ -15,7 +15,7 @@ Usage example:
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -37,7 +37,7 @@ Usage example:
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/EnumVariable.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Variables/EnumVariable.py 2014/07/05 09:42:21 garyo"
__all__ = ['EnumVariable',]
diff --git a/src/engine/SCons/Variables/EnumVariableTests.py b/src/engine/SCons/Variables/EnumVariableTests.py
index 3f23d02..47893d6 100644
--- a/src/engine/SCons/Variables/EnumVariableTests.py
+++ b/src/engine/SCons/Variables/EnumVariableTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,11 +21,13 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/EnumVariableTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Variables/EnumVariableTests.py 2014/07/05 09:42:21 garyo"
import sys
import unittest
+import TestUnit
+
import SCons.Errors
import SCons.Variables
@@ -194,8 +196,7 @@ class EnumVariableTestCase(unittest.TestCase):
if __name__ == "__main__":
suite = unittest.makeSuite(EnumVariableTestCase, 'test_')
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Variables/ListVariable.py b/src/engine/SCons/Variables/ListVariable.py
index e831f68..99ed31d 100644
--- a/src/engine/SCons/Variables/ListVariable.py
+++ b/src/engine/SCons/Variables/ListVariable.py
@@ -25,7 +25,7 @@ Usage example:
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -46,7 +46,7 @@ Usage example:
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Variables/ListVariable.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Variables/ListVariable.py 2014/07/05 09:42:21 garyo"
# Know Bug: This should behave like a Set-Type, but does not really,
# since elements can occur twice.
diff --git a/src/engine/SCons/Variables/ListVariableTests.py b/src/engine/SCons/Variables/ListVariableTests.py
index 9aff5f0..a45148e 100644
--- a/src/engine/SCons/Variables/ListVariableTests.py
+++ b/src/engine/SCons/Variables/ListVariableTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,12 +21,14 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/ListVariableTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Variables/ListVariableTests.py 2014/07/05 09:42:21 garyo"
import copy
import sys
import unittest
+import TestUnit
+
import SCons.Errors
import SCons.Variables
@@ -124,8 +126,7 @@ class ListVariableTestCase(unittest.TestCase):
if __name__ == "__main__":
suite = unittest.makeSuite(ListVariableTestCase, 'test_')
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Variables/PackageVariable.py b/src/engine/SCons/Variables/PackageVariable.py
index 72e3674..96666b7 100644
--- a/src/engine/SCons/Variables/PackageVariable.py
+++ b/src/engine/SCons/Variables/PackageVariable.py
@@ -28,7 +28,7 @@ Usage example:
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -50,7 +50,7 @@ Usage example:
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/PackageVariable.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Variables/PackageVariable.py 2014/07/05 09:42:21 garyo"
__all__ = ['PackageVariable',]
diff --git a/src/engine/SCons/Variables/PackageVariableTests.py b/src/engine/SCons/Variables/PackageVariableTests.py
index b09061a..a0f1955 100644
--- a/src/engine/SCons/Variables/PackageVariableTests.py
+++ b/src/engine/SCons/Variables/PackageVariableTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/PackageVariableTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Variables/PackageVariableTests.py 2014/07/05 09:42:21 garyo"
import sys
import unittest
@@ -30,6 +30,8 @@ import SCons.Errors
import SCons.Variables
import TestCmd
+import TestUnit
+
class PackageVariableTestCase(unittest.TestCase):
def test_PackageVariable(self):
@@ -114,8 +116,7 @@ class PackageVariableTestCase(unittest.TestCase):
if __name__ == "__main__":
suite = unittest.makeSuite(PackageVariableTestCase, 'test_')
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Variables/PathVariable.py b/src/engine/SCons/Variables/PathVariable.py
index 556de59..70275dc 100644
--- a/src/engine/SCons/Variables/PathVariable.py
+++ b/src/engine/SCons/Variables/PathVariable.py
@@ -46,7 +46,7 @@ Usage example:
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -68,7 +68,7 @@ Usage example:
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/PathVariable.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Variables/PathVariable.py 2014/07/05 09:42:21 garyo"
__all__ = ['PathVariable',]
diff --git a/src/engine/SCons/Variables/PathVariableTests.py b/src/engine/SCons/Variables/PathVariableTests.py
index e9eaac2..cf28552 100644
--- a/src/engine/SCons/Variables/PathVariableTests.py
+++ b/src/engine/SCons/Variables/PathVariableTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/PathVariableTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Variables/PathVariableTests.py 2014/07/05 09:42:21 garyo"
import os.path
import sys
@@ -31,6 +31,8 @@ import SCons.Errors
import SCons.Variables
import TestCmd
+import TestUnit
+
class PathVariableTestCase(unittest.TestCase):
def test_PathVariable(self):
@@ -227,8 +229,7 @@ class PathVariableTestCase(unittest.TestCase):
if __name__ == "__main__":
suite = unittest.makeSuite(PathVariableTestCase, 'test_')
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Variables/VariablesTests.py b/src/engine/SCons/Variables/VariablesTests.py
index 7dcc464..91a90f6 100644
--- a/src/engine/SCons/Variables/VariablesTests.py
+++ b/src/engine/SCons/Variables/VariablesTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,11 +21,13 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Variables/VariablesTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Variables/VariablesTests.py 2014/07/05 09:42:21 garyo"
import sys
import unittest
+
import TestSCons
+import TestUnit
import SCons.Variables
import SCons.Subst
@@ -655,8 +657,7 @@ if __name__ == "__main__":
for tclass in tclasses:
names = unittest.getTestCaseNames(tclass, 'test_')
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/Variables/__init__.py b/src/engine/SCons/Variables/__init__.py
index f5e9b93..8c90fc7 100644
--- a/src/engine/SCons/Variables/__init__.py
+++ b/src/engine/SCons/Variables/__init__.py
@@ -5,7 +5,7 @@ customizable variables to an SCons build.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -26,7 +26,7 @@ customizable variables to an SCons build.
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/engine/SCons/Variables/__init__.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Variables/__init__.py 2014/07/05 09:42:21 garyo"
import os.path
import sys
diff --git a/src/engine/SCons/Warnings.py b/src/engine/SCons/Warnings.py
index bbbd1dc..cb7f556 100644
--- a/src/engine/SCons/Warnings.py
+++ b/src/engine/SCons/Warnings.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ This file implements the warnings framework for SCons.
"""
-__revision__ = "src/engine/SCons/Warnings.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/Warnings.py 2014/07/05 09:42:21 garyo"
import sys
diff --git a/src/engine/SCons/WarningsTests.py b/src/engine/SCons/WarningsTests.py
index 8240be3..34a7c2f 100644
--- a/src/engine/SCons/WarningsTests.py
+++ b/src/engine/SCons/WarningsTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,10 +21,13 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/WarningsTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/WarningsTests.py 2014/07/05 09:42:21 garyo"
import sys
import unittest
+
+import TestUnit
+
import SCons.Warnings
class TestOutput(object):
@@ -125,8 +128,7 @@ class WarningsTestCase(unittest.TestCase):
if __name__ == "__main__":
suite = unittest.makeSuite(WarningsTestCase, 'test_')
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/__init__.py b/src/engine/SCons/__init__.py
index f41a1b6..031bae4 100644
--- a/src/engine/SCons/__init__.py
+++ b/src/engine/SCons/__init__.py
@@ -5,7 +5,7 @@ The main package for the SCons software construction utility.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,15 +27,15 @@ The main package for the SCons software construction utility.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/__init__.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/__init__.py 2014/07/05 09:42:21 garyo"
-__version__ = "2.3.1"
+__version__ = "2.3.2"
__build__ = ""
__buildsys__ = "lubuntu"
-__date__ = "2014/03/02 14:18:15"
+__date__ = "2014/07/05 09:42:21"
__developer__ = "garyo"
diff --git a/src/engine/SCons/compat/__init__.py b/src/engine/SCons/compat/__init__.py
index 832dff6..97fe776 100644
--- a/src/engine/SCons/compat/__init__.py
+++ b/src/engine/SCons/compat/__init__.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -60,7 +60,7 @@ function defined below loads the module as the "real" name (without the
rest of our code will find our pre-loaded compatibility module.
"""
-__revision__ = "src/engine/SCons/compat/__init__.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/compat/__init__.py 2014/07/05 09:42:21 garyo"
import os
import sys
diff --git a/src/engine/SCons/compat/_scons_builtins.py b/src/engine/SCons/compat/_scons_builtins.py
index 5327032..75dad4f 100644
--- a/src/engine/SCons/compat/_scons_builtins.py
+++ b/src/engine/SCons/compat/_scons_builtins.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -51,7 +51,7 @@ the FUNCTIONS or DATA output, that means those names are already built in
to this version of Python and we don't need to add them from this module.
"""
-__revision__ = "src/engine/SCons/compat/_scons_builtins.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/compat/_scons_builtins.py 2014/07/05 09:42:21 garyo"
import builtins
diff --git a/src/engine/SCons/compat/_scons_collections.py b/src/engine/SCons/compat/_scons_collections.py
index 94352ac..1a580e0 100644
--- a/src/engine/SCons/compat/_scons_collections.py
+++ b/src/engine/SCons/compat/_scons_collections.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ used by SCons, in an interface that looks enough like collections for
our purposes.
"""
-__revision__ = "src/engine/SCons/compat/_scons_collections.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/compat/_scons_collections.py 2014/07/05 09:42:21 garyo"
# Use exec to hide old names from fixers.
exec("""if True:
diff --git a/src/engine/SCons/compat/_scons_dbm.py b/src/engine/SCons/compat/_scons_dbm.py
index dd02ed1..ad109d4 100644
--- a/src/engine/SCons/compat/_scons_dbm.py
+++ b/src/engine/SCons/compat/_scons_dbm.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -30,7 +30,7 @@ that the whichdb.whichdb() implementstation in the various 2.X versions of
Python won't blow up even if dbm wasn't compiled in.
"""
-__revision__ = "src/engine/SCons/compat/_scons_dbm.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/compat/_scons_dbm.py 2014/07/05 09:42:21 garyo"
class error(Exception):
pass
diff --git a/src/engine/SCons/compat/_scons_hashlib.py b/src/engine/SCons/compat/_scons_hashlib.py
index 3297572..c09def2 100644
--- a/src/engine/SCons/compat/_scons_hashlib.py
+++ b/src/engine/SCons/compat/_scons_hashlib.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ purposes, anyway). In fact, this module will raise an ImportError if
the underlying md5 module isn't available.
"""
-__revision__ = "src/engine/SCons/compat/_scons_hashlib.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/compat/_scons_hashlib.py 2014/07/05 09:42:21 garyo"
import md5
from string import hexdigits
diff --git a/src/engine/SCons/compat/_scons_io.py b/src/engine/SCons/compat/_scons_io.py
index 18777ea..84d964a 100644
--- a/src/engine/SCons/compat/_scons_io.py
+++ b/src/engine/SCons/compat/_scons_io.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ functionality. It only wraps the portions of io functionality used
by SCons, in an interface that looks enough like io for our purposes.
"""
-__revision__ = "src/engine/SCons/compat/_scons_io.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/compat/_scons_io.py 2014/07/05 09:42:21 garyo"
# Use the "imp" module to protect the imports below from fixers.
import imp
diff --git a/src/engine/SCons/cpp.py b/src/engine/SCons/cpp.py
index a5698fd..35acf84 100644
--- a/src/engine/SCons/cpp.py
+++ b/src/engine/SCons/cpp.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/cpp.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/cpp.py 2014/07/05 09:42:21 garyo"
__doc__ = """
SCons C Pre-Processor module
@@ -395,9 +395,10 @@ class PreProcessor(object):
"""
d = self.dispatch_table
- d['import'] = self.do_import
- d['include'] = self.do_include
- d['include_next'] = self.do_include
+ p = self.stack[-1] if self.stack else self.default_table
+
+ for k in ('import', 'include', 'include_next'):
+ d[k] = p[k]
def stop_handling_includes(self, t=None):
"""
diff --git a/src/engine/SCons/cppTests.py b/src/engine/SCons/cppTests.py
index c16d3ce..8ed75d4 100644
--- a/src/engine/SCons/cppTests.py
+++ b/src/engine/SCons/cppTests.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,12 +21,14 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/cppTests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/cppTests.py 2014/07/05 09:42:21 garyo"
import atexit
import sys
import unittest
+import TestUnit
+
import cpp
@@ -325,6 +327,22 @@ no_space_input = """
"""
+nested_ifs_input = """
+#define DEFINED
+
+#ifdef NOT_DEFINED
+ #include "file7-no"
+ #ifdef DEFINED
+ #include "file8-no"
+ #else
+ #include "file9-no"
+ #endif
+#else
+ #include "file7-yes"
+#endif
+"""
+
+
# pp_class = PreProcessor
# #pp_class = DumbPreProcessor
@@ -401,6 +419,11 @@ class cppTestCase(unittest.TestCase):
result = self.cpp.process_contents(no_space_input)
assert expect == result, (expect, result)
+ def test_nested_ifs(self):
+ expect = self.nested_ifs_expect
+ result = self.cpp.process_contents(nested_ifs_input)
+ assert expect == result, (expect, result)
+
class cppAllTestCase(cppTestCase):
def setUp(self):
self.cpp = self.cpp_class(current = ".",
@@ -484,6 +507,10 @@ class PreProcessorTestCase(cppAllTestCase):
('include', '"', 'file44-yes'),
]
+ nested_ifs_expect = [
+ ('include', '"', 'file7-yes'),
+ ]
+
class DumbPreProcessorTestCase(cppAllTestCase):
cpp_class = cpp.DumbPreProcessor
@@ -589,6 +616,13 @@ class DumbPreProcessorTestCase(cppAllTestCase):
('include', '"', 'file44-yes'),
]
+ nested_ifs_expect = [
+ ('include', '"', 'file7-no'),
+ ('include', '"', 'file8-no'),
+ ('include', '"', 'file9-no'),
+ ('include', '"', 'file7-yes')
+ ]
+
import os
@@ -705,8 +739,7 @@ if __name__ == '__main__':
pass
names.sort()
suite.addTests(list(map(tclass, names)))
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
+ TestUnit.run(suite)
# Local Variables:
# tab-width:4
diff --git a/src/engine/SCons/exitfuncs.py b/src/engine/SCons/exitfuncs.py
index 586eb27..a916d4b 100644
--- a/src/engine/SCons/exitfuncs.py
+++ b/src/engine/SCons/exitfuncs.py
@@ -5,7 +5,7 @@ Register functions which are executed when SCons exits for any reason.
"""
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@ Register functions which are executed when SCons exits for any reason.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/exitfuncs.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/engine/SCons/exitfuncs.py 2014/07/05 09:42:21 garyo"
import atexit
diff --git a/src/script/scons-time.py b/src/script/scons-time.py
index 0a51566..3d748b0 100644
--- a/src/script/scons-time.py
+++ b/src/script/scons-time.py
@@ -9,7 +9,7 @@
#
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@
from __future__ import division
from __future__ import nested_scopes
-__revision__ = "src/script/scons-time.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/script/scons-time.py 2014/07/05 09:42:21 garyo"
import getopt
import glob
diff --git a/src/script/scons.bat b/src/script/scons.bat
index aba660f..bda8080 100644
--- a/src/script/scons.bat
+++ b/src/script/scons.bat
@@ -1,11 +1,11 @@
-@REM Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
-@REM src/script/scons.bat 2014/03/02 14:18:15 garyo
+@REM Copyright (c) 2001 - 2014 The SCons Foundation
+@REM src/script/scons.bat 2014/07/05 09:42:21 garyo
@echo off
set SCONS_ERRORLEVEL=
if "%OS%" == "Windows_NT" goto WinNT
@REM for 9x/Me you better not have more than 9 args
-python -c "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-2.3.1'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons-2.3.1'), join(sys.prefix, 'scons')] + sys.path; import SCons.Script; SCons.Script.main()" %1 %2 %3 %4 %5 %6 %7 %8 %9
+python -c "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-2.3.2'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons-2.3.2'), join(sys.prefix, 'scons')] + sys.path; import SCons.Script; SCons.Script.main()" %1 %2 %3 %4 %5 %6 %7 %8 %9
@REM no way to set exit status of this script for 9x/Me
goto endscons
diff --git a/src/script/scons.py b/src/script/scons.py
index 87919a1..b2823b6 100644
--- a/src/script/scons.py
+++ b/src/script/scons.py
@@ -2,7 +2,7 @@
#
# SCons - a Software Constructor
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -23,21 +23,22 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/script/scons.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/script/scons.py 2014/07/05 09:42:21 garyo"
-__version__ = "2.3.1"
+__version__ = "2.3.2"
__build__ = ""
__buildsys__ = "lubuntu"
-__date__ = "2014/03/02 14:18:15"
+__date__ = "2014/07/05 09:42:21"
__developer__ = "garyo"
import os
import sys
+
##############################################################################
# BEGIN STANDARD SCons SCRIPT HEADER
#
@@ -72,6 +73,11 @@ libs = []
if "SCONS_LIB_DIR" in os.environ:
libs.append(os.environ["SCONS_LIB_DIR"])
+# - running from source takes priority (since 2.3.2), excluding SCONS_LIB_DIR settings
+script_path = os.path.abspath(os.path.dirname(__file__))
+source_path = os.path.join(script_path, '..', 'engine')
+libs.append(source_path)
+
local_version = 'scons-local-' + __version__
local = 'scons-local'
if script_dir:
@@ -85,6 +91,8 @@ scons_version = 'scons-%s' % __version__
# preferred order of scons lookup paths
prefs = []
+
+# - running from egg check
try:
import pkg_resources
except ImportError:
@@ -181,12 +189,11 @@ if __name__ == "__main__":
try:
import SCons.Script
except:
- ROOT = os.path.join(os.path.abspath(os.path.dirname(__file__)), '..', 'engine')
- if os.path.exists(ROOT):
- sys.path += [ROOT]
- print("SCons import failed. Trying to run from source directory")
- import SCons.Script
-
+ print("Import failed. Unable to find SCons files in:")
+ for path in libs:
+ print " %s" % path
+ raise
+
# this does all the work, and calls sys.exit
# with the proper exit status when done.
SCons.Script.main()
diff --git a/src/script/sconsign.py b/src/script/sconsign.py
index 0c24322..2341ac6 100644
--- a/src/script/sconsign.py
+++ b/src/script/sconsign.py
@@ -2,7 +2,7 @@
#
# SCons - a Software Constructor
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -23,15 +23,15 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/script/sconsign.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/script/sconsign.py 2014/07/05 09:42:21 garyo"
-__version__ = "2.3.1"
+__version__ = "2.3.2"
__build__ = ""
__buildsys__ = "lubuntu"
-__date__ = "2014/03/02 14:18:15"
+__date__ = "2014/07/05 09:42:21"
__developer__ = "garyo"
diff --git a/src/setup.py b/src/setup.py
index 1df403f..e805323 100644
--- a/src/setup.py
+++ b/src/setup.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,13 +32,13 @@ NOTE: Installed SCons is not importable like usual Python packages. It is
below is dedicated to make it happen on various platforms.
"""
-__revision__ = "src/setup.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/setup.py 2014/07/05 09:42:21 garyo"
import os
import stat
import sys
-Version = "2.3.1"
+Version = "2.3.2"
man_pages = [
'scons.1',
diff --git a/src/test_aegistests.py b/src/test_aegistests.py
index 4dcb5e6..a921447 100644
--- a/src/test_aegistests.py
+++ b/src/test_aegistests.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/test_aegistests.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/test_aegistests.py 2014/07/05 09:42:21 garyo"
"""
Verify that we have proper Copyright notices on all the right files
diff --git a/src/test_files.py b/src/test_files.py
index 04f3792..bdc4e83 100644
--- a/src/test_files.py
+++ b/src/test_files.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -22,7 +22,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/test_files.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/test_files.py 2014/07/05 09:42:21 garyo"
"""
Verify that we have certain important files in our distribution
diff --git a/src/test_interrupts.py b/src/test_interrupts.py
index 963735a..65ac427 100644
--- a/src/test_interrupts.py
+++ b/src/test_interrupts.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/test_interrupts.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/test_interrupts.py 2014/07/05 09:42:21 garyo"
"""
Verify that the SCons source code contains only correct handling of
diff --git a/src/test_pychecker.py b/src/test_pychecker.py
index d54779b..60f0a8a 100644
--- a/src/test_pychecker.py
+++ b/src/test_pychecker.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -21,7 +21,7 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-__revision__ = "src/test_pychecker.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/test_pychecker.py 2014/07/05 09:42:21 garyo"
"""
Use pychecker to catch various Python coding errors.
diff --git a/src/test_setup.py b/src/test_setup.py
index f71aa33..9ec24ae 100644
--- a/src/test_setup.py
+++ b/src/test_setup.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -22,7 +22,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/test_setup.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/test_setup.py 2014/07/05 09:42:21 garyo"
"""
Test how the setup.py script installs SCons.
diff --git a/src/test_strings.py b/src/test_strings.py
index a268133..38d5384 100644
--- a/src/test_strings.py
+++ b/src/test_strings.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation
+# Copyright (c) 2001 - 2014 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -22,7 +22,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/test_strings.py 2014/03/02 14:18:15 garyo"
+__revision__ = "src/test_strings.py 2014/07/05 09:42:21 garyo"
"""
Verify that we have proper strings like Copyright notices on all the
@@ -106,8 +106,8 @@ class Checker(object):
class CheckUnexpandedStrings(Checker):
expressions = [
- re.compile('Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The SCons Foundation'),
- re.compile('src/test_strings.py 2014/03/02 14:18:15 garyo'),
+ re.compile('Copyright (c) 2001 - 2014 The SCons Foundation'),
+ re.compile('src/test_strings.py 2014/07/05 09:42:21 garyo'),
]
def must_be_built(self):
return None