├── .gitattributes ├── .github └── workflows │ └── release.yml ├── .gitignore ├── Binary Archive ├── UI++2.11.0.3.zip ├── UI++2.11.1.0.zip ├── UI++2.11.1.1.zip ├── UI++2.11.1.2.zip ├── UI++3.0.0.0.zip ├── UI++3.0.1.0.zip ├── UI++3.0.2.0.zip └── UI++3.0.3.0.zip ├── Docs └── website │ ├── .gitignore │ ├── 404.html │ ├── Gemfile │ ├── Gemfile.lock │ ├── _config.yml │ ├── _data │ ├── authors.yml │ ├── licenses.yml │ ├── locale.yml │ ├── navigation.yml │ └── variables.yml │ ├── _includes │ ├── analytics-providers │ │ ├── custom.html │ │ └── google.html │ ├── analytics.html │ ├── article-footer.html │ ├── article-header.html │ ├── article-info.html │ ├── article-list.html │ ├── article-section-navigator.html │ ├── article │ │ ├── footer │ │ │ ├── author-profile.html │ │ │ ├── custom.html │ │ │ ├── license.html │ │ │ └── subscribe.html │ │ └── top │ │ │ └── custom.html │ ├── aside │ │ └── toc.html │ ├── author-links.html │ ├── comments-providers │ │ ├── custom.html │ │ ├── disqus.html │ │ ├── gitalk.html │ │ └── valine.html │ ├── comments.html │ ├── extensions │ │ ├── bilibili.html │ │ ├── codepen.html │ │ ├── netease-cloud-music.html │ │ ├── slideshare.html │ │ ├── soundcloud.html │ │ ├── ted.html │ │ └── youtube.html │ ├── footer.html │ ├── head.html │ ├── head │ │ ├── custom.html │ │ └── favicon.html │ ├── header.html │ ├── main │ │ ├── bottom │ │ │ └── custom.html │ │ └── top │ │ │ └── custom.html │ ├── markdown-enhancements.html │ ├── markdown-enhancements │ │ ├── chart.html │ │ ├── mathjax.html │ │ └── mermaid.html │ ├── pageview-providers │ │ ├── custom │ │ │ ├── home.html │ │ │ └── post.html │ │ └── leancloud │ │ │ ├── home.html │ │ │ ├── leancloud.js │ │ │ └── post.html │ ├── pageview.html │ ├── paginator.html │ ├── scripts │ │ ├── archieve.js │ │ ├── article.js │ │ ├── aside │ │ │ ├── affix.js │ │ │ └── toc.js │ │ ├── common.js │ │ ├── components │ │ │ ├── lightbox.js │ │ │ ├── search.js │ │ │ └── sidebar.js │ │ ├── home.js │ │ ├── lib │ │ │ ├── affix.js │ │ │ ├── gallery.js │ │ │ ├── lazyload.js │ │ │ ├── modal.js │ │ │ ├── scroll-to.js │ │ │ ├── swiper.js │ │ │ ├── throttle.js │ │ │ └── toc.js │ │ ├── page.js │ │ ├── utils │ │ │ ├── imagesLoad.js │ │ │ └── utils.js │ │ └── variables.html │ ├── search-providers │ │ ├── custom │ │ │ └── search.html │ │ ├── default │ │ │ ├── search-data.js │ │ │ ├── search.html │ │ │ └── search.js │ │ └── google-custom-search-engine │ │ │ ├── search.html │ │ │ └── search.js │ ├── search.html │ ├── sharing-providers │ │ ├── addthis.html │ │ ├── addtoany.html │ │ └── custom.html │ ├── sharing.html │ ├── sidebar │ │ └── toc.html │ ├── snippets │ │ ├── assign.html │ │ ├── get-article-title.html │ │ ├── get-lang.html │ │ ├── get-locale-string.html │ │ ├── get-nav-url.html │ │ ├── get-sources.html │ │ ├── get-string-from-locale-config.html │ │ ├── is_collection.html │ │ ├── page-url.html │ │ ├── prepend-baseurl.html │ │ └── prepend-path.html │ ├── svg │ │ ├── icon │ │ │ └── social │ │ │ │ ├── behance.svg │ │ │ │ ├── douban.svg │ │ │ │ ├── facebook.svg │ │ │ │ ├── flicker.svg │ │ │ │ ├── github.svg │ │ │ │ ├── googleplus.svg │ │ │ │ ├── linkedin.svg │ │ │ │ ├── mail.svg │ │ │ │ ├── medium.svg │ │ │ │ ├── npm.svg │ │ │ │ ├── pinterest.svg │ │ │ │ ├── qq.svg │ │ │ │ ├── telegram.svg │ │ │ │ ├── twitter.svg │ │ │ │ ├── weibo.svg │ │ │ │ ├── weixin.svg │ │ │ │ └── zhihu.svg │ │ └── logo.svg │ └── tags.html │ ├── _layouts │ ├── 404.html │ ├── archive.html │ ├── article.html │ ├── articles.html │ ├── base.html │ ├── home.html │ ├── landing.html │ ├── none.html │ └── page.html │ ├── _sass │ ├── additional │ │ ├── _alert.scss │ │ ├── _photo-frame.scss │ │ └── _tag.scss │ ├── animate │ │ ├── _fade-in-down.scss │ │ ├── _fade-in-up.scss │ │ └── _fade-in.scss │ ├── common │ │ ├── _classes.scss │ │ ├── _function.scss │ │ ├── _print.scss │ │ ├── _reset.scss │ │ ├── _variables.scss │ │ ├── classes │ │ │ ├── _animation.scss │ │ │ ├── _clearfix.scss │ │ │ ├── _clickable.scss │ │ │ ├── _display.scss │ │ │ ├── _flex.scss │ │ │ ├── _grid.scss │ │ │ ├── _horizontal-rules.scss │ │ │ ├── _link.scss │ │ │ ├── _media.scss │ │ │ ├── _overflow.scss │ │ │ ├── _pseudo.scss │ │ │ ├── _shadow.scss │ │ │ ├── _spacing.scss │ │ │ ├── _split-line.scss │ │ │ ├── _text.scss │ │ │ ├── _transform.scss │ │ │ ├── _transition.scss │ │ │ └── _user-select.scss │ │ └── components │ │ │ ├── _button.scss │ │ │ ├── _card.scss │ │ │ ├── _gallery.scss │ │ │ ├── _hero.scss │ │ │ ├── _image.scss │ │ │ ├── _item.scss │ │ │ ├── _menu.scss │ │ │ ├── _modal.scss │ │ │ ├── _swiper.scss │ │ │ └── _toc.scss │ ├── components │ │ ├── _article-content.scss │ │ ├── _article-footer.scss │ │ ├── _article-header.scss │ │ ├── _article-info.scss │ │ ├── _article-list.scss │ │ ├── _author-links.scss │ │ ├── _author-profile.scss │ │ ├── _extensions.scss │ │ ├── _footer.scss │ │ ├── _header.scss │ │ ├── _lightbox.scss │ │ ├── _main.scss │ │ ├── _search.scss │ │ └── _tags.scss │ ├── custom.scss │ ├── layout │ │ ├── _404.scss │ │ ├── _archive.scss │ │ ├── _article.scss │ │ ├── _articles.scss │ │ ├── _base.scss │ │ ├── _home.scss │ │ ├── _landing.scss │ │ └── _page.scss │ └── skins │ │ ├── _chocolate.scss │ │ ├── _dark.scss │ │ ├── _default.scss │ │ ├── _forest.scss │ │ ├── _ocean.scss │ │ ├── _orange.scss │ │ └── highlight │ │ ├── _default.scss │ │ ├── _tomorrow-night-blue.scss │ │ ├── _tomorrow-night-bright.scss │ │ ├── _tomorrow-night-eighties.scss │ │ ├── _tomorrow-night.scss │ │ ├── _tomorrow.scss │ │ └── tomorrow │ │ ├── _default.scss │ │ ├── _highlight.scss │ │ ├── _night-blue.scss │ │ ├── _night-bright.scss │ │ ├── _night-eighties.scss │ │ └── _night.scss │ ├── assets │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── css │ │ └── main.scss │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── images │ │ ├── UI++Icon.png │ │ ├── logo │ │ │ └── logo.svg │ │ └── screenshots │ │ │ ├── bootimage-prestart.png │ │ │ ├── bootmedia-prestart.png │ │ │ ├── dialog-apptree.png │ │ │ ├── dialog-errorinfo-2.png │ │ │ ├── dialog-errorinfo.png │ │ │ ├── dialog-info-timeout.png │ │ │ ├── dialog-info.png │ │ │ ├── dialog-infofullscreen.png │ │ │ ├── dialog-infofullscreen2.png │ │ │ ├── dialog-input-inputcheckbox-2.png │ │ │ ├── dialog-input-inputcheckbox-3.png │ │ │ ├── dialog-input-inputcheckbox.png │ │ │ ├── dialog-input-inputchoice-2.png │ │ │ ├── dialog-input-inputchoice-3.png │ │ │ ├── dialog-input-inputchoice.png │ │ │ ├── dialog-input-inputtext-2.png │ │ │ ├── dialog-input-inputtext.png │ │ │ ├── dialog-optional.png │ │ │ ├── dialog-preflight-2.png │ │ │ ├── dialog-preflight-3.png │ │ │ ├── dialog-preflight-4.png │ │ │ ├── dialog-preflight-5.png │ │ │ ├── dialog-preflight.png │ │ │ ├── dialog-standard.png │ │ │ ├── dialog-userauth-2.png │ │ │ ├── dialog-userauth-3.png │ │ │ ├── dialog-userauth.png │ │ │ ├── tasksequence-installapplication.png │ │ │ ├── tasksequence-installpackage.png │ │ │ ├── tasksequence-run.png │ │ │ ├── variableeditor-editable.png │ │ │ ├── variableeditor-readonly.png │ │ │ └── welcome.png │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ ├── mstile-70x70.png │ ├── safari-pinned-tab.svg │ ├── search.js │ └── site.webmanifest │ ├── docs │ ├── actionconfig │ │ ├── apptree.md │ │ ├── defaultvalues.md │ │ ├── errorinfo.md │ │ ├── externalcall.md │ │ ├── fileread.md │ │ ├── info.md │ │ ├── infofullscreen.md │ │ ├── input.md │ │ ├── preflight.md │ │ ├── randomstring.md │ │ ├── registry.md │ │ ├── saveitems.md │ │ ├── softwarediscovery.md │ │ ├── switch.md │ │ ├── tsvarlist.md │ │ ├── userauth.md │ │ ├── variables.md │ │ ├── variablesaveload.md │ │ └── wmi.md │ ├── actions │ │ ├── interactiveactions.md │ │ ├── introduction.md │ │ └── noninteractiveactions.md │ ├── changelog.md │ ├── configuration │ │ ├── actiongroups.md │ │ ├── activedirectorychecks.md │ │ ├── backbutton.md │ │ ├── conditions.md │ │ ├── configurationfile.md │ │ ├── statusmessages.md │ │ └── valuesandvariables.md │ ├── download.md │ ├── intro │ │ ├── features.md │ │ ├── overview.md │ │ └── prerequisites.md │ ├── reference │ │ ├── actionelements.md │ │ ├── allelements.md │ │ ├── defaultvalues.md │ │ └── textformatting.md │ ├── running │ │ ├── commandline.md │ │ ├── commonusage.md │ │ └── logfile.md │ ├── samples.md │ └── terms.md │ ├── index.md │ └── jekyll-text-theme.gemspec ├── FTWCMLog ├── FTWCMLog.cpp ├── FTWCMLog.h ├── FTWCMLog.rc ├── FTWCMLog.rc2 ├── FTWCMLog.vcxproj ├── FTWCMLog.vcxproj.filters ├── FTWCMLog.vcxproj.user ├── dllmain.cpp ├── resource.h ├── stdafx.cpp ├── stdafx.h ├── targetver.h └── version.h ├── FTWldap ├── CLdap.cpp ├── CLdap.h ├── FTWldap.rc ├── FTWldap.rc2 ├── FTWldap.vcxproj ├── FTWldap.vcxproj.filters ├── FTWldap.vcxproj.user ├── dllmain.cpp ├── resource.h ├── stdafx.cpp ├── stdafx.h ├── targetver.h └── version.h ├── LICENSE ├── README.md ├── UI++.sln ├── UI++ ├── Actions │ ├── ActionDefaultValues.cpp │ ├── ActionDefaultValues.h │ ├── ActionExternalCall.cpp │ ├── ActionHelper.cpp │ ├── ActionHelper.h │ ├── ActionUserInput.cpp │ ├── Actions.cpp │ ├── Actions.h │ ├── DefaultValsAction - Copy.cpp │ ├── IAction.cpp │ ├── IAction.h │ └── InteractiveActions.cpp ├── CodeProject │ ├── CmdLine │ │ ├── CmdLine.cpp │ │ └── CmdLine.h │ ├── ComboCompletion │ │ ├── ComboCompletion.cpp │ │ └── ComboCompletion.h │ ├── FilterEdit │ │ ├── BaseEdit.cpp │ │ ├── BaseEdit.h │ │ ├── UIntEdit.h │ │ └── UIntRangeEdit.h │ ├── GridListCtrlEx │ │ ├── CGridColumnTrait.h │ │ ├── CGridColumnTraitCombo.cpp │ │ ├── CGridColumnTraitCombo.h │ │ ├── CGridColumnTraitDateTime.cpp │ │ ├── CGridColumnTraitDateTime.h │ │ ├── CGridColumnTraitEdit.cpp │ │ ├── CGridColumnTraitEdit.h │ │ ├── CGridColumnTraitHyperLink.cpp │ │ ├── CGridColumnTraitHyperLink.h │ │ ├── CGridColumnTraitImage.cpp │ │ ├── CGridColumnTraitImage.h │ │ ├── CGridColumnTraitMultilineEdit.cpp │ │ ├── CGridColumnTraitMultilineEdit.h │ │ ├── CGridColumnTraitText.cpp │ │ ├── CGridColumnTraitText.h │ │ ├── CGridColumnTraitVisitor.h │ │ ├── CGridListCtrlEx.cpp │ │ ├── CGridListCtrlEx.h │ │ ├── CGridListCtrlGroups.cpp │ │ ├── CGridListCtrlGroups.h │ │ ├── CGridRowTrait.h │ │ ├── CGridRowTraitText.cpp │ │ ├── CGridRowTraitText.h │ │ ├── CGridRowTraitVisitor.h │ │ ├── CGridRowTraitXP.cpp │ │ ├── CGridRowTraitXP.h │ │ ├── ViewConfigSection.cpp │ │ └── ViewConfigSection.h │ ├── KCSideBannerWnd │ │ ├── KCSideBannerWnd.cpp │ │ ├── KCSideBannerWnd.h │ │ └── WndUtil.h │ ├── WndResizer │ │ ├── WndResizer.cpp │ │ └── WndResizer.h │ └── regkey.h ├── ConfigMgrFTW.png ├── Constants.h ├── Dialogs │ ├── DlgAppTree.cpp │ ├── DlgAppTree.h │ ├── DlgBase.cpp │ ├── DlgBase.h │ ├── DlgData.h │ ├── DlgPreflight.cpp │ ├── DlgPreflight.h │ ├── DlgProgress.cpp │ ├── DlgProgress.h │ ├── DlgTSVar.cpp │ ├── DlgTSVar.h │ ├── DlgUserAuth.cpp │ ├── DlgUserAuth.h │ ├── DlgUserInfo.cpp │ ├── DlgUserInfo.h │ ├── DlgUserInfoFullScreen.cpp │ ├── DlgUserInfoFullScreen.h │ ├── DlgUserInput.cpp │ ├── DlgUserInput.h │ ├── UserAuthDlg - Copy.cpp │ └── UserAuthDlg - Copy.h ├── FTW │ ├── CMLog.cpp │ ├── CMLog.h │ ├── ComInit.h │ ├── FTWBrowseEdit.cpp │ ├── FTWBrowseEdit.h │ ├── FTWControl.cpp │ ├── FTWControl.h │ ├── FTWError.h │ ├── FTWHTTP.cpp │ ├── FTWHTTP.h │ ├── FTWTreeCtrl.cpp │ ├── FTWTreeCtrl.h │ ├── FTWVersion.h │ ├── InternetConn.h │ ├── ObjectFactory.h │ ├── TSCore.dll │ ├── TSProgress.cpp │ ├── TSProgress.h │ ├── Utils.cpp │ ├── Utils.h │ ├── Utils_old.cpp │ ├── Utils_old.h │ ├── WMIAccess.cpp │ ├── WMIAccess.h │ ├── WMIAccess.old.cpp │ └── tsprogressui.exe ├── HansDietrich │ ├── CXDC.h │ ├── CXPoint.h │ ├── CXRect.h │ ├── CXWaitCursor.h │ ├── CreateGrayscaleIcon.h │ ├── FontSize.cpp │ ├── FontSize.h │ ├── OddButton.cpp │ ├── OddButton.h │ ├── VisualStylesXP.cpp │ ├── VisualStylesXP.h │ ├── XArray.h │ ├── XBalloonMsg.cpp │ ├── XBalloonMsg.h │ ├── XButtonXP.cpp │ ├── XButtonXP.h │ ├── XColorStatic.cpp │ ├── XColorStatic.h │ ├── XDisplayImage.cpp │ ├── XDisplayImage.h │ ├── XHTMLCtrl.cpp │ ├── XHTMLCtrl.h │ ├── XHtmlDraw.cpp │ ├── XHtmlDraw.h │ ├── XHtmlDrawLink.cpp │ ├── XHtmlDrawLink.h │ ├── XHyperLink.cpp │ ├── XHyperLink.h │ ├── XNamedColors.cpp │ ├── XNamedColors.h │ ├── XStack.h │ ├── XString.cpp │ ├── XString.h │ ├── XThemeHelper.cpp │ ├── XThemeHelper.h │ ├── XTrace.h │ ├── cxtooltipctrl.h │ ├── ensure.h │ └── wtlstring.h ├── IntEdit.h ├── RCa10892 ├── ReadMe.txt ├── RegExEdit.cpp ├── RegExEdit.h ├── ScriptHost.cpp ├── ScriptHost.h ├── Software.cpp ├── Software.h ├── TSVar.cpp ├── TSVar.h ├── TooltipStatic.cpp ├── TooltipStatic.h ├── UI++ (Logical Disks Snippet).xml ├── UI++.1.xml ├── UI++.A.xml ├── UI++.APS ├── UI++.cpp ├── UI++.h ├── UI++.rc ├── UI++.rc.bak.rc ├── UI++.vcxproj ├── UI++.vcxproj.filters ├── UI++.vcxproj.user ├── UI++.xml ├── UI++2.ico ├── UI++2.xml ├── UI++3.xml ├── UI++5.xml ├── UI++6.xml ├── UserInfoCheck.cpp ├── UserInfoCheck.h ├── UserInputBase.cpp ├── UserInputBase.h ├── UserInputCheckbox.cpp ├── UserInputCheckbox.h ├── UserInputChoice.cpp ├── UserInputChoice.h ├── UserInputChoiceOptions.h ├── UserInputInfo.cpp ├── UserInputInfo.h ├── UserInputText.cpp ├── UserInputText.h ├── approved.png ├── curl │ └── include │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── README │ │ └── curl │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── curl.h │ │ ├── curlbuild.h │ │ ├── curlbuild.h.cmake │ │ ├── curlbuild.h.in │ │ ├── curlrules.h │ │ ├── curlver.h │ │ ├── easy.h │ │ ├── mprintf.h │ │ ├── multi.h │ │ ├── stdcheaders.h │ │ └── typecheck-gcc.h ├── fnv1a.hpp ├── pugi.old │ ├── pugiconfig.hpp │ ├── pugixml.cpp │ └── pugixml.hpp ├── pugi │ ├── pugiconfig.hpp │ ├── pugixml.cpp │ └── pugixml.hpp ├── qr-liverpool.png ├── qr-manutd.png ├── res │ ├── ButtonBack-Grey.ico │ ├── ButtonBack.ico │ ├── ButtonCancel-Grey.ico │ ├── ButtonCancel.ico │ ├── ButtonOK-Grey.ico │ ├── ButtonOK.ico │ ├── ButtonRefresh-Grey.ico │ ├── ButtonRefresh.ico │ ├── ButtonRestart.ico │ ├── DlgAppTree.ico │ ├── DlgAuth.ico │ ├── DlgInfo.ico │ ├── DlgInput.ico │ ├── DlgPreflight.ico │ ├── DlgStop.ico │ ├── InfoTip.ico │ ├── InputAttention.ico │ ├── StatusFailed.ico │ ├── StatusPassed.ico │ ├── StatusWarning.ico │ ├── UI++ Tree Checkboxes.bmp │ ├── UI++ Tree.bmp │ ├── UI++.ico │ ├── UI++2.ico │ ├── UI.rc2 │ └── icon1.ico ├── resource.h ├── resource.hm ├── resources │ ├── Test.jpg │ ├── UI++.3.xml │ ├── UI++2.ico │ ├── UI++2.xml │ ├── UI++3.xml │ ├── UI++4.xml │ ├── UI++6.xml │ ├── UI++7.xml │ └── ball.ico ├── stdafx.cpp ├── stdafx.h ├── targetver.h └── version.h ├── UI++AWS ├── ReadMe.txt ├── Resource.h ├── UI++AWS.cpp ├── UI++AWS.def ├── UI++AWS.h ├── UI++AWS.rc ├── UI++AWS.vcxproj ├── UI++AWS.vcxproj.filters ├── res │ └── UI++AWS.rc2 ├── stdafx.cpp ├── stdafx.h └── targetver.h ├── UI++REST ├── ReadMe.txt ├── Resource.h ├── RestConstants.h ├── UI++REST.cpp ├── UI++REST.def ├── UI++REST.h ├── UI++REST.rc ├── UI++REST.vcxproj ├── UI++REST.vcxproj.filters ├── Utils.cpp ├── Utils.h ├── res │ └── UI++REST.rc2 ├── stdafx.cpp ├── stdafx.h └── targetver.h └── vcpkg.json /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | 6 | jobs: 7 | release: 8 | runs-on: windows-latest 9 | 10 | strategy: 11 | matrix: 12 | platform: [x64, Win32] 13 | 14 | env: 15 | VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | - uses: microsoft/setup-msbuild@v2 20 | 21 | - name: Setup cache environment variables 22 | uses: actions/github-script@v7 23 | with: 24 | script: | 25 | core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); 26 | core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); 27 | 28 | - name: Build solution 29 | run: | 30 | vcpkg integrate install 31 | msbuild /p:Configuration=Release /p:Platform=${{ matrix.platform }} 32 | 33 | - uses: actions/upload-artifact@v4 34 | with: 35 | name: release-${{ matrix.platform }} 36 | path: Build\Release\${{ matrix.platform }} 37 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | UI++.VC.db 2 | Build 3 | Intermediate 4 | vcpkg_installed 5 | -------------------------------------------------------------------------------- /Binary Archive/UI++2.11.0.3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Binary Archive/UI++2.11.0.3.zip -------------------------------------------------------------------------------- /Binary Archive/UI++2.11.1.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Binary Archive/UI++2.11.1.0.zip -------------------------------------------------------------------------------- /Binary Archive/UI++2.11.1.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Binary Archive/UI++2.11.1.1.zip -------------------------------------------------------------------------------- /Binary Archive/UI++2.11.1.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Binary Archive/UI++2.11.1.2.zip -------------------------------------------------------------------------------- /Binary Archive/UI++3.0.0.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Binary Archive/UI++3.0.0.0.zip -------------------------------------------------------------------------------- /Binary Archive/UI++3.0.1.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Binary Archive/UI++3.0.1.0.zip -------------------------------------------------------------------------------- /Binary Archive/UI++3.0.2.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Binary Archive/UI++3.0.2.0.zip -------------------------------------------------------------------------------- /Binary Archive/UI++3.0.3.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Binary Archive/UI++3.0.3.0.zip -------------------------------------------------------------------------------- /Docs/website/.gitignore: -------------------------------------------------------------------------------- 1 | _site 2 | .sass-cache 3 | .jekyll-cache 4 | .jekyll-metadata 5 | vendor 6 | -------------------------------------------------------------------------------- /Docs/website/404.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: 404 3 | --- -------------------------------------------------------------------------------- /Docs/website/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | # Hello! This is where you manage which Jekyll version is used to run. 3 | # When you want to use a different version, change it below, save the 4 | # file and run `bundle install`. Run Jekyll with `bundle exec`, like so: 5 | # 6 | # bundle exec jekyll serve 7 | # 8 | # This will help ensure the proper Jekyll version is running. 9 | # Happy Jekylling! 10 | gem "jekyll", "~> 4.2.0" 11 | # This is the default theme for new Jekyll sites. You may change this to anything you like. 12 | gem "minima", "~> 2.5" 13 | # If you want to use GitHub Pages, remove the "gem "jekyll"" above and 14 | # uncomment the line below. To upgrade, run `bundle update github-pages`. 15 | # gem "github-pages", group: :jekyll_plugins 16 | # If you have any plugins, put them here! 17 | group :jekyll_plugins do 18 | # gem "jekyll-feed", "> 0.12" 19 | # gem "jekyll-paginate" 20 | gem "jekyll-sitemap" 21 | gem "jemoji" 22 | gem "jekyll-figure" 23 | gem "jekyll-last-modified-at" 24 | gem "webrick" 25 | end 26 | 27 | # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem 28 | # and associated library. 29 | #platforms :mingw, :x64_mingw, :mswin, :jruby do 30 | gem "tzinfo" 31 | gem "tzinfo-data" 32 | #end 33 | 34 | # Performance-booster for watching directories on Windows 35 | gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] 36 | 37 | -------------------------------------------------------------------------------- /Docs/website/_data/authors.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/_data/authors.yml -------------------------------------------------------------------------------- /Docs/website/_data/licenses.yml: -------------------------------------------------------------------------------- 1 | CC-BY-4.0: 2 | name: Attribution 4.0 International 3 | url: https://creativecommons.org/licenses/by/4.0/ 4 | image: https://i.creativecommons.org/l/by/4.0/88x31.png 5 | CC-BY-SA-4.0: 6 | name: Attribution-ShareAlike 4.0 International 7 | url: https://creativecommons.org/licenses/by-sa/4.0/ 8 | image: https://i.creativecommons.org/l/by-sa/4.0/88x31.png 9 | CC-BY-NC-4.0: 10 | name: Attribution-NonCommercial 4.0 International 11 | url: https://creativecommons.org/licenses/by-nc/4.0/ 12 | image: https://i.creativecommons.org/l/by-nc/4.0/88x31.png 13 | CC-BY-ND-4.0: 14 | name: Attribution-NoDerivatives 4.0 International 15 | url: https://creativecommons.org/licenses/by-nd/4.0/ 16 | image: https://i.creativecommons.org/l/by-nd/4.0/88x31.png 17 | -------------------------------------------------------------------------------- /Docs/website/_includes/analytics-providers/custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/analytics-providers/google.html: -------------------------------------------------------------------------------- 1 | {%- if site.analytics.google.tracking_id -%} 2 | 3 | 4 | 14 | {%- endif -%} 15 | -------------------------------------------------------------------------------- /Docs/website/_includes/analytics.html: -------------------------------------------------------------------------------- 1 | {%- if jekyll.environment != 'development' -%} 2 | {%- if site.analytics.provider == 'google' -%} 3 | {%- include analytics-providers/google.html -%} 4 | {%- elsif site.analytics.provider == 'custom' -%} 5 | {%- include analytics-providers/custom.html -%} 6 | {%- endif -%} 7 | {%- endif -%} 8 | -------------------------------------------------------------------------------- /Docs/website/_includes/article/footer/author-profile.html: -------------------------------------------------------------------------------- 1 | {%- assign _author = include.author -%} 2 | 3 | {%- if _author.type == 'organization' -%} 4 | {%- assign _author_itemtype = 'http://schema.org/Organization' -%} 5 | {%- else -%} 6 | {%- assign _author_itemtype = 'http://schema.org/Person' -%} 7 | {%- endif -%} 8 | 9 |
10 | {%- if _author.avatar -%} 11 | {%- if _author.url -%} 12 | 13 | {%- endif -%} 14 | {%- include snippets/get-nav-url.html path=_author.avatar -%} 15 | {%- assign _author_avatar = __return -%} 16 | 17 | {%- if _author.url -%} 18 | 19 | {%- endif -%} 20 | {%- endif -%} 21 | 22 | 23 |
24 | 25 | {%- if _author.name -%} 26 | 27 |

28 | {%- if _author.url -%} 29 | 30 | 31 | {%- endif -%} 32 | {{ _author.name }} 33 | {%- if _author.url -%} 34 | 35 | {%- endif -%} 36 |

37 | {%- endif -%} 38 | 39 | {%- if _author.bio -%} 40 |

{{ _author.bio }}

41 | {%- endif -%} 42 | 45 | 46 |
47 |
48 | -------------------------------------------------------------------------------- /Docs/website/_includes/article/footer/custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/article/footer/license.html: -------------------------------------------------------------------------------- 1 | {%- include snippets/get-locale-string.html key='LICENSE_ANNOUNCE' -%} 2 | {%- assign _license_announce = __return -%} 3 | 4 | {%- if include.license -%} 5 | 6 | {%-assign _license_name = '[NAME]' | replace: "[URL]", include.license.url | replace: "[NAME]", include.license.name -%} 7 |
8 |

{{ _license_announce | replace: "[LICENSE]", _license_name }} 9 | 10 | {{ include.license.name }} 11 | 12 |

13 |
14 | {%- endif -%} 15 | -------------------------------------------------------------------------------- /Docs/website/_includes/article/footer/subscribe.html: -------------------------------------------------------------------------------- 1 | {%- assign _paths_rss = site.paths.rss | default: site.data.variables.default.paths.rss -%} 2 | {%- include snippets/get-nav-url.html path=_paths_rss -%} 3 | {%- assign _paths_rss = __return -%} 4 | {%- include snippets/get-locale-string.html key='SUBSCRIBE' -%} 5 | {%- assign _locale_nav_subscribe = __return -%} 6 |
{{ _locale_nav_subscribe }}
7 | -------------------------------------------------------------------------------- /Docs/website/_includes/article/top/custom.html: -------------------------------------------------------------------------------- 1 | 2 | Last Updated: {% last_modified_at %} 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/aside/toc.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /Docs/website/_includes/comments-providers/custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/comments-providers/disqus.html: -------------------------------------------------------------------------------- 1 | {%- if page.key and 2 | site.comments.disqus.shortname -%} 3 | 4 |
5 | 20 | 21 | 22 | {%- endif -%} 23 | -------------------------------------------------------------------------------- /Docs/website/_includes/comments-providers/gitalk.html: -------------------------------------------------------------------------------- 1 | {%- if page.key and 2 | site.comments.gitalk.clientID and 3 | site.comments.gitalk.clientSecret and 4 | site.comments.gitalk.repository and 5 | site.comments.gitalk.owner and 6 | site.comments.gitalk.admin -%} 7 | 8 | 9 | 14 | 15 | {%- include snippets/get-sources.html -%} 16 | {%- assign _sources = __return -%} 17 |
18 | {%- assign _admin = '' -%} 19 | {%- for _admin_id in site.comments.gitalk.admin -%} 20 | {%- assign _admin = _admin | append: ", '" | append: _admin_id | append: "'" -%} 21 | {%- endfor -%} 22 | {%- assign _last = _admin | size | minus: 1 -%} 23 | {%- assign _admin = _admin | slice: 2, _last -%} 24 | 38 | 39 | {%- endif -%} 40 | -------------------------------------------------------------------------------- /Docs/website/_includes/comments-providers/valine.html: -------------------------------------------------------------------------------- 1 | {%- include snippets/get-sources.html -%} 2 | {%- assign _sources = __return -%} 3 | 4 | {%- assign _VALINE_APP_ID = site.comments.valine.app_id -%} 5 | {%- assign _VALINE_APP_KEY = site.comments.valine.app_key -%} 6 | {%- assign _VALINE_PLACEHOLDER = site.comments.valine.placeholder -%} 7 | {%- assign _VALINE_VISITOR = site.comments.valine.visitor -%} 8 | {%- assign _VALINE_META = site.comments.valine.meta -%} 9 | 10 | 11 | {%- if _VALINE_APP_ID and 12 | _VALINE_APP_KEY -%} 13 | 14 |
15 | 16 | {%- if _VALINE_VISITOR -%} 17 | 18 | 19 | {%- endif -%} 20 | 21 | 45 | 46 | {%- endif -%} -------------------------------------------------------------------------------- /Docs/website/_includes/comments.html: -------------------------------------------------------------------------------- 1 | {%- if jekyll.environment != 'development' -%} 2 | {%- if site.comments.provider == 'disqus' -%} 3 | {%- include comments-providers/disqus.html -%} 4 | {%- elsif site.comments.provider == 'gitalk' -%} 5 | {%- include comments-providers/gitalk.html -%} 6 | {%- elsif site.comments.provider == 'valine' -%} 7 | {%- include comments-providers/valine.html -%} 8 | {%- elsif site.comments.provider == 'custom' -%} 9 | {%- include comments-providers/custom.html -%} 10 | {%- endif -%} 11 | {%- endif -%} 12 | -------------------------------------------------------------------------------- /Docs/website/_includes/extensions/bilibili.html: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | -------------------------------------------------------------------------------- /Docs/website/_includes/extensions/codepen.html: -------------------------------------------------------------------------------- 1 |
2 | 4 |
5 | -------------------------------------------------------------------------------- /Docs/website/_includes/extensions/netease-cloud-music.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /Docs/website/_includes/extensions/slideshare.html: -------------------------------------------------------------------------------- 1 |
2 | 6 |
7 | -------------------------------------------------------------------------------- /Docs/website/_includes/extensions/soundcloud.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Docs/website/_includes/extensions/ted.html: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | -------------------------------------------------------------------------------- /Docs/website/_includes/extensions/youtube.html: -------------------------------------------------------------------------------- 1 |
2 | 4 |
5 | -------------------------------------------------------------------------------- /Docs/website/_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {%- include snippets/get-article-title.html article=page -%} 6 | {%- if __return -%}{{ __return }} - {{ site.title }}{%- else -%}{{ site.title }}{%- endif -%} 7 | 8 | 9 | 10 | 11 | {%- assign _paths_rss = site.paths.rss | default: site.data.variables.default.paths.rss -%} 12 | {%- include snippets/get-nav-url.html path=_paths_rss -%} 13 | 14 | 15 | {%- include head/favicon.html -%} 16 | 17 | {%- include snippets/prepend-baseurl.html path='/assets/css/main.css' -%} 18 | 19 | 20 | {%- include snippets/get-sources.html -%} 21 | {%- assign _sources = __return -%} 22 | 23 | 24 | {%- include head/custom.html -%} 25 | -------------------------------------------------------------------------------- /Docs/website/_includes/head/custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/head/favicon.html: -------------------------------------------------------------------------------- 1 | 2 | {%- include snippets/prepend-baseurl.html path='/assets/apple-touch-icon.png' -%} 3 | 4 | 5 | {%- include snippets/prepend-baseurl.html path='/assets/favicon-32x32.png' -%} 6 | 7 | 8 | {%- include snippets/prepend-baseurl.html path='/assets/favicon-16x16.png' -%} 9 | 10 | 11 | {%- include snippets/prepend-baseurl.html path='/assets/site.webmanifest' -%} 12 | 13 | 14 | {%- include snippets/prepend-baseurl.html path='/assets/safari-pinned-tab.svg' -%} 15 | 16 | 17 | {%- include snippets/prepend-baseurl.html path='/assets/favicon.ico' -%} 18 | 19 | 20 | 21 | 22 | {%- include snippets/prepend-baseurl.html path='/assets/browserconfig.xml' -%} 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Docs/website/_includes/main/bottom/custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/main/top/custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/markdown-enhancements.html: -------------------------------------------------------------------------------- 1 | {%- include snippets/assign.html target=site.data.variables.default.chart 2 | source0=site.chart source1=page.chart -%} 3 | {%- if __return == true -%} 4 | {%- include markdown-enhancements/chart.html -%} 5 | {%- endif -%} 6 | 7 | {%- include snippets/assign.html target=site.data.variables.default.mathjax 8 | source0=site.mathjax source1=page.mathjax -%} 9 | {%- if __return == true -%} 10 | {%- include markdown-enhancements/mathjax.html -%} 11 | {%- endif -%} 12 | 13 | {%- include snippets/assign.html target=site.data.variables.default.mermaid 14 | source0=site.mermaid source1=page.mermaid -%} 15 | {%- if __return == true -%} 16 | {%- include markdown-enhancements/mermaid.html -%} 17 | {%- endif -%} 18 | -------------------------------------------------------------------------------- /Docs/website/_includes/markdown-enhancements/chart.html: -------------------------------------------------------------------------------- 1 | {%- include snippets/get-sources.html -%} 2 | {%- assign _sources = __return -%} 3 | 16 | -------------------------------------------------------------------------------- /Docs/website/_includes/markdown-enhancements/mathjax.html: -------------------------------------------------------------------------------- 1 | {%- include snippets/get-sources.html -%} 2 | {%- assign _sources = __return -%} 3 | 4 | {%- include snippets/assign.html target=site.data.variables.default.mathjax_autoNumber 5 | source0=site.mathjax_autoNumber source1=page.mathjax_autoNumber -%} 6 | {%- assign _mathjax_autoNumber = __return -%} 7 | 8 | 17 | 18 | -------------------------------------------------------------------------------- /Docs/website/_includes/markdown-enhancements/mermaid.html: -------------------------------------------------------------------------------- 1 | {%- include snippets/get-sources.html -%} 2 | {%- assign _sources = __return -%} 3 | 11 | -------------------------------------------------------------------------------- /Docs/website/_includes/pageview-providers/custom/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/pageview-providers/custom/post.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /Docs/website/_includes/pageview-providers/leancloud/home.html: -------------------------------------------------------------------------------- 1 | {%- include snippets/get-sources.html -%} 2 | {%- assign _sources = __return -%} 3 | 4 | {%- assign _LEANCLOUD_APP_ID = site.pageview.leancloud.app_id -%} 5 | {%- assign _LEANCLOUD_APP_KEY = site.pageview.leancloud.app_key -%} 6 | {%- assign _LEANCLOUD_APP_CLASS = site.pageview.leancloud.app_class -%} 7 | 8 | {%- if _LEANCLOUD_APP_ID and 9 | _LEANCLOUD_APP_KEY and 10 | _LEANCLOUD_APP_CLASS -%} 11 | 12 | 15 | 31 | 32 | {%- endif -%} 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /Docs/website/_includes/pageview-providers/leancloud/post.html: -------------------------------------------------------------------------------- 1 | {%- include snippets/get-sources.html -%} 2 | {%- assign _sources = __return -%} 3 | 4 | {%- assign _LEANCLOUD_APP_ID = site.pageview.leancloud.app_id -%} 5 | {%- assign _LEANCLOUD_APP_KEY = site.pageview.leancloud.app_key -%} 6 | {%- assign _LEANCLOUD_APP_CLASS = site.pageview.leancloud.app_class -%} 7 | 8 | {%- if page.key and 9 | _LEANCLOUD_APP_ID and 10 | _LEANCLOUD_APP_KEY and 11 | _LEANCLOUD_APP_CLASS -%} 12 | 13 | 16 | 30 | 31 | {%- endif -%} -------------------------------------------------------------------------------- /Docs/website/_includes/pageview.html: -------------------------------------------------------------------------------- 1 | {%- include snippets/assign.html target=site.data.variables.default.pageview source0=page.pageview -%} 2 | {%- assign _pageview = __return -%} 3 | 4 | 5 | {%- if page.layout == "home" -%} 6 | 7 | {%- if jekyll.environment != "development" -%} 8 | {%- if site.pageview.provider == 'leancloud' -%} 9 | {%- include pageview-providers/leancloud/home.html -%} 10 | {%- elsif site.pageview.provider == 'custom' -%} 11 | {%- include pageview-providers/custom/home.html -%} 12 | {%- endif -%} 13 | {%- endif -%} 14 | 15 | 16 | {%- elsif page.layout == "article" -%} 17 | {%- if _pageview -%} 18 | 19 | {%- if jekyll.environment != "development" and 20 | jekyll.environment != "beta" -%} 21 | {%- if site.pageview.provider == 'leancloud' -%} 22 | {%- include pageview-providers/leancloud/post.html -%} 23 | {%- elsif site.pageview.provider == 'custom' -%} 24 | {%- include pageview-providers/custom/post.html -%} 25 | {%- endif -%} 26 | {%- endif -%} 27 | 28 | {%- endif -%} 29 | {%- endif -%} 30 | -------------------------------------------------------------------------------- /Docs/website/_includes/scripts/article.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var SOURCES = window.TEXT_VARIABLES.sources; 3 | window.Lazyload.js(SOURCES.jquery, function() { 4 | $(function() { 5 | var $this ,$scroll; 6 | var $articleContent = $('.js-article-content'); 7 | var hasSidebar = $('.js-page-root').hasClass('layout--page--sidebar'); 8 | var scroll = hasSidebar ? '.js-page-main' : 'html, body'; 9 | $scroll = $(scroll); 10 | 11 | $articleContent.find('.highlight').each(function() { 12 | $this = $(this); 13 | $this.attr('data-lang', $this.find('code').attr('data-lang')); 14 | }); 15 | $articleContent.find('h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]').each(function() { 16 | $this = $(this); 17 | $this.append($('').html('')); 18 | }); 19 | $articleContent.on('click', '.anchor', function() { 20 | $scroll.scrollToAnchor('#' + $(this).parent().attr('id'), 400); 21 | }); 22 | }); 23 | }); 24 | })(); 25 | -------------------------------------------------------------------------------- /Docs/website/_includes/scripts/aside/affix.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var SOURCES = window.TEXT_VARIABLES.sources; 3 | window.Lazyload.js(SOURCES.jquery, function() { 4 | var $window = $(window), $pageFooter = $('.js-page-footer'); 5 | var $pageAside = $('.js-page-aside'); 6 | var affix; 7 | var tocDisabled = false; 8 | var hasSidebar = $('.js-page-root').hasClass('layout--page--sidebar'); 9 | 10 | affix = $pageAside.affix({ 11 | offsetBottom: $pageFooter.outerHeight(), 12 | scrollTarget: hasSidebar ? '.js-page-main' : null, 13 | scroller: hasSidebar ? '.js-page-main' : null, 14 | scroll: hasSidebar ? $('.js-page-main').children() : null, 15 | disabled: tocDisabled 16 | }); 17 | 18 | $window.on('resize', window.throttle(function() { 19 | affix && affix.setOptions({ 20 | disabled: tocDisabled 21 | }); 22 | }, 100)); 23 | 24 | window.pageAsideAffix = affix; 25 | }); 26 | })(); 27 | -------------------------------------------------------------------------------- /Docs/website/_includes/scripts/aside/toc.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var SOURCES = window.TEXT_VARIABLES.sources; 3 | var TOC_SELECTOR = window.TEXT_VARIABLES.site.toc.selectors; 4 | window.Lazyload.js(SOURCES.jquery, function() { 5 | var $window = $(window); 6 | var $articleContent = $('.js-article-content'); 7 | var $tocRoot = $('.js-toc-root'), $col2 = $('.js-col-aside'); 8 | var toc; 9 | var tocDisabled = false; 10 | var hasSidebar = $('.js-page-root').hasClass('layout--page--sidebar'); 11 | var hasToc = $articleContent.find(TOC_SELECTOR).length > 0; 12 | 13 | function disabled() { 14 | return $col2.css('display') === 'none' || !hasToc; 15 | } 16 | 17 | tocDisabled = disabled(); 18 | 19 | toc = $tocRoot.toc({ 20 | selectors: TOC_SELECTOR, 21 | container: $articleContent, 22 | scrollTarget: hasSidebar ? '.js-page-main' : null, 23 | scroller: hasSidebar ? '.js-page-main' : null, 24 | disabled: tocDisabled 25 | }); 26 | 27 | $window.on('resize', window.throttle(function() { 28 | tocDisabled = disabled(); 29 | toc && toc.setOptions({ 30 | disabled: tocDisabled 31 | }); 32 | }, 100)); 33 | 34 | }); 35 | })(); 36 | -------------------------------------------------------------------------------- /Docs/website/_includes/scripts/common.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | var $root = document.getElementsByClassName('root')[0]; 3 | if (window.hasEvent('touchstart')) { 4 | $root.dataset.isTouch = true; 5 | document.addEventListener('touchstart', function(){}, false); 6 | } 7 | })(); 8 | -------------------------------------------------------------------------------- /Docs/website/_includes/scripts/components/sidebar.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var SOURCES = window.TEXT_VARIABLES.sources; 3 | 4 | window.Lazyload.js(SOURCES.jquery, function() { 5 | var $pageMask = $('.js-page-mask'); 6 | var $pageRoot = $('.js-page-root'); 7 | var $sidebarShow = $('.js-sidebar-show'); 8 | var $sidebarHide = $('.js-sidebar-hide'); 9 | 10 | function freeze(e) { 11 | if (e.target === $pageMask[0]) { 12 | e.preventDefault(); 13 | } 14 | } 15 | function stopBodyScrolling(bool) { 16 | if (bool === true) { 17 | window.addEventListener('touchmove', freeze, { passive: false }); 18 | } else { 19 | window.removeEventListener('touchmove', freeze, { passive: false }); 20 | } 21 | } 22 | 23 | $sidebarShow.on('click', function() { 24 | stopBodyScrolling(true); $pageRoot.addClass('show-sidebar'); 25 | }); 26 | $sidebarHide.on('click', function() { 27 | stopBodyScrolling(false); $pageRoot.removeClass('show-sidebar'); 28 | }); 29 | }); 30 | })(); 31 | -------------------------------------------------------------------------------- /Docs/website/_includes/scripts/home.js: -------------------------------------------------------------------------------- 1 | /*(function () { 2 | 3 | })();*/ 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/scripts/lib/scroll-to.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var SOURCES = window.TEXT_VARIABLES.sources; 3 | window.Lazyload.js(SOURCES.jquery, function() { 4 | function scrollToAnchor(anchor, duration, callback) { 5 | var $root = this; 6 | $root.animate({ scrollTop: $(anchor).position().top }, duration, function() { 7 | window.history.replaceState(null, '', window.location.href.split('#')[0] + anchor); 8 | callback && callback(); 9 | }); 10 | } 11 | $.fn.scrollToAnchor = scrollToAnchor; 12 | }); 13 | })(); 14 | -------------------------------------------------------------------------------- /Docs/website/_includes/scripts/lib/throttle.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | window.throttle = function(func, wait) { 3 | var args, result, thisArg, timeoutId, lastCalled = 0; 4 | 5 | function trailingCall() { 6 | lastCalled = new Date; 7 | timeoutId = null; 8 | result = func.apply(thisArg, args); 9 | } 10 | return function() { 11 | var now = new Date, 12 | remaining = wait - (now - lastCalled); 13 | 14 | args = arguments; 15 | thisArg = this; 16 | 17 | if (remaining <= 0) { 18 | clearTimeout(timeoutId); 19 | timeoutId = null; 20 | lastCalled = now; 21 | result = func.apply(thisArg, args); 22 | } else if (!timeoutId) { 23 | timeoutId = setTimeout(trailingCall, remaining); 24 | } 25 | return result; 26 | }; 27 | }; 28 | })(); 29 | -------------------------------------------------------------------------------- /Docs/website/_includes/scripts/page.js: -------------------------------------------------------------------------------- 1 | /*(function () { 2 | 3 | })();*/ 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/scripts/utils/imagesLoad.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | window.imagesLoad = function(images) { 3 | images = images || document.getElementsByTagName('img'); 4 | var imagesCount = images.length, loadedCount = 0, image; 5 | var i, j, loaded = false, cbs = []; 6 | imagesCount < 1 && (loaded = true); 7 | for (i = 0; i < imagesCount; i++) { 8 | image = images[i]; 9 | image.complete ? handleImageLoad() : image.addEventListener('load', handleImageLoad); 10 | } 11 | function handleImageLoad() { 12 | loadedCount++; 13 | if (loadedCount === imagesCount) { 14 | loaded = true; 15 | if (cbs.length > 0) { 16 | for (j = 0; j < cbs.length; j++) { 17 | cbs[j](); 18 | } 19 | } 20 | } 21 | } 22 | return { 23 | then: function(cb) { 24 | cb && (loaded ? cb() : (cbs.push(cb))); 25 | } 26 | }; 27 | }; 28 | })(); 29 | -------------------------------------------------------------------------------- /Docs/website/_includes/scripts/utils/utils.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | window.isArray = function(val) { 3 | return Object.prototype.toString.call(val) === '[object Array]'; 4 | }; 5 | window.isString = function(val) { 6 | return typeof val === 'string'; 7 | }; 8 | 9 | window.hasEvent = function(event) { 10 | return 'on'.concat(event) in window.document; 11 | }; 12 | 13 | window.isOverallScroller = function(node) { 14 | return node === document.documentElement || node === document.body || node === window; 15 | }; 16 | 17 | window.isFormElement = function(node) { 18 | var tagName = node.tagName; 19 | return tagName === 'INPUT' || tagName === 'SELECT' || tagName === 'TEXTAREA'; 20 | }; 21 | 22 | window.pageLoad = (function () { 23 | var loaded = false, cbs = []; 24 | window.addEventListener('load', function () { 25 | var i; 26 | loaded = true; 27 | if (cbs.length > 0) { 28 | for (i = 0; i < cbs.length; i++) { 29 | cbs[i](); 30 | } 31 | } 32 | }); 33 | return { 34 | then: function(cb) { 35 | cb && (loaded ? cb() : (cbs.push(cb))); 36 | } 37 | }; 38 | })(); 39 | })(); 40 | -------------------------------------------------------------------------------- /Docs/website/_includes/scripts/variables.html: -------------------------------------------------------------------------------- 1 | {%- include snippets/get-sources.html -%} 2 | {%- assign _sources = __return -%} 3 | 4 | {%- include snippets/get-nav-url.html path="/assets/search.js" -%} 5 | {%- assign _paths_search_js = __return -%} 6 | 7 | 36 | -------------------------------------------------------------------------------- /Docs/website/_includes/search-providers/custom/search.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/search-providers/default/search-data.js: -------------------------------------------------------------------------------- 1 | window.TEXT_SEARCH_DATA={ 2 | {%- for _collection in site.collections -%} 3 | {%- unless forloop.first -%},{%- endunless -%} 4 | '{{ _collection.label }}':[ 5 | {%- for _article in _collection.docs -%} 6 | {%- unless forloop.first -%},{%- endunless -%} 7 | {'title':{{ _article.title | jsonify }}, 8 | {%- include snippets/prepend-baseurl.html path=_article.url -%} 9 | {%- assign _url = __return -%} 10 | 'url':{{ _url | jsonify }}} 11 | {%- endfor -%} 12 | ] 13 | {%- endfor -%} 14 | }; 15 | -------------------------------------------------------------------------------- /Docs/website/_includes/search-providers/default/search.html: -------------------------------------------------------------------------------- 1 | 18 | 19 | -------------------------------------------------------------------------------- /Docs/website/_includes/search-providers/google-custom-search-engine/search.html: -------------------------------------------------------------------------------- 1 | {%- if site.search.google.custom_search_engine_id -%} 2 | 10 | 20 | 21 | {%- endif -%} 22 | -------------------------------------------------------------------------------- /Docs/website/_includes/search-providers/google-custom-search-engine/search.js: -------------------------------------------------------------------------------- 1 | var SOURCES = window.TEXT_VARIABLES.sources; 2 | window.Lazyload.js(SOURCES.jquery, function() { 3 | /* global google */ 4 | var search = (window.search || (window.search = {})); 5 | var searchBox, searchInput, clearIcon, searchModal; 6 | 7 | search.clear = function() { 8 | searchBox && searchBox.clearAllResults(); 9 | }; 10 | search.onShow = function() { 11 | searchInput && searchInput.focus(); 12 | }; 13 | search.onHide = function() { 14 | searchInput && searchInput.blur(); 15 | }; 16 | 17 | window.__gcse = { 18 | callback: function() { 19 | searchBox = google.search.cse.element.getElement('search-box'); 20 | searchInput = document.getElementById('gsc-i-id1'); 21 | clearIcon = document.getElementById('gs_cb50'); 22 | searchModal = search.searchModal; 23 | searchModal && searchModal.$el && searchModal.$el.on('click', function(e) { 24 | (e.target === this || e.target === clearIcon || e.target.className === 'gs-title') && searchModal.hide(); 25 | }); 26 | } 27 | }; 28 | var cx = '{{ site.search.google.custom_search_engine_id }}'; // Insert your own Custom Search Engine ID here 29 | var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true; 30 | gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + 31 | '//cse.google.com/cse.js?cx=' + cx; 32 | var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s); 33 | }); 34 | -------------------------------------------------------------------------------- /Docs/website/_includes/search.html: -------------------------------------------------------------------------------- 1 | {%- include snippets/get-locale-string.html key='CANCEL' -%} 2 | {%- assign _locale_cancel = __return -%} 3 | {%- include snippets/get-locale-string.html key='SEARCH' -%} 4 | {%- assign _locale_search = __return -%} 5 | 6 | {%- if site.search.provider == 'google' -%} 7 | 8 | {%- endif -%} 9 | 10 | {%- if site.search.provider -%} 11 | 12 | {%- endif -%} 13 | 14 | {%- if site.search.provider == 'default' -%} 15 | {%- include search-providers/default/search.html -%} 16 | {%- elsif site.search.provider == 'google' -%} 17 | {%- include search-providers/google-custom-search-engine/search.html -%} 18 | {%- elsif site.search.provider == 'custom' -%} 19 | {%- include search-providers/custom/search.html -%} 20 | {%- endif -%} 21 | -------------------------------------------------------------------------------- /Docs/website/_includes/sharing-providers/addthis.html: -------------------------------------------------------------------------------- 1 | 2 | {%- assign _SHARING_ADDTHIS_ID = site.sharing.addthis.id -%} 3 | 4 | {%- if _SHARING_ADDTHIS_ID -%} 5 | 7 |
8 | {%- endif -%} 9 | 10 | -------------------------------------------------------------------------------- /Docs/website/_includes/sharing-providers/addtoany.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | -------------------------------------------------------------------------------- /Docs/website/_includes/sharing-providers/custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/sharing.html: -------------------------------------------------------------------------------- 1 | {%- if site.sharing.provider == 'addtoany' -%} 2 | {%- include sharing-providers/addtoany.html -%} 3 | {%- elsif site.sharing.provider == 'addthis' -%} 4 | {%- include sharing-providers/addthis.html -%} 5 | {%- elsif site.sharing.provider == 'custom' -%} 6 | {%- include sharing-providers/custom.html -%} 7 | {%- endif -%} 8 | -------------------------------------------------------------------------------- /Docs/website/_includes/sidebar/toc.html: -------------------------------------------------------------------------------- 1 | {%- if page.sidebar.nav -%} 2 | 25 | {%- endif -%} -------------------------------------------------------------------------------- /Docs/website/_includes/snippets/assign.html: -------------------------------------------------------------------------------- 1 | {%- if include.source1 == nil -%} 2 | {%- if include.source0 == nil -%} 3 | {%- assign __return = include.target -%} 4 | {%- else -%} 5 | {%- assign __return = include.source0 -%} 6 | {%- endif -%} 7 | {%- else -%} 8 | {%- assign __return = include.source1 -%} 9 | {%- endif -%} 10 | -------------------------------------------------------------------------------- /Docs/website/_includes/snippets/get-article-title.html: -------------------------------------------------------------------------------- 1 | {%- assign _title = include.article.title | default: layout.title -%} 2 | {%- assign _titles = include.article.titles | default: layout.titles -%} 3 | 4 | {%- if _title -%} 5 | {%- assign __return = _title -%} 6 | {%- elsif _titles -%} 7 | {%- include snippets/get-string-from-locale-config.html locale=_titles -%} 8 | {%- assign __return = __return -%} 9 | {%- else -%} 10 | {%- assign __return = nil -%} 11 | {%- endif -%} 12 | -------------------------------------------------------------------------------- /Docs/website/_includes/snippets/get-lang.html: -------------------------------------------------------------------------------- 1 | {%- assign __return = site.data.variables.default.lang -%} 2 | {%- if page.lang -%} 3 | {%- assign __return = page.lang -%} 4 | {%- elsif site.lang -%} 5 | {%- assign __return = site.lang -%} 6 | {%- endif -%} 7 | -------------------------------------------------------------------------------- /Docs/website/_includes/snippets/get-locale-string.html: -------------------------------------------------------------------------------- 1 | {%- include snippets/get-lang.html -%} 2 | {%- assign _lang = __return -%} 3 | {%- assign _local_lang = site.data.locale[_lang] -%} 4 | {%- assign _local_lang_en = site.data.locale.en -%} 5 | {%- if _local_lang == nil -%} 6 | {%- assign _local_lang = _local_lang_en -%} 7 | {%- endif -%} 8 | {%- if _local_lang[include.key] -%} 9 | {%- assign __return = _local_lang[include.key] -%} 10 | {%- else -%} 11 | {%- assign __return = _local_lang_en[include.key] -%} 12 | {%- endif -%} 13 | -------------------------------------------------------------------------------- /Docs/website/_includes/snippets/get-nav-url.html: -------------------------------------------------------------------------------- 1 | {%- assign _pre7 = include.path | slice: 0, 7 -%} 2 | {%- assign _pre8 = include.path | slice: 0, 8 -%} 3 | {%- if _pre7 == 'http://' or _pre8 == 'https://' -%} 4 | {%- assign __return = include.path -%} 5 | {%- else -%} 6 | {%- include snippets/prepend-baseurl.html path=include.path -%} 7 | {%- assign __return = __return -%} 8 | {%- endif -%} 9 | -------------------------------------------------------------------------------- /Docs/website/_includes/snippets/get-sources.html: -------------------------------------------------------------------------------- 1 | {%- assign _sources = site.sources | default: site.data.variables.default.sources -%} 2 | {%- assign __return = site.data.variables.sources[_sources] -%} 3 | -------------------------------------------------------------------------------- /Docs/website/_includes/snippets/get-string-from-locale-config.html: -------------------------------------------------------------------------------- 1 | {%- include snippets/get-lang.html -%} 2 | {%- assign _lang = __return -%} 3 | {%- if include.locale[_lang] -%} 4 | {%- assign __return = include.locale[_lang] -%} 5 | {%- else -%} 6 | {%- assign __return = include.locale.en -%} 7 | {%- endif -%} 8 | -------------------------------------------------------------------------------- /Docs/website/_includes/snippets/is_collection.html: -------------------------------------------------------------------------------- 1 | {%- assign _page_path_first_char = include.page.path | slice: 0, 1 -%} 2 | {%- if _page_path_first_char == '_' -%} 3 | {%- assign __return = true -%} 4 | {%- else -%} 5 | {%- assign __return = false -%} 6 | {%- endif -%} 7 | -------------------------------------------------------------------------------- /Docs/website/_includes/snippets/page-url.html: -------------------------------------------------------------------------------- 1 | {%- include snippets/prepend-baseurl.html path=page.url -%} 2 | {{ __return | prepend: site.url }} -------------------------------------------------------------------------------- /Docs/website/_includes/snippets/prepend-baseurl.html: -------------------------------------------------------------------------------- 1 | {%- assign _include_path_replace_index = include.path | replace: 'index.html', '' -%} 2 | {%- include snippets/prepend-path.html 3 | path=_include_path_replace_index 4 | prepend_path=site.baseurl -%} -------------------------------------------------------------------------------- /Docs/website/_includes/snippets/prepend-path.html: -------------------------------------------------------------------------------- 1 | {%- assign __return = include.path | prepend: '/' | prepend: include.prepend_path | replace:'///','/' | replace:'//','/' -%} 2 | -------------------------------------------------------------------------------- /Docs/website/_includes/svg/icon/social/behance.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/svg/icon/social/douban.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Docs/website/_includes/svg/icon/social/facebook.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/svg/icon/social/flicker.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Docs/website/_includes/svg/icon/social/github.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/svg/icon/social/linkedin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/svg/icon/social/mail.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Docs/website/_includes/svg/icon/social/medium.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/svg/icon/social/npm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Docs/website/_includes/svg/icon/social/qq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/svg/icon/social/twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_includes/svg/icon/social/zhihu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Docs/website/_layouts/404.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | title: 404 4 | show_title: false 5 | --- 6 |
7 |
8 |

404

9 |

Page not found :(

10 |
11 |
12 | 13 | {{ content }} 14 | -------------------------------------------------------------------------------- /Docs/website/_layouts/archive.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | titles: 4 | # @start locale config 5 | en : &EN Archive 6 | en-GB : *EN 7 | en-US : *EN 8 | en-CA : *EN 9 | en-AU : *EN 10 | zh-Hans : &ZH_HANS 归档 11 | zh : *ZH_HANS 12 | zh-CN : *ZH_HANS 13 | zh-SG : *ZH_HANS 14 | zh-Hant : &ZH_HANT 歸檔 15 | zh-TW : *ZH_HANT 16 | zh-HK : *ZH_HANT 17 | ko : &KO 아카이브 18 | ko-KR : *KO 19 | fr : &FR Archives 20 | fr-BE : *FR 21 | fr-CA : *FR 22 | fr-CH : *FR 23 | fr-FR : *FR 24 | fr-LU : *FR 25 | # @end locale config 26 | --- 27 | 28 |
29 | {%- include tags.html -%} 30 |
31 | {%- include article-list.html articles=site.posts type='brief' show_info=true reverse=true group_by='year' -%} 32 |
33 |
34 | 35 | 38 | 39 | {{ content }} 40 | -------------------------------------------------------------------------------- /Docs/website/_layouts/article.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | type: article 4 | --- 5 | 6 | {%- include snippets/assign.html 7 | target = site.data.variables.default.page.sharing 8 | source0=layout.sharing source1=page.sharing -%} 9 | {%- assign _sharing = __return -%} 10 | 11 |
12 | {%- include article/top/custom.html -%} 13 | 14 |
{{ content }}
15 | 16 | {%- if _sharing -%} 17 |
{%- include sharing.html -%}
18 | {%- endif -%} 19 | 20 |
21 | {%- include article-footer.html -%} 22 | {%- include article-section-navigator.html -%} 23 |
24 | 25 |
26 | 27 | 30 | -------------------------------------------------------------------------------- /Docs/website/_layouts/base.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: none 3 | --- 4 | 5 | {%- include snippets/get-lang.html -%} 6 | 7 | 8 | {%- include analytics.html -%} 9 | {%- include head.html -%} 10 | 15 | {%- include scripts/variables.html -%} 16 | 17 | 18 |
19 | {{ content }} 20 |
21 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Docs/website/_layouts/home.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: articles 3 | titles: 4 | # @start locale config 5 | en : &EN Home 6 | en-GB : *EN 7 | en-US : *EN 8 | en-CA : *EN 9 | en-AU : *EN 10 | zh-Hans : &ZH_HANS 主页 11 | zh : *ZH_HANS 12 | zh-CN : *ZH_HANS 13 | zh-SG : *ZH_HANS 14 | zh-Hant : &ZH_HANT 主頁 15 | zh-TW : *ZH_HANT 16 | zh-HK : *ZH_HANT 17 | ko : &KO 홈 18 | ko-KR : *KO 19 | fr : &FR Accueil 20 | fr-BE : *FR 21 | fr-CA : *FR 22 | fr-CH : *FR 23 | fr-FR : *FR 24 | fr-LU : *FR 25 | # @end locale config 26 | show_title: false 27 | articles: 28 | data_source: paginator.posts 29 | article_type: BlogPosting 30 | show_cover: false 31 | show_excerpt: true 32 | show_readmore: true 33 | show_info: true 34 | --- 35 |
36 | {%- include paginator.html -%} 37 |
38 | 41 | 42 | {{ content }} 43 | -------------------------------------------------------------------------------- /Docs/website/_layouts/none.html: -------------------------------------------------------------------------------- 1 | {{ content }} 2 | -------------------------------------------------------------------------------- /Docs/website/_sass/additional/_alert.scss: -------------------------------------------------------------------------------- 1 | .article__content { 2 | p.success { 3 | padding: map-get($spacers, 2) map-get($spacers, 3); 4 | background-color: rgba($green, .1); 5 | border: 1px solid $green; 6 | border-radius: map-get($base, border-radius); 7 | } 8 | 9 | p.info { 10 | padding: map-get($spacers, 2) map-get($spacers, 3); 11 | background-color: rgba($blue, .1); 12 | border: 1px solid $blue; 13 | border-radius: map-get($base, border-radius); 14 | } 15 | 16 | p.warning { 17 | padding: map-get($spacers, 2) map-get($spacers, 3); 18 | background-color: rgba($yellow, .1); 19 | border: 1px solid $yellow; 20 | border-radius: map-get($base, border-radius); 21 | } 22 | 23 | p.error { 24 | padding: map-get($spacers, 2) map-get($spacers, 3); 25 | background-color: rgba($red, .1); 26 | border: 1px solid $red; 27 | border-radius: map-get($base, border-radius); 28 | } 29 | 30 | p.note { 31 | padding: map-get($spacers, 2) map-get($spacers, 3); 32 | background-color: rgba($grey, .1); 33 | border: 1px solid $grey; 34 | border-radius: map-get($base, border-radius); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Docs/website/_sass/additional/_photo-frame.scss: -------------------------------------------------------------------------------- 1 | .article__content { 2 | img.shadow, .shadow > img { 3 | @include box-shadow(); 4 | } 5 | 6 | img.border, .border > img { 7 | border: 1px solid $border-color-l; 8 | } 9 | 10 | img.rounded, .rounded > img { 11 | border-radius: map-get($base, border-radius); 12 | } 13 | 14 | img.circle, .circle > img { 15 | border-radius: 50%; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Docs/website/_sass/additional/_tag.scss: -------------------------------------------------------------------------------- 1 | .article__content { 2 | code.success { 3 | color: $text-color-function; 4 | background-color: $green; 5 | } 6 | 7 | code.info { 8 | color: $text-color-function; 9 | background-color: $blue; 10 | } 11 | 12 | code.warning { 13 | color: $text-color-function; 14 | background-color: $yellow; 15 | } 16 | 17 | code.error { 18 | color: $text-color-function; 19 | background-color: $red; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Docs/website/_sass/animate/_fade-in-down.scss: -------------------------------------------------------------------------------- 1 | @include keyframes(fade-in-down) { 2 | from { 3 | opacity: 0; 4 | @include transform(translateY(-2rem)); 5 | } 6 | to { 7 | opacity: 1; 8 | @include transform(translateY(0)); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Docs/website/_sass/animate/_fade-in-up.scss: -------------------------------------------------------------------------------- 1 | @include keyframes(fade-in-up) { 2 | from { 3 | opacity: 0; 4 | @include transform(translateY(2rem)); 5 | } 6 | to { 7 | opacity: 1; 8 | @include transform(translateY(0)); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Docs/website/_sass/animate/_fade-in.scss: -------------------------------------------------------------------------------- 1 | @include keyframes(fade-in) { 2 | from { 3 | opacity: 0; 4 | } 5 | to { 6 | opacity: 1; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/_classes.scss: -------------------------------------------------------------------------------- 1 | /* stylelint-disable at-rule-name-space-after, at-rule-semicolon-space-before */ 2 | @charset "utf-8"; 3 | @import 4 | "common/classes/animation", 5 | "common/classes/transform", 6 | "common/classes/transition", 7 | "common/classes/user-select", 8 | 9 | "common/classes/clearfix", 10 | "common/classes/media", 11 | "common/classes/clickable", 12 | "common/classes/display", 13 | "common/classes/flex", 14 | "common/classes/horizontal-rules", 15 | "common/classes/pseudo", 16 | "common/classes/link", 17 | "common/classes/text", 18 | "common/classes/overflow", 19 | "common/classes/shadow", 20 | "common/classes/spacing", 21 | "common/classes/split-line", 22 | "common/classes/grid" 23 | ; 24 | /* stylelint-enable */ 25 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/_function.scss: -------------------------------------------------------------------------------- 1 | @function get-color-theme($color) { 2 | @if lightness($color) < 15% { 3 | @return "dark"; 4 | } @else { 5 | @return "light"; 6 | } 7 | } 8 | 9 | @function breakpoint-infix($name, $breakpoints: default) { 10 | @if $breakpoints == default { 11 | $breakpoints: $responsive; 12 | } 13 | $min: map-get($breakpoints, $name); 14 | @return if($min != 0, "#{$name}-", ""); 15 | } 16 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/_print.scss: -------------------------------------------------------------------------------- 1 | @media print { 2 | a { 3 | @include plain() { 4 | text-decoration: underline; 5 | } 6 | @include hover() { 7 | text-decoration: underline; 8 | } 9 | @include active() { 10 | text-decoration: underline; 11 | } 12 | } 13 | 14 | img, 15 | tr, 16 | pre, 17 | blockquote { 18 | page-break-inside: avoid; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/classes/_animation.scss: -------------------------------------------------------------------------------- 1 | @mixin animation($value) { 2 | -webkit-animation: $value; 3 | animation: $value; 4 | } 5 | 6 | @mixin keyframes($name) { 7 | @-webkit-keyframes #{$name} { 8 | @content; 9 | } 10 | @keyframes #{$name} { 11 | @content; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/classes/_clearfix.scss: -------------------------------------------------------------------------------- 1 | @mixin clearfix() { 2 | &::after { 3 | display: table; 4 | clear: both; 5 | content: ""; 6 | } 7 | } 8 | 9 | .clearfix { 10 | @include clearfix(); 11 | } 12 | 13 | .left { 14 | float: left; 15 | } 16 | 17 | .right { 18 | float: right; 19 | } 20 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/classes/_display.scss: -------------------------------------------------------------------------------- 1 | @each $breakpoint in map-keys($responsive) { 2 | @include media-breakpoint-up($breakpoint) { 3 | .d-#{breakpoint-infix($breakpoint)}none { 4 | display: none !important; 5 | } 6 | } 7 | } 8 | 9 | .d-print-none { 10 | @media print { 11 | display: none !important; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/classes/_horizontal-rules.scss: -------------------------------------------------------------------------------- 1 | @mixin horizontal-rules() { 2 | &::before { 3 | display: block; 4 | font-size: map-get($base, font-size-h2); 5 | color: $text-color-l; 6 | text-align: center; 7 | letter-spacing: map-get($spacers, 4); 8 | content: "..."; 9 | } 10 | } 11 | 12 | .horizontal-rules { 13 | @include horizontal-rules(); 14 | } 15 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/classes/_link.scss: -------------------------------------------------------------------------------- 1 | @mixin link-colors($clr, $hover-clr: default, $active-clr: default, $focus-clr: null, $theme: default, $ignore-path: false) { 2 | @include plain() { 3 | text-decoration: none; 4 | } 5 | @include hover() { 6 | text-decoration: underline; 7 | } 8 | @include active() { 9 | text-decoration: none; 10 | } 11 | @include clickable($clr, null, $hover-clr, null, $active-clr, null, $focus-clr, null, $theme, $ignore-path); 12 | } 13 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/classes/_media.scss: -------------------------------------------------------------------------------- 1 | @mixin media-breakpoint-down($name, $breakpoints: default) { 2 | @if $breakpoints == default { 3 | $breakpoints: $responsive; 4 | } 5 | @media (max-width: map-get($breakpoints, $name) - 1) { 6 | @content; 7 | } 8 | } 9 | 10 | @mixin media-breakpoint-up($name, $breakpoints: default) { 11 | @if $breakpoints == default { 12 | $breakpoints: $responsive; 13 | } 14 | @media (min-width: map-get($breakpoints, $name)) { 15 | @content; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/classes/_overflow.scss: -------------------------------------------------------------------------------- 1 | @mixin overflow($overflow: auto, $direction: default) { 2 | @if $direction == default { 3 | overflow: $overflow; 4 | } @else if $direction == "x" { 5 | @if $overflow == auto { 6 | overflow: hidden; 7 | } 8 | overflow-x: $overflow; 9 | } @else if $direction == "y" { 10 | @if $overflow == auto { 11 | overflow: hidden; 12 | } 13 | overflow-y: $overflow; 14 | } 15 | @if $overflow == auto { 16 | -webkit-overflow-scrolling: touch; 17 | } 18 | } 19 | 20 | .of-auto { 21 | @include overflow(auto); 22 | } 23 | 24 | .of-hidden { 25 | @include overflow(hidden); 26 | } 27 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/classes/_pseudo.scss: -------------------------------------------------------------------------------- 1 | @mixin plain() { 2 | &, 3 | &:link, 4 | &:visited { 5 | @content; 6 | } 7 | } 8 | 9 | @mixin hover() { 10 | .root[data-is-touch="false"] &:hover { 11 | @content; 12 | } 13 | } 14 | 15 | @mixin active() { 16 | .root[data-is-touch] &.active, 17 | .root[data-is-touch] &:active { 18 | @content; 19 | } 20 | } 21 | 22 | @mixin focus() { 23 | .root[data-is-touch] &.focus { 24 | @content; 25 | } 26 | } 27 | 28 | @mixin disabled() { 29 | &.disabled, 30 | &:disabled { 31 | @content; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/classes/_shadow.scss: -------------------------------------------------------------------------------- 1 | @mixin box-shadow($level: default, $color: default) { 2 | @if $color == default { 3 | $color: #000; 4 | } 5 | @if $level == 0 { 6 | box-shadow: none; 7 | } 8 | @if $level == 1 or $level == default { 9 | box-shadow: 0 4px 8px rgba($color, .23), 0 1px 3px rgba($color, .08), 0 6px 12px rgba($color, .02); 10 | } 11 | @if $level == 2 { 12 | box-shadow: 0 8px 16px rgba($color, .23), 0 2px 6px rgba($color, .08), 0 12px 24px rgba($color, .02); 13 | } 14 | } 15 | 16 | .box-shadow-1 { 17 | @include box-shadow(); 18 | } 19 | 20 | .box-shadow-2 { 21 | @include box-shadow(2); 22 | } 23 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/classes/_split-line.scss: -------------------------------------------------------------------------------- 1 | @mixin split-line($direction: default, $width: default, $color: default) { 2 | @if $direction == default { 3 | $direction: top; 4 | } 5 | @if $color == default { 6 | $color: $border-color-l; 7 | } 8 | @if $width == default { 9 | $width: 1px; 10 | } 11 | border: 0 solid $color; 12 | @if $direction == top { 13 | border-top-width: $width; 14 | } 15 | @if $direction == right { 16 | border-right-width: $width; 17 | } 18 | @if $direction == bottom { 19 | border-bottom-width: $width; 20 | } 21 | @if $direction == left { 22 | border-left-width: $width; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/classes/_text.scss: -------------------------------------------------------------------------------- 1 | @mixin text-light { 2 | color: $text-color-theme-light; 3 | h1, h2, h3 { 4 | color: $text-color-theme-light-d; 5 | } 6 | h4, h5 { 7 | color: $text-color-theme-light; 8 | } 9 | h6 { 10 | color: $text-color-theme-light-l; 11 | } 12 | a:not(.button) { 13 | @include link-colors($text-color-theme-light, $main-color-1); 14 | } 15 | } 16 | @mixin text-dark { 17 | color: $text-color-theme-dark; 18 | h1, h2, h3 { 19 | color: $text-color-theme-dark-d; 20 | } 21 | h4, h5 { 22 | color: $text-color-theme-dark; 23 | } 24 | h6 { 25 | color: $text-color-theme-dark-l; 26 | } 27 | a:not(.button) { 28 | @include link-colors($text-color-theme-dark, $main-color-1); 29 | } 30 | } 31 | 32 | .text--light { 33 | @include text-light(); 34 | } 35 | .text--dark { 36 | @include text-dark(); 37 | } 38 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/classes/_transform.scss: -------------------------------------------------------------------------------- 1 | @mixin transform($value) { 2 | -webkit-transform: $value; 3 | transform: $value; 4 | } 5 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/classes/_transition.scss: -------------------------------------------------------------------------------- 1 | @mixin transition($value) { 2 | -webkit-transition: $value; 3 | transition: $value; 4 | } 5 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/classes/_user-select.scss: -------------------------------------------------------------------------------- 1 | @mixin user-select($value) { 2 | -webkit-user-select: $value; 3 | -moz-user-select: $value; 4 | -ms-user-select: $value; 5 | user-select: $value; 6 | } 7 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/components/_gallery.scss: -------------------------------------------------------------------------------- 1 | .gallery { 2 | height: 100%; 3 | @include flexbox(); 4 | @include flex-direction(column); 5 | } 6 | 7 | .gallery__swiper { 8 | @include flex(1); 9 | } 10 | 11 | .gallery-item { 12 | @include flexbox(); 13 | @include align-items(center); 14 | @include justify-content(center); 15 | height: 100%; 16 | overflow: hidden; 17 | } 18 | 19 | .gallery-item__main { 20 | display: block; 21 | } 22 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/components/_image.scss: -------------------------------------------------------------------------------- 1 | .image { 2 | max-width: 100%; 3 | @extend .image--md; 4 | } 5 | .image--md { 6 | width: map-get($image, width); 7 | } 8 | .image--xl { 9 | width: map-get($image, width-xl); 10 | } 11 | .image--lg { 12 | width: map-get($image, width-lg); 13 | } 14 | .image--sm { 15 | width: map-get($image, width-sm); 16 | } 17 | .image--xs { 18 | width: map-get($image, width-xs); 19 | } 20 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/components/_modal.scss: -------------------------------------------------------------------------------- 1 | @mixin modal($z-index: default, $color: default, $background-color: default) { 2 | @if $z-index == default { 3 | $z-index: map-get($z-indexes, modal); 4 | } 5 | @if $color == default { 6 | $color: $text-color-theme-dark; 7 | } 8 | @if $background-color == default { 9 | $background-color: $mask-color; 10 | } 11 | position: fixed; 12 | top: 0; 13 | left: 0; 14 | z-index: $z-index; 15 | width: 100%; 16 | height: 100%; 17 | color: $color; 18 | touch-action: none; 19 | background-color: $background-color; 20 | opacity: 0; 21 | @include transform(translate(100%, 0)); 22 | @include transition(#{opacity map-get($animation, duration) map-get($animation, timing-function), 23 | transform 0s map-get($animation, duration) map-get($animation, timing-function)}); 24 | } 25 | @mixin modal--show() { 26 | opacity: 1; 27 | @include transform(translate(0, 0)); 28 | @include transition(#{opacity map-get($animation, duration) map-get($animation, timing-function)}); 29 | } 30 | 31 | .modal { 32 | @include modal(); 33 | } 34 | .modal--show { 35 | @include modal--show(); 36 | } 37 | .modal--overflow { 38 | @include overflow(auto); 39 | } 40 | -------------------------------------------------------------------------------- /Docs/website/_sass/common/components/_swiper.scss: -------------------------------------------------------------------------------- 1 | .swiper { 2 | position: relative; 3 | @include overflow(hidden); 4 | } 5 | 6 | .swiper__wrapper, .swiper__slide { 7 | width: 100%; 8 | height: 100%; 9 | } 10 | 11 | .swiper__wrapper { 12 | @include flexbox(); 13 | } 14 | 15 | .swiper__wrapper--animation { 16 | @include transition(transform map-get($animation, duration) map-get($animation, timing-function)); 17 | } 18 | 19 | .swiper__slide { 20 | @include flex-shrink(0); 21 | & > img { 22 | max-width: 100%; 23 | } 24 | } 25 | 26 | .swiper__button { 27 | position: absolute; 28 | top: 50%; 29 | @extend .button, .button--circle; 30 | @include transform(translate(0, -50%)); 31 | @include clickable($text-color-d, rgba($main-color-3, .4)); 32 | } 33 | 34 | .swiper--light .swiper__button { 35 | @include clickable($text-color-theme-light, rgba($main-color-theme-dark, .4)); 36 | } 37 | 38 | .swiper--dark .swiper__button { 39 | @include clickable($text-color-theme-dark, rgba($main-color-theme-light, .4)); 40 | } 41 | 42 | .swiper__button--prev { 43 | left: 10px; 44 | } 45 | 46 | .swiper__button--next { 47 | right: 10px; 48 | } 49 | -------------------------------------------------------------------------------- /Docs/website/_sass/components/_article-footer.scss: -------------------------------------------------------------------------------- 1 | .article__footer { 2 | margin: map-get($spacers, 4) 0; 3 | font-size: map-get($base, font-size-sm); 4 | } 5 | 6 | .article__license, .article__subscribe { 7 | a { 8 | @include link-colors($text-color, $main-color-1); 9 | } 10 | } 11 | 12 | .article__license { 13 | color: $text-color-l; 14 | img { 15 | height: map-get($base, font-size) * 1.6; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Docs/website/_sass/components/_article-header.scss: -------------------------------------------------------------------------------- 1 | .article__header { 2 | margin-top: map-get($spacers, 5); 3 | //margin-bottom: map-get($spacers, 4); 4 | @include media-breakpoint-down(md) { 5 | margin-top: map-get($spacers, 4); 6 | } 7 | header, h1 { 8 | display: inline; 9 | } 10 | h1 { 11 | word-wrap: break-word; 12 | } 13 | .split-space { 14 | @include user-select(none); 15 | } 16 | .edit-on-github { 17 | text-decoration: none !important; 18 | } 19 | } 20 | 21 | .article__header--overlay { 22 | .overlay { 23 | min-height: 36rem; 24 | padding-top: map-get($spacers, 5) * 2; 25 | padding-bottom: map-get($spacers, 5) * 2; 26 | @include media-breakpoint-down(md) { 27 | min-height: 29rem; 28 | padding-top: map-get($spacers, 5); 29 | padding-bottom: map-get($spacers, 5); 30 | } 31 | } 32 | .overlay__excerpt { 33 | font-size: map-get($base, font-size-h3-xl); 34 | @include media-breakpoint-down(lg) { 35 | font-size: map-get($base, font-size-h3-lg); 36 | } 37 | @include media-breakpoint-down(md) { 38 | font-size: map-get($base, font-size-h3-sm); 39 | } 40 | font-weight: map-get($base, font-weight-bold); 41 | } 42 | 43 | .article__header { 44 | margin-top: 0; 45 | } 46 | } 47 | 48 | .article__header--cover { 49 | width: 100%; 50 | } 51 | -------------------------------------------------------------------------------- /Docs/website/_sass/components/_article-info.scss: -------------------------------------------------------------------------------- 1 | .article__info { 2 | font-size: map-get($base, font-size-sm); 3 | color: $text-color-l; 4 | .left-col { 5 | float: left; 6 | @include media-breakpoint-down(md) { 7 | float: none; 8 | } 9 | } 10 | .right-col { 11 | float: right; 12 | margin-left: map-get($button, padding-x-sm); 13 | @include media-breakpoint-down(md) { 14 | float: none; 15 | } 16 | & > li { 17 | &:not(:last-child) { 18 | @include split-line(right, default, $text-color-l); 19 | padding-right: map-get($spacers, 2); 20 | margin-right: map-get($spacers, 2); 21 | line-height: map-get($base, line-height-xs); 22 | } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Docs/website/_sass/components/_article-list.scss: -------------------------------------------------------------------------------- 1 | .article-list { 2 | .item__meta { 3 | padding: 0 map-get($spacers, 3) 0 0; 4 | font-family: map-get($base, font-family-code); 5 | font-size: map-get($base, font-size-sm); 6 | white-space: nowrap; 7 | } 8 | &.grid--sm { 9 | .card__header { 10 | overflow: hidden; 11 | text-overflow: ellipsis; 12 | white-space: nowrap; 13 | } 14 | } 15 | } 16 | .article-list__group-header { 17 | margin-top: map-get($spacers, 3); 18 | } 19 | -------------------------------------------------------------------------------- /Docs/website/_sass/components/_author-links.scss: -------------------------------------------------------------------------------- 1 | .author-links { 2 | & > ul { 3 | margin: 0; 4 | & > li > { 5 | .mail-button { 6 | @include clickable($text-color-1, $mail-color); 7 | } 8 | .facebook-button { 9 | @include clickable($text-color-1, $facebook-color); 10 | } 11 | .twitter-button { 12 | @include clickable($text-color-1, $twitter-color); 13 | } 14 | .weibo-button { 15 | @include clickable($text-color-1, $weibo-color); 16 | } 17 | .googlepluse-button { 18 | @include clickable($text-color-1, $google-plus-color); 19 | } 20 | .telegram-button { 21 | @include clickable($text-color-1, $telegram-color); 22 | } 23 | .medium-button { 24 | @include clickable($text-color-1, $medium-color); 25 | } 26 | .zhihu-button { 27 | @include clickable($text-color-1, $zhihu-color); 28 | } 29 | .douban-button { 30 | @include clickable($text-color-1, $douban-color); 31 | } 32 | .linkedin-button { 33 | @include clickable($text-color-1, $linkedin-color); 34 | } 35 | .github-button { 36 | @include clickable($text-color-1, $github-color); 37 | } 38 | .npm-button { 39 | @include clickable($text-color-1, $npm-color); 40 | } 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Docs/website/_sass/components/_author-profile.scss: -------------------------------------------------------------------------------- 1 | .author-profile { 2 | max-width: 25rem; 3 | padding: map-get($spacers, 2) map-get($spacers, 3); 4 | margin: map-get($spacers, 4) 0; 5 | font-size: map-get($base, font-size-sm); 6 | background-color: $text-background-color; 7 | @include media-breakpoint-down(md) { 8 | text-align: center; 9 | } 10 | } 11 | .author-profile__avatar { 12 | width: 5rem; 13 | height: 5rem; 14 | margin-top: map-get($spacers, 2); 15 | border-radius: 50%; 16 | } 17 | .author-profile__name { 18 | font-size: map-get($base, font-size-lg); 19 | font-weight: map-get($base, font-weight-bold); 20 | a { 21 | @include link-colors($text-color, $main-color-1); 22 | } 23 | } 24 | .author-profile__links { 25 | @include overflow(auto); 26 | } 27 | -------------------------------------------------------------------------------- /Docs/website/_sass/components/_extensions.scss: -------------------------------------------------------------------------------- 1 | .extensions { 2 | margin: map-get($spacers, 3) 0; 3 | @extend .d-print-none; 4 | } 5 | 6 | .extensions--video, .extensions--slide, .extensions--demo { 7 | position: relative; 8 | width: 100%; 9 | padding: 0; 10 | & > iframe { 11 | position: absolute; 12 | top: 0; 13 | left: 0; 14 | width: 100%; 15 | height: 100%; 16 | } 17 | } 18 | 19 | .extensions--video { 20 | padding-top: percentage(315 / 560); 21 | } 22 | 23 | .extensions--slide { 24 | padding-top: percentage(487 / 599); 25 | } 26 | 27 | .extensions--demo { 28 | min-height: 340px; 29 | padding-top: percentage(315 / 560); 30 | } 31 | 32 | .extensions--audio { 33 | display: block; 34 | max-width: 100% !important; 35 | } 36 | -------------------------------------------------------------------------------- /Docs/website/_sass/components/_footer.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Site Info 3 | */ 4 | 5 | .footer { 6 | @include flexbox(); 7 | @include align-items(center); 8 | color: $footer-text-color; 9 | background: $footer-background; 10 | a { 11 | @include link-colors ($footer-text-color, $main-color-1); 12 | } 13 | .site-info { 14 | font-size: map-get($base, font-size-xs); 15 | text-align: center; 16 | .menu { 17 | line-height: map-get($base, line-height-xs); 18 | & > * { 19 | &:not(:last-child) { 20 | @include split-line(right, default, $footer-text-color); 21 | padding-right: map-get($spacers, 1); 22 | margin-right: map-get($spacers, 1); 23 | } 24 | } 25 | } 26 | } 27 | } 28 | .footer__author-links { 29 | @include overflow(auto); 30 | .author-links { 31 | text-align: center; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Docs/website/_sass/components/_lightbox.scss: -------------------------------------------------------------------------------- 1 | .popup-image { 2 | cursor: pointer; 3 | @include hover() { 4 | @include box-shadow(2); 5 | } 6 | @include transition(map-get($clickable, transition)); 7 | } 8 | -------------------------------------------------------------------------------- /Docs/website/_sass/components/_main.scss: -------------------------------------------------------------------------------- 1 | .main { 2 | width: 100%; 3 | max-width: map-get($layout, content-max-width); 4 | padding: 0 map-get($spacers, 5); 5 | margin: 0 auto; 6 | @include media-breakpoint-down(lg) { 7 | padding: 0 map-get($spacers, 4); 8 | } 9 | @include media-breakpoint-down(md) { 10 | padding: 0 map-get($spacers, 3); 11 | } 12 | } 13 | 14 | .has-aside { 15 | .main { 16 | max-width: map-get($layout, content-max-width) + map-get($layout, aside-width); 17 | @include media-breakpoint-down(lg) { 18 | max-width: map-get($layout, content-max-width); 19 | } 20 | } 21 | } 22 | 23 | .full-width { 24 | .main { 25 | width: 100%; 26 | max-width: 100%; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Docs/website/_sass/components/_tags.scss: -------------------------------------------------------------------------------- 1 | .site-tags { 2 | .tag-button { 3 | @include clickable($text-color-3, $main-color-3, default, default, $text-color-2,$main-color-2, $text-color-2,$main-color-2); 4 | & > .tag-button__count { 5 | display: inline-block; 6 | margin-left: map-get($spacers, 1); 7 | font-size: map-get($base, font-size-xs); 8 | line-height: 1; 9 | vertical-align: top; 10 | } 11 | } 12 | .tag-button-1 { 13 | @include clickable($text-color-1, rgba($main-color-1, .4), default, default, $text-color-2,$main-color-2, $text-color-2,$main-color-2); 14 | } 15 | .tag-button-2 { 16 | @include clickable($text-color-1, rgba($main-color-1, .55), default, default, $text-color-2,$main-color-2, $text-color-2,$main-color-2); 17 | } 18 | .tag-button-3 { 19 | @include clickable($text-color-1, rgba($main-color-1, .7), default, default, $text-color-2,$main-color-2, $text-color-2,$main-color-2); 20 | } 21 | .tag-button-4 { 22 | @include clickable($text-color-1, rgba($main-color-1, .9), default, default, $text-color-2,$main-color-2, $text-color-2,$main-color-2); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Docs/website/_sass/custom.scss: -------------------------------------------------------------------------------- 1 | /* start custom scss snippet */ 2 | 3 | .image--center { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | width: 50%; 8 | } 9 | 10 | .image--floatleft { 11 | float: left; 12 | margin: 15px; 13 | width: 50%; 14 | } 15 | 16 | .image--floatright { 17 | float: right; 18 | margin: 15px; 19 | width: 50%; 20 | } 21 | 22 | .figure--floatright { 23 | float: right; 24 | margin: 15px; 25 | width: 50%; 26 | } 27 | 28 | #screenshot { 29 | margin: 15px; 30 | } 31 | 32 | .figure--floatright p { 33 | margin: 0px; 34 | } 35 | 36 | .figure--floatright figcaption { 37 | margin: 0px 15px; 38 | } 39 | 40 | .text--datemodified { 41 | color: grey; 42 | font-size: small; 43 | font-style: italic; 44 | } 45 | 46 | li li{ 47 | list-style-type: lower-alpha; 48 | } 49 | 50 | li li li{ 51 | list-style-type: lower-roman; 52 | } 53 | 54 | /*.figure--floatright { 55 | float: right; 56 | margin: 15px; 57 | padding: 15px; 58 | width: 50%; 59 | border: thin silver solid; 60 | } 61 | 62 | #screenshot { 63 | margin: 15px; 64 | } 65 | 66 | .figure--floatright p { 67 | margin: 0px; 68 | }*/ 69 | 70 | /* end custom scss snippet */ 71 | -------------------------------------------------------------------------------- /Docs/website/_sass/layout/_404.scss: -------------------------------------------------------------------------------- 1 | .layout--404 { 2 | .sign { 3 | display: table; 4 | margin: map-get($spacers, 4) auto; 5 | margin-top: map-get($spacers, 5); 6 | h1 { 7 | font-size: map-get($base, font-size-xl) * 4; 8 | line-height: 1; 9 | } 10 | p { 11 | font-size: map-get($base, font-size-xl) * 1.2; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Docs/website/_sass/layout/_archive.scss: -------------------------------------------------------------------------------- 1 | .layout--archive { 2 | & > .layout--archive__result { 3 | margin: map-get($spacers, 4) 0; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /Docs/website/_sass/layout/_article.scss: -------------------------------------------------------------------------------- 1 | .article__sharing { 2 | margin: map-get($spacers, 4) 0; 3 | } 4 | .article__section-navigator { 5 | padding-top: map-get($spacers, 3); 6 | margin: map-get($spacers, 4) 0 map-get($spacers, 3) 0; 7 | word-wrap: break-word; 8 | @include split-line(top, 4px); 9 | & > .previous, & > .next { 10 | width: 50%; 11 | & > span { 12 | font-weight: map-get($base, font-weight-bold); 13 | color: $text-color-l; 14 | } 15 | & > a { 16 | display: block; 17 | @include link-colors($text-color, $main-color-1); 18 | } 19 | } 20 | & > .previous { 21 | float: left; 22 | padding-right: map-get($spacers, 2); 23 | } 24 | & > .next { 25 | float: right; 26 | padding-left: map-get($spacers, 2); 27 | text-align: right; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Docs/website/_sass/layout/_articles.scss: -------------------------------------------------------------------------------- 1 | .layout--articles { 2 | margin: map-get($spacers, 4) 0; 3 | margin-top: map-get($spacers, 5); 4 | @include media-breakpoint-down(md) { 5 | margin-top: map-get($spacers, 4); 6 | } 7 | .card__header { 8 | font-size: map-get($base, font-size); 9 | } 10 | .card__image { 11 | & > .overlay { 12 | &, .card__header { 13 | font-size: map-get($base, font-size-sm); 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Docs/website/_sass/layout/_base.scss: -------------------------------------------------------------------------------- 1 | .icon { 2 | display: block; 3 | > svg { 4 | display: block; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Docs/website/_sass/layout/_home.scss: -------------------------------------------------------------------------------- 1 | .layout--home { 2 | .pagination { 3 | margin: map-get($spacers, 4) 0; 4 | } 5 | .pagination__menu { 6 | max-width: 100%; 7 | @include overflow(auto); 8 | } 9 | .pagination__omit { 10 | color: $text-color-l; 11 | } 12 | .items { 13 | margin-top: map-get($spacers, 4) * 1.5; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Docs/website/_sass/layout/_landing.scss: -------------------------------------------------------------------------------- 1 | .layout--landing { 2 | .heros { 3 | max-width: map-get($layout, content-max-width) * 2; 4 | margin-right: auto; 5 | margin-left: auto; 6 | } 7 | .hero { 8 | img { 9 | display: block; 10 | width: 100%; 11 | margin: 0 auto; 12 | } 13 | } 14 | .hero__content { 15 | margin-bottom: 0; 16 | } 17 | .hero__cover { 18 | max-width: map-get($layout, content-max-width); 19 | } 20 | .hero__cover--full-width { 21 | max-width: none; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Docs/website/_sass/skins/highlight/_default.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/_sass/skins/highlight/_default.scss -------------------------------------------------------------------------------- /Docs/website/_sass/skins/highlight/_tomorrow-night-blue.scss: -------------------------------------------------------------------------------- 1 | @import "./tomorrow/night-blue"; 2 | @import "./tomorrow/highlight"; 3 | -------------------------------------------------------------------------------- /Docs/website/_sass/skins/highlight/_tomorrow-night-bright.scss: -------------------------------------------------------------------------------- 1 | @import "./tomorrow/night-bright"; 2 | @import "./tomorrow/highlight"; 3 | -------------------------------------------------------------------------------- /Docs/website/_sass/skins/highlight/_tomorrow-night-eighties.scss: -------------------------------------------------------------------------------- 1 | @import "./tomorrow/night-eighties"; 2 | @import "./tomorrow/highlight"; 3 | -------------------------------------------------------------------------------- /Docs/website/_sass/skins/highlight/_tomorrow-night.scss: -------------------------------------------------------------------------------- 1 | @import "./tomorrow/night"; 2 | @import "./tomorrow/highlight"; 3 | -------------------------------------------------------------------------------- /Docs/website/_sass/skins/highlight/_tomorrow.scss: -------------------------------------------------------------------------------- 1 | @import "./tomorrow/default"; 2 | @import "./tomorrow/highlight"; 3 | -------------------------------------------------------------------------------- /Docs/website/_sass/skins/highlight/tomorrow/_default.scss: -------------------------------------------------------------------------------- 1 | $highlight-background : #f7f7f7; 2 | $highlight-foreground : #4d4d4c; 3 | $highlight-comment : #8e908c; 4 | $highlight-red : #c82829; 5 | $highlight-orange : #f5871f; 6 | $highlight-yellow : #eab700; 7 | $highlight-green : #718c00; 8 | $highlight-aqua : #3e999f; 9 | $highlight-blue : #4271ae; 10 | $highlight-purple : #8959a8; 11 | -------------------------------------------------------------------------------- /Docs/website/_sass/skins/highlight/tomorrow/_night-blue.scss: -------------------------------------------------------------------------------- 1 | $highlight-background :#002451; 2 | $highlight-foreground :#fff; 3 | $highlight-comment :#7285b7; 4 | $highlight-red :#ff9da4; 5 | $highlight-orange :#ffc58f; 6 | $highlight-yellow :#ffeead; 7 | $highlight-green :#d1f1a9; 8 | $highlight-aqua :#9ff; 9 | $highlight-blue :#bbdaff; 10 | $highlight-purple :#ebbbff; 11 | -------------------------------------------------------------------------------- /Docs/website/_sass/skins/highlight/tomorrow/_night-bright.scss: -------------------------------------------------------------------------------- 1 | $highlight-background :#000; 2 | $highlight-foreground :#eaeaea; 3 | $highlight-comment :#969896; 4 | $highlight-red :#d54e53; 5 | $highlight-orange :#e78c45; 6 | $highlight-yellow :#e7c547; 7 | $highlight-green :#b9ca4a; 8 | $highlight-aqua :#70c0b1; 9 | $highlight-blue :#7aa6da; 10 | $highlight-purple :#c397d8; 11 | -------------------------------------------------------------------------------- /Docs/website/_sass/skins/highlight/tomorrow/_night-eighties.scss: -------------------------------------------------------------------------------- 1 | $highlight-background :#2d2d2d; 2 | $highlight-foreground :#ccc; 3 | $highlight-comment :#999; 4 | $highlight-red :#f2777a; 5 | $highlight-orange :#f99157; 6 | $highlight-yellow :#fc6; 7 | $highlight-green :#9c9; 8 | $highlight-aqua :#6cc; 9 | $highlight-blue :#69c; 10 | $highlight-purple :#c9c; 11 | -------------------------------------------------------------------------------- /Docs/website/_sass/skins/highlight/tomorrow/_night.scss: -------------------------------------------------------------------------------- 1 | $highlight-background : #1d1f21; 2 | $highlight-foreground : #c5c8c6; 3 | $highlight-comment : #969896; 4 | $highlight-red : #c66; 5 | $highlight-orange : #de935f; 6 | $highlight-yellow : #f0c674; 7 | $highlight-green : #b5bd68; 8 | $highlight-aqua : #8abeb7; 9 | $highlight-blue : #81a2be; 10 | $highlight-purple : #b294bb; 11 | -------------------------------------------------------------------------------- /Docs/website/assets/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/android-chrome-192x192.png -------------------------------------------------------------------------------- /Docs/website/assets/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/android-chrome-512x512.png -------------------------------------------------------------------------------- /Docs/website/assets/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/apple-touch-icon.png -------------------------------------------------------------------------------- /Docs/website/assets/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #00274c 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Docs/website/assets/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/favicon-16x16.png -------------------------------------------------------------------------------- /Docs/website/assets/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/favicon-32x32.png -------------------------------------------------------------------------------- /Docs/website/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/favicon.ico -------------------------------------------------------------------------------- /Docs/website/assets/images/UI++Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/UI++Icon.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/bootimage-prestart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/bootimage-prestart.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/bootmedia-prestart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/bootmedia-prestart.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-apptree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-apptree.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-errorinfo-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-errorinfo-2.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-errorinfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-errorinfo.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-info-timeout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-info-timeout.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-info.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-infofullscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-infofullscreen.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-infofullscreen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-infofullscreen2.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-input-inputcheckbox-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-input-inputcheckbox-2.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-input-inputcheckbox-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-input-inputcheckbox-3.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-input-inputcheckbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-input-inputcheckbox.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-input-inputchoice-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-input-inputchoice-2.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-input-inputchoice-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-input-inputchoice-3.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-input-inputchoice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-input-inputchoice.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-input-inputtext-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-input-inputtext-2.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-input-inputtext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-input-inputtext.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-optional.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-optional.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-preflight-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-preflight-2.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-preflight-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-preflight-3.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-preflight-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-preflight-4.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-preflight-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-preflight-5.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-preflight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-preflight.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-standard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-standard.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-userauth-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-userauth-2.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-userauth-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-userauth-3.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/dialog-userauth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/dialog-userauth.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/tasksequence-installapplication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/tasksequence-installapplication.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/tasksequence-installpackage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/tasksequence-installpackage.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/tasksequence-run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/tasksequence-run.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/variableeditor-editable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/variableeditor-editable.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/variableeditor-readonly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/variableeditor-readonly.png -------------------------------------------------------------------------------- /Docs/website/assets/images/screenshots/welcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/images/screenshots/welcome.png -------------------------------------------------------------------------------- /Docs/website/assets/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/mstile-144x144.png -------------------------------------------------------------------------------- /Docs/website/assets/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/mstile-150x150.png -------------------------------------------------------------------------------- /Docs/website/assets/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/mstile-310x150.png -------------------------------------------------------------------------------- /Docs/website/assets/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/mstile-310x310.png -------------------------------------------------------------------------------- /Docs/website/assets/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/Docs/website/assets/mstile-70x70.png -------------------------------------------------------------------------------- /Docs/website/assets/search.js: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | {%- include search-providers/default/search-data.js -%} 4 | -------------------------------------------------------------------------------- /Docs/website/assets/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "UI++", 3 | "short_name": "UI++", 4 | "icons": [ 5 | { 6 | "src": "android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#00274c", 17 | "background_color": "#00274c", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /Docs/website/docs/actionconfig/errorinfo.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: article 3 | title: Error Info 4 | aside: 5 | toc: true 6 | sidebar: 7 | nav: docs 8 | --- 9 | 10 | {% figure caption:"An ErrorInfo action dialog" %} 11 | ![An ErrorInfo action dialog](/assets/images/screenshots/dialog-errorinfo-2.png) 12 | {% endfigure %} 13 | {: .figure--floatright } 14 | {: #screenshot } 15 | 16 | The [ErrorInfo]({% link docs/reference/actionelements.md %}#errorinfo) interactive action displays a final error message to the user. Configuration of the action is nearly identical to that of the Info interactive action. The action always shows a cancel button, a back button is optional, and it automatically adds line breaks to wrap longer lines based upon the following: 17 | 18 | * Spaces 19 | * Periods 20 | * Commas 21 | * Forward slashes 22 | * Backslashes 23 | 24 | The following snippet creates an error dialog box to inform the user of a fatal error or issue; it includes some minor text formatting. For a complete list of supported text formatting tags, see the [Text Formatting]({% link docs/reference/textformatting.md %}) section. 25 | 26 | ~~~ xml 27 | 28 |
Have a nice day.]]> 29 |
30 | ~~~ 31 | 32 | Note the use of tags to enclose the informational text. These instruct the XML parser to ignore the contained content which is key when using any embedded HTML tags as these disrupt the XML parser. 33 | {:.note} -------------------------------------------------------------------------------- /Docs/website/docs/actionconfig/externalcall.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: article 3 | title: External Call 4 | aside: 5 | toc: true 6 | sidebar: 7 | nav: docs 8 | --- 9 | 10 | This action initiates the command line specified. What this command line explicitly does or calls is up to you. The location of the files or scripts that the action references are up to you but they are best placed in the same package as UI++, in the boot image with UI++ (if using UI++ as a pre-start command), or in a separate package downloaded to the target system using the **Download Package Content** action. 11 | 12 | The following example calls the VBScript named QueryAD.vbs. 13 | 14 | ~~~ xml 15 | cscript.exe //NOLOGO //B QueryAD.vbs 16 | ~~~ 17 | 18 | Using an [ExternalCall]({% link docs/reference/actionelements.md %}#externalcall) action enables you to leverage existing scripts or other tools to perform a specific action that UI++ cannot directly perform. Possible activities for these external commands include calling a web service (which is much easier to do in PowerShell or VBScript), calling a driver installation routine, or initiating a reboot. Many more possibilities exist, as well. 19 | 20 | If calling PowerShell from within WinPE, make sure that you include PowerShell in the WinPE boot image that you are using. -------------------------------------------------------------------------------- /Docs/website/docs/actionconfig/fileread.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: article 3 | title: File Read 4 | aside: 5 | toc: true 6 | sidebar: 7 | nav: docs 8 | --- 9 | 10 | This action does one simple thing: reads the first line from a text file and places the value of that line in a specified variable. It will also optionally delete that line from the text file. This is very useful for generating unique system names during OSD from a list of names, prefixes, or suffixes listed in that text file. 11 | 12 | The below snippet does the following: 13 | 1. Reads the first line from the file named **TextFile1.txt** located in the root of the P drive 14 | 2. Places the value of that line in the **MyValue** variable 15 | 3. Deletes the line from the file 16 | 17 | The P drive, of course, needs to be accessible and the context in which UI++ runs must have read and write access to the file. You can easily do this using a [Connect to Network Folder](https://docs.microsoft.com/en-us/sccm/osd/understand/task-sequence-steps#BKMK_ConnectToNetworkFolder) step in the task sequence before it executes UI++. 18 | 19 | ~~~ xml 20 | 21 | ~~~ -------------------------------------------------------------------------------- /Docs/website/docs/actionconfig/infofullscreen.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: article 3 | title: Info (Full-Screen) 4 | aside: 5 | toc: true 6 | sidebar: 7 | nav: docs 8 | --- 9 | 10 | The **InfoFullScreen** dialog action is currently a preview feature that works but may not be complete and is subject to change. 11 | {:.note} 12 | 13 | The [InfoFullScreen]({% link docs/reference/actionelements.md %}#infofullscreen) action displays information to the end-user using a full-screen window instead of a standard UI++ dialog. This full-screen window displays an optional image, a single line of text, and an infinite progress bar. 14 | 15 | {% figure caption:"An InfoFullScreen action full-screen window" %} 16 | ![An Info action dialog with a timeout](/assets/images/screenshots/dialog-infofullscreen.png) 17 | {% endfigure %} 18 | {: .figure--floatright } 19 | {: #screenshot } 20 | 21 | To dismiss the full-screen window, press **Ctrl** + **Alt** + **F10**. This is not currently configurable. 22 | 23 | The following snippet creates an [InfoFullScreen]({% link docs/reference/actionelements.md %}#infofullscreen) action full-screen dialog. 24 | 25 | ~~~ xml 26 | Glorious things are happening in the background. 27 | ~~~ 28 | -------------------------------------------------------------------------------- /Docs/website/docs/actionconfig/randomstring.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: article 3 | title: Random String 4 | aside: 5 | toc: true 6 | sidebar: 7 | nav: docs 8 | --- 9 | 10 | This action sets the value of a variable to a random string of characters. You can configure the length of this random string as well as define the characters allowed in the string. You can use this variable and its value in the same way as all other [variables]({% link docs/configuration/valuesandvariables.md %}) within UI++ or a task sequence. 11 | 12 | The following snippet generates a string of length 6 and populates the variable named *RandomName* with this string. 13 | 14 | ~~~ xml 15 | 16 | ~~~ 17 | 18 | The following snippet generates a string of length 12 using only numbers and populates the variable named *RandomName* with this string. 19 | 20 | ~~~ xml 21 | 22 | ~~~ 23 | -------------------------------------------------------------------------------- /Docs/website/docs/actionconfig/registry.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: article 3 | title: RegRead and RegWrite 4 | aside: 5 | toc: true 6 | sidebar: 7 | nav: docs 8 | --- 9 | 10 | These actions read data from the registry, storing the value in a variable or write data to the registry. 11 | 12 | The following snippet reads the **CurrentVersion** value from the key **SOFTWARE\Microsoft\Windows NT\CurrentVersion** in the **HKLM** hive. 13 | 14 | ~~~ xml 15 | 16 | ~~~ 17 | 18 | The following snippet writes a string value named **DefaultVal** to the **SOFTWARE\ConfigMgrFTW** key in the **HKLM** hive. 19 | 20 | ~~~ xml 21 | Nicky Romero 22 | ~~~ 23 | -------------------------------------------------------------------------------- /Docs/website/docs/actionconfig/variables.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: article 3 | title: Variables 4 | aside: 5 | toc: true 6 | sidebar: 7 | nav: docs 8 | --- 9 | 10 | This action creates new variables with the specified name and value. You use it to create or populate variables from static values or to set variable values dynamically. The action uses the value of the element to set the variable's value and not the value of an attribute. 11 | 12 | The following snippet puts the static value "Finance" into the BusinessUnit variable. 13 | 14 | ~~~ xml 15 | Finance 16 | ~~~ 17 | 18 | You can also use the full power of VBScript to set the value of the variable. 19 | 20 | ~~~ xml 21 | Left("Amsterdam",5) 22 | ~~~ 23 | 24 | The value specified is initially treated as a VBScript expression. If VBScript cannot evaluate the value, then the simple text of the value is placed in the variable; however, if the value is a valid VBScript expression, VBScript evaluates it. Seemingly simple text like **abc-def** is actually valid VBScript (because the "-" is a minus sign) and the VBScript evaluation results in the variable's value set to zero. To avoid this, enclose the value in double-quotes (") or set the **DontEval** attribute to **True**. 25 | 26 | ~~~ xml 27 | "Finance-123" 28 | ~~~ -------------------------------------------------------------------------------- /Docs/website/docs/changelog.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: article 3 | title: Change Log 4 | aside: 5 | toc: true 6 | permalink: /changelog/ 7 | --- 8 | 9 | yadda yadda yadda 2 -------------------------------------------------------------------------------- /Docs/website/docs/configuration/actiongroups.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: article 3 | title: Action Groups 4 | aside: 5 | toc: true 6 | sidebar: 7 | nav: docs 8 | --- 9 | 10 | ActionGroups enable the grouping of other action elements into a single unit. There are two main reasons to group actions: organization and conditional execution of grouped actions. 11 | 12 | You should specify a name for each ActionGroup using the **Name** attribute for organization and identification purposes. 13 | 14 | ActionGroups may or may not have a [Condition]({% link docs/configuration/conditions.md %}#apptree) attribute that UI++ evaluates. If an ActionGroup does have a condition specified and this condition evaluates to false, UI++ skips sub-actions. 15 | 16 | An action group can have any number of sub-actions, and all Action element types may be part of an ActionGroup. 17 | 18 | ~~~ xml 19 | 20 | … 21 | 22 | ~~~ -------------------------------------------------------------------------------- /Docs/website/docs/configuration/configurationfile.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: article 3 | title: Configuration File 4 | aside: 5 | toc: true 6 | sidebar: 7 | nav: docs 8 | --- 9 | 10 | You configure UI++ by creating an XML file. This XML file contains a series of [Action]({% link docs/actions/introduction.md %}) elements that define the exact UI++ behavior which is almost completely open-ended. By default, UI++ loads its configuration from a file named **ui++.xml**, but you can specify an alternate file using the [/config]({% link docs/running/commandline.md %}#config) parameter at the command-line. 11 | 12 | UI++ does not check the configuration file against an XSD schema so ignores extraneous or out of place elements. This is not guaranteed though, so definitely test your configuration file outside of OSD and before you use it production. Also, keep in mind that XML is case-sensitive. -------------------------------------------------------------------------------- /Docs/website/docs/intro/features.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: article 3 | title: Features 4 | aside: 5 | toc: true 6 | sidebar: 7 | nav: docs 8 | --- 9 | 10 | Notable major features in UI++ include the following. 11 | 12 | * Customizable look and feel. 13 | * Information displayed using HTML formatting. 14 | * User input in drop-down list boxes, checkboxes, and text boxes validated using regular expressions. 15 | * Automatic variables and system information collection including model, hardware type, TPM, CPU, hypervisor, and more. 16 | * Read from and write to the following: 17 | * WMI 18 | * The Windows registry 19 | * Task sequence variables 20 | * A task sequence variable browser and editor. 21 | * Conditional execution of every element using VBScript expressions. 22 | * Inline variable replacement for any value using task sequence variables. 23 | * Active Directory authentication and authorization. 24 | * Customizable preflight checks and warnings. 25 | * An AppTree that displays and enables selection of both Applications and Packages. 26 | * Software discovery and mapping to ConfigMgr Applications or Packages. 27 | * State save and load to and from a data file. -------------------------------------------------------------------------------- /Docs/website/docs/running/logfile.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: article 3 | title: Log File 4 | aside: 5 | toc: true 6 | sidebar: 7 | nav: docs 8 | --- 9 | 10 | UI++ generates or appends to a log file named **UI++.log** every time it runs. This log records all relvant information including all significant activity that UI++ performs including XML parsing issues. If you launch UI++ and nothing happens, check this log file for details. Outside of what's in the configuration file, UI++ does not present error messages or other run-time issues to the interactive user. 11 | 12 | The log file is in the standard ConfigMgr log file format and is best viewed using CMTrace (or the newer OneTrace included with Support Center). 13 | 14 | The following table lists the locations where UI++ creates its log file. 15 | 16 | | Environment | Log Location | 17 | |:---------------|:--------------| 18 | | Within a task sequence, before the **Setup Windows and ConfigMgr** task | X:\Windows\Temp\SMSTSLog | 19 | | Within a task sequence, after the **Setup Windows and ConfigMgr** task | %windir%\ccm\logs\SMSTSLog | 20 | | Prestart command | X:\Windows\Temp\ | 21 | | Outside of a task sequence | %TEMP% | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Docs/website/docs/samples.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: article 3 | title: Samples 4 | aside: 5 | toc: true 6 | permalink: /samples/ 7 | --- 8 | 9 | yadda yadda yadda 2 -------------------------------------------------------------------------------- /Docs/website/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | --- 4 | 5 | ![UI++ Sample Welcome](/assets/images/screenshots/welcome.png){: .image--floatright } 6 | 7 | **UI++** is a dynamic, user interface (UI) generation tool. **UI++** displays information to the interactive user, solicits input from the interactive user, and then performs actions based on that user's input and selections including populating task sequence variables during System Center Configuration Manager (ConfigMgr) Operating System Deployment (OSD). **UI++** also works outside of task sequences because, at its heart, **UI++** is simply a generic UI framework. It’s still great during task sequences, but its certainly not limited to them. 8 | 9 | Nearly every aspect of **UI++** is customizable including, the number of dialogs, colors, icons, and the exact text to display — everything shown is up to you. Examples of information commonly requested from users include the system name, business unit, primary user, time zone, OU, and application selection. 10 | 11 | *** -------------------------------------------------------------------------------- /Docs/website/jekyll-text-theme.gemspec: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | Gem::Specification.new do |spec| 4 | spec.name = "jekyll-text-theme" 5 | spec.version = "2.2.6" 6 | spec.authors = ["Tian Qi"] 7 | spec.email = ["kitian616@outlook.com"] 8 | 9 | spec.summary = %q{A super customizable Jekyll theme for personal site, team site, blog, project, documentation, etc.} 10 | spec.homepage = "https://github.com/kitian616/jekyll-TeXt-theme" 11 | spec.license = "MIT" 12 | 13 | spec.metadata["plugin_type"] = "theme" 14 | 15 | spec.files = `git ls-files -z`.split("\x0").select do |f| 16 | f.match(%r{^((_data|_includes|_layouts|_sass|assets)/|(LICENSE|README|CHANGELOG)((\.(txt|md|markdown)|$)))}i) 17 | end 18 | 19 | spec.add_runtime_dependency "jekyll", ">= 3.6", "< 5.0" 20 | spec.add_runtime_dependency "jekyll-paginate", "~> 1.1" 21 | spec.add_runtime_dependency "jekyll-sitemap", "~> 1.0" 22 | spec.add_runtime_dependency "jekyll-feed", "~> 0.1" 23 | spec.add_runtime_dependency "jemoji", "~> 0.8" 24 | 25 | spec.add_development_dependency "bundler" 26 | spec.add_development_dependency "rake", "~> 10.0" 27 | end 28 | -------------------------------------------------------------------------------- /FTWCMLog/FTWCMLog.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/FTWCMLog/FTWCMLog.rc -------------------------------------------------------------------------------- /FTWCMLog/FTWCMLog.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /FTWCMLog/dllmain.cpp: -------------------------------------------------------------------------------- 1 | // dllmain.cpp : Defines the entry point for the DLL application. 2 | #include "stdafx.h" 3 | 4 | BOOL APIENTRY DllMain( HMODULE hModule, 5 | DWORD ul_reason_for_call, 6 | LPVOID lpReserved 7 | ) 8 | { 9 | switch (ul_reason_for_call) 10 | { 11 | case DLL_PROCESS_ATTACH: 12 | case DLL_THREAD_ATTACH: 13 | case DLL_THREAD_DETACH: 14 | case DLL_PROCESS_DETACH: 15 | break; 16 | } 17 | return TRUE; 18 | } 19 | 20 | -------------------------------------------------------------------------------- /FTWCMLog/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by FTWCMLog.rc 4 | 5 | // Next default values for new objects 6 | // 7 | #ifdef APSTUDIO_INVOKED 8 | #ifndef APSTUDIO_READONLY_SYMBOLS 9 | #define _APS_NEXT_RESOURCE_VALUE 101 10 | #define _APS_NEXT_COMMAND_VALUE 40001 11 | #define _APS_NEXT_CONTROL_VALUE 1001 12 | #define _APS_NEXT_SYMED_VALUE 101 13 | #endif 14 | #endif 15 | -------------------------------------------------------------------------------- /FTWCMLog/stdafx.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | -------------------------------------------------------------------------------- /FTWCMLog/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #include "targetver.h" 9 | 10 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 11 | // Windows Header Files 12 | #include 13 | 14 | 15 | 16 | // reference additional headers your program requires here 17 | -------------------------------------------------------------------------------- /FTWCMLog/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // Including SDKDDKVer.h defines the highest available Windows platform. 4 | 5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and 6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /FTWCMLog/version.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define FILEVER 1,2,1,0 4 | #define PRODUCTVER 1,2,1,0 5 | #define STRFILEVER "1.2.1.0\0" 6 | #define STRPRODUCTVER "1.2.1.0\0" 7 | -------------------------------------------------------------------------------- /FTWldap/FTWldap.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/FTWldap/FTWldap.rc -------------------------------------------------------------------------------- /FTWldap/FTWldap.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /FTWldap/dllmain.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/FTWldap/dllmain.cpp -------------------------------------------------------------------------------- /FTWldap/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by FTWldap.rc 4 | // 5 | #define IDS_LOGMSG_LOOKINGFORDOMAINCONTROLLER 20001 6 | #define IDS_LOGMSG_FOUNDDOMAINCONTROLLER 20002 7 | #define IDS_LOGMSG_USINGDOMAINCONTROLLER 20003 8 | 9 | #define IDS_LOGERROR_DIDNOTFINDDOMAINCONTROLLER 21001 10 | #define IDS_LOGERROR_CANNOTUSEDDOMAINCONTROLLER 21002 11 | 12 | // Next default values for new objects 13 | // 14 | #ifdef APSTUDIO_INVOKED 15 | #ifndef APSTUDIO_READONLY_SYMBOLS 16 | #define _APS_NEXT_RESOURCE_VALUE 102 17 | #define _APS_NEXT_COMMAND_VALUE 40001 18 | #define _APS_NEXT_CONTROL_VALUE 1001 19 | #define _APS_NEXT_SYMED_VALUE 101 20 | #endif 21 | #endif 22 | -------------------------------------------------------------------------------- /FTWldap/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/FTWldap/stdafx.cpp -------------------------------------------------------------------------------- /FTWldap/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/FTWldap/stdafx.h -------------------------------------------------------------------------------- /FTWldap/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/FTWldap/targetver.h -------------------------------------------------------------------------------- /FTWldap/version.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define FILEVER 1,3,2,0 4 | #define PRODUCTVER 1,3,2,0 5 | #define STRFILEVER "1.3.2.0\0" 6 | #define STRPRODUCTVER "1.3.2.0\0" 7 | -------------------------------------------------------------------------------- /UI++/Actions/ActionHelper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "FTWCMLog.h" 4 | #include "FTW\WMIAccess.h" 5 | #include "ScriptHost.h" 6 | 7 | namespace UIpp 8 | { 9 | class CActionHelper 10 | { 11 | public: 12 | static bool GetWMIPropertyFromFirstInstance(FTWCMLOG::ICMLogPtr pLog, FTW::CWMIAccess& wmi, PCTSTR wmiClassName, PCTSTR wmiKey, PCTSTR wmiPropertyName, CString& value); 13 | static bool GetWMIPropertyFromAllInstances(FTWCMLOG::ICMLogPtr pLog, FTW::CWMIAccess& wmi, PCTSTR wmiClassName, PCTSTR wmiPropertyName, CString& value); 14 | static bool QueryWMI(FTWCMLOG::ICMLogPtr pLog, FTW::CWMIAccess& wmi, PCTSTR wmiPropertyName, PCTSTR pQuery, CString& value); 15 | //bool GetWMIProperty(FTW::CWMIAccess& wmi, PCTSTR wmiClassName, PCTSTR wmiKey, PCTSTR wmiPropertyName, long& value); 16 | 17 | static bool EvalCondition(FTWCMLOG::ICMLogPtr pLog, PCTSTR pCondition, FTW::CScriptHost* const scriptHost, PCTSTR pType, PCTSTR pName); 18 | 19 | static void UICopyFiles(FTWCMLOG::ICMLogPtr pLog, PCTSTR sourceFilePattern, PCTSTR sourcePath, PCTSTR destPath); 20 | 21 | private: 22 | static bool _GetWMIProperty(FTWCMLOG::ICMLogPtr pLog, FTW::CWMIAccess& wmi, PCTSTR wmiClassName, PCTSTR wmiPropertyName, CString& value, PCTSTR wmiKey = nullptr, bool returnAllValues = false); 23 | 24 | }; 25 | } -------------------------------------------------------------------------------- /UI++/CodeProject/CmdLine/CmdLine.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace CodeProject { 4 | 5 | class CCmdLine 6 | : public CMapStringToString 7 | { 8 | DECLARE_DYNAMIC(CCmdLine) 9 | public: 10 | CCmdLine(LPCTSTR sCmdLine = NULL, BOOL bCaseSensitive = FALSE); 11 | virtual ~CCmdLine(void); 12 | void Parse(LPCTSTR pszCmdLine); 13 | inline const CString& GetCmdLine(void) const { return m_strCmdLine; } 14 | inline void SetCaseSensitive(BOOL bSensitive) { m_bCaseSensitive = bSensitive; } 15 | inline BOOL GetCaseSensitive(void) const { return m_bCaseSensitive; } 16 | inline BOOL HasKey(LPCTSTR pszKey) const { CString strValue; return CMapStringToString::Lookup(pszKey, strValue); } 17 | private: 18 | CString m_strCmdLine; 19 | BOOL m_bCaseSensitive; 20 | static const TCHAR m_pszDelimeters[]; 21 | static const TCHAR m_pszValueSep[]; 22 | static const TCHAR m_pszQuotes[]; 23 | }; 24 | } 25 | 26 | 27 | -------------------------------------------------------------------------------- /UI++/CodeProject/FilterEdit/UIntEdit.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "BaseEdit.h" 3 | 4 | namespace FilterEdit 5 | { 6 | class CUIntEdit : public CBaseEdit 7 | { 8 | public: 9 | CUIntEdit (); 10 | virtual ~CUIntEdit (); 11 | unsigned int GetValue () const; 12 | 13 | private: 14 | static bool m_bInitialised; 15 | static std::tr1::wregex m_RegEx; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /UI++/CodeProject/FilterEdit/UIntRangeEdit.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "UIntEdit.h" 3 | 4 | namespace FilterEdit 5 | { 6 | class CUIntRangeEdit : public CUIntEdit 7 | { 8 | public: 9 | CUIntRangeEdit (); 10 | CUIntRangeEdit (const unsigned int uiLower, const unsigned int uiHigher); 11 | virtual ~CUIntRangeEdit (); 12 | void SetRange (const unsigned int uiLower, const unsigned int uiHigher); 13 | void SetIncrement (const unsigned int uiInc); 14 | virtual void Increment (const int iInc); 15 | 16 | protected: 17 | virtual bool SemanticCheck (const CString &strText, 18 | CString *pstrErrorMsg = 0); 19 | 20 | private: 21 | unsigned int m_uiLower; 22 | unsigned int m_uiHigher; 23 | unsigned int m_uiInc; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /UI++/CodeProject/GridListCtrlEx/CGridColumnTraitText.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/CodeProject/GridListCtrlEx/CGridColumnTraitText.cpp -------------------------------------------------------------------------------- /UI++/CodeProject/GridListCtrlEx/CGridColumnTraitVisitor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | //------------------------------------------------------------------------ 4 | // Author: Rolf Kristensen 5 | // Source: http://www.codeproject.com/KB/list/CGridListCtrlEx.aspx 6 | // License: Free to use for all (New BSD License) 7 | //------------------------------------------------------------------------ 8 | 9 | namespace CodeProject { 10 | 11 | class CGridColumnTrait; 12 | class CGridColumnTraitImage; 13 | class CGridColumnTraitCombo; 14 | class CGridColumnTraitDateTime; 15 | class CGridColumnTraitEdit; 16 | class CGridColumnTraitText; 17 | 18 | //------------------------------------------------------------------------ 19 | //! CGridColumnTraitVisitor enables the use of the visitor-pattern to 20 | //! add extra behavior to the CGridColumnTrait classes 21 | //------------------------------------------------------------------------ 22 | class CGridColumnTraitVisitor 23 | { 24 | public: 25 | void Visit(CGridColumnTrait&) {} 26 | void Visit(CGridColumnTraitImage&) {} 27 | void Visit(CGridColumnTraitCombo&) {} 28 | void Visit(CGridColumnTraitDateTime&) {} 29 | void Visit(CGridColumnTraitEdit&) {} 30 | void Visit(CGridColumnTraitText&) {} 31 | }; 32 | } -------------------------------------------------------------------------------- /UI++/CodeProject/GridListCtrlEx/CGridListCtrlEx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/CodeProject/GridListCtrlEx/CGridListCtrlEx.cpp -------------------------------------------------------------------------------- /UI++/CodeProject/GridListCtrlEx/CGridRowTrait.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | //------------------------------------------------------------------------ 4 | // Author: Rolf Kristensen 5 | // Source: http://www.codeproject.com/KB/list/CGridListCtrlEx.aspx 6 | // License: Free to use for all (New BSD License) 7 | //------------------------------------------------------------------------ 8 | 9 | namespace CodeProject { 10 | 11 | class CGridRowTraitVisitor; 12 | class CGridListCtrlEx; 13 | 14 | #pragma warning(push) 15 | #pragma warning(disable:4100) // unreferenced formal parameter 16 | 17 | //------------------------------------------------------------------------ 18 | //! CGridRowTrait specifies an interface for handling custom drawing at 19 | //! row-level 20 | //------------------------------------------------------------------------ 21 | class CGridRowTrait 22 | { 23 | public: 24 | virtual ~CGridRowTrait() {} 25 | 26 | //! Override OnCustomDraw() to provide your own special row-drawing 27 | virtual void OnCustomDraw(CGridListCtrlEx& owner, NMLVCUSTOMDRAW* pLVCD, LRESULT* pResult) {} 28 | 29 | //! Override Accept() and update CGridColumnTraitVisitor for new column-trait classes 30 | //! - Will enable the use of the visitor-pattern ex. for serialization of column-traits 31 | virtual void Accept(CGridRowTraitVisitor& visitor) {} 32 | }; 33 | } 34 | #pragma warning(pop) -------------------------------------------------------------------------------- /UI++/CodeProject/GridListCtrlEx/CGridRowTraitVisitor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | //------------------------------------------------------------------------ 4 | // Author: Rolf Kristensen 5 | // Source: http://www.codeproject.com/KB/list/CGridListCtrlEx.aspx 6 | // License: Free to use for all (New BSD License) 7 | //------------------------------------------------------------------------ 8 | 9 | namespace CodeProject { 10 | 11 | class CGridRowTrait; 12 | class CGridRowTraitText; 13 | class CGridRowTraitXP; 14 | 15 | //------------------------------------------------------------------------ 16 | //! CGridRowTraitVisitor enables the use of the visitor-pattern to 17 | //! add extra behavior to the CGridRowTrait classes 18 | //------------------------------------------------------------------------ 19 | class CGridRowTraitVisitor 20 | { 21 | public: 22 | void Visit(CGridRowTrait&) {} 23 | void Visit(CGridRowTraitText&) {} 24 | void Visit(CGridRowTraitXP&) {} 25 | }; 26 | } -------------------------------------------------------------------------------- /UI++/CodeProject/GridListCtrlEx/CGridRowTraitXP.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | //------------------------------------------------------------------------ 4 | // Author: Rolf Kristensen 5 | // Source: http://www.codeproject.com/KB/list/CGridListCtrlEx.aspx 6 | // License: Free to use for all (New BSD License) 7 | //------------------------------------------------------------------------ 8 | 9 | #include "CGridRowTraitText.h" 10 | 11 | namespace CodeProject { 12 | 13 | //------------------------------------------------------------------------ 14 | //! CGridRowTraitXP fixes drawing of rows when the application is using 15 | //! classic- or XP-style. 16 | //------------------------------------------------------------------------ 17 | class CGridRowTraitXP : public CGridRowTraitText 18 | { 19 | public: 20 | virtual void OnCustomDraw(CGridListCtrlEx& owner, NMLVCUSTOMDRAW* pLVCD, LRESULT* pResult); 21 | 22 | protected: 23 | virtual void Accept(CGridRowTraitVisitor& visitor); 24 | }; 25 | } -------------------------------------------------------------------------------- /UI++/ConfigMgrFTW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/ConfigMgrFTW.png -------------------------------------------------------------------------------- /UI++/Dialogs/DlgAppTree.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "DlgBase.h" 4 | #include "afxcmn.h" 5 | #include "Software.h" 6 | #include "FTW\FTWTreeCtrl.h" 7 | 8 | // CAppTreeDlg dialog 9 | 10 | class CDlgAppTree : public CDlgBase 11 | { 12 | DECLARE_DYNAMIC(CDlgAppTree) 13 | 14 | public: 15 | // CDlgAppTree(FTWCMLOG::ICMLogPtr pLog, CWnd* pParent = NULL); // standard constructor 16 | CDlgAppTree(PCTSTR dlgTitle, 17 | const DialogVisibilityFlags flags, 18 | const UIpp::ActionData& data, 19 | FTW::FTWTreeItemList* pItems, 20 | CDlgBase::DlgSize size, 21 | bool expanded = false, 22 | CWnd* pParent = NULL); // standard constructor 23 | virtual ~CDlgAppTree(); 24 | 25 | // Dialog Data 26 | enum { IDD = IDD_APPTREEDLG }; 27 | enum { IDDTALL = IDD_APPTREEDLGTALL }; 28 | enum { IDDEXTRATALL = IDD_APPTREEDLGEXTRATALL }; 29 | 30 | protected: 31 | void Dummy(void) {}; 32 | 33 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 34 | 35 | afx_msg void OnBnClickedNextaction(); 36 | afx_msg void OnCheckNotify(NMHDR* pNMHDR, LRESULT* pResult); 37 | 38 | DECLARE_MESSAGE_MAP() 39 | 40 | public: 41 | virtual BOOL OnInitDialog(); 42 | 43 | protected: 44 | FTW::CFTWTreeCtrl m_appTree; 45 | FTW::FTWTreeItemList* m_pAppTreeItems; 46 | 47 | int m_initialized; 48 | bool m_treeExpandedByDefault; 49 | 50 | void ConvertIDStringList(CString idList, FTW::FTWTreeItemSet* pItemList); 51 | 52 | }; 53 | -------------------------------------------------------------------------------- /UI++/Dialogs/DlgBase.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/Dialogs/DlgBase.cpp -------------------------------------------------------------------------------- /UI++/Dialogs/DlgPreflight.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "DlgUserInput.h" 4 | #include "winldap.h" 5 | 6 | // CUserAuthDlg dialog 7 | 8 | class CDlgPreflight : public CDlgUserInput 9 | { 10 | DECLARE_DYNAMIC(CDlgPreflight) 11 | 12 | public: 13 | //CDlgPreflight(short flags, int maxRetries = 0, CWnd* pParent = NULL); // standard constructor 14 | CDlgPreflight(PCTSTR dlgTitle, 15 | const DialogVisibilityFlags flags, 16 | const UIpp::ActionData& data, 17 | CDlgBase::DlgSize size, 18 | int maxRetries = 0, 19 | CWnd* pParent = NULL); // standard constructor 20 | 21 | virtual ~CDlgPreflight(); 22 | 23 | // Dialog Data 24 | enum { IDD = IDD_INPUTDLG }; 25 | enum { IDDTALL = IDD_INPUTDLGTALL}; 26 | 27 | virtual BOOL OnInitDialog(); 28 | 29 | void ChecksWithWarnings(bool warnings) { m_checkWarnings = warnings; }; 30 | bool AddCheck(PCTSTR infoText, PCTSTR fontFace, UIpp::CUserInputBase::StatusType chkStat, PCTSTR descriptionText = nullptr, PCTSTR statusTooltipText = nullptr); 31 | void ShowRefreshButton(bool show) { if (show) m_visibilityFlags |= SHOW_REFRESH; else m_visibilityFlags = m_visibilityFlags & ~SHOW_REFRESH; }; 32 | 33 | protected: 34 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 35 | afx_msg void OnBnClickedRetryaction(); 36 | afx_msg void OnBnClickedNextaction(); 37 | 38 | DECLARE_MESSAGE_MAP() 39 | 40 | void Dummy(void) {}; 41 | 42 | void MoveButtons(); 43 | 44 | HansDietrich::CXButtonXP m_refresh; 45 | int m_refreshButtonPos = -1; 46 | //bool m_allChecksPassed; 47 | bool m_moveButtons = false; 48 | bool m_checkWarnings; 49 | }; 50 | -------------------------------------------------------------------------------- /UI++/Dialogs/DlgProgress.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "afxcmn.h" 3 | #include "afxwin.h" 4 | #include "Constants.h" 5 | 6 | #include "HansDietrich\XColorStatic.h" 7 | 8 | typedef UINT(*ProgressFunction)(LPVOID); 9 | 10 | #define WM_UPDATEPROGRESSBAR (WM_USER + 100) 11 | #define WM_CLOSEPROGRESSBAR (WM_USER + 101) 12 | 13 | // CUIProgressDlg dialog 14 | 15 | class CDlgUIProgress : public CDialog 16 | { 17 | DECLARE_DYNAMIC(CDlgUIProgress) 18 | 19 | public: 20 | CDlgUIProgress(int maxRange = 100, PCTSTR title = 0, PCTSTR fontFace = DEFAULT_FONTFACE, CWnd* pParent = NULL); // standard constructor 21 | virtual ~CDlgUIProgress(); 22 | 23 | // Dialog Data 24 | #ifdef AFX_DESIGN_TIME 25 | enum { IDD = IDD_UIPROGRESSDLG }; 26 | #endif 27 | 28 | protected: 29 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 30 | 31 | DECLARE_MESSAGE_MAP() 32 | CProgressCtrl m_progress; 33 | HansDietrich::CXColorStatic m_progressMessage; 34 | HansDietrich::CXColorStatic m_progressTitle; 35 | CString m_titleText; 36 | CString m_fontFaceName; 37 | CBrush m_brush; 38 | 39 | int m_maxRange; 40 | 41 | //afx_msg BOOL OnEraseBkgnd(CDC* pDC); 42 | virtual BOOL OnInitDialog(); 43 | 44 | afx_msg LRESULT OnCloseProgressBar(WPARAM, LPARAM); 45 | afx_msg LRESULT OnUpdateProgressBar(WPARAM wParam, LPARAM lParam); 46 | public: 47 | //virtual INT_PTR DoModal(); 48 | afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); 49 | afx_msg void OnIdcancel(); 50 | }; 51 | -------------------------------------------------------------------------------- /UI++/Dialogs/DlgUserInfo.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "HansDietrich\XHTMLCtrl.h" 4 | 5 | //#include "afxwin.h" 6 | //#include "afxbutton.h" 7 | #include "DlgBase.h" 8 | 9 | // CInfoDlg dialog 10 | 11 | class CDlgUserInfo : public CDlgBase 12 | { 13 | DECLARE_DYNAMIC(CDlgUserInfo) 14 | 15 | public: 16 | 17 | ////CInfoDlg(bool showCancel = false, CWnd* pParent = NULL); // standard constructor 18 | //CDlgUserInfo(DialogVisibilityFlags flags, FTWCMLOG::ICMLogPtr pLog, PCTSTR brandingImagePath = nullptr 19 | // , PCTSTR infoImagePath = nullptr, CWnd* pParent = NULL); // standard constructor 20 | 21 | CDlgUserInfo(PCTSTR dlgTitle, 22 | const DialogVisibilityFlags flags, 23 | const UIpp::ActionData& data, 24 | PCTSTR infoText = _T(""), 25 | PCTSTR brandingImagePath = nullptr, 26 | PCTSTR infoImagePath = nullptr, 27 | CWnd* pParent = NULL); 28 | 29 | virtual ~CDlgUserInfo(); 30 | 31 | // Dialog Data 32 | enum { IDD = IDD_INFODLG }; 33 | enum { IDD_BANNER = IDD_INFOBANNERDLG }; 34 | 35 | virtual BOOL OnInitDialog(); 36 | 37 | protected: 38 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 39 | 40 | DECLARE_MESSAGE_MAP() 41 | 42 | CString m_dlgInfoText; 43 | 44 | void Dummy(void) {}; 45 | 46 | HansDietrich::CXHTMLCtrl m_dlgInfo; 47 | CStatic m_dlgBrandingBanner; 48 | CImage m_brandingImage; 49 | CString m_brandingImagePath; 50 | CStatic m_dlgInfoBanner; 51 | CImage m_infoImage; 52 | CString m_infoImagePath; 53 | 54 | bool m_brandingImageLoaded; 55 | }; 56 | -------------------------------------------------------------------------------- /UI++/Dialogs/DlgUserInfoFullScreen.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/Dialogs/DlgUserInfoFullScreen.cpp -------------------------------------------------------------------------------- /UI++/FTW/ComInit.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | namespace FTW 3 | { 4 | 5 | class ComInit 6 | { 7 | public: 8 | ComInit(bool init = true) : m_hrInit(CO_E_NOTINITIALIZED) { if (init) Init(); } 9 | ~ComInit() 10 | { 11 | if (m_hrInit == S_OK || m_hrInit == S_FALSE) 12 | { 13 | ::CoUninitialize(); 14 | TRACE("INFO: COM uninitizalized\n"); 15 | } 16 | } 17 | 18 | static HRESULT InitSecurity(void) { return ::CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL); } 19 | 20 | static ComInit& Instance() 21 | { 22 | static ComInit _COM; 23 | return _COM; 24 | } 25 | 26 | HRESULT InitStatus(void) { return m_hrInit; } 27 | HRESULT Init(void) 28 | { 29 | if (m_hrInit == CO_E_NOTINITIALIZED) 30 | m_hrInit = ::CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); 31 | 32 | if (m_hrInit == S_OK) 33 | TRACE("INFO: COM initizalized\n"); 34 | 35 | return m_hrInit; 36 | } 37 | 38 | private: 39 | HRESULT m_hrInit; 40 | 41 | }; 42 | } -------------------------------------------------------------------------------- /UI++/FTW/FTWBrowseEdit.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/FTW/FTWBrowseEdit.cpp -------------------------------------------------------------------------------- /UI++/FTW/FTWBrowseEdit.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/FTW/FTWBrowseEdit.h -------------------------------------------------------------------------------- /UI++/FTW/FTWControl.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | class CFTWControl 4 | { 5 | public: 6 | CFTWControl(CEdit* pEdit, bool emptyAllowed = false); 7 | ~CFTWControl(); 8 | 9 | bool IsInputValid(void) const { return m_validInput; } 10 | bool ValidateInput(void); 11 | 12 | static UINT UWM_VALUE_CHANGED; 13 | 14 | protected: 15 | bool m_validInput; 16 | bool m_emptyAllowed; 17 | bool m_hasFocus; 18 | bool m_initialFocus; 19 | 20 | CBrush m_focusBrush; 21 | CBrush m_noFocusBrush; 22 | CBrush m_background; 23 | CBrush m_noFocusErrorBrush; 24 | 25 | CEdit* m_pEdit; 26 | 27 | //CFont* m_pFont; 28 | 29 | //CToolTipCtrl m_ToolTip; 30 | //CString m_toolTipText; 31 | //CString m_toolTipTitle; 32 | 33 | void DrawEditFrame(); 34 | void DrawEditFrame(bool hasFocus); 35 | 36 | afx_msg void OnEnKillfocus(); 37 | afx_msg void OnEnSetfocus(); 38 | afx_msg void OnEnChange(); 39 | afx_msg HBRUSH CtlColor(CDC* pDC, UINT /*nCtlColor*/); 40 | }; 41 | 42 | -------------------------------------------------------------------------------- /UI++/FTW/TSCore.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/FTW/TSCore.dll -------------------------------------------------------------------------------- /UI++/FTW/TSProgress.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "TSProgress.h" 3 | 4 | 5 | CTSProgress::CTSProgress(void) 6 | : m_pTSProgress(0) 7 | { 8 | 9 | try 10 | { 11 | //Try to retrieve an instance of the Microsoft.SMS.TSEnvironment class 12 | HRESULT hr = m_pTSProgress.CreateInstance (ProgressUILib::CLSID_ProgressUI); 13 | 14 | if (hr == S_OK) 15 | { 16 | 17 | TRACE("INFO: Created Microsoft.SMS.TsProgressUI\n"); 18 | 19 | } 20 | else 21 | { 22 | TRACE("INFO: Unable to create Microsoft.SMS.TsProgressUI\n"); 23 | m_pTSProgress = 0; 24 | } 25 | 26 | } 27 | catch (_com_error ce) 28 | { 29 | TRACE("INFO: Unable to create Microsoft.SMS.TsProgressUI\n"); 30 | m_pTSProgress = 0; 31 | } 32 | 33 | } 34 | 35 | 36 | CTSProgress::~CTSProgress(void) 37 | { 38 | } 39 | -------------------------------------------------------------------------------- /UI++/FTW/TSProgress.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #import "TSProgressUI.exe" named_guids 4 | 5 | class CTSProgress 6 | { 7 | public: 8 | CTSProgress(void); 9 | ~CTSProgress(void); 10 | 11 | inline static CTSProgress& Instance() 12 | { 13 | static CTSProgress _TSProgress; 14 | return _TSProgress; 15 | } 16 | 17 | void Close(void) 18 | { 19 | if(m_pTSProgress) 20 | m_pTSProgress->CloseProgressDialog(); 21 | } 22 | 23 | private: 24 | CTSProgress operator=(CTSProgress const&); 25 | CTSProgress (CTSProgress const&); 26 | 27 | ProgressUILib::IProgressUIPtr m_pTSProgress; 28 | }; 29 | 30 | -------------------------------------------------------------------------------- /UI++/FTW/Utils_old.h: -------------------------------------------------------------------------------- 1 | // Utils.h 2 | // 3 | // Copyright (c) Jason Sandys, 2009 4 | // 5 | // License: This code is released according to the 6 | // Microsoft Public License (Ms-PL) as documented at 7 | // http://UIappchooser.codeplex.com/license 8 | // 9 | // Some code in this file is based on a series of articles by David 10 | // Sackstein: http://blogs.microsoft.co.il/blogs/davids/archive/2008/12/20/msxml-in-c-but-as-elegant-as-c.aspx 11 | // 12 | ////////////////////////////////////////////////////////////////////// 13 | 14 | #pragma once 15 | 16 | #define MAX_STRING_LENGTH 1024 17 | 18 | namespace FTW 19 | { 20 | 21 | inline bool CheckForFlag(const short flags, const short flag) { 22 | return ((flags & flag) == flag); 23 | }; 24 | 25 | PCTSTR BoolString(bool value); 26 | 27 | PCTSTR BoolString(VARIANT_BOOL value); 28 | 29 | PCTSTR BoolString(BOOL value); 30 | 31 | CString FormatHRString(HRESULT hr); 32 | CString FormatResourceString(DWORD dwStrID, ...); 33 | CString FormatResourceString(DWORD dwStrID, va_list* args); 34 | 35 | //DWORD DownloadFileFromURL(CString& destinationPathandName, PCTSTR pURL, PCTSTR pDestination = nullptr, bool binary = false); 36 | 37 | COLORREF HexToCOLORREF(PCTSTR hexColor, const COLORREF defaultColor = RGB(0, 0, 0)); 38 | 39 | BOOL Is64BitOS(); 40 | 41 | bool IsTrue(PCTSTR value); 42 | 43 | bool FileExists(PCTSTR filename); 44 | 45 | CString JoinPath(PCTSTR part1, PCTSTR part2); 46 | 47 | CString FormatSeconds(int totalSeconds); 48 | } 49 | 50 | #define WIDEN2(x) L ## x 51 | #define WIDEN(x) WIDEN2(x) 52 | #define __WFILE__ WIDEN(__FILE__) 53 | //wchar_t *pwsz = __WFILE__; 54 | 55 | #ifdef _UNICODE 56 | #define __TFILE__ __WFILE__ 57 | #else 58 | #define __TFILE__ __FILE__ 59 | #endif -------------------------------------------------------------------------------- /UI++/FTW/tsprogressui.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/FTW/tsprogressui.exe -------------------------------------------------------------------------------- /UI++/HansDietrich/CXDC.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/CXDC.h -------------------------------------------------------------------------------- /UI++/HansDietrich/CXPoint.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/CXPoint.h -------------------------------------------------------------------------------- /UI++/HansDietrich/CXRect.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/CXRect.h -------------------------------------------------------------------------------- /UI++/HansDietrich/CXWaitCursor.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/CXWaitCursor.h -------------------------------------------------------------------------------- /UI++/HansDietrich/FontSize.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/FontSize.cpp -------------------------------------------------------------------------------- /UI++/HansDietrich/FontSize.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/FontSize.h -------------------------------------------------------------------------------- /UI++/HansDietrich/XBalloonMsg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/XBalloonMsg.cpp -------------------------------------------------------------------------------- /UI++/HansDietrich/XBalloonMsg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/XBalloonMsg.h -------------------------------------------------------------------------------- /UI++/HansDietrich/XColorStatic.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/XColorStatic.cpp -------------------------------------------------------------------------------- /UI++/HansDietrich/XColorStatic.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/XColorStatic.h -------------------------------------------------------------------------------- /UI++/HansDietrich/XDisplayImage.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/XDisplayImage.cpp -------------------------------------------------------------------------------- /UI++/HansDietrich/XDisplayImage.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/XDisplayImage.h -------------------------------------------------------------------------------- /UI++/HansDietrich/XHTMLCtrl.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/XHTMLCtrl.cpp -------------------------------------------------------------------------------- /UI++/HansDietrich/XHTMLCtrl.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/XHTMLCtrl.h -------------------------------------------------------------------------------- /UI++/HansDietrich/XHtmlDrawLink.h: -------------------------------------------------------------------------------- 1 | // XHtmlDrawLink.h Version 1.2 - article available at www.codeproject.com 2 | // 3 | // Author: Hans Dietrich 4 | // hdietrich@gmail.com 5 | // 6 | // License: 7 | // This software is released into the public domain. You are free to use 8 | // it in any way you like, except that you may not sell this source code. 9 | // 10 | // This software is provided "as is" with no expressed or implied warranty. 11 | // I accept no liability for any damage or loss of business that this 12 | // software may cause. 13 | // 14 | /////////////////////////////////////////////////////////////////////////////// 15 | 16 | #ifndef XHTMLDRAWLINK_H 17 | #define XHTMLDRAWLINK_H 18 | 19 | #include "XHtmlDraw.h" 20 | 21 | namespace HansDietrich { 22 | class CXHtmlDrawLink 23 | { 24 | // ctor 25 | public: 26 | CXHtmlDrawLink(); 27 | virtual ~CXHtmlDrawLink(); 28 | 29 | // Operations 30 | public: 31 | BOOL GotoURL(LPCTSTR url, int showcmd, LPARAM lParam); 32 | BOOL ProcessAppCommand(LPCTSTR lpszCommand, LPARAM lParam); 33 | void SetAppCommands(CXHtmlDraw::XHTMLDRAW_APP_COMMAND * paAppCommands, 34 | int nAppCommands); 35 | BOOL SetLinkCursor(); 36 | 37 | // Implementation 38 | protected: 39 | HCURSOR m_hLinkCursor; // cursor for links 40 | int m_nAppCommands; 41 | CXHtmlDraw::XHTMLDRAW_APP_COMMAND * m_paAppCommands; 42 | 43 | LONG GetRegKey(HKEY key, LPCTSTR subkey, LPTSTR lpData); 44 | void SetDefaultCursor(); 45 | }; 46 | } 47 | #endif //XHTMLDRAWLINK_H 48 | -------------------------------------------------------------------------------- /UI++/HansDietrich/XHyperLink.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/XHyperLink.cpp -------------------------------------------------------------------------------- /UI++/HansDietrich/XNamedColors.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/XNamedColors.cpp -------------------------------------------------------------------------------- /UI++/HansDietrich/XNamedColors.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/XNamedColors.h -------------------------------------------------------------------------------- /UI++/HansDietrich/XString.h: -------------------------------------------------------------------------------- 1 | // XString.h Version 1.1 - article available at www.codeproject.com 2 | // 3 | // Author: Hans Dietrich 4 | // hdietrich@gmail.com 5 | // 6 | // License: 7 | // This software is released into the public domain. You are free to use 8 | // it in any way you like, except that you may not sell this source code. 9 | // 10 | // This software is provided "as is" with no expressed or implied warranty. 11 | // I accept no liability for any damage or loss of business that this 12 | // software may cause. 13 | // 14 | /////////////////////////////////////////////////////////////////////////////// 15 | 16 | #ifndef XSTRING_H 17 | #define XSTRING_H 18 | 19 | // find 20 | TCHAR * _tcsistr(const TCHAR * str, const TCHAR * substr); 21 | int _tcsccnt(const TCHAR *str, TCHAR ch); 22 | 23 | // removal 24 | TCHAR * _tcscrem(TCHAR *str, TCHAR ch); 25 | TCHAR * _tcsicrem(TCHAR *str, TCHAR ch); 26 | TCHAR * _tcsstrrem(TCHAR *str, const TCHAR *substr); 27 | TCHAR * _tcsistrrem(TCHAR *str, const TCHAR *substr); 28 | 29 | // replace 30 | TCHAR * _tcscrep(TCHAR *str, TCHAR chOld, TCHAR chNew); 31 | TCHAR * _tcsicrep(TCHAR *str, TCHAR chOld, TCHAR chNew); 32 | int _tcsistrrep(const TCHAR * lpszStr, 33 | const TCHAR * lpszOld, 34 | const TCHAR * lpszNew, 35 | TCHAR * lpszResult); 36 | 37 | // trim 38 | TCHAR *_tcsltrim(TCHAR *str, const TCHAR *targets); 39 | TCHAR *_tcsrtrim(TCHAR *str, const TCHAR *targets); 40 | TCHAR *_tcstrim(TCHAR *str, const TCHAR *targets); 41 | 42 | // copy 43 | TCHAR *_tcsnzdup(const TCHAR *str, size_t count); 44 | TCHAR *_tcszdup(const TCHAR * str); 45 | 46 | #endif //XSTRING_H 47 | -------------------------------------------------------------------------------- /UI++/HansDietrich/cxtooltipctrl.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/HansDietrich/cxtooltipctrl.h -------------------------------------------------------------------------------- /UI++/HansDietrich/ensure.h: -------------------------------------------------------------------------------- 1 | // ensure.h - throw const char* error on failed assertion 2 | // Copyright (c) 2005 Keith A. Lewis mailto:kal@kalx.net 3 | #pragma once 4 | #ifndef ENSURE_H 5 | #define ENSURE_H 6 | 7 | namespace CodeProject { 8 | 9 | #ifndef WIN32 10 | #define _T(x) x 11 | #endif 12 | 13 | #define ENSURE_HASH(x) #x 14 | #define ENSURE_STRING(x) ENSURE_HASH(x) 15 | #pragma warning(disable: 4297) 16 | // like assert, but throws const char* 17 | #define ensure(e) { if (!(e)) throw _T(__FILE__) \ 18 | _T("(") _T(ENSURE_STRING(__LINE__)) _T(") : ensure: \"") \ 19 | _T(#e) _T("\" failed"); } 20 | 21 | } 22 | 23 | #endif // ENSURE_H -------------------------------------------------------------------------------- /UI++/IntEdit.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "BaseEdit.h" 3 | 4 | namespace FilterEdit 5 | { 6 | class CIntEdit : public CBaseEdit 7 | { 8 | public: 9 | CIntEdit (); 10 | virtual ~CIntEdit (); 11 | int GetValue () const; 12 | 13 | private: 14 | static bool m_bInitialised; 15 | static std::wregex m_RegEx; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /UI++/Software.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "Software.h" 3 | 4 | -------------------------------------------------------------------------------- /UI++/TooltipStatic.cpp: -------------------------------------------------------------------------------- 1 | // TooltipStatic.cpp : implementation file 2 | // 3 | 4 | #include "stdafx.h" 5 | #include "UI++.h" 6 | #include "TooltipStatic.h" 7 | 8 | 9 | // CTooltipStatic 10 | namespace FTW 11 | { 12 | IMPLEMENT_DYNAMIC(CTooltipStatic, CStatic) 13 | 14 | CTooltipStatic::CTooltipStatic() 15 | { 16 | 17 | } 18 | 19 | CTooltipStatic::~CTooltipStatic() 20 | { 21 | } 22 | 23 | 24 | BEGIN_MESSAGE_MAP(CTooltipStatic, CStatic) 25 | END_MESSAGE_MAP() 26 | 27 | 28 | 29 | // CTooltipStatic message handlers 30 | 31 | 32 | 33 | 34 | void CTooltipStatic::PreSubclassWindow() 35 | { 36 | DWORD dwStyle = GetStyle(); 37 | SetWindowLong(GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY); 38 | 39 | CStatic::PreSubclassWindow(); 40 | } 41 | 42 | void CTooltipStatic::CreateTooltip(PCTSTR text) 43 | { 44 | if (text != nullptr && _tcslen(text) > 0) 45 | { 46 | m_tooltip.Create(this, TTS_ALWAYSTIP | TTS_BALLOON | TTS_NOPREFIX); 47 | CRect oRect; 48 | GetClientRect(&oRect); 49 | m_tooltip.AddTool(this, text, oRect, 1001); 50 | m_tooltip.ShowWindow(SW_HIDE); 51 | m_tooltipCreated = true; 52 | } 53 | } 54 | 55 | 56 | BOOL CTooltipStatic::PreTranslateMessage(MSG* pMsg) 57 | { 58 | if(m_tooltipCreated) 59 | m_tooltip.RelayEvent(pMsg); 60 | 61 | return CStatic::PreTranslateMessage(pMsg); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /UI++/TooltipStatic.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | 4 | // CTooltipStatic 5 | namespace FTW 6 | { 7 | class CTooltipStatic : public CStatic 8 | { 9 | DECLARE_DYNAMIC(CTooltipStatic) 10 | 11 | public: 12 | CTooltipStatic(); 13 | virtual ~CTooltipStatic(); 14 | 15 | void CreateTooltip(PCTSTR text); 16 | 17 | protected: 18 | DECLARE_MESSAGE_MAP() 19 | virtual void PreSubclassWindow(); 20 | virtual BOOL PreTranslateMessage(MSG* pMsg); 21 | 22 | CToolTipCtrl m_tooltip; 23 | 24 | bool m_tooltipCreated = false; 25 | 26 | }; 27 | } 28 | 29 | 30 | -------------------------------------------------------------------------------- /UI++/UI++ (Logical Disks Snippet).xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | cscript.exe //NOLOGO //B Get-LogicalDisks.vbs 5 | 6 | 7 | 8 | 9 | 10 | "%VolumeChoice%" 11 | 12 | 13 | -------------------------------------------------------------------------------- /UI++/UI++.APS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/UI++.APS -------------------------------------------------------------------------------- /UI++/UI++.h: -------------------------------------------------------------------------------- 1 | 2 | // UI++.h : main header file for the PROJECT_NAME application 3 | // 4 | 5 | #pragma once 6 | 7 | #ifndef __AFXWIN_H__ 8 | #error "include 'stdafx.h' before including this file for PCH" 9 | #endif 10 | 11 | #include "resource.h" // main symbols 12 | #include "pugi\pugixml.hpp" 13 | #include "Software.h" 14 | #include "FTWCMLog.h" 15 | 16 | #include 17 | 18 | typedef std::vector DLLVector; 19 | typedef std::vector::iterator DLLVectorIterator; 20 | 21 | 22 | // CUIppApp: 23 | // See UI++.cpp for the implementation of this class 24 | // 25 | 26 | class CUIppApp : public CWinApp 27 | { 28 | public: 29 | CUIppApp(); 30 | ~CUIppApp(); 31 | 32 | // Overrides 33 | public: 34 | virtual BOOL InitInstance(); 35 | 36 | // Implementation 37 | 38 | DECLARE_MESSAGE_MAP() 39 | protected: 40 | //std::ofstream dbgFile; 41 | 42 | void Process(FTWCMLOG::ICMLogPtr pLog, bool isInTaskSequence, bool isInWinPE); 43 | void ProcessCommandLine(FTWCMLOG::ICMLogPtr pLog, CString& configFilename, CString& configFilenameFallback, int& downloadRetry, bool& disableVarEditor); 44 | void LoadActionLibraries(FTWCMLOG::ICMLogPtr pLog, pugi::xml_node& libraryNode); 45 | bool LoadConfig(FTWCMLOG::ICMLogPtr pLog, pugi::xml_document& configDoc, PCTSTR pFilename, int retry = 0, PCTSTR pAltFilename = nullptr); 46 | void GetSoftware(FTWCMLOG::ICMLogPtr pLog, pugi::xml_node& softwareNode, UIpp::SoftwareMap& software); 47 | //FTW::ComInit m_com; 48 | 49 | INT_PTR m_returnCode; 50 | DLLVector m_loadedDlls; 51 | 52 | public: 53 | virtual int ExitInstance(); 54 | }; 55 | 56 | extern CUIppApp theApp; 57 | -------------------------------------------------------------------------------- /UI++/UI++.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/UI++.rc -------------------------------------------------------------------------------- /UI++/UI++.rc.bak.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/UI++.rc.bak.rc -------------------------------------------------------------------------------- /UI++/UI++.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /UI++/UI++2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/UI++2.ico -------------------------------------------------------------------------------- /UI++/UserInfoCheck.cpp: -------------------------------------------------------------------------------- 1 | #include "StdAfx.h" 2 | #include "UserInfoCheck.h" 3 | 4 | namespace UIpp { 5 | bool CUserInfoCheck::Create(CRect rect, CWnd* pParentWnd, UINT& uID, LONG lineHeight, LONG spacing, CFont* pFont) 6 | { 7 | ASSERT(pParentWnd); 8 | 9 | CUserInputBase::Create(rect, pParentWnd, uID, lineHeight, spacing, pFont); 10 | 11 | SetStatus(m_status); 12 | m_statusIndicator.CreateTooltip(m_statusTooltipText); 13 | 14 | return true; 15 | } 16 | } -------------------------------------------------------------------------------- /UI++/UserInfoCheck.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "UserInputInfo.h" 4 | 5 | namespace UIpp { 6 | class CUserInfoCheck : 7 | public CUserInputInfo 8 | { 9 | public: 10 | 11 | CUserInfoCheck(PCTSTR text, PCTSTR fontFace, CUserInputBase::StatusType stat = CUserInputBase::StatusType::Failed, PCTSTR descriptionText = nullptr, PCTSTR statusTootipText = nullptr) 12 | : CUserInputInfo(text, fontFace), m_descriptionText(descriptionText), m_statusTooltipText(statusTootipText) 13 | { 14 | m_status = stat; 15 | }; 16 | 17 | ~CUserInfoCheck(void) 18 | { 19 | 20 | } 21 | 22 | bool Create(CRect rect, CWnd* pParentWnd, UINT& uID, LONG lineHeight, LONG spacing = 0, CFont* pFont = 0); 23 | 24 | void ShowInput(bool show = true) 25 | { 26 | m_inputVisible = show; 27 | CUserInputBase::ShowInput(show); 28 | } 29 | 30 | int MoveItem(int y, int h) 31 | { 32 | y = CUserInputBase::MoveInput(y, h); 33 | return y; 34 | } 35 | 36 | virtual bool IsInputValid() 37 | { 38 | return m_status != CUserInputBase::StatusType::Failed; 39 | } 40 | 41 | virtual bool IsInputStatusWarning() 42 | { 43 | return m_status == CUserInputBase::StatusType::Warning; 44 | } 45 | 46 | InputType GetType(void) { return CUserInputBase::InputType::CheckInfo; }; 47 | 48 | protected: 49 | CString m_descriptionText; 50 | CString m_statusTooltipText; 51 | }; 52 | } -------------------------------------------------------------------------------- /UI++/UserInputCheckbox.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "UserInputCheckbox.h" 3 | 4 | namespace UIpp { 5 | 6 | bool CUserInputCheckbox::Create(CRect rect, CWnd* pParentWnd, UINT& uID, LONG lineHeight, LONG spacing, CFont* pFont) 7 | { 8 | ASSERT(pParentWnd); 9 | 10 | m_lineHeight = lineHeight; 11 | rect.bottom += m_lineHeight; 12 | 13 | DWORD style = /*WS_VISIBLE |*/ WS_CHILD | WS_TABSTOP | BS_AUTOCHECKBOX; 14 | m_pFontx = pFont; 15 | 16 | CRect checkboxRect(rect); 17 | checkboxRect.right = checkboxRect.left + 13; 18 | checkboxRect.top = checkboxRect.top + 5; 19 | checkboxRect.bottom = checkboxRect.bottom - 6; 20 | 21 | m_pCheckBox = new CButton(); 22 | m_pCheckBox->Create(_T(""), style, checkboxRect, pParentWnd, ++uID); 23 | 24 | if (m_defaultValue == m_checkedValue) 25 | m_pCheckBox->SetCheck(BST_CHECKED); 26 | 27 | rect.left += 25; 28 | 29 | CreateTextControl(rect, pParentWnd); 30 | 31 | return true; 32 | } 33 | 34 | PCTSTR CUserInputCheckbox::GetValue(bool alternate) 35 | { 36 | if (m_pCheckBox) 37 | { 38 | if (m_pCheckBox->GetCheck() == BST_CHECKED) 39 | return (PCTSTR)m_checkedValue; 40 | else if (m_pCheckBox->GetCheck() == BST_UNCHECKED) 41 | return (PCTSTR)m_uncheckedValue; 42 | } 43 | 44 | return _T(""); 45 | } 46 | 47 | } -------------------------------------------------------------------------------- /UI++/UserInputCheckbox.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "UserInputBase.h" 4 | 5 | namespace UIpp { 6 | 7 | class CUserInputCheckbox : 8 | public CUserInputBase 9 | { 10 | public: 11 | CUserInputCheckbox(PCTSTR question, PCTSTR valueName, PCTSTR fontFace, PCTSTR checkedVal, PCTSTR uncheckVal, PCTSTR defaultVal) 12 | : CUserInputBase(question, valueName, fontFace, nullptr, 1), 13 | m_checkedValue(checkedVal), 14 | m_uncheckedValue(uncheckVal), 15 | m_defaultValue(defaultVal), 16 | m_pCheckBox(nullptr) 17 | {}; 18 | 19 | ~CUserInputCheckbox(void) 20 | { 21 | if (m_pCheckBox != nullptr) 22 | delete m_pCheckBox; 23 | } 24 | 25 | bool Create(CRect rect, CWnd* pParentWnd, UINT& uID, LONG lineHeight, LONG spacing = 0, CFont* pFont = 0); 26 | 27 | void ShowInput(bool show = true) 28 | { 29 | CUserInputBase::ShowInput(show); 30 | m_pCheckBox->ShowWindow(show ? SW_SHOW : SW_HIDE); 31 | } 32 | 33 | int MoveItem(int y, int h) 34 | { 35 | y = CUserInputBase::MoveInput(y, h); 36 | return y; 37 | } 38 | 39 | void Disable(bool disable) 40 | { 41 | if (m_pCheckBox != nullptr) 42 | m_pCheckBox->EnableWindow(!disable); 43 | } 44 | 45 | bool IsInputValid() 46 | { 47 | return true; 48 | } 49 | 50 | PCTSTR GetValue(bool alternate); 51 | 52 | void ClearInput(void) 53 | { 54 | //m_pEdit->SetWindowText(L""); 55 | }; 56 | 57 | InputType GetType(void) { return CUserInputBase::InputType::CheckboxInput; }; 58 | 59 | protected: 60 | CString m_checkedValue; 61 | CString m_uncheckedValue; 62 | CString m_defaultValue; 63 | 64 | CString m_value; 65 | 66 | CButton* m_pCheckBox; 67 | }; 68 | 69 | } -------------------------------------------------------------------------------- /UI++/UserInputInfo.cpp: -------------------------------------------------------------------------------- 1 | #include "StdAfx.h" 2 | #include "UserInputInfo.h" 3 | 4 | namespace UIpp { 5 | bool CUserInputInfo::Create(CRect rect, CWnd* pParentWnd, UINT& uID, LONG lineHeight, LONG spacing, CFont* pFont) 6 | { 7 | ASSERT(pParentWnd); 8 | 9 | m_lineHeight = lineHeight; 10 | rect.bottom += (m_lineHeight * m_numberofTextLines); 11 | 12 | m_pFontx = pFont; 13 | CreateTextControl(rect, pParentWnd); 14 | 15 | return true; 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /UI++/UserInputInfo.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "UserInputBase.h" 4 | 5 | namespace UIpp { 6 | 7 | class CUserInputInfo : 8 | public CUserInputBase 9 | { 10 | public: 11 | CUserInputInfo(PCTSTR text, PCTSTR fontFace, int numLines = 1, COLORREF textColor = RGB(0, 0, 0)) 12 | : CUserInputBase(text, fontFace, numLines) 13 | { 14 | m_textColor = textColor; 15 | }; 16 | 17 | ~CUserInputInfo(void) 18 | { 19 | 20 | } 21 | 22 | bool Create(CRect rect, CWnd* pParentWnd, UINT& uID, LONG lineHeight, LONG spacing, CFont* pFont = 0); 23 | 24 | void ShowInput(bool show = true) 25 | { 26 | CUserInputBase::ShowInput(show); 27 | } 28 | 29 | int MoveItem(int y, int h) 30 | { 31 | y = CUserInputBase::MoveInput(y, h); 32 | return y; 33 | } 34 | 35 | virtual bool IsInputValid() 36 | { 37 | return true; 38 | } 39 | 40 | InputType GetType(void) { return CUserInputBase::InputType::InputInfo; }; 41 | 42 | const int GetInputHeight(void) { 43 | return m_lineHeight * m_numberofTextLines; 44 | }; 45 | }; 46 | } -------------------------------------------------------------------------------- /UI++/approved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/approved.png -------------------------------------------------------------------------------- /UI++/curl/include/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS = curl 2 | 3 | EXTRA_DIST = README 4 | 5 | AUTOMAKE_OPTIONS = foreign no-dependencies 6 | -------------------------------------------------------------------------------- /UI++/curl/include/curl/stdcheaders.h: -------------------------------------------------------------------------------- 1 | #ifndef __STDC_HEADERS_H 2 | #define __STDC_HEADERS_H 3 | /*************************************************************************** 4 | * _ _ ____ _ 5 | * Project ___| | | | _ \| | 6 | * / __| | | | |_) | | 7 | * | (__| |_| | _ <| |___ 8 | * \___|\___/|_| \_\_____| 9 | * 10 | * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. 11 | * 12 | * This software is licensed as described in the file COPYING, which 13 | * you should have received as part of this distribution. The terms 14 | * are also available at https://curl.haxx.se/docs/copyright.html. 15 | * 16 | * You may opt to use, copy, modify, merge, publish, distribute and/or sell 17 | * copies of the Software, and permit persons to whom the Software is 18 | * furnished to do so, under the terms of the COPYING file. 19 | * 20 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 21 | * KIND, either express or implied. 22 | * 23 | ***************************************************************************/ 24 | 25 | #include 26 | 27 | size_t fread(void *, size_t, size_t, FILE *); 28 | size_t fwrite(const void *, size_t, size_t, FILE *); 29 | 30 | int strcasecmp(const char *, const char *); 31 | int strncasecmp(const char *, const char *, size_t); 32 | 33 | #endif /* __STDC_HEADERS_H */ 34 | -------------------------------------------------------------------------------- /UI++/qr-liverpool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/qr-liverpool.png -------------------------------------------------------------------------------- /UI++/qr-manutd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/qr-manutd.png -------------------------------------------------------------------------------- /UI++/res/ButtonBack-Grey.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/ButtonBack-Grey.ico -------------------------------------------------------------------------------- /UI++/res/ButtonBack.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/ButtonBack.ico -------------------------------------------------------------------------------- /UI++/res/ButtonCancel-Grey.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/ButtonCancel-Grey.ico -------------------------------------------------------------------------------- /UI++/res/ButtonCancel.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/ButtonCancel.ico -------------------------------------------------------------------------------- /UI++/res/ButtonOK-Grey.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/ButtonOK-Grey.ico -------------------------------------------------------------------------------- /UI++/res/ButtonOK.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/ButtonOK.ico -------------------------------------------------------------------------------- /UI++/res/ButtonRefresh-Grey.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/ButtonRefresh-Grey.ico -------------------------------------------------------------------------------- /UI++/res/ButtonRefresh.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/ButtonRefresh.ico -------------------------------------------------------------------------------- /UI++/res/ButtonRestart.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/ButtonRestart.ico -------------------------------------------------------------------------------- /UI++/res/DlgAppTree.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/DlgAppTree.ico -------------------------------------------------------------------------------- /UI++/res/DlgAuth.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/DlgAuth.ico -------------------------------------------------------------------------------- /UI++/res/DlgInfo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/DlgInfo.ico -------------------------------------------------------------------------------- /UI++/res/DlgInput.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/DlgInput.ico -------------------------------------------------------------------------------- /UI++/res/DlgPreflight.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/DlgPreflight.ico -------------------------------------------------------------------------------- /UI++/res/DlgStop.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/DlgStop.ico -------------------------------------------------------------------------------- /UI++/res/InfoTip.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/InfoTip.ico -------------------------------------------------------------------------------- /UI++/res/InputAttention.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/InputAttention.ico -------------------------------------------------------------------------------- /UI++/res/StatusFailed.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/StatusFailed.ico -------------------------------------------------------------------------------- /UI++/res/StatusPassed.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/StatusPassed.ico -------------------------------------------------------------------------------- /UI++/res/StatusWarning.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/StatusWarning.ico -------------------------------------------------------------------------------- /UI++/res/UI++ Tree Checkboxes.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/UI++ Tree Checkboxes.bmp -------------------------------------------------------------------------------- /UI++/res/UI++ Tree.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/UI++ Tree.bmp -------------------------------------------------------------------------------- /UI++/res/UI++.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/UI++.ico -------------------------------------------------------------------------------- /UI++/res/UI++2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/UI++2.ico -------------------------------------------------------------------------------- /UI++/res/UI.rc2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/UI.rc2 -------------------------------------------------------------------------------- /UI++/res/icon1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/res/icon1.ico -------------------------------------------------------------------------------- /UI++/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/resource.h -------------------------------------------------------------------------------- /UI++/resource.hm: -------------------------------------------------------------------------------- 1 | // Microsoft Visual C++ generated Help ID include file. 2 | // Used by UI++.rc 3 | // 4 | #define HIDC_TITLE 0x20 // IDD_APPTREEDLG 5 | -------------------------------------------------------------------------------- /UI++/resources/Test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/resources/Test.jpg -------------------------------------------------------------------------------- /UI++/resources/UI++.3.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /UI++/resources/UI++2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/resources/UI++2.ico -------------------------------------------------------------------------------- /UI++/resources/ball.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jason4tw/UIPlusPlus/cc68bf730dd97db67e7891d85e8f9a7ed2177627/UI++/resources/ball.ico -------------------------------------------------------------------------------- /UI++/stdafx.cpp: -------------------------------------------------------------------------------- 1 | 2 | // stdafx.cpp : source file that includes just the standard includes 3 | // UI++.pch will be the pre-compiled header 4 | // stdafx.obj will contain the pre-compiled type information 5 | 6 | #include "stdafx.h" 7 | 8 | 9 | -------------------------------------------------------------------------------- /UI++/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // Including SDKDDKVer.h defines the highest available Windows platform. 4 | 5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and 6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /UI++/version.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define FILEVER 3,0,3,0 4 | #define PRODUCTVER 3,0,3,0 5 | #define STRFILEVER "3.0.3.0\0" 6 | #define STRPRODUCTVER "3.0.3.0\0" 7 | -------------------------------------------------------------------------------- /UI++AWS/Resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by UI++AWS.rc 4 | // 5 | 6 | #define IDS_LOGMSG_ACTIONREGISTERED 20001 7 | 8 | // Next default values for new objects 9 | // 10 | #ifdef APSTUDIO_INVOKED 11 | #ifndef APSTUDIO_READONLY_SYMBOLS 12 | 13 | #define _APS_NEXT_RESOURCE_VALUE 1000 14 | #define _APS_NEXT_CONTROL_VALUE 1000 15 | #define _APS_NEXT_SYMED_VALUE 1000 16 | #define _APS_NEXT_COMMAND_VALUE 32771 17 | #endif 18 | #endif 19 | -------------------------------------------------------------------------------- /UI++AWS/UI++AWS.def: -------------------------------------------------------------------------------- 1 | ; UI++AWS.def : Declares the module parameters for the DLL. 2 | 3 | LIBRARY 4 | 5 | EXPORTS 6 | ; Explicit exports can go here 7 | RegisterAction @1 8 | -------------------------------------------------------------------------------- /UI++AWS/UI++AWS.h: -------------------------------------------------------------------------------- 1 | // UI++AWS.h : main header file for the UI++AWS DLL 2 | // 3 | 4 | #pragma once 5 | 6 | #ifndef __AFXWIN_H__ 7 | #error "include 'stdafx.h' before including this file for PCH" 8 | #endif 9 | 10 | class CImage; 11 | #include "resource.h" // main symbols 12 | #include "Actions\Action.h" 13 | 14 | // CUIAWSApp 15 | // See UI++AWS.cpp for the implementation of this class 16 | // 17 | 18 | //class CUIAWSApp : public CWinApp 19 | //{ 20 | //public: 21 | // CUIAWSApp(); 22 | // 23 | //// Overrides 24 | //public: 25 | // virtual BOOL InitInstance(); 26 | // 27 | // DECLARE_MESSAGE_MAP() 28 | //}; 29 | 30 | const _TCHAR* const XML_ACTION_TYPE_AWSUPLOADINFO = (_T("AWS")); 31 | 32 | class CAWSUploadAction : public UIpp::CAction 33 | { 34 | public: 35 | CAWSUploadAction(const UIpp::ActionData& data) : CAction(data) { m_actionTypeName = XML_ACTION_TYPE_AWSUPLOADINFO; }; 36 | ~CAWSUploadAction(void) {}; 37 | 38 | INT_PTR Go(void); 39 | bool IsGUIAction(void) { return false; }; 40 | 41 | }; 42 | -------------------------------------------------------------------------------- /UI++AWS/res/UI++AWS.rc2: -------------------------------------------------------------------------------- 1 | // 2 | // UI++AWS.RC2 - resources Microsoft Visual C++ does not edit directly 3 | // 4 | 5 | #ifdef APSTUDIO_INVOKED 6 | #error this file is not editable by Microsoft Visual C++ 7 | #endif //APSTUDIO_INVOKED 8 | 9 | 10 | ///////////////////////////////////////////////////////////////////////////// 11 | // Add manually edited resources here... 12 | 13 | ///////////////////////////////////////////////////////////////////////////// 14 | -------------------------------------------------------------------------------- /UI++AWS/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // UI++AWS.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | 8 | -------------------------------------------------------------------------------- /UI++AWS/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | 5 | #pragma once 6 | 7 | #ifndef VC_EXTRALEAN 8 | #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers 9 | #endif 10 | 11 | #include "targetver.h" 12 | 13 | #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit 14 | 15 | #include // MFC core and standard components 16 | #include // MFC extensions 17 | 18 | #ifndef _AFX_NO_OLE_SUPPORT 19 | #include // MFC OLE classes 20 | #include // MFC OLE dialog classes 21 | #include // MFC Automation classes 22 | #endif // _AFX_NO_OLE_SUPPORT 23 | 24 | #ifndef _AFX_NO_DB_SUPPORT 25 | #include // MFC ODBC database classes 26 | #endif // _AFX_NO_DB_SUPPORT 27 | 28 | #ifndef _AFX_NO_DAO_SUPPORT 29 | #include // MFC DAO database classes 30 | #endif // _AFX_NO_DAO_SUPPORT 31 | 32 | #ifndef _AFX_NO_OLE_SUPPORT 33 | #include // MFC support for Internet Explorer 4 Common Controls 34 | #endif 35 | #ifndef _AFX_NO_AFXCMN_SUPPORT 36 | #include // MFC support for Windows Common Controls 37 | #endif // _AFX_NO_AFXCMN_SUPPORT 38 | 39 | 40 | -------------------------------------------------------------------------------- /UI++AWS/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // Including SDKDDKVer.h defines the highest available Windows platform. 4 | 5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and 6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /UI++REST/Resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by UI++REST.rc 4 | // 5 | 6 | #define IDS_LOGMSG_SETTSVARIABLE 11012 7 | #define IDS_LOGERROR_SETTSVARIABLE 12002 8 | 9 | #define IDS_LOGMSG_ACTIONREGISTERED 20001 10 | #define IDS_LOGMSG_NOVALIDURL 21001 11 | #define IDS_LOGMSG_RESTCALL 21002 12 | #define IDS_LOGMSG_RESTSUCCESS 21003 13 | #define IDS_LOGMSG_FOUNDJSONVALUE 21004 14 | #define IDS_LOGMSG_FOUNDNONSTRINGJSONVALUE 21005 15 | 16 | #define IDS_LOGERROR_RESTFAIL 22001 17 | #define IDS_LOGERROR_JSONPARSE 22002 18 | #define IDS_LOGERROR_RESTNOPARAMS 22003 19 | 20 | // Next default values for new objects 21 | // 22 | #ifdef APSTUDIO_INVOKED 23 | #ifndef APSTUDIO_READONLY_SYMBOLS 24 | 25 | #define _APS_NEXT_RESOURCE_VALUE 1000 26 | #define _APS_NEXT_CONTROL_VALUE 1000 27 | #define _APS_NEXT_SYMED_VALUE 1000 28 | #define _APS_NEXT_COMMAND_VALUE 32771 29 | #endif 30 | #endif 31 | -------------------------------------------------------------------------------- /UI++REST/RestConstants.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | const _TCHAR* const XML_ATTRIBUTE_URL = (_T("Url")); 5 | const _TCHAR* const XML_ACTION_REST_JSON = (_T("JSON")); 6 | const _TCHAR* const XML_ACTION_REST_JSONATTRIBUTE = (_T("Attribute")); 7 | const _TCHAR* const XML_ATTRIBUTE_VARIABLE = (_T("Variable")); 8 | const _TCHAR* const XML_ATTRIBUTE_VARIABLE_RESTRESULT_DEF = (_T("RESTResult")); 9 | const _TCHAR* const XML_ATTRIBUTE_VARIABLE_TOJSON_DEF = (_T("JSONValue")); 10 | 11 | const _TCHAR* const XML_ATTRIBUTE_NAME = (_T("Name")); 12 | const _TCHAR* const XML_ATTRIBUTE_DONTEVAL = (_T("DontEval")); 13 | const _TCHAR* const XML_ATTRIBUTE_JSON = (_T("JSON")); 14 | 15 | const _TCHAR* const XML_ACTION_YES = (_T("Yes")); 16 | const _TCHAR* const XML_ACTION_NO = (_T("No")); 17 | const _TCHAR* const XML_ACTION_TRUE = (_T("True")); 18 | const _TCHAR* const XML_ACTION_FALSE = (_T("False")); 19 | -------------------------------------------------------------------------------- /UI++REST/UI++REST.def: -------------------------------------------------------------------------------- 1 | ; UI++REST.def : Declares the module parameters for the DLL. 2 | 3 | LIBRARY 4 | 5 | EXPORTS 6 | ; Explicit exports can go here 7 | RegisterAction @1 8 | -------------------------------------------------------------------------------- /UI++REST/UI++REST.h: -------------------------------------------------------------------------------- 1 | // UI++REST.h : main header file for the UI++REST DLL 2 | // 3 | 4 | #pragma once 5 | 6 | #ifndef __AFXWIN_H__ 7 | #error "include 'stdafx.h' before including this file for PCH" 8 | #endif 9 | 10 | class CImage; 11 | #include "resource.h" // main symbols 12 | #include "Actions\Action.h" 13 | 14 | // CUIRESTApp 15 | // See UI++REST.cpp for the implementation of this class 16 | // 17 | 18 | //class CUIRESTApp : public CWinApp 19 | //{ 20 | //public: 21 | // CUIRESTApp(); 22 | // 23 | //// Overrides 24 | //public: 25 | // virtual BOOL InitInstance(); 26 | // 27 | // DECLARE_MESSAGE_MAP() 28 | //}; 29 | 30 | const _TCHAR* const XML_ACTION_TYPE_RESTCALL = (_T("REST")); 31 | const _TCHAR* const XML_ACTION_TYPE_TOJSON = (_T("ToJSON")); 32 | const _TCHAR* const XML_ACTION_TYPE_FROMJSON = (_T("FromJSON")); 33 | 34 | class CRESTCallAction : public UIpp::CAction 35 | { 36 | public: 37 | CRESTCallAction(const UIpp::ActionData& data) : CAction(data) { m_actionTypeName = XML_ACTION_TYPE_RESTCALL; }; 38 | ~CRESTCallAction(void) {}; 39 | 40 | INT_PTR Go(void); 41 | bool IsGUIAction(void) { return false; }; 42 | 43 | }; 44 | 45 | class CToJSONAction : public UIpp::CAction 46 | { 47 | public: 48 | CToJSONAction(const UIpp::ActionData& data) : CAction(data) { m_actionTypeName = XML_ACTION_TYPE_TOJSON; }; 49 | ~CToJSONAction(void) {}; 50 | 51 | INT_PTR Go(void); 52 | bool IsGUIAction(void) { return false; }; 53 | 54 | }; 55 | 56 | class CFromJSONAction : public UIpp::CAction 57 | { 58 | public: 59 | CFromJSONAction(const UIpp::ActionData& data) : CAction(data) { m_actionTypeName = XML_ACTION_TYPE_FROMJSON; }; 60 | ~CFromJSONAction(void) {}; 61 | 62 | INT_PTR Go(void); 63 | bool IsGUIAction(void) { return false; }; 64 | 65 | }; -------------------------------------------------------------------------------- /UI++REST/res/UI++REST.rc2: -------------------------------------------------------------------------------- 1 | // 2 | // UI++REST.RC2 - resources Microsoft Visual C++ does not edit directly 3 | // 4 | 5 | #ifdef APSTUDIO_INVOKED 6 | #error this file is not editable by Microsoft Visual C++ 7 | #endif //APSTUDIO_INVOKED 8 | 9 | 10 | ///////////////////////////////////////////////////////////////////////////// 11 | // Add manually edited resources here... 12 | 13 | ///////////////////////////////////////////////////////////////////////////// 14 | -------------------------------------------------------------------------------- /UI++REST/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // UI++REST.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | 8 | -------------------------------------------------------------------------------- /UI++REST/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | 5 | #pragma once 6 | 7 | #ifndef VC_EXTRALEAN 8 | #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers 9 | #endif 10 | 11 | #include "targetver.h" 12 | 13 | #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit 14 | 15 | #include // MFC core and standard components 16 | #include // MFC extensions 17 | 18 | #ifndef _AFX_NO_OLE_SUPPORT 19 | #include // MFC OLE classes 20 | #include // MFC OLE dialog classes 21 | #include // MFC Automation classes 22 | #endif // _AFX_NO_OLE_SUPPORT 23 | 24 | #ifndef _AFX_NO_DB_SUPPORT 25 | #include // MFC ODBC database classes 26 | #endif // _AFX_NO_DB_SUPPORT 27 | 28 | #ifndef _AFX_NO_DAO_SUPPORT 29 | #include // MFC DAO database classes 30 | #endif // _AFX_NO_DAO_SUPPORT 31 | 32 | #ifndef _AFX_NO_OLE_SUPPORT 33 | #include // MFC support for Internet Explorer 4 Common Controls 34 | #endif 35 | #ifndef _AFX_NO_AFXCMN_SUPPORT 36 | #include // MFC support for Windows Common Controls 37 | #endif // _AFX_NO_AFXCMN_SUPPORT 38 | 39 | 40 | -------------------------------------------------------------------------------- /UI++REST/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // Including SDKDDKVer.h defines the highest available Windows platform. 4 | 5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and 6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /vcpkg.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json", 3 | "dependencies": [ 4 | "curl" 5 | ], 6 | "overrides": [ 7 | { 8 | "name": "curl", 9 | "version": "7.83.1" 10 | } 11 | ], 12 | "vcpkg-configuration": { 13 | "default-registry": { 14 | "kind": "git", 15 | "baseline": "2dc91c6439568f694052c3fa25859dc78d9ff8e4", 16 | "repository": "https://github.com/microsoft/vcpkg" 17 | }, 18 | "registries": [ 19 | { 20 | "kind": "artifact", 21 | "location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip", 22 | "name": "microsoft" 23 | } 24 | ] 25 | } 26 | } 27 | --------------------------------------------------------------------------------