From 36821e26be3b1a3d1494ba538e7eae8f1ea28705 Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Wed, 6 Jun 2018 18:14:47 +0200 Subject: [PATCH 01/36] Small bugfixes --- .../PSSlideContainer.class/instance/beKeyWindow.st | 2 +- .../instance/disablePresentationMode.st | 4 ++-- .../instance/enablePresentationMode.st | 1 - .../PSSlideContainer.class/instance/isCollapsed.st | 4 ++++ .../PSSlideContainer.class/instance/isSystemWindow.st | 2 +- .../PSSlideContainer.class/instance/lookUnfocused.st | 2 +- .../PSSlideContainer.class/instance/makeMeVisible.st | 2 +- .../PSSlideContainer.class/methodProperties.json | 5 +++-- .../instance/testSubmorphsOnResize.st | 2 +- .../PSSlideSubmorphTest.class/methodProperties.json | 2 +- 10 files changed, 15 insertions(+), 11 deletions(-) create mode 100644 packages/Presenter-Core.package/PSSlideContainer.class/instance/isCollapsed.st diff --git a/packages/Presenter-Core.package/PSSlideContainer.class/instance/beKeyWindow.st b/packages/Presenter-Core.package/PSSlideContainer.class/instance/beKeyWindow.st index 2991943..7c0cc8e 100644 --- a/packages/Presenter-Core.package/PSSlideContainer.class/instance/beKeyWindow.st +++ b/packages/Presenter-Core.package/PSSlideContainer.class/instance/beKeyWindow.st @@ -1,3 +1,3 @@ -presentation mode +systemwindow-compatibility beKeyWindow "see comment in #isSystemWindow" \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSSlideContainer.class/instance/disablePresentationMode.st b/packages/Presenter-Core.package/PSSlideContainer.class/instance/disablePresentationMode.st index 452e5d9..4a70852 100644 --- a/packages/Presenter-Core.package/PSSlideContainer.class/instance/disablePresentationMode.st +++ b/packages/Presenter-Core.package/PSSlideContainer.class/instance/disablePresentationMode.st @@ -1,8 +1,8 @@ presentation mode disablePresentationMode - DisplayScreen fullScreenOff. - "self ensurePreviousOwnerIsNotSubmorph." + +" self ensurePreviousOwnerIsNotSubmorph." self previousOwner addMorph: self. self color: self defaultColor diff --git a/packages/Presenter-Core.package/PSSlideContainer.class/instance/enablePresentationMode.st b/packages/Presenter-Core.package/PSSlideContainer.class/instance/enablePresentationMode.st index 9d4722a..af347bb 100644 --- a/packages/Presenter-Core.package/PSSlideContainer.class/instance/enablePresentationMode.st +++ b/packages/Presenter-Core.package/PSSlideContainer.class/instance/enablePresentationMode.st @@ -2,7 +2,6 @@ presentation mode enablePresentationMode self previousOwner: self owner. - DisplayScreen fullScreenOn. self owner removeMorph: self. self openInWorld: self previousOwner world; diff --git a/packages/Presenter-Core.package/PSSlideContainer.class/instance/isCollapsed.st b/packages/Presenter-Core.package/PSSlideContainer.class/instance/isCollapsed.st new file mode 100644 index 0000000..f008c44 --- /dev/null +++ b/packages/Presenter-Core.package/PSSlideContainer.class/instance/isCollapsed.st @@ -0,0 +1,4 @@ +systemwindow-compatibility +isCollapsed + + ^ false \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSSlideContainer.class/instance/isSystemWindow.st b/packages/Presenter-Core.package/PSSlideContainer.class/instance/isSystemWindow.st index d796fe4..ac72d65 100644 --- a/packages/Presenter-Core.package/PSSlideContainer.class/instance/isSystemWindow.st +++ b/packages/Presenter-Core.package/PSSlideContainer.class/instance/isSystemWindow.st @@ -1,4 +1,4 @@ -presentation mode +systemwindow-compatibility isSystemWindow "this method is needed in order to keep the presentation on top if a system window is closed" ^ true \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSSlideContainer.class/instance/lookUnfocused.st b/packages/Presenter-Core.package/PSSlideContainer.class/instance/lookUnfocused.st index e816cd9..f9f7fab 100644 --- a/packages/Presenter-Core.package/PSSlideContainer.class/instance/lookUnfocused.st +++ b/packages/Presenter-Core.package/PSSlideContainer.class/instance/lookUnfocused.st @@ -1,3 +1,3 @@ -presentation mode +systemwindow-compatibility lookUnfocused "see comment in #isSystemWindow" \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSSlideContainer.class/instance/makeMeVisible.st b/packages/Presenter-Core.package/PSSlideContainer.class/instance/makeMeVisible.st index b75634f..6cb517d 100644 --- a/packages/Presenter-Core.package/PSSlideContainer.class/instance/makeMeVisible.st +++ b/packages/Presenter-Core.package/PSSlideContainer.class/instance/makeMeVisible.st @@ -1,3 +1,3 @@ -presentation mode +systemwindow-compatibility makeMeVisible "see comment in #isSystemWindow" \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSSlideContainer.class/methodProperties.json b/packages/Presenter-Core.package/PSSlideContainer.class/methodProperties.json index 0f48638..10858c8 100644 --- a/packages/Presenter-Core.package/PSSlideContainer.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSSlideContainer.class/methodProperties.json @@ -7,11 +7,12 @@ "currentSlide" : "MK 5/6/2018 13:56", "currentSlide:" : "MK 5/6/2018 15:51", "defaultColor" : "MK 5/25/2018 15:41", - "disablePresentationMode" : "WoC 6/4/2018 17:13", - "enablePresentationMode" : "WoC 6/4/2018 16:09", + "disablePresentationMode" : "LM 6/6/2018 17:32", + "enablePresentationMode" : "LM 6/6/2018 17:32", "ensurePreviousOwnerIsNotSubmorph" : "LM 6/1/2018 20:13", "handlesKeyboard:" : "MK 5/25/2018 16:08", "initialize" : "WoC 6/4/2018 16:50", + "isCollapsed" : "LM 6/6/2018 18:13", "isSystemWindow" : "WoC 6/4/2018 17:35", "keyStroke:" : "MK 5/31/2018 10:10", "lookUnfocused" : "WoC 6/4/2018 17:13", diff --git a/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testSubmorphsOnResize.st b/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testSubmorphsOnResize.st index c4b7393..b3894bc 100644 --- a/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testSubmorphsOnResize.st +++ b/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testSubmorphsOnResize.st @@ -4,5 +4,5 @@ testSubmorphsOnResize self slide addContent: self morph. self assertDeviatesLessThan: 0.05 onSlideResize: [self morph extent x / self morph extent y]. - self assertDeviatesLessThan: 0.05@0.05 onSlideResize: [self morph extent / self slide extent]. + self assertDeviatesLessThan: 0.1@0.1 onSlideResize: [self morph extent / self slide extent]. self assertDeviatesLessThan: 0.2@0.2 onSlideResize: [self morph position - self slide position / self slide extent] \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/methodProperties.json b/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/methodProperties.json index 2b325b2..6b76f31 100644 --- a/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/methodProperties.json +++ b/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/methodProperties.json @@ -16,5 +16,5 @@ "testSlideResizeToFit" : "LM 5/18/2018 19:20", "testSlideResizeToFitKeepsAspectRatio" : "LB 6/6/2018 15:16", "testSlideResizeToFitKeepsPosition" : "LM 5/18/2018 19:25", - "testSubmorphsOnResize" : "LB 5/29/2018 17:52", + "testSubmorphsOnResize" : "LM 6/6/2018 18:09", "testTriggerContextMenu" : "MK 6/1/2018 20:19" } } From 471b5a6327d0c00e53f664c2ab2264c21125c6f6 Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Wed, 6 Jun 2018 19:25:36 +0200 Subject: [PATCH 02/36] Changed default color scheme for PSTextMorphs --- .../PSTextMorph.class/instance/defaultFontColor.st | 4 ++++ .../instance/defaultTextBackgroundColor.st | 4 ++++ .../PSTextMorph.class/instance/initialize.st | 6 +++++- .../PSTextMorph.class/methodProperties.json | 4 +++- 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 packages/Presenter-Core.package/PSTextMorph.class/instance/defaultFontColor.st create mode 100644 packages/Presenter-Core.package/PSTextMorph.class/instance/defaultTextBackgroundColor.st diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/defaultFontColor.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/defaultFontColor.st new file mode 100644 index 0000000..2c654f5 --- /dev/null +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/defaultFontColor.st @@ -0,0 +1,4 @@ +styling +defaultFontColor + + ^ Color black \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/defaultTextBackgroundColor.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/defaultTextBackgroundColor.st new file mode 100644 index 0000000..04c840a --- /dev/null +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/defaultTextBackgroundColor.st @@ -0,0 +1,4 @@ +styling +defaultTextBackgroundColor + + ^ Color white. \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st index 57971d1..58b32dc 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st @@ -5,4 +5,8 @@ initialize self basicTextSize: self defaultBasicTextSize. self extension setProperty: #acceptRescale toValue: true; - setProperty: #wantsCustomContextMenu toValue: true \ No newline at end of file + setProperty: #wantsCustomContextMenu toValue: true. + self + borderWidth: 0; + color: self defaultTextBackgroundColor; + selectionColor: self defaultFontColor \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json index bbdd7b6..ee9b8f2 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json @@ -7,8 +7,10 @@ "basicTextSize:" : "LB 5/25/2018 16:09", "customContextMenuContent" : "WoC 6/2/2018 23:38", "defaultBasicTextSize" : "LB 5/25/2018 16:44", + "defaultFontColor" : "LM 6/6/2018 19:22", + "defaultTextBackgroundColor" : "LM 6/6/2018 19:24", "getLocalFontColor" : "LB 6/1/2018 18:35", - "initialize" : "MK 6/1/2018 16:59", + "initialize" : "LM 6/6/2018 19:24", "rescale:" : "LB 5/25/2018 16:42", "selectionColor" : "LB 6/1/2018 18:34", "selectionColor:" : "LB 6/1/2018 18:33", From 0714d8c93c1be5b5fee896883ea0c80159e21e44 Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Wed, 6 Jun 2018 19:46:16 +0200 Subject: [PATCH 03/36] Update README to reflect include Releases --- README.md | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 2340fda..b366537 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,54 @@ -# PowerSqueak [![Build Status](https://travis-ci.org/hpi-swa-teaching/SWT18-Project-09.svg?branch=master)](https://travis-ci.org/hpi-swa-teaching/SWT18-Project-09)[![Coverage Status](https://coveralls.io/repos/github/hpi-swa-teaching/SWT18-Project-09/badge.svg?branch=master)](https://coveralls.io/github/hpi-swa-teaching/SWT18-Project-09?branch=master) +# [PowerSqueak](https://github.com/hpi-swa-teaching/SWT18-Project-09/releases/latest) A presentation tool for the Squeak development platform Supported platforms: * Squeak 5.1 -Squeak 6.0/Trunk is also a target plattform, but due to the fast changing nature of Trunk, certain versions of Squeak Trunk may not work. +Squeak Trunk is also a target plattform, but due to the fast changing nature of Trunk, certain versions of Squeak Trunk may not work. Please check [Travis-ci](https://travis-ci.org/hpi-swa-teaching/SWT18-Project-09) for the current build status. Squeak 5.0 is officially unsupported (see [Travis-ci](https://travis-ci.org/hpi-swa-teaching/SWT18-Project-09)). +## Build status +| [Release](https://github.com/hpi-swa-teaching/SWT18-Project-09/releases/latest) | Master | +| ----------------------- | ------------| +| [![Build Status](https://www.travis-ci.org/hpi-swa-teaching/SWT18-Project-09.svg?branch=release)](https://www.travis-ci.org/hpi-swa-teaching/SWT18-Project-09) | [![Build Status](https://travis-ci.org/hpi-swa-teaching/SWT18-Project-09.svg?branch=master)](https://travis-ci.org/hpi-swa-teaching/SWT18-Project-09) | +| [![Coverage Status](https://coveralls.io/repos/github/hpi-swa-teaching/SWT18-Project-09/badge.svg?branch=release)](https://coveralls.io/github/hpi-swa-teaching/SWT18-Project-09?branch=release) | [![Coverage Status](https://coveralls.io/repos/github/hpi-swa-teaching/SWT18-Project-09/badge.svg?branch=master)](https://coveralls.io/github/hpi-swa-teaching/SWT18-Project-09?branch=master) | + ## Installation Instructions For easy installation, please first install [Metacello](https://github.com/Metacello/metacello). -Then run the following code in your Squeak 5.1/6.0(trunk) image: +Then run the following code in your Squeak 5.1/trunk image to install the latest release: ``` smalltalk Metacello new baseline: 'Presenter'; - repository: 'github://hpi-swa-teaching/SWT18-Project-09:master/packages'; + repository: 'github://hpi-swa-teaching/SWT18-Project-09:release/packages'; load. ``` ## Using PowerSqueak To open PowerSqueak run: ``` PSPresentationTool open. ``` -You can then use the buttons at the top to create, delete and navigate slides and to create different slide elements (like text boxes, and images) and drop them onto the slide. -You may also drop in other Morphs, but be aware, that some features of those Morphs might not work as expected. +### Editing mode +Use the buttons at the top to create, delete and navigate slides and to create different slide elements (like text boxes, and images). + +To gain access to advanced features of certain morphs (like text coloring and resizing), right click the morph. + +You may also drop other morphs onto slides, but be aware, that some features of those Morphs might not work as expected. + +### Presentation mode +To enter the presentation mode, click the "Present" button (it is recommended, that you enter fullscreen mode in your Squeak image first). + +During presentation mode, the editing handles on your morphs will disappear, to give your presentation a clean and beatiful appereance. + +The morphs will stay interactive however, allowing you to show code in a browser, run code in a Workspace or to just play some Tetris during your presentation. + +To control your presentation: + +| Key | Action | +| ---- | ---- | +| Right arrow/Page down | next slide | +| Left arrow/Page up | previous slide| +| Number keys | Select slide by number | +| Esc | Exit presentation mode | From 975cbf28e245ac5efd38e7fbc2cb4a6ff4aa8e5b Mon Sep 17 00:00:00 2001 From: Maximilian Koenig Date: Thu, 7 Jun 2018 10:00:38 +0200 Subject: [PATCH 04/36] Fixed Bug Dropping into PSSlideContainer --- .../instance/wantsDroppedMorph.event..st | 6 ++++++ .../PSSlideContainer.class/methodProperties.json | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 packages/Presenter-Core.package/PSSlideContainer.class/instance/wantsDroppedMorph.event..st diff --git a/packages/Presenter-Core.package/PSSlideContainer.class/instance/wantsDroppedMorph.event..st b/packages/Presenter-Core.package/PSSlideContainer.class/instance/wantsDroppedMorph.event..st new file mode 100644 index 0000000..6fa1bc1 --- /dev/null +++ b/packages/Presenter-Core.package/PSSlideContainer.class/instance/wantsDroppedMorph.event..st @@ -0,0 +1,6 @@ +events-processing +wantsDroppedMorph: aMorph event: evt + + (self currentSlide containsPoint: evt position) + ifTrue: [^ true]. + ^ false \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSSlideContainer.class/methodProperties.json b/packages/Presenter-Core.package/PSSlideContainer.class/methodProperties.json index 0f48638..f8bb479 100644 --- a/packages/Presenter-Core.package/PSSlideContainer.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSSlideContainer.class/methodProperties.json @@ -18,4 +18,5 @@ "makeMeVisible" : "WoC 6/3/2018 00:10", "previousOwner" : "MK 5/25/2018 15:31", "previousOwner:" : "MK 5/25/2018 15:32", - "showSlide:" : "LB 5/6/2018 16:49" } } + "showSlide:" : "LB 5/6/2018 16:49", + "wantsDroppedMorph:event:" : "MK 6/7/2018 09:29" } } From e0c818ae69ec30191f7c7f9b8010bd243d760ccf Mon Sep 17 00:00:00 2001 From: Leon Bein Date: Fri, 8 Jun 2018 15:16:34 +0200 Subject: [PATCH 05/36] Working on #41 * Nearly solved * Known bug: Text is not repositioned; some updateText method might be missing --- .../PSScalingFontAttribute.class/README.md | 0 .../class/styled.sized.scaledBy..st | 7 +++++++ .../instance/^equals.st | 6 ++++++ .../instance/actualTextSize.st | 4 ++++ .../instance/basicTextSize..st | 4 ++++ .../instance/basicTextSize.st | 0 .../instance/couldDeriveFromPrettyPrinting.st | 4 ++++ .../instance/dominates..st | 4 ++++ .../instance/emphasizeScanner..st | 4 ++++ .../instance/font.st | 4 ++++ .../instance/forFontInStyle.do..st | 4 ++++ .../instance/scalingSource..st | 4 ++++ .../instance/scalingSource.st | 4 ++++ .../instance/style..st | 4 ++++ .../instance/style.st | 4 ++++ .../methodProperties.json | 17 +++++++++++++++ .../properties.json | 16 ++++++++++++++ .../instance/actualTextSize.st | 4 ---- .../instance/basicTextSize..st | 5 ----- .../instance/getLocalFontColor.st | 4 ---- .../PSTextMorph.class/instance/initialize.st | 2 +- .../instance/selectionAddAttribute..st | 4 ++++ .../selectionAddAttribute.onNoSelection..st | 10 +++++++++ .../instance/selectionAttribute..st | 10 +++++++++ .../instance/selectionColor..st | 15 ++++--------- .../instance/selectionColor.st | 13 +++++------- .../instance/selectionFontSize..st | 8 +++++++ .../instance/selectionFontSize.st | 6 ++++++ .../instance/showFontColorDialog.st | 4 +--- .../instance/showFontSizeDialog.st | 4 ++-- .../instance/updateTextSize.st | 4 +++- .../PSTextMorph.class/methodProperties.json | 21 ++++++++++--------- .../PSTextMorph.class/properties.json | 1 - .../instance/testTextFieldRescale.st | 5 +++-- .../methodProperties.json | 2 +- 35 files changed, 159 insertions(+), 53 deletions(-) create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/README.md create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/class/styled.sized.scaledBy..st create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/^equals.st create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/actualTextSize.st create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/basicTextSize..st rename packages/Presenter-Core.package/{PSTextMorph.class => PSScalingFontAttribute.class}/instance/basicTextSize.st (100%) create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/couldDeriveFromPrettyPrinting.st create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/dominates..st create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/emphasizeScanner..st create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/font.st create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/forFontInStyle.do..st create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/scalingSource..st create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/scalingSource.st create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/style..st create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/style.st create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/methodProperties.json create mode 100644 packages/Presenter-Core.package/PSScalingFontAttribute.class/properties.json delete mode 100644 packages/Presenter-Core.package/PSTextMorph.class/instance/actualTextSize.st delete mode 100644 packages/Presenter-Core.package/PSTextMorph.class/instance/basicTextSize..st delete mode 100644 packages/Presenter-Core.package/PSTextMorph.class/instance/getLocalFontColor.st create mode 100644 packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute..st create mode 100644 packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st create mode 100644 packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAttribute..st create mode 100644 packages/Presenter-Core.package/PSTextMorph.class/instance/selectionFontSize..st create mode 100644 packages/Presenter-Core.package/PSTextMorph.class/instance/selectionFontSize.st diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/README.md b/packages/Presenter-Core.package/PSScalingFontAttribute.class/README.md new file mode 100644 index 0000000..e69de29 diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/class/styled.sized.scaledBy..st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/class/styled.sized.scaledBy..st new file mode 100644 index 0000000..76131bf --- /dev/null +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/class/styled.sized.scaledBy..st @@ -0,0 +1,7 @@ +instance creation +styled: aTextStyle sized: aNumber scaledBy: anObject + + ^ self new + style: aTextStyle; + basicTextSize: aNumber; + scalingSource: anObject \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/^equals.st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/^equals.st new file mode 100644 index 0000000..f67091c --- /dev/null +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/^equals.st @@ -0,0 +1,6 @@ +as yet unclassified += other + + ^ (other class == self class) + and: [other style == self style] + and: [other scalingSource == self scalingSource] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/actualTextSize.st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/actualTextSize.st new file mode 100644 index 0000000..436f57d --- /dev/null +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/actualTextSize.st @@ -0,0 +1,4 @@ +accessing +actualTextSize + + ^ self basicTextSize * self scalingSource textScale \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/basicTextSize..st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/basicTextSize..st new file mode 100644 index 0000000..b1b5ecd --- /dev/null +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/basicTextSize..st @@ -0,0 +1,4 @@ +accessing +basicTextSize: aNumber + + basicTextSize := aNumber diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/basicTextSize.st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/basicTextSize.st similarity index 100% rename from packages/Presenter-Core.package/PSTextMorph.class/instance/basicTextSize.st rename to packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/basicTextSize.st diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/couldDeriveFromPrettyPrinting.st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/couldDeriveFromPrettyPrinting.st new file mode 100644 index 0000000..6ef5933 --- /dev/null +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/couldDeriveFromPrettyPrinting.st @@ -0,0 +1,4 @@ +as yet unclassified +couldDeriveFromPrettyPrinting + + ^ false \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/dominates..st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/dominates..st new file mode 100644 index 0000000..7930085 --- /dev/null +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/dominates..st @@ -0,0 +1,4 @@ +as yet unclassified +dominates: other + + ^ (other isKindOf: TextFontChange) or: [other class == self class] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/emphasizeScanner..st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/emphasizeScanner..st new file mode 100644 index 0000000..34802c0 --- /dev/null +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/emphasizeScanner..st @@ -0,0 +1,4 @@ +as yet unclassified +emphasizeScanner: scanner + + scanner setActualFont: self font \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/font.st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/font.st new file mode 100644 index 0000000..3739164 --- /dev/null +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/font.st @@ -0,0 +1,4 @@ +accessing +font + + ^ self style fontOfSize: self actualTextSize \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/forFontInStyle.do..st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/forFontInStyle.do..st new file mode 100644 index 0000000..ea736ed --- /dev/null +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/forFontInStyle.do..st @@ -0,0 +1,4 @@ +as yet unclassified +forFontInStyle: aTextStyle do: aBlock + + aBlock value: self font \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/scalingSource..st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/scalingSource..st new file mode 100644 index 0000000..af99ee0 --- /dev/null +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/scalingSource..st @@ -0,0 +1,4 @@ +accessing +scalingSource: anObject + + scalingSource := anObject diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/scalingSource.st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/scalingSource.st new file mode 100644 index 0000000..10eff81 --- /dev/null +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/scalingSource.st @@ -0,0 +1,4 @@ +accessing +scalingSource + + ^ scalingSource diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/style..st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/style..st new file mode 100644 index 0000000..9b089ab --- /dev/null +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/style..st @@ -0,0 +1,4 @@ +accessing +style: aTextStyle + + style := aTextStyle diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/style.st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/style.st new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/style.st @@ -0,0 +1,4 @@ +accessing +style + + ^ style diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/methodProperties.json b/packages/Presenter-Core.package/PSScalingFontAttribute.class/methodProperties.json new file mode 100644 index 0000000..db403ea --- /dev/null +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/methodProperties.json @@ -0,0 +1,17 @@ +{ + "class" : { + "styled:sized:scaledBy:" : "LB 6/8/2018 12:42" }, + "instance" : { + "=" : "LB 6/8/2018 12:29", + "actualTextSize" : "LB 6/8/2018 12:32", + "basicTextSize" : "LB 6/8/2018 12:31", + "basicTextSize:" : "LB 6/8/2018 12:31", + "couldDeriveFromPrettyPrinting" : "LB 6/8/2018 12:29", + "dominates:" : "LB 6/8/2018 14:07", + "emphasizeScanner:" : "LB 6/8/2018 12:33", + "font" : "LB 6/8/2018 12:45", + "forFontInStyle:do:" : "LB 6/8/2018 12:34", + "scalingSource" : "LB 6/8/2018 12:27", + "scalingSource:" : "LB 6/8/2018 12:27", + "style" : "LB 6/8/2018 12:27", + "style:" : "LB 6/8/2018 12:27" } } diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/properties.json b/packages/Presenter-Core.package/PSScalingFontAttribute.class/properties.json new file mode 100644 index 0000000..60bc208 --- /dev/null +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Presenter-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "style", + "basicTextSize", + "scalingSource" ], + "name" : "PSScalingFontAttribute", + "pools" : [ + ], + "super" : "TextFontReference", + "type" : "normal" } diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/actualTextSize.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/actualTextSize.st deleted file mode 100644 index 06dca10..0000000 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/actualTextSize.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -actualTextSize - - ^ self basicTextSize * self textScale \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/basicTextSize..st b/packages/Presenter-Core.package/PSTextMorph.class/instance/basicTextSize..st deleted file mode 100644 index 865c090..0000000 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/basicTextSize..st +++ /dev/null @@ -1,5 +0,0 @@ -accessing -basicTextSize: anInteger - - basicTextSize := anInteger. - self updateTextSize \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/getLocalFontColor.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/getLocalFontColor.st deleted file mode 100644 index efdfa6b..0000000 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/getLocalFontColor.st +++ /dev/null @@ -1,4 +0,0 @@ -styling -getLocalFontColor - - ^ self selectionColor \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st index 57971d1..84d26ae 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st @@ -2,7 +2,7 @@ initialize-release initialize super initialize. - self basicTextSize: self defaultBasicTextSize. + self textMorph text addAttribute: (PSScalingFontAttribute styled: PSTextMorph DefaultTextStyle sized: self defaultBasicTextSize scaledBy: self). self extension setProperty: #acceptRescale toValue: true; setProperty: #wantsCustomContextMenu toValue: true \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute..st b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute..st new file mode 100644 index 0000000..956312a --- /dev/null +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute..st @@ -0,0 +1,4 @@ +styling +selectionAddAttribute: anAttribute + + self selectionAddAttribute: anAttribute onNoSelection: [] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st new file mode 100644 index 0000000..3d7132c --- /dev/null +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st @@ -0,0 +1,10 @@ +styling +selectionAddAttribute: anAttribute onNoSelection: aBlock + "This is an adapted copy of TextMorph#selectionColor:, as it is not supported on all Versions of Squeak and we needed similar methods for other attributes." + + | interval | + interval := self textMorph editor selectionInterval. + interval size <= 0 ifTrue: [interval := 1 to: self textMorph text size]. + self textMorph text addAttribute: anAttribute from: interval first to: interval last. + aBlock value. + self changed \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAttribute..st b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAttribute..st new file mode 100644 index 0000000..2a16a9c --- /dev/null +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAttribute..st @@ -0,0 +1,10 @@ +styling +selectionAttribute: anAttributeClass + "This is an adapted copy of TextMorph#selectionColor, as it is not supported on all Versions of Squeak, and we needed similar methods for different attributes" + + | index attributes fontAttribute | + index := self textMorph editor startBlock stringIndex ifNil: [1]. + (index between: 1 and: self textMorph text size) ifFalse: [index := 1]. + attributes := self textMorph text attributesAt: index. + fontAttribute := attributes detect: [:attr | attr class = anAttributeClass] ifNone: []. + ^ fontAttribute \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionColor..st b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionColor..st index 7b8c63b..050404d 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionColor..st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionColor..st @@ -1,12 +1,5 @@ -compatability +styling selectionColor: aColor - "This is an adapted copy of TextMorph#selectionColor:, as it is not supported on all Versions of Squeak." - - | attribute int | - attribute := TextColor color: aColor. - int := self textMorph editor selectionInterval. - int size <= 0 ifTrue: [int := 1 to: self textMorph text size]. - self textMorph text addAttribute: attribute from: int first to: int last. - int size = self textMorph text string size ifTrue: - [self textMorph textColor: aColor]. - self changed. + + self selectionAddAttribute: + (TextColor color: aColor) diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionColor.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionColor.st index df99652..00dff7f 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionColor.st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionColor.st @@ -1,10 +1,7 @@ -compatability +styling selectionColor - "This is an adapted copy of TextMorph#selectionColor, as it is not supported on all Versions of Squeak." - | ind attrs c | - ind := self textMorph editor startBlock stringIndex. - (ind isNil or: [ind < 1 or: [ind > self textMorph text size]]) ifTrue: [ind := 1]. - attrs := self textMorph text attributesAt: ind. - c := attrs detect: [:attr | attr class = TextColor] ifNone: []. - ^ c ifNil: [Color black] ifNotNil: [c color]. + + ^ (self selectionAttribute: TextColor) + ifNil: [Color black] + ifNotNil: [:colorAttribute | colorAttribute color] diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionFontSize..st b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionFontSize..st new file mode 100644 index 0000000..c96f9c3 --- /dev/null +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionFontSize..st @@ -0,0 +1,8 @@ +styling +selectionFontSize: aNumber + + self selectionAddAttribute: + (PSScalingFontAttribute + styled: PSTextMorph DefaultTextStyle + sized: aNumber + scaledBy: self) \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionFontSize.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionFontSize.st new file mode 100644 index 0000000..f6d1ec9 --- /dev/null +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionFontSize.st @@ -0,0 +1,6 @@ +styling +selectionFontSize + + ^ (self selectionAttribute: PSScalingFontAttribute) + ifNil: [self defaultBasicTextSize] + ifNotNil: [:fontAttribute | fontAttribute basicTextSize] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/showFontColorDialog.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/showFontColorDialog.st index d8abced..18738a2 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/showFontColorDialog.st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/showFontColorDialog.st @@ -1,10 +1,8 @@ styling showFontColorDialog - | color | - color := self selectionColor. (NewColorPickerMorph on: self - originalColor: color + originalColor: self selectionColor setColorSelector: #selectionColor:) openNear: self fullBoundsInWorld \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/showFontSizeDialog.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/showFontSizeDialog.st index 78ce1a8..87b2faa 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/showFontSizeDialog.st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/showFontSizeDialog.st @@ -4,7 +4,7 @@ showFontSizeDialog | newSize | newSize := UIManager default request: 'Please enter new text size' - initialAnswer: self basicTextSize printString. - [self basicTextSize: newSize asNumber] + initialAnswer: self selectionFontSize printString. + [self selectionFontSize: newSize asNumber] on: Error do: [UIManager inform: 'Not a valid number'] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/updateTextSize.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/updateTextSize.st index 231bdee..7437731 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/updateTextSize.st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/updateTextSize.st @@ -1,4 +1,6 @@ scaling updateTextSize - self textMorph beAllFont: (PSTextMorph DefaultTextStyle fontOfSize: self actualTextSize) \ No newline at end of file + "self textMorph beAllFont: (PSTextMorph DefaultTextStyle fontOfSize: self actualTextSize)" + "self textMorph text addAttribute: (TextFontReference toFont: ((PSTextMorph DefaultTextStyle fontOfSize: self actualTextSize)))" + "self textMorph text addAttribute: (PSScalingFontAttribute styled: PSTextMorph DefaultTextStyle sized: self basicTextSize scaledBy: self)" \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json index bbdd7b6..6d4141a 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json @@ -2,18 +2,19 @@ "class" : { "DefaultTextStyle" : "LB 5/25/2018 17:35" }, "instance" : { - "actualTextSize" : "LB 5/25/2018 17:03", - "basicTextSize" : "LB 5/25/2018 15:59", - "basicTextSize:" : "LB 5/25/2018 16:09", "customContextMenuContent" : "WoC 6/2/2018 23:38", "defaultBasicTextSize" : "LB 5/25/2018 16:44", - "getLocalFontColor" : "LB 6/1/2018 18:35", - "initialize" : "MK 6/1/2018 16:59", + "initialize" : "LB 6/8/2018 14:57", "rescale:" : "LB 5/25/2018 16:42", - "selectionColor" : "LB 6/1/2018 18:34", - "selectionColor:" : "LB 6/1/2018 18:33", - "showFontColorDialog" : "LB 6/1/2018 18:35", - "showFontSizeDialog" : "LB 6/1/2018 19:06", + "selectionAddAttribute:" : "LB 6/8/2018 15:11", + "selectionAddAttribute:onNoSelection:" : "LB 6/8/2018 15:14", + "selectionAttribute:" : "LB 6/8/2018 15:06", + "selectionColor" : "LB 6/8/2018 15:05", + "selectionColor:" : "LB 6/8/2018 15:14", + "selectionFontSize" : "LB 6/8/2018 15:04", + "selectionFontSize:" : "LB 6/8/2018 15:13", + "showFontColorDialog" : "LB 6/8/2018 14:56", + "showFontSizeDialog" : "LB 6/8/2018 14:54", "textScale" : "LB 5/25/2018 16:08", "textScale:" : "LB 5/25/2018 16:09", - "updateTextSize" : "LB 5/25/2018 17:03" } } + "updateTextSize" : "LB 6/8/2018 14:00" } } diff --git a/packages/Presenter-Core.package/PSTextMorph.class/properties.json b/packages/Presenter-Core.package/PSTextMorph.class/properties.json index f477ec8..9d079bf 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/properties.json +++ b/packages/Presenter-Core.package/PSTextMorph.class/properties.json @@ -6,7 +6,6 @@ "DefaultTextStyle" ], "commentStamp" : "", "instvars" : [ - "basicTextSize", "textScale" ], "name" : "PSTextMorph", "pools" : [ diff --git a/packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testTextFieldRescale.st b/packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testTextFieldRescale.st index 15e54e3..914a78e 100644 --- a/packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testTextFieldRescale.st +++ b/packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testTextFieldRescale.st @@ -2,6 +2,7 @@ rescaling tests testTextFieldRescale | oldSize | - oldSize := self textField actualTextSize. + self flag: #TODO. + oldSize := self textField textScale * self textField selectionFontSize. self slide extent: self slide extent * 2. - self assert: oldSize * 2 = self textField actualTextSize \ No newline at end of file + self assert: oldSize * 2 = (self textField textScale * self textField selectionFontSize) \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSTextMorphTest.class/methodProperties.json b/packages/Presenter-Tests.package/PSTextMorphTest.class/methodProperties.json index 357ddf9..23ab58e 100644 --- a/packages/Presenter-Tests.package/PSTextMorphTest.class/methodProperties.json +++ b/packages/Presenter-Tests.package/PSTextMorphTest.class/methodProperties.json @@ -7,6 +7,6 @@ "tearDown" : "LB 6/1/2018 18:21", "testContextMenu" : "MK 6/1/2018 19:45", "testLocalFontColor" : "LB 6/1/2018 18:35", - "testTextFieldRescale" : "WoC 6/4/2018 17:22", + "testTextFieldRescale" : "LB 6/8/2018 14:59", "textField" : "LB 6/1/2018 18:21", "textField:" : "LB 6/1/2018 17:57" } } From f1563397dd9384437d60dc51e981f3a20a938072 Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Fri, 8 Jun 2018 16:21:20 +0200 Subject: [PATCH 06/36] Merge branch 'master' --- .../PSTextMorph.class/instance/initialize.st | 7 ++++++- .../PSTextMorph.class/methodProperties.json | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st index 84d26ae..6de0abf 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st @@ -5,4 +5,9 @@ initialize self textMorph text addAttribute: (PSScalingFontAttribute styled: PSTextMorph DefaultTextStyle sized: self defaultBasicTextSize scaledBy: self). self extension setProperty: #acceptRescale toValue: true; - setProperty: #wantsCustomContextMenu toValue: true \ No newline at end of file + setProperty: #wantsCustomContextMenu toValue: true. + + self + borderWidth: 0; + color: self defaultTextBackgroundColor; + selectionColor: self defaultFontColor \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json index 2db0206..1a8775a 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json @@ -6,7 +6,7 @@ "defaultBasicTextSize" : "LB 5/25/2018 16:44", "defaultFontColor" : "LM 6/6/2018 19:22", "defaultTextBackgroundColor" : "LM 6/6/2018 19:24", - "initialize" : "LB 6/8/2018 14:57", + "initialize" : "LM 6/8/2018 16:20", "rescale:" : "LB 5/25/2018 16:42", "selectionAddAttribute:" : "LB 6/8/2018 15:11", "selectionAddAttribute:onNoSelection:" : "LB 6/8/2018 15:14", From 8af13ce070b42c272cd8e43b1fc68f99f854a9b9 Mon Sep 17 00:00:00 2001 From: Leon Bein Date: Fri, 8 Jun 2018 17:01:13 +0200 Subject: [PATCH 07/36] Closes #41 * Added tests * Did some refactoring --- .../instance/^equals.st | 2 +- .../instance/couldDeriveFromPrettyPrinting.st | 2 +- .../instance/dominates..st | 2 +- .../instance/emphasizeScanner..st | 2 +- .../instance/forFontInStyle.do..st | 4 ++-- .../methodProperties.json | 2 +- .../PSScalingFontAttribute.class/properties.json | 2 +- .../instance/createFontSizeAttribute.st | 7 +++++++ .../PSTextMorph.class/instance/initialize.st | 6 +++--- .../instance/initializeTextAttribute.st | 9 +++++++++ .../selectionAddAttribute.onNoSelection..st | 8 +++++--- .../PSTextMorph.class/instance/selectionColor..st | 5 +++-- .../PSTextMorph.class/instance/textScale..st | 3 +-- .../PSTextMorph.class/instance/updateTextSize.st | 6 ------ .../PSTextMorph.class/methodProperties.json | 11 ++++++----- .../instance/testLocalFontSize.st | 13 +++++++++++++ .../PSTextMorphTest.class/methodProperties.json | 1 + 17 files changed, 56 insertions(+), 29 deletions(-) create mode 100644 packages/Presenter-Core.package/PSTextMorph.class/instance/createFontSizeAttribute.st create mode 100644 packages/Presenter-Core.package/PSTextMorph.class/instance/initializeTextAttribute.st delete mode 100644 packages/Presenter-Core.package/PSTextMorph.class/instance/updateTextSize.st create mode 100644 packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testLocalFontSize.st diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/^equals.st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/^equals.st index f67091c..fd232d8 100644 --- a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/^equals.st +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/^equals.st @@ -1,4 +1,4 @@ -as yet unclassified +comparing = other ^ (other class == self class) diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/couldDeriveFromPrettyPrinting.st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/couldDeriveFromPrettyPrinting.st index 6ef5933..400a1cc 100644 --- a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/couldDeriveFromPrettyPrinting.st +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/couldDeriveFromPrettyPrinting.st @@ -1,4 +1,4 @@ -as yet unclassified +testing couldDeriveFromPrettyPrinting ^ false \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/dominates..st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/dominates..st index 7930085..5edda34 100644 --- a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/dominates..st +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/dominates..st @@ -1,4 +1,4 @@ -as yet unclassified +testing dominates: other ^ (other isKindOf: TextFontChange) or: [other class == self class] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/emphasizeScanner..st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/emphasizeScanner..st index 34802c0..bdd8b8e 100644 --- a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/emphasizeScanner..st +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/emphasizeScanner..st @@ -1,4 +1,4 @@ -as yet unclassified +accessing emphasizeScanner: scanner scanner setActualFont: self font \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/forFontInStyle.do..st b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/forFontInStyle.do..st index ea736ed..44665c7 100644 --- a/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/forFontInStyle.do..st +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/instance/forFontInStyle.do..st @@ -1,4 +1,4 @@ -as yet unclassified +private forFontInStyle: aTextStyle do: aBlock - aBlock value: self font \ No newline at end of file + aBlock value: (aTextStyle fontOfSize: self actualTextSize) \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/methodProperties.json b/packages/Presenter-Core.package/PSScalingFontAttribute.class/methodProperties.json index db403ea..40fc27f 100644 --- a/packages/Presenter-Core.package/PSScalingFontAttribute.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/methodProperties.json @@ -10,7 +10,7 @@ "dominates:" : "LB 6/8/2018 14:07", "emphasizeScanner:" : "LB 6/8/2018 12:33", "font" : "LB 6/8/2018 12:45", - "forFontInStyle:do:" : "LB 6/8/2018 12:34", + "forFontInStyle:do:" : "LB 6/8/2018 16:16", "scalingSource" : "LB 6/8/2018 12:27", "scalingSource:" : "LB 6/8/2018 12:27", "style" : "LB 6/8/2018 12:27", diff --git a/packages/Presenter-Core.package/PSScalingFontAttribute.class/properties.json b/packages/Presenter-Core.package/PSScalingFontAttribute.class/properties.json index 60bc208..19a6fa8 100644 --- a/packages/Presenter-Core.package/PSScalingFontAttribute.class/properties.json +++ b/packages/Presenter-Core.package/PSScalingFontAttribute.class/properties.json @@ -12,5 +12,5 @@ "name" : "PSScalingFontAttribute", "pools" : [ ], - "super" : "TextFontReference", + "super" : "TextAttribute", "type" : "normal" } diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/createFontSizeAttribute.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/createFontSizeAttribute.st new file mode 100644 index 0000000..cf50b9b --- /dev/null +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/createFontSizeAttribute.st @@ -0,0 +1,7 @@ +initialize-release +createFontSizeAttribute + + ^ PSScalingFontAttribute + styled: PSTextMorph DefaultTextStyle + sized: self defaultBasicTextSize + scaledBy: self \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st index 84d26ae..e785815 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st @@ -2,7 +2,7 @@ initialize-release initialize super initialize. - self textMorph text addAttribute: (PSScalingFontAttribute styled: PSTextMorph DefaultTextStyle sized: self defaultBasicTextSize scaledBy: self). - self extension + self + initializeTextAttribute; setProperty: #acceptRescale toValue: true; - setProperty: #wantsCustomContextMenu toValue: true \ No newline at end of file + setProperty: #wantsCustomContextMenu toValue: true. \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/initializeTextAttribute.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/initializeTextAttribute.st new file mode 100644 index 0000000..6f4ede5 --- /dev/null +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/initializeTextAttribute.st @@ -0,0 +1,9 @@ +initialize-release +initializeTextAttribute + + self textMorph text addAttribute: self createFontSizeAttribute. + self textMorph text addAttribute: (TextFontReference toFont:(PSTextMorph DefaultTextStyle fontOfSize: 44)). + "self textMorph recomposeChain." + "self textMorph releaseParagraph." + "self textMorph createParagraph." + "self textMorph releaseCachedState." \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st index 3d7132c..944ef6c 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st @@ -4,7 +4,9 @@ selectionAddAttribute: anAttribute onNoSelection: aBlock | interval | interval := self textMorph editor selectionInterval. - interval size <= 0 ifTrue: [interval := 1 to: self textMorph text size]. + interval size <= 0 + ifTrue: [interval := 1 to: self textMorph text size]. self textMorph text addAttribute: anAttribute from: interval first to: interval last. - aBlock value. - self changed \ No newline at end of file + interval size = self textMorph text string size + ifTrue: aBlock. + self textMorph changed \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionColor..st b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionColor..st index 050404d..a92b4b9 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionColor..st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionColor..st @@ -1,5 +1,6 @@ styling selectionColor: aColor - self selectionAddAttribute: - (TextColor color: aColor) + self + selectionAddAttribute: (TextColor color: aColor) + onNoSelection: [self textMorph textColor: aColor] diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/textScale..st b/packages/Presenter-Core.package/PSTextMorph.class/instance/textScale..st index eff61af..4d2a62a 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/textScale..st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/textScale..st @@ -1,5 +1,4 @@ accessing textScale: aNumber - textScale := aNumber. - self updateTextSize + textScale := aNumber diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/updateTextSize.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/updateTextSize.st deleted file mode 100644 index 7437731..0000000 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/updateTextSize.st +++ /dev/null @@ -1,6 +0,0 @@ -scaling -updateTextSize - - "self textMorph beAllFont: (PSTextMorph DefaultTextStyle fontOfSize: self actualTextSize)" - "self textMorph text addAttribute: (TextFontReference toFont: ((PSTextMorph DefaultTextStyle fontOfSize: self actualTextSize)))" - "self textMorph text addAttribute: (PSScalingFontAttribute styled: PSTextMorph DefaultTextStyle sized: self basicTextSize scaledBy: self)" \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json index 6d4141a..cb98f3e 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json @@ -2,19 +2,20 @@ "class" : { "DefaultTextStyle" : "LB 5/25/2018 17:35" }, "instance" : { + "createFontSizeAttribute" : "LB 6/8/2018 15:42", "customContextMenuContent" : "WoC 6/2/2018 23:38", "defaultBasicTextSize" : "LB 5/25/2018 16:44", - "initialize" : "LB 6/8/2018 14:57", + "initialize" : "LB 6/8/2018 16:39", + "initializeTextAttribute" : "LB 6/8/2018 16:59", "rescale:" : "LB 5/25/2018 16:42", "selectionAddAttribute:" : "LB 6/8/2018 15:11", - "selectionAddAttribute:onNoSelection:" : "LB 6/8/2018 15:14", + "selectionAddAttribute:onNoSelection:" : "LB 6/8/2018 15:23", "selectionAttribute:" : "LB 6/8/2018 15:06", "selectionColor" : "LB 6/8/2018 15:05", - "selectionColor:" : "LB 6/8/2018 15:14", + "selectionColor:" : "LB 6/8/2018 15:22", "selectionFontSize" : "LB 6/8/2018 15:04", "selectionFontSize:" : "LB 6/8/2018 15:13", "showFontColorDialog" : "LB 6/8/2018 14:56", "showFontSizeDialog" : "LB 6/8/2018 14:54", "textScale" : "LB 5/25/2018 16:08", - "textScale:" : "LB 5/25/2018 16:09", - "updateTextSize" : "LB 6/8/2018 14:00" } } + "textScale:" : "LB 6/8/2018 15:38" } } diff --git a/packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testLocalFontSize.st b/packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testLocalFontSize.st new file mode 100644 index 0000000..d8de8ab --- /dev/null +++ b/packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testLocalFontSize.st @@ -0,0 +1,13 @@ +style tests +testLocalFontSize + + | textLength size | + textLength := self textField textMorph contents size. + 1 to: textLength do: [:begin | + begin to: textLength do: [:end | + size := 200 atRandom. + self textField textMorph selectFrom: begin to: end. + self textField selectionFontSize: size. + self assert: self textField selectionFontSize equals: size + ] + ] \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSTextMorphTest.class/methodProperties.json b/packages/Presenter-Tests.package/PSTextMorphTest.class/methodProperties.json index 23ab58e..fb22569 100644 --- a/packages/Presenter-Tests.package/PSTextMorphTest.class/methodProperties.json +++ b/packages/Presenter-Tests.package/PSTextMorphTest.class/methodProperties.json @@ -7,6 +7,7 @@ "tearDown" : "LB 6/1/2018 18:21", "testContextMenu" : "MK 6/1/2018 19:45", "testLocalFontColor" : "LB 6/1/2018 18:35", + "testLocalFontSize" : "LB 6/8/2018 16:07", "testTextFieldRescale" : "LB 6/8/2018 14:59", "textField" : "LB 6/1/2018 18:21", "textField:" : "LB 6/1/2018 17:57" } } From a673a096927355ed3878d16061dfdf7e915d0b20 Mon Sep 17 00:00:00 2001 From: Leon Bein Date: Fri, 8 Jun 2018 17:07:29 +0200 Subject: [PATCH 08/36] Oops --- .../PSTextMorph.class/instance/initializeTextAttribute.st | 2 +- .../PSTextMorph.class/methodProperties.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/initializeTextAttribute.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/initializeTextAttribute.st index 6f4ede5..51f0b19 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/initializeTextAttribute.st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/initializeTextAttribute.st @@ -2,7 +2,7 @@ initialize-release initializeTextAttribute self textMorph text addAttribute: self createFontSizeAttribute. - self textMorph text addAttribute: (TextFontReference toFont:(PSTextMorph DefaultTextStyle fontOfSize: 44)). + "self textMorph text addAttribute: (TextFontReference toFont:(PSTextMorph DefaultTextStyle fontOfSize: 44))." "self textMorph recomposeChain." "self textMorph releaseParagraph." "self textMorph createParagraph." diff --git a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json index cb98f3e..8f03d5a 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json @@ -6,7 +6,7 @@ "customContextMenuContent" : "WoC 6/2/2018 23:38", "defaultBasicTextSize" : "LB 5/25/2018 16:44", "initialize" : "LB 6/8/2018 16:39", - "initializeTextAttribute" : "LB 6/8/2018 16:59", + "initializeTextAttribute" : "LB 6/8/2018 17:07", "rescale:" : "LB 5/25/2018 16:42", "selectionAddAttribute:" : "LB 6/8/2018 15:11", "selectionAddAttribute:onNoSelection:" : "LB 6/8/2018 15:23", From eeeee3e5b8768338008e8dee049c176f513a7328 Mon Sep 17 00:00:00 2001 From: Jonas Zimmermann Date: Fri, 8 Jun 2018 17:57:11 +0200 Subject: [PATCH 09/36] #13 worked on saving of a presentation --- .../instance/defaultDirectory.st | 6 ++++++ .../instance/defaultDirectoryName.st | 4 ++++ .../instance/savePresentation.st | 13 +++++++++++++ .../instance/warn.trueChoice..st | 4 ++++ .../instance/warn.trueChoice.falseChoice..st | 6 ++++++ .../PSPresentationTool.class/methodProperties.json | 5 +++++ .../PSSlide.class/instance/saveInDirectory..st | 6 ++++++ .../PSSlide.class/methodProperties.json | 1 + 8 files changed, 45 insertions(+) create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectory.st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectoryName.st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice..st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice.falseChoice..st create mode 100644 packages/Presenter-Core.package/PSSlide.class/instance/saveInDirectory..st diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectory.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectory.st new file mode 100644 index 0000000..3121c27 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectory.st @@ -0,0 +1,6 @@ +as yet unclassified +defaultDirectory + + ^ (FileDirectory default / self defaultDirectoryName) + assureExistence; + yourself \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectoryName.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectoryName.st new file mode 100644 index 0000000..478f957 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectoryName.st @@ -0,0 +1,4 @@ +as yet unclassified +defaultDirectoryName + + ^ 'PSPresentations' \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st new file mode 100644 index 0000000..119f306 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st @@ -0,0 +1,13 @@ +as yet unclassified +savePresentation + + | directory | + directory := self defaultDirectory. + self warn: 'Risky Operation! Do you want to save your image?' trueChoice: [Smalltalk saveSession]. + directory createDirectory: 'slides'. + directory := directory / 'slides'. + self slides doWithIndex: [:each :index | + | directoryName | + directoryName := 'slide', index asString. + directory createDirectory: directoryName. + each saveInDirectory: directory / directoryName ] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice..st new file mode 100644 index 0000000..2a1e44b --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice..st @@ -0,0 +1,4 @@ +as yet unclassified +warn: aString trueChoice: aBlock + + self warn: aString trueChoice: aBlock falseChoice: [] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice.falseChoice..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice.falseChoice..st new file mode 100644 index 0000000..b76a445 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice.falseChoice..st @@ -0,0 +1,6 @@ +as yet unclassified +warn: aString trueChoice: trueBlock falseChoice: falseBlock + + (UserDialogBoxMorph confirm: aString) + ifTrue: trueBlock + ifFalse: falseBlock \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json index 09a0364..3bd441a 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json @@ -15,6 +15,8 @@ "currentSlide" : "LM 5/11/2018 18:09", "currentSlideNumber" : "LM 5/6/2018 15:15", "currentSlideNumber:" : "MK 5/6/2018 15:56", + "defaultDirectory" : "JZ 6/8/2018 17:01", + "defaultDirectoryName" : "JZ 6/8/2018 16:52", "deleteSlide" : "LB 5/6/2018 18:03", "deleteSlide:" : "JZ 5/11/2018 19:50", "deleteSlideButtonData" : "LM 5/15/2018 15:27", @@ -34,6 +36,7 @@ "presentationModeButtonData" : "MK 5/25/2018 15:05", "previousSlide" : "LM 5/6/2018 15:33", "previousSlideButtonData" : "LM 5/15/2018 15:28", + "savePresentation" : "JZ 6/8/2018 17:52", "selectSlide:" : "LM 5/11/2018 19:07", "selectSlideButtonData" : "LM 5/15/2018 15:28", "slideAt:" : "LM 5/6/2018 15:37", @@ -43,5 +46,7 @@ "slides" : "LM 5/6/2018 15:05", "slides:" : "MK 5/6/2018 15:56", "textFieldButtonData" : "LM 5/18/2018 16:17", + "warn:trueChoice:" : "JZ 6/8/2018 17:54", + "warn:trueChoice:falseChoice:" : "JZ 6/8/2018 17:52", "window" : "LM 6/1/2018 20:15", "window:" : "LM 6/1/2018 20:15" } } diff --git a/packages/Presenter-Core.package/PSSlide.class/instance/saveInDirectory..st b/packages/Presenter-Core.package/PSSlide.class/instance/saveInDirectory..st new file mode 100644 index 0000000..f78015b --- /dev/null +++ b/packages/Presenter-Core.package/PSSlide.class/instance/saveInDirectory..st @@ -0,0 +1,6 @@ +as yet unclassified +saveInDirectory: aDirectory + + self allMorphsDo: [:each | each prepareToBeSaved ]. + self submorphs doWithIndex: [:each :index | + each saveOnFileNamed: (aDirectory / (index asString, '.morph')) fullName] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSSlide.class/methodProperties.json b/packages/Presenter-Core.package/PSSlide.class/methodProperties.json index b15d545..a6e4a0c 100644 --- a/packages/Presenter-Core.package/PSSlide.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSSlide.class/methodProperties.json @@ -17,6 +17,7 @@ "resizeMorphHeightToFit:" : "LB 5/18/2018 17:36", "resizeMorphToFit:" : "LB 5/18/2018 17:36", "resizeMorphWidthToFit:" : "LM 5/18/2018 19:26", + "saveInDirectory:" : "JZ 6/8/2018 17:25", "sideRatio" : "LB 5/11/2018 16:10", "waitForDoubleClick:" : "LM 5/25/2018 17:22", "wantsDropFiles:" : "LB 5/18/2018 17:29" } } From 7db6bffac2627154788c9ee95c33ac635af31636 Mon Sep 17 00:00:00 2001 From: Maximilian Koenig Date: Fri, 8 Jun 2018 18:00:25 +0200 Subject: [PATCH 10/36] Working on #15 --- .../instance/abandonMorph..st | 5 +++++ .../instance/isValidPresentationDirectory..st | 6 ++++++ .../instance/loadMorphFromFile..st | 4 ++++ .../instance/loadMorphFromStream..st | 12 ++++++++++++ .../instance/loadPresentation.st | 11 +++++++++++ .../instance/loadPresentationFromDirectory..st | 7 +++++++ .../instance/loadPresentationUnchecked..st | 9 +++++++++ .../instance/loadSlideFromDirectory..st | 14 ++++++++++++++ .../instance/morphSurvivesOneCycle..st | 14 ++++++++++++++ .../PSPresentationTool.class/methodProperties.json | 9 +++++++++ 10 files changed, 91 insertions(+) create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/abandonMorph..st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/isValidPresentationDirectory..st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromFile..st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream..st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationFromDirectory..st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/loadSlideFromDirectory..st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/morphSurvivesOneCycle..st diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/abandonMorph..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/abandonMorph..st new file mode 100644 index 0000000..03a5f74 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/abandonMorph..st @@ -0,0 +1,5 @@ +as yet unclassified +abandonMorph: aMorph + + aMorph ifNotNil: [aMorph abandon]. + ^ nil \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/isValidPresentationDirectory..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/isValidPresentationDirectory..st new file mode 100644 index 0000000..fa1b8c1 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/isValidPresentationDirectory..st @@ -0,0 +1,6 @@ +as yet unclassified +isValidPresentationDirectory: aDirectory + + | slidesDirectory | + slidesDirectory := aDirectory / 'slides'. + ^ slidesDirectory exists and: [slidesDirectory directoryNames isEmpty not] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromFile..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromFile..st new file mode 100644 index 0000000..175ad07 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromFile..st @@ -0,0 +1,4 @@ +as yet unclassified +loadMorphFromFile: aFileDirectory + "This was copied from Morph(class)>>#fromFileName:" + ^ self loadMorphFromStream: (MultiByteBinaryOrTextStream with: ((FileStream readOnlyFileNamed: aFileDirectory fullName) binary contentsOfEntireFile)) binary reset \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream..st new file mode 100644 index 0000000..617b320 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream..st @@ -0,0 +1,12 @@ +as yet unclassified +loadMorphFromStream: aReadWriteStream + + | morph | + [morph := aReadWriteStream fileInObjectAndCode] + on: Error + do: [:each | + morph := self abandonMorph: morph]. + (morph isNil not and: [self morphSurvivesOneCycle: morph]) + ifFalse: [morph := self abandonMorph: morph]. + ^ morph + \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st new file mode 100644 index 0000000..bb4011d --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st @@ -0,0 +1,11 @@ +as yet unclassified +loadPresentation + + | presentations presentationName | + presentations := (FileDirectory default / 'PSPresentations') directoryNames. + presentationName := UIManager default + chooseFrom: presentations + values: presentations + title: 'Which presentation do you want me to load?'. + presentationName ifNotNil: [self loadPresentationFromDirectory: FileDirectory default / 'PSPresentations' / presentationName] + \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationFromDirectory..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationFromDirectory..st new file mode 100644 index 0000000..c75c1fa --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationFromDirectory..st @@ -0,0 +1,7 @@ +as yet unclassified +loadPresentationFromDirectory: aDirectory + + (self isValidPresentationDirectory: aDirectory) + ifTrue: [self loadPresentationUnchecked: aDirectory] + ifFalse: [UIManager default inform: 'I could not load the presentation. +It''s directory might be corrupted.'] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st new file mode 100644 index 0000000..a5f542e --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st @@ -0,0 +1,9 @@ +as yet unclassified +loadPresentationUnchecked: aDirectory + + | slidesDirectory | + self slides removeAll. + slidesDirectory := aDirectory / 'slides'. + slidesDirectory directoryNames do: [:each | + self loadSlideFromDirectory: slidesDirectory / each]. + self selectSlide: 1 \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadSlideFromDirectory..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadSlideFromDirectory..st new file mode 100644 index 0000000..e43750f --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadSlideFromDirectory..st @@ -0,0 +1,14 @@ +as yet unclassified +loadSlideFromDirectory: aDirectory + + | slide corruptedMorphs | + corruptedMorphs := 0. + slide := PSSlide new. + aDirectory fileNames do: [:each | + | morph | + morph := self loadMorphFromFile: aDirectory / each. + morph + ifNil: [corruptedMorphs := corruptedMorphs + 1] + ifNotNil: [slide addMorph: morph]]. + self slides addLast: slide. + ^ corruptedMorphs \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/morphSurvivesOneCycle..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/morphSurvivesOneCycle..st new file mode 100644 index 0000000..18935d9 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/morphSurvivesOneCycle..st @@ -0,0 +1,14 @@ +as yet unclassified +morphSurvivesOneCycle: aMorph + "Some morphs may be loaded successfully but throw errors every world cycle therefore crashing the image." + "World doOneCycle consumes all errors and opens the corresponding debuggers. Therefore we cannot do normal error checking but we can compare the debuggers." + | debuggersBefore newDebuggers | + debuggersBefore := Debugger allInstances. + aMorph openInWorld. + World doOneCycle. + newDebuggers := Debugger allInstances reject: [:each | + debuggersBefore includes: each]. + newDebuggers do: [:each | each abandon]. + newDebuggers size > 0 + ifTrue: [^ false]. + ^ true \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json index 09a0364..14b1dbb 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json @@ -3,6 +3,7 @@ "open" : "WoC 5/6/2018 13:36", "openIn:" : "LB 5/23/2018 16:11" }, "instance" : { + "abandonMorph:" : "MK 6/8/2018 17:37", "addSlideButtonData" : "LM 5/16/2018 17:08", "buildWith:" : "LM 6/1/2018 20:15", "buttonBarTopData" : "MK 5/25/2018 15:02", @@ -22,7 +23,15 @@ "enablePresentationMode" : "LM 5/25/2018 16:59", "imageFieldButtonData" : "LM 5/18/2018 16:16", "initialize" : "LM 5/25/2018 16:58", + "isValidPresentationDirectory:" : "MK 6/8/2018 17:04", + "loadMorphFromFile:" : "MK 6/8/2018 17:32", + "loadMorphFromStream:" : "MK 6/8/2018 17:48", + "loadPresentation" : "MK 6/8/2018 17:59", + "loadPresentationFromDirectory:" : "MK 6/8/2018 17:14", + "loadPresentationUnchecked:" : "MK 6/8/2018 17:57", + "loadSlideFromDirectory:" : "MK 6/8/2018 17:25", "minimumSlideCount" : "LM 5/6/2018 15:35", + "morphSurvivesOneCycle:" : "MK 6/8/2018 17:52", "newImageField" : "LM 5/18/2018 17:13", "newTextField" : "LB 5/25/2018 16:43", "nextSlide" : "LM 5/6/2018 15:33", From 59eac118469c2cf581371bbec215f9991d0347c3 Mon Sep 17 00:00:00 2001 From: Maximilian Koenig Date: Fri, 8 Jun 2018 18:16:39 +0200 Subject: [PATCH 11/36] removed magic value 'slides' #15 --- .../instance/isValidPresentationDirectory..st | 2 +- .../PSPresentationTool.class/instance/loadPresentation.st | 4 ++-- .../instance/loadPresentationUnchecked..st | 2 +- .../instance/slidesDirectoryName.st | 4 ++++ .../PSPresentationTool.class/methodProperties.json | 7 ++++--- 5 files changed, 12 insertions(+), 7 deletions(-) create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/slidesDirectoryName.st diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/isValidPresentationDirectory..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/isValidPresentationDirectory..st index fa1b8c1..7bd4c25 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/isValidPresentationDirectory..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/isValidPresentationDirectory..st @@ -2,5 +2,5 @@ as yet unclassified isValidPresentationDirectory: aDirectory | slidesDirectory | - slidesDirectory := aDirectory / 'slides'. + slidesDirectory := aDirectory / self slidesDirectoryName. ^ slidesDirectory exists and: [slidesDirectory directoryNames isEmpty not] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st index bb4011d..f31dd48 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st @@ -2,10 +2,10 @@ as yet unclassified loadPresentation | presentations presentationName | - presentations := (FileDirectory default / 'PSPresentations') directoryNames. + presentations := self defaultDirectory directoryNames. presentationName := UIManager default chooseFrom: presentations values: presentations title: 'Which presentation do you want me to load?'. - presentationName ifNotNil: [self loadPresentationFromDirectory: FileDirectory default / 'PSPresentations' / presentationName] + presentationName ifNotNil: [self loadPresentationFromDirectory: self defaultDirectory / presentationName] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st index a5f542e..d92baf9 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st @@ -3,7 +3,7 @@ loadPresentationUnchecked: aDirectory | slidesDirectory | self slides removeAll. - slidesDirectory := aDirectory / 'slides'. + slidesDirectory := aDirectory / self slidesDirectoryName. slidesDirectory directoryNames do: [:each | self loadSlideFromDirectory: slidesDirectory / each]. self selectSlide: 1 \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/slidesDirectoryName.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/slidesDirectoryName.st new file mode 100644 index 0000000..6a52b0c --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/slidesDirectoryName.st @@ -0,0 +1,4 @@ +as yet unclassified +slidesDirectoryName + + ^ 'slides' \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json index 3cc0588..5a34e3a 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json @@ -25,12 +25,12 @@ "enablePresentationMode" : "LM 5/25/2018 16:59", "imageFieldButtonData" : "LM 5/18/2018 16:16", "initialize" : "LM 5/25/2018 16:58", - "isValidPresentationDirectory:" : "MK 6/8/2018 17:04", + "isValidPresentationDirectory:" : "MK 6/8/2018 18:15", "loadMorphFromFile:" : "MK 6/8/2018 17:32", "loadMorphFromStream:" : "MK 6/8/2018 17:48", - "loadPresentation" : "MK 6/8/2018 17:59", + "loadPresentation" : "MK 6/8/2018 18:12", "loadPresentationFromDirectory:" : "MK 6/8/2018 17:14", - "loadPresentationUnchecked:" : "MK 6/8/2018 17:57", + "loadPresentationUnchecked:" : "MK 6/8/2018 18:15", "loadSlideFromDirectory:" : "MK 6/8/2018 17:25", "minimumSlideCount" : "LM 5/6/2018 15:35", "morphSurvivesOneCycle:" : "MK 6/8/2018 17:52", @@ -54,6 +54,7 @@ "slideCount" : "LB 5/6/2018 17:25", "slides" : "LM 5/6/2018 15:05", "slides:" : "MK 5/6/2018 15:56", + "slidesDirectoryName" : "MK 6/8/2018 18:14", "textFieldButtonData" : "LM 5/18/2018 16:17", "warn:trueChoice:" : "JZ 6/8/2018 17:54", "warn:trueChoice:falseChoice:" : "JZ 6/8/2018 17:52", From 2acb18b7bed3e53d08c6ff803410a38a1f211c54 Mon Sep 17 00:00:00 2001 From: Jonas Zimmermann Date: Fri, 8 Jun 2018 18:18:24 +0200 Subject: [PATCH 12/36] #13 working on saving --- .../instance/askForPresentationName.st | 4 ++++ .../instance/riskyOperationMessage.st | 4 ++++ .../PSPresentationTool.class/instance/savePresentation.st | 8 +++++--- .../PSPresentationTool.class/methodProperties.json | 4 +++- 4 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName.st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName.st new file mode 100644 index 0000000..7422c7a --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName.st @@ -0,0 +1,4 @@ +as yet unclassified +askForPresentationName + + ^UIManager default request: 'PresentationName ???' initialAnswer: 'Presentation' centerAt: World center \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st new file mode 100644 index 0000000..f00ac88 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st @@ -0,0 +1,4 @@ +as yet unclassified +riskyOperationMessage + + ^ 'Risky Operation! Do you want to save your image?' \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st index 119f306..d568c0c 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st @@ -1,11 +1,13 @@ as yet unclassified savePresentation - | directory | + | directory presentationName| directory := self defaultDirectory. - self warn: 'Risky Operation! Do you want to save your image?' trueChoice: [Smalltalk saveSession]. + self warn: self riskyOperationMessage trueChoice: [Smalltalk saveSession]. + presentationName := self askForPresentationName. + directory createDirectory: presentationName. directory createDirectory: 'slides'. - directory := directory / 'slides'. + directory := directory / presentationName /'slides'. self slides doWithIndex: [:each :index | | directoryName | directoryName := 'slide', index asString. diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json index 3bd441a..ea3f84b 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json @@ -4,6 +4,7 @@ "openIn:" : "LB 5/23/2018 16:11" }, "instance" : { "addSlideButtonData" : "LM 5/16/2018 17:08", + "askForPresentationName" : "JZ 6/8/2018 18:11", "buildWith:" : "LM 6/1/2018 20:15", "buttonBarTopData" : "MK 5/25/2018 15:02", "createButtonBarTopSpec:" : "JZ 5/11/2018 19:51", @@ -36,7 +37,8 @@ "presentationModeButtonData" : "MK 5/25/2018 15:05", "previousSlide" : "LM 5/6/2018 15:33", "previousSlideButtonData" : "LM 5/15/2018 15:28", - "savePresentation" : "JZ 6/8/2018 17:52", + "riskyOperationMessage" : "JZ 6/8/2018 18:01", + "savePresentation" : "JZ 6/8/2018 18:16", "selectSlide:" : "LM 5/11/2018 19:07", "selectSlideButtonData" : "LM 5/15/2018 15:28", "slideAt:" : "LM 5/6/2018 15:37", From a637604cf1bec025d40b1c2c0ddf59bea67c0088 Mon Sep 17 00:00:00 2001 From: Maximilian Koenig Date: Fri, 8 Jun 2018 18:41:41 +0200 Subject: [PATCH 13/36] added errorReport --- .../instance/buildErrorReportString..st | 8 ++++++++ .../instance/loadPresentationUnchecked..st | 9 ++++++--- .../instance/showErrorReport..st | 8 ++++++++ .../PSPresentationTool.class/methodProperties.json | 4 +++- 4 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/buildErrorReportString..st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/showErrorReport..st diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/buildErrorReportString..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/buildErrorReportString..st new file mode 100644 index 0000000..453423c --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/buildErrorReportString..st @@ -0,0 +1,8 @@ +as yet unclassified +buildErrorReportString: aDictionary + + | errorString | + errorString := 'I could not load all slides completely.'. + aDictionary keysAndValuesDo: [:key :value | + errorString := errorString, Character cr, key, ' is missing ', value, ' morph(s).']. + ^ errorString \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st index d92baf9..95e3b72 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st @@ -1,9 +1,12 @@ as yet unclassified loadPresentationUnchecked: aDirectory - | slidesDirectory | + | slidesDirectory errorReport | + errorReport := Dictionary new. self slides removeAll. slidesDirectory := aDirectory / self slidesDirectoryName. slidesDirectory directoryNames do: [:each | - self loadSlideFromDirectory: slidesDirectory / each]. - self selectSlide: 1 \ No newline at end of file + errorReport at: each put: (self loadSlideFromDirectory: slidesDirectory / each)]. + self + selectSlide: 1; + showErrorReport: errorReport \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/showErrorReport..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/showErrorReport..st new file mode 100644 index 0000000..1fdd790 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/showErrorReport..st @@ -0,0 +1,8 @@ +as yet unclassified +showErrorReport: aDictionary + + | corruptedSlides | + corruptedSlides := aDictionary select: [:each | each > 0]. + corruptedSlides isEmpty + ifTrue: [UIManager inform: 'I successfully loaded the presentation.'] + ifFalse: [UIManager inform: (self buildErrorReportString: corruptedSlides)] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json index 5a34e3a..35f816d 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json @@ -5,6 +5,7 @@ "instance" : { "abandonMorph:" : "MK 6/8/2018 17:37", "addSlideButtonData" : "LM 5/16/2018 17:08", + "buildErrorReportString:" : "MK 6/8/2018 18:38", "buildWith:" : "LM 6/1/2018 20:15", "buttonBarTopData" : "MK 5/25/2018 15:02", "createButtonBarTopSpec:" : "JZ 5/11/2018 19:51", @@ -30,7 +31,7 @@ "loadMorphFromStream:" : "MK 6/8/2018 17:48", "loadPresentation" : "MK 6/8/2018 18:12", "loadPresentationFromDirectory:" : "MK 6/8/2018 17:14", - "loadPresentationUnchecked:" : "MK 6/8/2018 18:15", + "loadPresentationUnchecked:" : "MK 6/8/2018 18:23", "loadSlideFromDirectory:" : "MK 6/8/2018 17:25", "minimumSlideCount" : "LM 5/6/2018 15:35", "morphSurvivesOneCycle:" : "MK 6/8/2018 17:52", @@ -48,6 +49,7 @@ "savePresentation" : "JZ 6/8/2018 17:52", "selectSlide:" : "LM 5/11/2018 19:07", "selectSlideButtonData" : "LM 5/15/2018 15:28", + "showErrorReport:" : "MK 6/8/2018 18:30", "slideAt:" : "LM 5/6/2018 15:37", "slideContainer" : "MK 5/6/2018 15:32", "slideContainer:" : "MK 5/6/2018 15:32", From 9c6a51d69191e63e6796a5663115c6856163945f Mon Sep 17 00:00:00 2001 From: Maximilian Koenig Date: Fri, 8 Jun 2018 18:53:16 +0200 Subject: [PATCH 14/36] categorized loading methods --- .../PSPresentationTool.class/instance/abandonMorph..st | 2 +- .../instance/buildErrorReportString..st | 2 +- .../PSPresentationTool.class/instance/defaultDirectory.st | 2 +- .../PSPresentationTool.class/instance/defaultDirectoryName.st | 2 +- .../instance/isValidPresentationDirectory..st | 2 +- .../PSPresentationTool.class/instance/loadMorphFromFile..st | 2 +- .../PSPresentationTool.class/instance/loadMorphFromStream..st | 2 +- .../PSPresentationTool.class/instance/loadPresentation.st | 2 +- .../instance/loadPresentationFromDirectory..st | 2 +- .../instance/loadPresentationUnchecked..st | 2 +- .../instance/loadSlideFromDirectory..st | 2 +- .../PSPresentationTool.class/instance/morphSurvivesOneCycle..st | 2 +- .../PSPresentationTool.class/instance/showErrorReport..st | 2 +- .../PSPresentationTool.class/instance/slidesDirectoryName.st | 2 +- .../instance/warn.trueChoice.falseChoice..st | 2 +- .../PSPresentationTool.class/methodProperties.json | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/abandonMorph..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/abandonMorph..st index 03a5f74..cec0f9c 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/abandonMorph..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/abandonMorph..st @@ -1,4 +1,4 @@ -as yet unclassified +presentation loading abandonMorph: aMorph aMorph ifNotNil: [aMorph abandon]. diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/buildErrorReportString..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/buildErrorReportString..st index 453423c..3135594 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/buildErrorReportString..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/buildErrorReportString..st @@ -1,4 +1,4 @@ -as yet unclassified +presentation loading buildErrorReportString: aDictionary | errorString | diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectory.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectory.st index 3121c27..d0c6a5d 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectory.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectory.st @@ -1,4 +1,4 @@ -as yet unclassified +accessing defaultDirectory ^ (FileDirectory default / self defaultDirectoryName) diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectoryName.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectoryName.st index 478f957..485b9d2 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectoryName.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/defaultDirectoryName.st @@ -1,4 +1,4 @@ -as yet unclassified +accessing defaultDirectoryName ^ 'PSPresentations' \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/isValidPresentationDirectory..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/isValidPresentationDirectory..st index 7bd4c25..74de564 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/isValidPresentationDirectory..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/isValidPresentationDirectory..st @@ -1,4 +1,4 @@ -as yet unclassified +presentation loading isValidPresentationDirectory: aDirectory | slidesDirectory | diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromFile..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromFile..st index 175ad07..284d686 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromFile..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromFile..st @@ -1,4 +1,4 @@ -as yet unclassified +presentation loading loadMorphFromFile: aFileDirectory "This was copied from Morph(class)>>#fromFileName:" ^ self loadMorphFromStream: (MultiByteBinaryOrTextStream with: ((FileStream readOnlyFileNamed: aFileDirectory fullName) binary contentsOfEntireFile)) binary reset \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream..st index 617b320..d6496de 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream..st @@ -1,4 +1,4 @@ -as yet unclassified +presentation loading loadMorphFromStream: aReadWriteStream | morph | diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st index f31dd48..06a4508 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st @@ -1,4 +1,4 @@ -as yet unclassified +presentation loading loadPresentation | presentations presentationName | diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationFromDirectory..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationFromDirectory..st index c75c1fa..4b98e2c 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationFromDirectory..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationFromDirectory..st @@ -1,4 +1,4 @@ -as yet unclassified +presentation loading loadPresentationFromDirectory: aDirectory (self isValidPresentationDirectory: aDirectory) diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st index 95e3b72..ad609e9 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentationUnchecked..st @@ -1,4 +1,4 @@ -as yet unclassified +presentation loading loadPresentationUnchecked: aDirectory | slidesDirectory errorReport | diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadSlideFromDirectory..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadSlideFromDirectory..st index e43750f..9cdc788 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadSlideFromDirectory..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadSlideFromDirectory..st @@ -1,4 +1,4 @@ -as yet unclassified +presentation loading loadSlideFromDirectory: aDirectory | slide corruptedMorphs | diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/morphSurvivesOneCycle..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/morphSurvivesOneCycle..st index 18935d9..928eda3 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/morphSurvivesOneCycle..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/morphSurvivesOneCycle..st @@ -1,4 +1,4 @@ -as yet unclassified +presentation loading morphSurvivesOneCycle: aMorph "Some morphs may be loaded successfully but throw errors every world cycle therefore crashing the image." "World doOneCycle consumes all errors and opens the corresponding debuggers. Therefore we cannot do normal error checking but we can compare the debuggers." diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/showErrorReport..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/showErrorReport..st index 1fdd790..de3692c 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/showErrorReport..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/showErrorReport..st @@ -1,4 +1,4 @@ -as yet unclassified +presentation loading showErrorReport: aDictionary | corruptedSlides | diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/slidesDirectoryName.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/slidesDirectoryName.st index 6a52b0c..6ddf5ef 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/slidesDirectoryName.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/slidesDirectoryName.st @@ -1,4 +1,4 @@ -as yet unclassified +accessing slidesDirectoryName ^ 'slides' \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice.falseChoice..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice.falseChoice..st index b76a445..443dfc0 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice.falseChoice..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice.falseChoice..st @@ -1,6 +1,6 @@ as yet unclassified warn: aString trueChoice: trueBlock falseChoice: falseBlock - (UserDialogBoxMorph confirm: aString) + (UIManager default confirm: aString) ifTrue: trueBlock ifFalse: falseBlock \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json index 35f816d..105ad2d 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json @@ -59,6 +59,6 @@ "slidesDirectoryName" : "MK 6/8/2018 18:14", "textFieldButtonData" : "LM 5/18/2018 16:17", "warn:trueChoice:" : "JZ 6/8/2018 17:54", - "warn:trueChoice:falseChoice:" : "JZ 6/8/2018 17:52", + "warn:trueChoice:falseChoice:" : "MK 6/8/2018 18:44", "window" : "LM 6/1/2018 20:15", "window:" : "LM 6/1/2018 20:15" } } From 1eb8aa747d16bb989eeccde634b7b86b22f43dfb Mon Sep 17 00:00:00 2001 From: Maximilian Koenig Date: Fri, 8 Jun 2018 19:17:27 +0200 Subject: [PATCH 15/36] adden loading button added warning before loading --- .../PSPresentationTool.class/instance/buttonBarTopData.st | 3 ++- .../PSPresentationTool.class/instance/loadPresentation.st | 4 ++++ .../instance/loadingButtonData.st | 8 ++++++++ .../PSPresentationTool.class/methodProperties.json | 5 +++-- 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/loadingButtonData.st diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/buttonBarTopData.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/buttonBarTopData.st index b115191..714e88a 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/buttonBarTopData.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/buttonBarTopData.st @@ -8,4 +8,5 @@ buttonBarTopData self selectSlideButtonData. self textFieldButtonData. self imageFieldButtonData. - self presentationModeButtonData } \ No newline at end of file + self presentationModeButtonData. + self loadingButtonData } \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st index 06a4508..ac6652d 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st @@ -2,6 +2,10 @@ presentation loading loadPresentation | presentations presentationName | + self + warn: 'This operation is risky as it might crash your image.', Character cr, 'Do you want me to proceed?' + trueChoice: [] + falseChoice: [^ self]. presentations := self defaultDirectory directoryNames. presentationName := UIManager default chooseFrom: presentations diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadingButtonData.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadingButtonData.st new file mode 100644 index 0000000..a99a2fc --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadingButtonData.st @@ -0,0 +1,8 @@ +as yet unclassified +loadingButtonData + + ^ Dictionary withAll: { + #frame -> (0.6@0.0 corner: 0.7@1.0). + #name -> #loadingButton. + #label -> 'Load'. + #action -> #loadPresentation} \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json index 105ad2d..90810bb 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json @@ -7,7 +7,7 @@ "addSlideButtonData" : "LM 5/16/2018 17:08", "buildErrorReportString:" : "MK 6/8/2018 18:38", "buildWith:" : "LM 6/1/2018 20:15", - "buttonBarTopData" : "MK 5/25/2018 15:02", + "buttonBarTopData" : "MK 6/8/2018 19:12", "createButtonBarTopSpec:" : "JZ 5/11/2018 19:51", "createButtonSpec:with:" : "LM 5/18/2018 16:16", "createSlide" : "LM 5/18/2018 18:37", @@ -29,10 +29,11 @@ "isValidPresentationDirectory:" : "MK 6/8/2018 18:15", "loadMorphFromFile:" : "MK 6/8/2018 17:32", "loadMorphFromStream:" : "MK 6/8/2018 17:48", - "loadPresentation" : "MK 6/8/2018 18:12", + "loadPresentation" : "MK 6/8/2018 19:11", "loadPresentationFromDirectory:" : "MK 6/8/2018 17:14", "loadPresentationUnchecked:" : "MK 6/8/2018 18:23", "loadSlideFromDirectory:" : "MK 6/8/2018 17:25", + "loadingButtonData" : "MK 6/8/2018 19:16", "minimumSlideCount" : "LM 5/6/2018 15:35", "morphSurvivesOneCycle:" : "MK 6/8/2018 17:52", "newImageField" : "LM 5/18/2018 17:13", From fb2f8b5fadcf5f42be8f13e01ad11972ed58a61b Mon Sep 17 00:00:00 2001 From: Jonas Zimmermann Date: Fri, 8 Jun 2018 19:47:08 +0200 Subject: [PATCH 16/36] #13 working on saving --- .../instance/askForPresentationName..st | 12 ++++++++++++ .../instance/createDirectory.in..st | 7 +++++++ .../instance/getValidPresentationName..st | 12 ++++++++++++ .../instance/savePresentation.st | 12 ++++++------ .../PSPresentationTool.class/methodProperties.json | 7 +++++-- 5 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName..st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/createDirectory.in..st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/getValidPresentationName..st diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName..st new file mode 100644 index 0000000..87e2470 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName..st @@ -0,0 +1,12 @@ +as yet unclassified +askForPresentationName: aFileDirectory + + | presentationName directory | + presentationName := self askUserForPresentationName. + directory := (aFileDirectory / presentationName). + directory exists + ifTrue: [self warn: 'The name you chose is already used. Do you want to overwrite the Presentation?' + trueChoice: [directory recursiveDelete. + ^ self createDirectory: presentationName in: aFileDirectory] + falseChoice: [^ self askForPresentationName: aFileDirectory]] + ifFalse: [^ directory] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/createDirectory.in..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/createDirectory.in..st new file mode 100644 index 0000000..ef69539 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/createDirectory.in..st @@ -0,0 +1,7 @@ +as yet unclassified +createDirectory: aString in: aFileDirectory + + aFileDirectory createDirectory: aString. + ^ aFileDirectory / aString + + \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/getValidPresentationName..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/getValidPresentationName..st new file mode 100644 index 0000000..eec7ca5 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/getValidPresentationName..st @@ -0,0 +1,12 @@ +as yet unclassified +getValidPresentationName: aFileDirectory + + | presentationName directory | + presentationName := self askForPresentationName. + directory := (aFileDirectory / presentationName). + directory exists + ifTrue: [self warn: 'The name you chose is already used. Do you want to overwrite the Presentation?' + trueChoice: [directory recursiveDelete. + ^ self createDirectory: presentationName in: aFileDirectory] + falseChoice: [^ self getValidPresentationName: aFileDirectory]] + ifFalse: [^ directory assureExistence] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st index d568c0c..6a6ca2e 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st @@ -1,13 +1,13 @@ as yet unclassified savePresentation - | directory presentationName| + | directory | directory := self defaultDirectory. - self warn: self riskyOperationMessage trueChoice: [Smalltalk saveSession]. - presentationName := self askForPresentationName. - directory createDirectory: presentationName. - directory createDirectory: 'slides'. - directory := directory / presentationName /'slides'. + self warn: self riskyOperationMessage trueChoice: []. + + directory := self getValidPresentationName: directory. + directory := self createDirectory: 'slides' in: directory. + self slides doWithIndex: [:each :index | | directoryName | directoryName := 'slide', index asString. diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json index f9459aa..f0a060c 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json @@ -5,11 +5,13 @@ "instance" : { "abandonMorph:" : "MK 6/8/2018 17:37", "addSlideButtonData" : "LM 5/16/2018 17:08", - "askForPresentationName" : "JZ 6/8/2018 18:11", + "askForPresentationName" : "JZ 6/8/2018 19:32", + "askForPresentationName:" : "JZ 6/8/2018 19:39", "buildWith:" : "LM 6/1/2018 20:15", "buttonBarTopData" : "MK 5/25/2018 15:02", "createButtonBarTopSpec:" : "JZ 5/11/2018 19:51", "createButtonSpec:with:" : "LM 5/18/2018 16:16", + "createDirectory:in:" : "JZ 6/8/2018 19:12", "createSlide" : "LM 5/18/2018 18:37", "createSlideContainerIn:" : "MK 5/25/2018 15:55", "createSlideViewportSpec:" : "LB 5/6/2018 17:00", @@ -24,6 +26,7 @@ "deleteSlideButtonData" : "LM 5/15/2018 15:27", "disablePresentationMode" : "LM 5/25/2018 16:58", "enablePresentationMode" : "LM 5/25/2018 16:59", + "getValidPresentationName:" : "JZ 6/8/2018 19:42", "imageFieldButtonData" : "LM 5/18/2018 16:16", "initialize" : "LM 5/25/2018 16:58", "isValidPresentationDirectory:" : "MK 6/8/2018 18:15", @@ -47,7 +50,7 @@ "previousSlide" : "LM 5/6/2018 15:33", "previousSlideButtonData" : "LM 5/15/2018 15:28", "riskyOperationMessage" : "JZ 6/8/2018 18:01", - "savePresentation" : "JZ 6/8/2018 18:16", + "savePresentation" : "JZ 6/8/2018 19:26", "selectSlide:" : "LM 5/11/2018 19:07", "selectSlideButtonData" : "LM 5/15/2018 15:28", "slideAt:" : "LM 5/6/2018 15:37", From 8f274280afd5b22bb7722c6309818bea2eb2634d Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Fri, 8 Jun 2018 20:14:23 +0200 Subject: [PATCH 17/36] Added tests for presentation mode Started adding tests for loading --- .../instance/testInvalidLoadReturnsNil.st | 4 ++++ .../instance/testMorphLoadIsValid.st | 7 +++++++ .../instance/testPresentationModeRemovesHandle.st | 7 +++++++ .../instance/testSlideContainerExtent.st | 6 ++++++ .../instance/testSlideContainerPosition.st | 5 +++++ .../testSlidesReceiveEnablePresentationMode.st | 8 ++++++++ .../instance/validMorphFileData.st | 4 ++++ .../methodProperties.json | 7 +++++++ .../PSSlideForTests.class/README.md | 0 .../instance/enablePresentationMode.st | 4 ++++ .../PSSlideForTests.class/instance/initialize.st | 5 +++++ .../instance/receivedPresentationModeEnable..st | 4 ++++ .../instance/receivedPresentationModeEnable.st | 4 ++++ .../PSSlideForTests.class/methodProperties.json | 8 ++++++++ .../PSSlideForTests.class/properties.json | 14 ++++++++++++++ .../testLeavePresentationModeEnablesHandles.st | 9 +++++++++ .../instance/testPresentationModeRemovesHandle.st | 8 ++++++++ .../methodProperties.json | 2 ++ 18 files changed, 106 insertions(+) create mode 100644 packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testInvalidLoadReturnsNil.st create mode 100644 packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testMorphLoadIsValid.st create mode 100644 packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testPresentationModeRemovesHandle.st create mode 100644 packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlideContainerExtent.st create mode 100644 packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlideContainerPosition.st create mode 100644 packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlidesReceiveEnablePresentationMode.st create mode 100644 packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/validMorphFileData.st create mode 100644 packages/Presenter-Tests.package/PSSlideForTests.class/README.md create mode 100644 packages/Presenter-Tests.package/PSSlideForTests.class/instance/enablePresentationMode.st create mode 100644 packages/Presenter-Tests.package/PSSlideForTests.class/instance/initialize.st create mode 100644 packages/Presenter-Tests.package/PSSlideForTests.class/instance/receivedPresentationModeEnable..st create mode 100644 packages/Presenter-Tests.package/PSSlideForTests.class/instance/receivedPresentationModeEnable.st create mode 100644 packages/Presenter-Tests.package/PSSlideForTests.class/methodProperties.json create mode 100644 packages/Presenter-Tests.package/PSSlideForTests.class/properties.json create mode 100644 packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testLeavePresentationModeEnablesHandles.st create mode 100644 packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testPresentationModeRemovesHandle.st diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testInvalidLoadReturnsNil.st b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testInvalidLoadReturnsNil.st new file mode 100644 index 0000000..ea58a14 --- /dev/null +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testInvalidLoadReturnsNil.st @@ -0,0 +1,4 @@ +loading tests +testInvalidLoadReturnsNil + + self assert: (self tool loadMorphFromStream: (MultiByteBinaryOrTextStream on: '')) equals: nil \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testMorphLoadIsValid.st b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testMorphLoadIsValid.st new file mode 100644 index 0000000..a365095 --- /dev/null +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testMorphLoadIsValid.st @@ -0,0 +1,7 @@ +loading tests +testMorphLoadIsValid + + self flag: #TODO. + "| morph | + morph := self tool loadMorphFromStream: (ReadWriteStream with: self validMorphFileData) binary reset. + self assert: morph isNil not" \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testPresentationModeRemovesHandle.st b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testPresentationModeRemovesHandle.st new file mode 100644 index 0000000..aeb995f --- /dev/null +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testPresentationModeRemovesHandle.st @@ -0,0 +1,7 @@ +presentation mode tests +testPresentationModeRemovesHandle + + self tool enablePresentationMode. + self tool slides do:[:slide | + slide submorphsDo: [:each | + self assert: each hasHandles not]] \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlideContainerExtent.st b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlideContainerExtent.st new file mode 100644 index 0000000..9416c18 --- /dev/null +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlideContainerExtent.st @@ -0,0 +1,6 @@ +presentation mode tests +testSlideContainerExtent + + self assert: self tool slideContainer extent ~= self tool slideContainer world extent. + self tool slideContainer enablePresentationMode. + self assert: self tool slideContainer extent equals: self tool slideContainer world extent \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlideContainerPosition.st b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlideContainerPosition.st new file mode 100644 index 0000000..1838435 --- /dev/null +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlideContainerPosition.st @@ -0,0 +1,5 @@ +presentation mode tests +testSlideContainerPosition + + self tool slideContainer enablePresentationMode. + self assert: self tool slideContainer position equals: 0@0 \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlidesReceiveEnablePresentationMode.st b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlidesReceiveEnablePresentationMode.st new file mode 100644 index 0000000..55d012d --- /dev/null +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlidesReceiveEnablePresentationMode.st @@ -0,0 +1,8 @@ +presentation mode tests +testSlidesReceiveEnablePresentationMode + + self tool createSlide. + self tool slides: (self tool slides collect: [:each | PSSlideForTests new]). + self tool enablePresentationMode. + self tool slides do: [:each | + self assert: each receivedPresentationModeEnable] \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/validMorphFileData.st b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/validMorphFileData.st new file mode 100644 index 0000000..05c64d8 --- /dev/null +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/validMorphFileData.st @@ -0,0 +1,4 @@ +loading tests +validMorphFileData + + ^ 275239445479955668195285742884177155882523958894135758242282457763617158954751295913884400231659245989153846528861883849088681196302755524595422604970914680356158974644234007283235202579858943182137659660134580635654216502891297520504661494819482975389695697443617735615865830178817145810693120099097864113374951754040560286958436153749706438658448680496455440133765400888115770478438598394658635762949660766738461628541312929654153968754076350484377742251435631891619479139468168425735269926118292757801681584562987855953875170378060256323860412933913432370831650273540940940021523587597280600530136289605298314667065602643104295204275656015797862076290001876712935883473559407912411370765014488383061681604039500350459395088224093487834453621898602793457660904789799669923251044872751152882439399063159651551803733626574089348974662498120431707622848923507782409709221918963663516667877637624351963502762160325866563207165576213432869691510363589468769703740402240194110706799173694635567438038672837137979671161035762914381625466829396351465597829655851499293342120573627172225914034199493707796615419321110135475381147699894836126015769919169355922041089855199494787964468875772491795397601703753562293533830342055917972570557321522122964430016168782777526950893233145663880464773686966945658348440734339227615413143825151431102164328746255678621541448842803951129622370691509744010276634518782035417900126497098437815341350521897861293635433108170456402213222247277094577035665403792097592588020357226271007038895298247157208177591817827789245846126543508140094615462097961392714166038061965381073929022575276933222917479677997281481913643793154023062324997057520188164884153285777309860088010553558706490010018968649876613018629962545767099129297601953928421182455042874658220809833613321030393276466567048939954133197417411444067936140480918088006587650306122366154616626875778754562610760296913413447373923922653087077043775305162968487766783140154980538393925460612145081952816699188175052491932970294671714802648331882939981893164948401306320451646752461868722348027902268261514406241873927414303472267062547023800015017709628994810857964209124294215293680748506322144187114506198290039001072182530067893440967182463002097544613466562190032884815613128831119950123614383758738559994169895983579956742436420510660240165293036917667389389355400149626601031896070857266450289899958677987963546686953182400696064607267015392516251686360780718701436440864138995828879532874215716514918913917198790059526255033404032733586598384265860765549549172380313731321386700264138289270127670903389688445372376510683395608762330596359982959098574957507129331826169267193045770199446452363519673610654118600695806307071968511452590910471905838544222660258900646626574324073890523030230654244222218457806155012136896541685632307526359091791050573510697736151675349481176283048956179465313358013467362845247516053079673293313551537976905456189051878365211464012261911005406702377597994578614046523061892288042676187025832132853875579003894755207392866945530435480995134219185033747528930948849592538291074293978602068469026807518734815714212014912272280788769546093725862279662199260935966073045112095886159340461316257749425284920487915695525506706224791072198720882609304092481878887935884953776021247320320449210469078500372737276425992234502964283481210411846486992337452868578140041588204795096909777369503898325061850255891251478203859787076552005428299113826340431116985832698500703845396333491293469722198390330920589929100022682294548057164575707944958624155373249048017959695412611238566025301394203781930556686567836610365792557217343886738091595361485602281015346856069751384868851427076400822895067385583750124312323271223035701452925564018163190253164845296855561120600547926690422214652586898964114421680695329483940780954816686868918931035200337157355311501077144411026342167713991971411098230401346880923805766384400309211197184615980015901722377119921206750567574981033346411339891052491060824566881600191266796131711501625015807362835800994288273290821762820555955923277167386353792830425805538712780496490266317013038930767900687107677878372640225248639937704669519045277555466374597425097116477145649297369676819450683507264993060665583126382175414682439433255922234129779899300455082204913546142586366788146522599025292509280707805531220178807216245900563946859242581249394635509485397578352481316840718683789737940349759712530071592405425705761337627237487294257809997739146849407786171640993924792211690656050133787977672900844351926026840230780807741891861782539676861783285667894363556221513262633633781379699382490799905361648771355893761322939307921858282744138284599371196380649485357620891893903992432423365630952981211813274643764966601492416126189754646297267485746560605250037988291871338413596503972518596582473112901242227978573338481445858097798091247794354685929151261825729008533936828880338879002636243962408393629050973597365375062171263178727888327772401756981101865694914031622193719625765790173671460144494065524905664175627918537561094302954986075697536877664609543267711535544585662442651695133054703303525783302181781473274478296868286288965147992840659565131693595555519772528624170856633126198130071213446167068389586229460465131225237104520163138672286584865524301941086226682295517921935616498092745716627062193361189700381819810403530852343259765996382134370175968991489301876519154728786392124921385680286005501551600562858892163666506371918136312666738331461418256883106797528776037282694794881111674306797630904942338477430656256347589117327146191536003338371479134900697026820399098237412616174437722398401598058652102650679583584469137545016228167114053836706921674573371089013869060738701015990915263396712817972394032680228586996270271849878820003895583512671460479454285980128891006199492048324455945195261594171668273514979455848802264338627340845952428007126683432980627181311689034408684872064467685832612530330046404013833393278570806931530910784883327879623237288599489771057398673060409134094528028697297443884823279234571963674779371169149956251273388699700398080357626748180572119833390559753740587369113147370030526570145694012568914092529753461888149767510063302200129930243384303372743367755012504830655138968788172321610052042779500905427689781831647609286770293455534113711524569694907790256464560343334457212983835881150530601589895322465095969063678718628164138712272270997309699010583470642013156809383552483277238208138795701883814372922762124962863368420956267449978291397315448894734554199682707233490320281237930419977334696742532152318089281102921105559486385895462167273190988041602952606833990639088075902216892147464573890736462045826013879277849850841621773319598944510534302937913287137312809390429965166936800831635716103053687698006472928918459258760505286432733704375426122960146498682263979313206221445567907858738689977520738570328264114960375522037366713550985941679632593823645930168316220873575718196637149500957644060518467081594226701909643661458635026916800661646695914857658545074049348615399105606268231296359963950823757756303420711621045498756364756828180353879591348471245800719314347159882430759037718430775829087863665044778118304860784719824454281274337483093756736276138366105368024513412641157894086355617813299518631041690272242042153087518071072421230255346654807654944733630620621079187698836831978930374393880177281734549019720949821308170560041344583217278221546570820766968584560986775437024275117272339421993034669642034186236103192104354992131085621238709743612755733102232170190111544196444612679205354176345486313063988885281672118861567633988855604683843144277440455921491740080180233217673484550133474027950827963659206345103177552255621166726653171390431017927098110640231837221282578945436419914760079037366590614426078649883548176043479432754125770776343872407405276332126185574547926143373801655962203894907820499930190616839074929981783344730499182739685036097739509794568643582374232036594486937272651600379172351165206428448639909906585640032572296500814293984313209862611979076060145731560795658321805679051172045672024657115794785124086561408353301203336235038165048445500392823487666137467324587994082360269102204393738798315325068712265743508820959689852705829080220336986203505313463491174794892511626466682969051729285957809823586014194824257510042488336273793000487141008030347728148045944912182984396527165988709929793462769406178818733203779483344205559169282945076105439353594383033469514922374585751509436196799616115574774071402354818439306276156772183586303784189836053865405929899598113696984195054906337024853532497359384006290200963480708130900896346523447119847106805490818162142581876625228423738213939014317748267150365958517224049599798669241578764219375622740851182721292853284226026501038555508978797678079453492869229121503131507851066377914265348506722301198835193184411201694740770768423032550375514230437039474949427342632927986442549603012081165515061182820632948432023373849696577434443881838410388555726747470461644750266126267457777976507109543200180380952891883194131063983403263178322883005818036367037938763404121556587371818594971232858225435789082770300984586189805434822499568328271802403964378554799879262039104503908487794340568864371872466190092554346825400721082920440620241868547046148034001419247699989527850010243486396735848418339905267451108505635718304146053176381311535780669381488799033105430677183193689893024546518546712055906153488720248705173523642873770833284956688858525881465955902778032481856304716822038690686570971737919907300977058974556779277951430619193683258862742814673926182576040580304185692814861189165434035097487304456714468365448536062148634144892429400349423172791620504368215366984942965968270090039257469014195188065052451946142615307750748867614705089169594778205243528351852472430205476351271462774561238128496636448333997078911305918033051880647165524943078064488474336980098243056486305150134927520824228199036449992826388318220994020459817880257033781543032514707100414809388606535850086756950247926470600198820608682243920909189058857350666585995137179178280371228910424815841403769942953751471080774079248417411912832739673198740336950414893260387470886219137546609320958491051104799195518513555669602384985914977227426916064269476784128300916304649780344645376283239263875390032192685899797103063942588321552272466820488250812269990710028290145952814802412204680097097600220167068323828541699580501229370972886076669230535563586225533039500829891077187941928294855097070334632568792997704174752512474409330919714013117056641257413100645658096327063400886070079882875062491491600046455142554612810234937350310522912181471044123342537947969127355527697334852892046321636305221111272029882142708221938634720604082650958074137241731349901054531517269219571464176701017418463280930653294949232708953449601285676775221490496762783323441734985346178649950852320053723771576700180364133519103021982376030305975809176629297947697216061769617952802568419251247269992582708976960064667654833868955112582242945584412388972366061431079190985226377097227511438877501933335900550321952905407174733318987952824058148479035302468098647022487338556675178900611300188078116877865854434247598373159999635627321097479142920703096270610113755360353025379335237028977255944429186912106689236828623755219250292720297187828834983421595371788284941871863331609210658769167595821259466156628660794725503317879671033421346089073574534350467966290380029322969334354550173816235421952170544660721610290932573169446142913193375709839442445416296302457398638291112066654712975227929353480159565908082498879977545865246920614626143529499888787204627842279536592108488514380709337127731165400467506838444901866879088330604398394612166934427916304673074166405975982150379940622018235085898778568145988316924065038779939523744770753004273974628798119467257728963527992919335901271613508369250570376193596246230294666702945118054069391586288984809387396486334707596635327532195204677544874414061569365165150615170669436731923980006201279783813413130081915989433170370042720457828568065475414108438955154818835830722708999893367400161959895067351513911237009048956247851435846027094599617170683166290655337152363842023883828770571745027088850300061235934515035910697201673773499501393262196421135812265540320661452738782961112800331226785547072339086814055317259556227448369708484737528100156667118651816844092194402409963828850722033276209352303694995898034958432590535961158371479499135248636606642727036510643321952569704073472119062596167673696283822221065096072795363045394003434893044573993369939279198209214881026081983145980922738449543962444792888511084973059737447138171308976836740548175060925100636740925460940858970787713061754409072725888791964532357171100310456756333855850338222904151750385459988699137276397910698746883245107291473433680199709490189492329098506316053924407365591118419587175782090464865948698086000463828280757054866137985347441762473103546646744459161256758216792366560878321805286023816807973832681782489758338299307180207139803813133305310887119321704441748249461666418278443997990931503776153342203551436551021699804185499489165213373690716297488927675260646736991791689662225560731972710444106482399637401133797058575868761419430667548826503182914490801639448692805506029628914106500342833934216040765683590895379541891660784511420985215305303126306438692163811911791923875486320812889644645295795923429449090208134856333914520740367705533987827411988361505924563838813913729273646260424254760860200732269359032609593605086930734737981247225545207087048108214792129750072764577397348836405506543727573208929237974716575638555096684457477179844329504923939332871365526092440152445387949538464067949022112112998836012072807778484140197897740528219291987897657788401198667953064103694327660556832660386469233626764776910843208777540448855595789978290807217886440092899292174319990161333367947280305157929724191923776147577401567861089248090539868336254397330107669161956084057125708670666494377297027196691870393217249829029158388364785411783906884429391162682170848775942549183445518177218981939172864169531229792858899231819846284677052700927231817953603824048015649339350446711753156448061702902644981421292051257315554846527110654145461514407654793977984268905959068284461055819262812872270984497032426317884881106684735148855206064467796446155639240326295732166815970750660622862557527835876200947835977819148723724527696886223678477529061823225107537717728376111498218739117063146602056523377097184159911346401865135715446387630726799905874432355697702023715752629180987341860472148410766203202384039927284754762411351294955013477571985762006330189094131377974033948325718528058900749411741523558810759705325051716258992163268359367459256355253043652670556073435098529735270954275443774200574769516556933714417284445513276963015736213722019585795856171938046436823791613124934278585814827285954975348994208689188014076006887126868972192252998729633072213866309659140420267623661427959878856654887028108034864774572157753898737953291186384090943216837972650671795811311428204617149161855325287321022878964410939676045705389678868460739519242572456464058682061418270706380732984420924340672901043944748314990000743929293248582672500022205131829320575171321162916936808907248000544142692517459735187811299679130599075236328877179994548184982647258990965035577065832954284706863953795007294947484166989131163247990423487121437292073638726577436750633312007974919920373208477927247147842593116508104278272724747217621610382526929351832308033462325885394374415814347711332635227434344881718816122709848484228775885773790135495672516721649334054662419885564920482519257882774279010445430868419786844938531098796602356701064980171771179198917965314931957418845282448667093681962282659170171502783286929343586257009461334992379969352844340132733065098837650031053981419139004216546533026266624493322883220706510655194363213705880983826163821225651148238926674185033452439774409200927644713572356949972431914639543445426590792432965290952180144633710226003300102356481952461605028228600717347644220795635611005858515317925140311568793088879532533995558266944201664431637223507333629754477201124364484262553860584471389303967479525307210772989588550444174486733980910307463564852931461140363796629969845436291273901045202304234642650143473864426080314937279387975161540629939860343225615461301100081752923145734109096732101184079530017505383480991850472053070521754369296710203212217972762733229775311925661086309082751569742634012642207753826546873719647292012447504770195422244223065070944990089030229901592888525514433368347754988739190869946558168970765942418184137903230003833625038787930605741272031121733827794633934860133799747038774375328559112547207937236889202992024858479743953532893126167212209427085390744437708210886288885737588423655032375040232333500595133266882530575389999120801466535029765223814725157372213340791872356595052243771432607909757826965782798135937350627462619794183718335961219199844513204147343492940636681811927823427574146032433360579340035668736063426199370184624619288449355602772434531333283790345518527499273162408648455400930175595855401525965802329446995535802644916914646806750970336180119313613654985471355252218424418960512905087876244820018552661933305802369770635698882201357911132172054136874798392713714416161174167577017909760455927086170470044374362974138121916412442198237475125178230412654513300874209957376093921888981069730695943729670227567888533528348060936916057050897188963861075287789203183412204498670013378557962944858420423827890674006144081317043428464013416937764408199990759426592250672661632155808918062546152228986077035846438673338216882009782259033869056815637590619884012287032085189913599669754502146500939595395102323230377808005010566445934475384094136805356969416524694998699014637838719772035747552206404630460402592382443730293105369643828663602414704642610580933999729423985295191475793614879174250698429229496753638995777358827536425927110477563228569927151048755501478737817584687250167119025002720189240372275850485724362622710872869955938675317536170153377107839567032551122896512014233847239769509618603985566011805676677420563718557712088782686922163752223265814232896019177799623556101602988150856972676914212172897166930199565341812125762984872179710497449913432488350494345752057099845241317857889476219193469762215309608811269670782504049879188364798343890435159160611297562367807004929994793246231598304281893956994808314737642728265160996470749968151518562152589272439055214977656561370731783903392784803149738839897273938271865641515348765621978808860180553969818087114424043431064416852947668560340141891732542357827297793733852214194792517587869484522831186745167103597066416382765849421638331772730725738569553894957008489986527493072267598108398532317784467971240086907225748396689227231817245384286425842280703325152435691033245749289990997439567486228589499535658309604642988235945893042517465099980032059040537271735811199192679360625346960506056225010340818931755953710085623449092230003722119266446875733413437095419721734038240625626971752055289123923785858880870325950050333966165924142965409204517391655665946377258471954465291394671757758069136653262136094348486543578377850555096820491047214355513657373061930309980322341745280873554179085887762779540808681119828885318330293951375898255666332517744319762145924904993297006863840065853676312677404542759822364795548522870653119822474781561643669527530621803396780019639005840805600177138310447936194034292096956068471968622971830739038105866428785255243339450530587068718325072089905163118017446945879606846017034797189554759921301115896649947275038494032059203309201701660794758270204141623652156166934172346574862093049325809733556609499996100114905526429637425862361782458895089168845284643538577493639579972515500360116393596235970858304538594237248044826180661713664841551036120835259000342198524692624514651586715114498074325040712560957615821770427491907859809683118948018770284744686485548191641175130724317285942706618072445656160150358846686169218747337682991388751392577483203134970070647908127096269056942327409825924267242996628066561844277827869301728399239987454590842287962090315675567479458237247141813611678242973160055061561580677791209321303828381304450455979265406464902553656246153969833813335067768087934248052000579221680266103614323563119296820679686623241432206222661232725555792374431395490517107410081959957653805164880709649016810651037496279609686917022744176759783210582975424217154812545902394956520234081393252969019691456596519816294781516453036641557221907638861083001729116918469286566298083621007938309776537425310503597584151106004432553889988293818360061425370007678607817590675475099584280059550759677647852116297223933254200354724698441442303388389612886261390749412135219713484749768842328947061750221480253896266603674025165559121200225414597053301912852059924668415156863416344947890374179743205003999849460086753872765211213801320977707964250923079142671544119760621718114980188321776567434204560295062072153908270545436971822000986493481013454824029712777679927561557137756290604487393643122870839300812371241354869443039522693374665380621364867247506654121018225714098630855305454939615547503001867068888442184701858412765056584131532707638597500743502828191111751237479629840256870949973453134971526007011894691275920042239188376431965643358352744939278542514941404102270815402392693226030259213561642089327963353437443695882054801242501390293887231767584334188470536310684633281501701222243740196641653876166764365650367259478539767579285420882029170584699620152556477794035959681635217937416656476060006660302234522949499475260923666071640356649323732046589150336069616123734638631934535750672859756767654139430721771842081840733051854364327381711180772669378103132339685139153328487736433278283245085452399442799866054021640159844160017670231643507130612031193462330614629186007788612597626541472657639326235360211304810535744857165605393354268839345779904473182338361146423412917049675497070691650443204135319857952716449016592463626311007838090400746851987231690084275861804241620490017073853386904959317980686594179837889478655998186053863794240253996452034540163412163939887546691115108322034625154752240261911655557370913629547491716476462000261931382604150660844568789858937416621389833709037431943348256869351848394165012627701851042725269577179961873622616104649115641880167392261950848214633515588069188630966532456934142686015636641250685290618275365604980990713178568387103119968041778228554849996231658651845896546844730827523038382177909122452445042876711482124816045901302283633208615056096202537627042815424086836131397991374092844069362555106120657314353701242445242113104946514296479014730294887381377361562490384456312388476835813105484051371873742223820561736552869204793158901484921416041052890553076621666834842298760333589907988428443514050465483515780274542807129654270470032992239268458044042179088289527493467313576486144662839956548090700944282659572280233967520879739125464907912238739547966082576864863052097898763751640059076955332251900488333884883457930517552969414492133395378220037762455021959902291982671913250396935930279374040312154792742425179139436867367972114691727268825130072175691503664833674285466333640071754150795145673116607005871562888078865916675630856123124642634359583842082082165484566180710104614069880811228648431997810802258862698704260230564125910936836544513516781517617821751576740397514025911741502553823717241552359879712643867219432493665558281861194487585066861622133748434304395903125292097993442645367202860794446545705181454632430101296847230952707278475296830867219602567029937465102553149302492855008546103642669723611997941898410234946760054638393824018944342656538023731316884440410724895781787651138610393650001438805011784039347788318622428062532041741529582168872759469592053140433830930458154245858149218439703713566926867279413780333254471161572444497325883589827014883868284866266460410687857825613427311746397020546752561576330010137009392693409514741663428301065921428328185529573502732647316784994344339063979669770624832021400672271619596706391030790050097792816712946210598648200321177701461309243808990715918985242612911246858993033675023381327885845497578284645148902711241544865724923680056566755486734283081558042274717984049085322564853144388432363155030980183727074655526825845113929014596303902064817926358994939443877468352017300453739137499782813726049359464821467766839821205835010386349634554076385241506443781479080206603167734963025914383276786034282902301016806260012034426634072087752735975720887048315284042093277992672726395732617901308288890112097413191408161464454496803365698950004439971332789705799343529961081774418009781078186773482901695733289221445215241799285482653554295715058916746635463002160584291667819651515162642391366450650221473125899115641518916524303270092848055341347974386682445374288263941971394112019235359426506665376162190335544221097184538489552272723123128302692825025857212400781788216550025620157738874905691673034625912800930445679367423771202830111085675109079377079585818701568875887731319332074754349672908888287664845041597991964072384532024003778052147540789111121751007512182674168280257785615430358763303435634285778550757537176771993919570800391591113336241702825897091414236225975240052433603845966340204360064114220669862968137842857740296874066625929738208282809136999591787999670532208517465297989320997158937396556791833969289375260394132470354269780753386375339163435649316695778921748722106168313514409203652747593985344645888862231655474273272914252561654593590484066273871390100575735450009594698798790352389232587187742308778419983571745352739660079726572660689376096766891572621298856635384018300973667854001318428183108078050298206990941071477615680342980619667287721292129922324091922747818084709622901730942180293356941605352457702927453984569500060709840160686972432978607366948218615818360303052700628161602139402904920778089518888967606765664250707884958812823970144939812316435325524193583362423070294387959680689935503486925488037213559014099774092690466299615100983058776366145094762119805557349231846639596631569305002873364343463031391247553098578745149779501793972846696758672626421558993115016109594204846158896241340018433117353435977722887427027262860635826549768293941575131710798732949858211288837190649840448958700630076268821538299276679634053271062879850641552600721728157101802726092774531689702025055565651027928640605270896391753589574156911791852717629825744118698650364395022153671548889413340366930617453112269848372831504479440051682239029210659850435043707150309287897670996539610979217234839138659331956798260212258935568024868777328823066484160682669746134608527840969930394602029680550240610371586882567339070275794226110348333953812429573322474197967030355829865086989658953334429895326555600143587870728694974800830023191595536831776632157161900247227326881995316149843825885072042195432936094221533667610606221777965966306452560331242461642789203046748326076451102875473409062742568524161257198703184988865143294899866302536335993326847479380018632318301596920910644133061880075611176174574946219616141139407872224211841742711798535444604869547983170537873267383678392545592453569313807276938586146228742409203099922059148093501311747835371464788071607264045150505872579857598991638621740075807529358776670675689639871746888060114639221049598113452421628791840964845625225903098541265646260154457548085504398396495822787880342635529306824216410995433911823301891802660641717965744267973472264244329277238915105011052497469050433367483387605116983454893028241264341943487687017125872849479600280367199759011920514260530918696591711579554764205685316926397659620563018807369106254876927820550360129557405849544246490766156452645251954514365448683221548883403207653084818453528393405481607481412776005492875388910106243243059098193527608885685255026358405418796398723264283655489019814949575467649378198882528853934013898518620924383023559198494209570172352864530505715275051385562351345764475426450465783640865942707264119011794186429334274542690492005262769527094404079086302846047741815377913328534847335872723767287832251857755047095440552560028378312717721211377488081149621992263455647248051647076263971443490602553746658539990380137499990606784854214229579482844656984226879017643335161511523887924457403509845088853805424800153394425037224461847320063794704026770686414920516253845759982202734406536425717389990824848348877421967751916717501642763028071674158496139080006587666730099328589655747345673857342785999597613512089750607635227844548661154047502422779904424300193664161874624562144584657454271179789530261956949701183814689334839184026538551583398930838397117742451742203188759118581849725122354238924575627957882771774268427612742436928416044182272316383873179347403032516805639144759411476532180984599718515847471393035420106890305732486864034245792661141885125193010257609970243022302860308206260153623948406224287883449039052716486293291345583724506017116073012178148315450083017647192796312585399379296490117512680044490904238268391810369766272256546670237580576987036227857479311410994701971754456706096378776901542250470074666114571615307294107476480124803518044143884673058306099382647489284706512758941550165979793837950155236892251679132137352059334003375184370960818124672501447657569836571452952468454430017707966725164793921570650388795279695300324216139437749048395462696615049653946570629022760379187892506543907384812964411031222445305878981139360770600385310047349901732805207995434454661047744444854787581626917082006049151271768121707576825694241656478607680267717928988275421335674537584217631798905532787230225687150904540797243654014686094429304012150739056256295821128274920801436581389108896485938184920392805714552585627134430988703028325390517209448363013565410237102403676247222684044709491351441417921520536504073300325472369420716334332718389070824562044319398341029329264313870160931203029545228326235879850478415436764130420128709409333773484643429181250924757122477062968680764803073491485923822272499758693943539368949061727019716027231072826434194560255683307634562020587958965598747834613631997553240476193767582549053236453743939586389263368098984049941152891787430007656790263749553320772111901905243931600011338840976180964121543902948312437246398825728118588088300087928600753759711502060443815788795825243575148113582866899521594043656613696984971832753120870388415923641774984917584253916511738671317592527008339030891719506139149700364592604328219229600005378509731721057520106652827291054928648135774931727803712239762923842710152845248908277706933312532635539085200764953045154760833042880912875889867349931159365033646988247316825621191234913815054253240780642379936383680625092318929611029427777101941118065060575321919655743416751029534335058756947758467191791277576018084835534001554967917067969263316144886061554863310796868268767075491104898436627577571070554182126382733467535780325714852829912511309188471382460936960321807601327265098274710379573366249238495266892330177234446576750181298169843110732031535659894754205560662463808734614274594532037500213679708504497280397831514356134122374834813951418078918325075232587312144815524700919748352347704429013100462204867124095996118195347295608149340728301369473749930443854620934272941880323931881490034057780699256300285296329607908266700047520391286559594859716749933855684410544867103369713722639773507249016278918936501877660595148320465997528692022994145643799153638165754143580516540918710668254024491082131000943139529250810074751218204585281801293455508645687353981102332773621910307057474246099165871029837076616552881485644347488231016949498844227677463837160281264849225356754685080726781059569714750444990941602094143024375638432152560849562164952130614787226937740052391761657982970027168829806658357212036221541901929368443290972372957866083073149639825637161947838101195140321085376046638359656661738589330428497514810010145579041359718604744818440883605989736780890475149021495811383790767583510708234905053215470736488680759101061758685509486577645949714401671538758449853379026420355546321966267106500968635139481160025188750629759557129272640894646506244793953163238366748420205867313964426427924094129356042832682702807650211193502836194030691691610533847009477148106315875646912057684341897114613203901634613627217391138548577558720264417373403509934534575122574658742145817516323318184853563139486394643883049843259250521310657020913066198773516646774095583518215611922604402824709830945361698054703420599951629755272685356532602964057474088516066374432117120771714140800050916645854511851020171047888539240257448745851731180027718110852162939219776921967072022366057956594092262180096284373026204303117767172768038976181417422623748170484824445471325880204267543305893016553455010604556183022813103843437928353376088454621866963051758123088757452277111651817281259342941651173295459111688965176072177351722948723698943985238828554661254813976915442866363403946764830920350846464093008992900643485377455676617166094187302744720739912108148426900678856719642640272880124832360181861243435214342034979523459442835408249926034642738543893517231860737266200351332829457249936118266206857471814664367287133475839594929249236526828646128187951159923969226622560848999477635002246260474702081177758960397722123052860300058651287208805250961956808507411234752930249928779116511856310160724589985142548579083182140365645944955500947658161544180842345470213572781819301293321363617551741423504374848905880531729375337779997726083765759592242744740546797656115634715495506776486512836452262959750581697821774940507220868827583022978529212199068540359749123591539974592363910054350454165427089692536064906016260083316963382415842452663580901527937396579039523375622561219817784615402527935610631576764420113545574283419213524411557699384008834693289513727556771521064804051620190676227684329444386362537039831171349827717351654867418554498819858389430420518908205319052725065182580965820829121257283216877221141618820347559951023016773936507823751190016997393550985290684403827603597299642680903212075936763568127941330395401212785745595899657551184193487573247178029759648557155493786655872684263878249076119534732250971941382398107719821314880197063137451642125 asByteArray. \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json b/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json index ac864f6..67b3fe1 100644 --- a/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json @@ -13,18 +13,25 @@ "testDeleteFirstSlide" : "LM 5/18/2018 18:25", "testDeletionDecreasesSlideCount" : "LM 5/18/2018 18:31", "testDeletionRemovesSlide" : "LM 5/18/2018 18:28", + "testInvalidLoadReturnsNil" : "LM 6/8/2018 18:58", + "testMorphLoadIsValid" : "LM 6/8/2018 19:55", "testNextSlide" : "LM 5/18/2018 18:43", + "testPresentationModeRemovesHandle" : "LM 6/8/2018 20:06", "testPreviousSlideClampsToMin" : "LM 5/18/2018 18:45", "testSelectSlide" : "LM 5/18/2018 18:46", "testSelectSlideClamps" : "LM 5/18/2018 18:47", + "testSlideContainerExtent" : "LM 6/8/2018 19:54", + "testSlideContainerPosition" : "LM 6/8/2018 19:55", "testSlideCreation" : "LM 5/18/2018 18:38", "testSlideCreationReturnsSlide" : "LM 5/18/2018 18:37", "testSlideCreationSelectsNewSlide" : "LM 5/18/2018 18:35", "testSlideDeletionMovesSlideSelection" : "LM 5/18/2018 18:32", "testSlideRatioIsFixed" : "LB 6/1/2018 18:49", "testSlideResizeRegression" : "LB 5/18/2018 20:27", + "testSlidesReceiveEnablePresentationMode" : "LM 6/8/2018 20:01", "testZeroSlidesRegression" : "LM 5/11/2018 18:09", "testnextSlideClampsToMax" : "LM 5/18/2018 18:42", "tool" : "LM 5/16/2018 17:13", + "validMorphFileData" : "LM 6/8/2018 19:21", "window" : "LM 5/11/2018 17:57", "window:" : "LM 5/11/2018 17:59" } } diff --git a/packages/Presenter-Tests.package/PSSlideForTests.class/README.md b/packages/Presenter-Tests.package/PSSlideForTests.class/README.md new file mode 100644 index 0000000..e69de29 diff --git a/packages/Presenter-Tests.package/PSSlideForTests.class/instance/enablePresentationMode.st b/packages/Presenter-Tests.package/PSSlideForTests.class/instance/enablePresentationMode.st new file mode 100644 index 0000000..f229f71 --- /dev/null +++ b/packages/Presenter-Tests.package/PSSlideForTests.class/instance/enablePresentationMode.st @@ -0,0 +1,4 @@ +presentation mode +enablePresentationMode + + self receivedPresentationModeEnable: true. \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSSlideForTests.class/instance/initialize.st b/packages/Presenter-Tests.package/PSSlideForTests.class/instance/initialize.st new file mode 100644 index 0000000..ae97699 --- /dev/null +++ b/packages/Presenter-Tests.package/PSSlideForTests.class/instance/initialize.st @@ -0,0 +1,5 @@ +initialize-release +initialize + + super initialize. + self receivedPresentationModeEnable: false. \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSSlideForTests.class/instance/receivedPresentationModeEnable..st b/packages/Presenter-Tests.package/PSSlideForTests.class/instance/receivedPresentationModeEnable..st new file mode 100644 index 0000000..8321fa1 --- /dev/null +++ b/packages/Presenter-Tests.package/PSSlideForTests.class/instance/receivedPresentationModeEnable..st @@ -0,0 +1,4 @@ +accessing +receivedPresentationModeEnable: anObject + + receivedPresentationModeEnable := anObject diff --git a/packages/Presenter-Tests.package/PSSlideForTests.class/instance/receivedPresentationModeEnable.st b/packages/Presenter-Tests.package/PSSlideForTests.class/instance/receivedPresentationModeEnable.st new file mode 100644 index 0000000..b59ad14 --- /dev/null +++ b/packages/Presenter-Tests.package/PSSlideForTests.class/instance/receivedPresentationModeEnable.st @@ -0,0 +1,4 @@ +accessing +receivedPresentationModeEnable + + ^ receivedPresentationModeEnable diff --git a/packages/Presenter-Tests.package/PSSlideForTests.class/methodProperties.json b/packages/Presenter-Tests.package/PSSlideForTests.class/methodProperties.json new file mode 100644 index 0000000..c66bc05 --- /dev/null +++ b/packages/Presenter-Tests.package/PSSlideForTests.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "enablePresentationMode" : "LM 6/8/2018 19:58", + "initialize" : "LM 6/8/2018 19:58", + "receivedPresentationModeEnable" : "LM 6/8/2018 19:58", + "receivedPresentationModeEnable:" : "LM 6/8/2018 19:58" } } diff --git a/packages/Presenter-Tests.package/PSSlideForTests.class/properties.json b/packages/Presenter-Tests.package/PSSlideForTests.class/properties.json new file mode 100644 index 0000000..dbc377c --- /dev/null +++ b/packages/Presenter-Tests.package/PSSlideForTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Presenter-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "receivedPresentationModeEnable" ], + "name" : "PSSlideForTests", + "pools" : [ + ], + "super" : "PSSlide", + "type" : "normal" } diff --git a/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testLeavePresentationModeEnablesHandles.st b/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testLeavePresentationModeEnablesHandles.st new file mode 100644 index 0000000..995ca9b --- /dev/null +++ b/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testLeavePresentationModeEnablesHandles.st @@ -0,0 +1,9 @@ +presentation mode tests +testLeavePresentationModeEnablesHandles + + self slide + addContent: self morph; + enablePresentationMode; + disablePresentationMode; + submorphsDo: [:each | + self assert: each hasHandles] \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testPresentationModeRemovesHandle.st b/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testPresentationModeRemovesHandle.st new file mode 100644 index 0000000..c9d4c78 --- /dev/null +++ b/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testPresentationModeRemovesHandle.st @@ -0,0 +1,8 @@ +presentation mode tests +testPresentationModeRemovesHandle + + self slide + addContent: self morph; + enablePresentationMode; + submorphsDo: [:each | + self assert: each hasHandles] \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/methodProperties.json b/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/methodProperties.json index 6b76f31..9d21d44 100644 --- a/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/methodProperties.json +++ b/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/methodProperties.json @@ -11,6 +11,8 @@ "testContainerResizing" : "LB 5/23/2018 16:44", "testContextMenu" : "MK 6/1/2018 19:49", "testDroppingCreatesContainer" : "LM 5/18/2018 18:59", + "testLeavePresentationModeEnablesHandles" : "LM 6/8/2018 20:11", + "testPresentationModeRemovesHandle" : "LM 6/8/2018 20:11", "testSlideContainerPosition" : "LB 5/23/2018 15:47", "testSlideDropping" : "LB 5/18/2018 18:17", "testSlideResizeToFit" : "LM 5/18/2018 19:20", From 8b77351d4a9b097232a58d9610e467980cfe8e36 Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Fri, 8 Jun 2018 20:20:51 +0200 Subject: [PATCH 18/36] Added more tests for presentation mode --- .../instance/testPresentationModeRemovesHandle.st | 7 ------- .../instance/testSlideNavigationInPresentationMode.st | 10 ++++++++++ .../PSPresentationToolTest.class/methodProperties.json | 2 +- .../instance/testPresentationModeRemovesHandle.st | 2 +- .../PSSlideSubmorphTest.class/methodProperties.json | 2 +- 5 files changed, 13 insertions(+), 10 deletions(-) delete mode 100644 packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testPresentationModeRemovesHandle.st create mode 100644 packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlideNavigationInPresentationMode.st diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testPresentationModeRemovesHandle.st b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testPresentationModeRemovesHandle.st deleted file mode 100644 index aeb995f..0000000 --- a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testPresentationModeRemovesHandle.st +++ /dev/null @@ -1,7 +0,0 @@ -presentation mode tests -testPresentationModeRemovesHandle - - self tool enablePresentationMode. - self tool slides do:[:slide | - slide submorphsDo: [:each | - self assert: each hasHandles not]] \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlideNavigationInPresentationMode.st b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlideNavigationInPresentationMode.st new file mode 100644 index 0000000..475342f --- /dev/null +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testSlideNavigationInPresentationMode.st @@ -0,0 +1,10 @@ +presentation mode tests +testSlideNavigationInPresentationMode + + self tool + createSlide; + selectSlide: 1; + enablePresentationMode. + self assert: self tool slideContainer currentSlide equals: self tool currentSlide. + self tool selectSlide: 2. + self assert: self tool slideContainer currentSlide equals: self tool currentSlide \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json b/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json index 67b3fe1..73f1431 100644 --- a/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json @@ -16,7 +16,6 @@ "testInvalidLoadReturnsNil" : "LM 6/8/2018 18:58", "testMorphLoadIsValid" : "LM 6/8/2018 19:55", "testNextSlide" : "LM 5/18/2018 18:43", - "testPresentationModeRemovesHandle" : "LM 6/8/2018 20:06", "testPreviousSlideClampsToMin" : "LM 5/18/2018 18:45", "testSelectSlide" : "LM 5/18/2018 18:46", "testSelectSlideClamps" : "LM 5/18/2018 18:47", @@ -26,6 +25,7 @@ "testSlideCreationReturnsSlide" : "LM 5/18/2018 18:37", "testSlideCreationSelectsNewSlide" : "LM 5/18/2018 18:35", "testSlideDeletionMovesSlideSelection" : "LM 5/18/2018 18:32", + "testSlideNavigationInPresentationMode" : "LM 6/8/2018 20:20", "testSlideRatioIsFixed" : "LB 6/1/2018 18:49", "testSlideResizeRegression" : "LB 5/18/2018 20:27", "testSlidesReceiveEnablePresentationMode" : "LM 6/8/2018 20:01", diff --git a/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testPresentationModeRemovesHandle.st b/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testPresentationModeRemovesHandle.st index c9d4c78..1d7718c 100644 --- a/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testPresentationModeRemovesHandle.st +++ b/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/instance/testPresentationModeRemovesHandle.st @@ -5,4 +5,4 @@ testPresentationModeRemovesHandle addContent: self morph; enablePresentationMode; submorphsDo: [:each | - self assert: each hasHandles] \ No newline at end of file + self assert: each hasHandles not] \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/methodProperties.json b/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/methodProperties.json index 9d21d44..a0506a2 100644 --- a/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/methodProperties.json +++ b/packages/Presenter-Tests.package/PSSlideSubmorphTest.class/methodProperties.json @@ -12,7 +12,7 @@ "testContextMenu" : "MK 6/1/2018 19:49", "testDroppingCreatesContainer" : "LM 5/18/2018 18:59", "testLeavePresentationModeEnablesHandles" : "LM 6/8/2018 20:11", - "testPresentationModeRemovesHandle" : "LM 6/8/2018 20:11", + "testPresentationModeRemovesHandle" : "LM 6/8/2018 20:14", "testSlideContainerPosition" : "LB 5/23/2018 15:47", "testSlideDropping" : "LB 5/18/2018 18:17", "testSlideResizeToFit" : "LM 5/18/2018 19:20", From d8b1a767b5aac722ed9c577afc72c30f900854ee Mon Sep 17 00:00:00 2001 From: Maximilian Koenig Date: Fri, 8 Jun 2018 20:23:10 +0200 Subject: [PATCH 19/36] recategorized in mock PSContentContainer --- .../instance/createContextMenu.st | 2 +- .../PSContentContainerForTests.class/instance/initialize.st | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/Presenter-Tests.package/PSContentContainerForTests.class/instance/createContextMenu.st b/packages/Presenter-Tests.package/PSContentContainerForTests.class/instance/createContextMenu.st index 05bcac8..af11ce9 100644 --- a/packages/Presenter-Tests.package/PSContentContainerForTests.class/instance/createContextMenu.st +++ b/packages/Presenter-Tests.package/PSContentContainerForTests.class/instance/createContextMenu.st @@ -1,4 +1,4 @@ -as yet unclassified +context menu createContextMenu self menuCreated: true \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSContentContainerForTests.class/instance/initialize.st b/packages/Presenter-Tests.package/PSContentContainerForTests.class/instance/initialize.st index 860e2d6..4c66473 100644 --- a/packages/Presenter-Tests.package/PSContentContainerForTests.class/instance/initialize.st +++ b/packages/Presenter-Tests.package/PSContentContainerForTests.class/instance/initialize.st @@ -1,4 +1,4 @@ -as yet unclassified +initialize-release initialize super initialize. From 2aecaeb6bd853e0ff03f31b8dc4b3f2a8b37715d Mon Sep 17 00:00:00 2001 From: Jonas Zimmermann Date: Fri, 8 Jun 2018 20:26:09 +0200 Subject: [PATCH 20/36] #13 working on saving --- .../instance/askForPresentationName..st | 12 ------------ .../instance/buttonBarTopData.st | 3 ++- .../instance/deleteSlideButtonData.st | 2 +- .../instance/getValidPresentationName..st | 12 ++++++------ .../instance/overwriteQuestion.st | 4 ++++ .../instance/riskyOperationMessage.st | 2 +- .../instance/saveButtonData.st | 8 ++++++++ .../instance/savePresentation.st | 4 ++-- .../instance/savingConfirmation.st | 4 ++++ .../instance/validateUsageOf.inDirectory..st | 9 +++++++++ .../methodProperties.json | 15 +++++++++------ 11 files changed, 46 insertions(+), 29 deletions(-) delete mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName..st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/overwriteQuestion.st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/saveButtonData.st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/savingConfirmation.st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/validateUsageOf.inDirectory..st diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName..st deleted file mode 100644 index 87e2470..0000000 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName..st +++ /dev/null @@ -1,12 +0,0 @@ -as yet unclassified -askForPresentationName: aFileDirectory - - | presentationName directory | - presentationName := self askUserForPresentationName. - directory := (aFileDirectory / presentationName). - directory exists - ifTrue: [self warn: 'The name you chose is already used. Do you want to overwrite the Presentation?' - trueChoice: [directory recursiveDelete. - ^ self createDirectory: presentationName in: aFileDirectory] - falseChoice: [^ self askForPresentationName: aFileDirectory]] - ifFalse: [^ directory] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/buttonBarTopData.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/buttonBarTopData.st index 714e88a..b91cd26 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/buttonBarTopData.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/buttonBarTopData.st @@ -9,4 +9,5 @@ buttonBarTopData self textFieldButtonData. self imageFieldButtonData. self presentationModeButtonData. - self loadingButtonData } \ No newline at end of file + self loadingButtonData. + self saveButtonData } \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/deleteSlideButtonData.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/deleteSlideButtonData.st index 6e14659..e5f63fa 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/deleteSlideButtonData.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/deleteSlideButtonData.st @@ -2,7 +2,7 @@ toolbuilder deleteSlideButtonData ^ Dictionary withAll: { - #frame -> (0.4@0.0 corner: 0.55@1.0). + #frame -> (0.35@0.0 corner: 0.50@1.0). #name -> #DeleteSlideButton. #label -> 'Delete Slide'. #action -> #deleteSlide} \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/getValidPresentationName..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/getValidPresentationName..st index eec7ca5..b689bd5 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/getValidPresentationName..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/getValidPresentationName..st @@ -3,10 +3,10 @@ getValidPresentationName: aFileDirectory | presentationName directory | presentationName := self askForPresentationName. + presentationName = '' + ifTrue: [^ nil]. directory := (aFileDirectory / presentationName). - directory exists - ifTrue: [self warn: 'The name you chose is already used. Do you want to overwrite the Presentation?' - trueChoice: [directory recursiveDelete. - ^ self createDirectory: presentationName in: aFileDirectory] - falseChoice: [^ self getValidPresentationName: aFileDirectory]] - ifFalse: [^ directory assureExistence] \ No newline at end of file + ^ directory exists + ifTrue: [self validateUsageOf: presentationName inDirectory: aFileDirectory] + ifFalse: [directory assureExistence] + \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/overwriteQuestion.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/overwriteQuestion.st new file mode 100644 index 0000000..0ce9376 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/overwriteQuestion.st @@ -0,0 +1,4 @@ +as yet unclassified +overwriteQuestion + + ^ 'The name you chose is already used. Do you want to overwrite the Presentation?' \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st index f00ac88..ab65101 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st @@ -1,4 +1,4 @@ as yet unclassified riskyOperationMessage - ^ 'Risky Operation! Do you want to save your image?' \ No newline at end of file + ^ 'Risky Operation! Are you sure you want to proceed?' \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/saveButtonData.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/saveButtonData.st new file mode 100644 index 0000000..2be1506 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/saveButtonData.st @@ -0,0 +1,8 @@ +as yet unclassified +saveButtonData + + ^ Dictionary withAll: { + #frame -> (0.5@0.0 corner: 0.6@1.0). + #name -> #savingButton. + #label -> 'Save'. + #action -> #savingConfirmation} \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st index 6a6ca2e..45640e8 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st @@ -3,9 +3,9 @@ savePresentation | directory | directory := self defaultDirectory. - self warn: self riskyOperationMessage trueChoice: []. - directory := self getValidPresentationName: directory. + directory := self getValidPresentationName: directory. + directory ifNil: [^ self]. directory := self createDirectory: 'slides' in: directory. self slides doWithIndex: [:each :index | diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/savingConfirmation.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/savingConfirmation.st new file mode 100644 index 0000000..f691019 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/savingConfirmation.st @@ -0,0 +1,4 @@ +as yet unclassified +savingConfirmation + + self warn: self riskyOperationMessage trueChoice: [self savePresentation] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/validateUsageOf.inDirectory..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/validateUsageOf.inDirectory..st new file mode 100644 index 0000000..3509fbc --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/validateUsageOf.inDirectory..st @@ -0,0 +1,9 @@ +as yet unclassified +validateUsageOf: aString inDirectory: aFileDirectory + + | directory | + directory := aFileDirectory / aString. + self warn: self overwriteQuestion + trueChoice: [directory recursiveDelete. + ^ self createDirectory: aString in: aFileDirectory] + falseChoice: [^ self getValidPresentationName: aFileDirectory] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json index 9d0a290..d3a71a0 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json @@ -6,10 +6,9 @@ "abandonMorph:" : "MK 6/8/2018 17:37", "addSlideButtonData" : "LM 5/16/2018 17:08", "askForPresentationName" : "JZ 6/8/2018 19:32", - "askForPresentationName:" : "JZ 6/8/2018 19:39", "buildErrorReportString:" : "MK 6/8/2018 18:38", "buildWith:" : "LM 6/1/2018 20:15", - "buttonBarTopData" : "MK 6/8/2018 19:12", + "buttonBarTopData" : "JZ 6/8/2018 19:53", "createButtonBarTopSpec:" : "JZ 5/11/2018 19:51", "createButtonSpec:with:" : "LM 5/18/2018 16:16", "createDirectory:in:" : "JZ 6/8/2018 19:12", @@ -24,10 +23,10 @@ "defaultDirectoryName" : "JZ 6/8/2018 16:52", "deleteSlide" : "LB 5/6/2018 18:03", "deleteSlide:" : "JZ 5/11/2018 19:50", - "deleteSlideButtonData" : "LM 5/15/2018 15:27", + "deleteSlideButtonData" : "JZ 6/8/2018 19:54", "disablePresentationMode" : "LM 5/25/2018 16:58", "enablePresentationMode" : "LM 5/25/2018 16:59", - "getValidPresentationName:" : "JZ 6/8/2018 19:42", + "getValidPresentationName:" : "JZ 6/8/2018 20:21", "imageFieldButtonData" : "LM 5/18/2018 16:16", "initialize" : "LM 5/25/2018 16:58", "isValidPresentationDirectory:" : "MK 6/8/2018 18:15", @@ -46,13 +45,16 @@ "nextSlideButtonData" : "LM 5/15/2018 15:27", "openImageField:" : "LB 5/18/2018 17:35", "openSlideSelectionDialog" : "WoC 5/6/2018 17:58", + "overwriteQuestion" : "JZ 6/8/2018 20:06", "presentationMode" : "LM 5/25/2018 16:57", "presentationMode:" : "LM 5/25/2018 16:57", "presentationModeButtonData" : "MK 5/25/2018 15:05", "previousSlide" : "LM 5/6/2018 15:33", "previousSlideButtonData" : "LM 5/15/2018 15:28", - "riskyOperationMessage" : "JZ 6/8/2018 18:01", - "savePresentation" : "JZ 6/8/2018 19:26", + "riskyOperationMessage" : "JZ 6/8/2018 20:19", + "saveButtonData" : "JZ 6/8/2018 20:11", + "savePresentation" : "JZ 6/8/2018 20:22", + "savingConfirmation" : "JZ 6/8/2018 20:11", "selectSlide:" : "LM 5/11/2018 19:07", "selectSlideButtonData" : "LM 5/15/2018 15:28", "showErrorReport:" : "MK 6/8/2018 18:30", @@ -64,6 +66,7 @@ "slides:" : "MK 5/6/2018 15:56", "slidesDirectoryName" : "MK 6/8/2018 18:14", "textFieldButtonData" : "LM 5/18/2018 16:17", + "validateUsageOf:inDirectory:" : "JZ 6/8/2018 20:05", "warn:trueChoice:" : "JZ 6/8/2018 17:54", "warn:trueChoice:falseChoice:" : "MK 6/8/2018 18:44", "window" : "LM 6/1/2018 20:15", From 39a9b11f333edbbf2003ad5e430fcabbe5826b6d Mon Sep 17 00:00:00 2001 From: Jonas Zimmermann Date: Fri, 8 Jun 2018 20:47:03 +0200 Subject: [PATCH 21/36] Closed #13 --- .../instance/askForPresentationName.st | 4 ++-- .../instance/buildErrorReportString..st | 2 +- .../PSPresentationTool.class/instance/createDirectory.in..st | 2 +- .../instance/getValidPresentationName..st | 2 +- .../PSPresentationTool.class/instance/loadingButtonData.st | 2 +- .../PSPresentationTool.class/instance/overwriteQuestion.st | 2 +- .../instance/riskyOperationMessage.st | 2 +- .../PSPresentationTool.class/instance/saveButtonData.st | 2 +- .../PSPresentationTool.class/instance/savePresentation.st | 2 +- .../PSPresentationTool.class/instance/savingConfirmation.st | 2 +- .../PSPresentationTool.class/instance/showErrorReport..st | 2 +- .../instance/validateUsageOf.inDirectory..st | 2 +- .../PSPresentationTool.class/instance/warn.trueChoice..st | 2 +- .../instance/warn.trueChoice.falseChoice..st | 2 +- .../PSPresentationTool.class/methodProperties.json | 4 ++-- 15 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName.st index 7422c7a..02185a2 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/askForPresentationName.st @@ -1,4 +1,4 @@ -as yet unclassified +presentation saving askForPresentationName - ^UIManager default request: 'PresentationName ???' initialAnswer: 'Presentation' centerAt: World center \ No newline at end of file + ^ UIManager default request: 'Please enter a presentation name: ' initialAnswer: 'Presentation' centerAt: World center \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/buildErrorReportString..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/buildErrorReportString..st index 3135594..2d0063a 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/buildErrorReportString..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/buildErrorReportString..st @@ -1,4 +1,4 @@ -presentation loading +notifications buildErrorReportString: aDictionary | errorString | diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/createDirectory.in..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/createDirectory.in..st index ef69539..03c2278 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/createDirectory.in..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/createDirectory.in..st @@ -1,4 +1,4 @@ -as yet unclassified +presentation saving createDirectory: aString in: aFileDirectory aFileDirectory createDirectory: aString. diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/getValidPresentationName..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/getValidPresentationName..st index b689bd5..9ffe5e2 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/getValidPresentationName..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/getValidPresentationName..st @@ -1,4 +1,4 @@ -as yet unclassified +presentation saving getValidPresentationName: aFileDirectory | presentationName directory | diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadingButtonData.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadingButtonData.st index a99a2fc..c403d3d 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadingButtonData.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadingButtonData.st @@ -1,4 +1,4 @@ -as yet unclassified +toolbuilder loadingButtonData ^ Dictionary withAll: { diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/overwriteQuestion.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/overwriteQuestion.st index 0ce9376..93ee1c6 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/overwriteQuestion.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/overwriteQuestion.st @@ -1,4 +1,4 @@ -as yet unclassified +accessing overwriteQuestion ^ 'The name you chose is already used. Do you want to overwrite the Presentation?' \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st index ab65101..703b22b 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st @@ -1,4 +1,4 @@ -as yet unclassified +accessing riskyOperationMessage ^ 'Risky Operation! Are you sure you want to proceed?' \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/saveButtonData.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/saveButtonData.st index 2be1506..7965758 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/saveButtonData.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/saveButtonData.st @@ -1,4 +1,4 @@ -as yet unclassified +toolbuilder saveButtonData ^ Dictionary withAll: { diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st index 45640e8..2989757 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/savePresentation.st @@ -1,4 +1,4 @@ -as yet unclassified +presentation saving savePresentation | directory | diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/savingConfirmation.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/savingConfirmation.st index f691019..65fd009 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/savingConfirmation.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/savingConfirmation.st @@ -1,4 +1,4 @@ -as yet unclassified +presentation saving savingConfirmation self warn: self riskyOperationMessage trueChoice: [self savePresentation] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/showErrorReport..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/showErrorReport..st index de3692c..3fd9f27 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/showErrorReport..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/showErrorReport..st @@ -1,4 +1,4 @@ -presentation loading +notifications showErrorReport: aDictionary | corruptedSlides | diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/validateUsageOf.inDirectory..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/validateUsageOf.inDirectory..st index 3509fbc..4a3da83 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/validateUsageOf.inDirectory..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/validateUsageOf.inDirectory..st @@ -1,4 +1,4 @@ -as yet unclassified +presentation saving validateUsageOf: aString inDirectory: aFileDirectory | directory | diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice..st index 2a1e44b..89cca2f 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice..st @@ -1,4 +1,4 @@ -as yet unclassified +notifications warn: aString trueChoice: aBlock self warn: aString trueChoice: aBlock falseChoice: [] \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice.falseChoice..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice.falseChoice..st index 443dfc0..bb45a07 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice.falseChoice..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/warn.trueChoice.falseChoice..st @@ -1,4 +1,4 @@ -as yet unclassified +notifications warn: aString trueChoice: trueBlock falseChoice: falseBlock (UIManager default confirm: aString) diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json index afe7fa6..3d7d726 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json @@ -5,7 +5,7 @@ "instance" : { "abandonMorph:" : "MK 6/8/2018 17:37", "addSlideButtonData" : "LM 5/16/2018 17:08", - "askForPresentationName" : "JZ 6/8/2018 19:32", + "askForPresentationName" : "JZ 6/8/2018 20:41", "buildErrorReportString:" : "MK 6/8/2018 18:38", "buildWith:" : "LM 6/1/2018 20:15", "buttonBarTopData" : "JZ 6/8/2018 19:53", @@ -26,7 +26,7 @@ "deleteSlideButtonData" : "JZ 6/8/2018 19:54", "disablePresentationMode" : "LM 5/25/2018 16:58", "enablePresentationMode" : "LM 6/8/2018 20:01", - "getValidPresentationName:" : "JZ 6/8/2018 20:21", + "getValidPresentationName:" : "JZ 6/8/2018 20:45", "imageFieldButtonData" : "LM 5/18/2018 16:16", "initialize" : "LM 5/25/2018 16:58", "isValidPresentationDirectory:" : "MK 6/8/2018 18:15", From 700d8082725fe30b9770332898281f0fd26763f5 Mon Sep 17 00:00:00 2001 From: Maximilian Koenig Date: Fri, 8 Jun 2018 20:48:02 +0200 Subject: [PATCH 22/36] closed #15 --- .../PSPresentationTool.class/instance/loadPresentation.st | 2 +- .../instance/riskyOperationMessage.st | 2 +- .../PSPresentationTool.class/methodProperties.json | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st index ac6652d..1094841 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadPresentation.st @@ -3,7 +3,7 @@ loadPresentation | presentations presentationName | self - warn: 'This operation is risky as it might crash your image.', Character cr, 'Do you want me to proceed?' + warn: self riskyOperationMessage trueChoice: [] falseChoice: [^ self]. presentations := self defaultDirectory directoryNames. diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st index ab65101..5500152 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/riskyOperationMessage.st @@ -1,4 +1,4 @@ as yet unclassified riskyOperationMessage - ^ 'Risky Operation! Are you sure you want to proceed?' \ No newline at end of file + ^ 'This operation is risky as it might crash your image.', Character cr, 'Do you want me to proceed?' \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json index afe7fa6..590bdfd 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json @@ -32,7 +32,7 @@ "isValidPresentationDirectory:" : "MK 6/8/2018 18:15", "loadMorphFromFile:" : "MK 6/8/2018 17:32", "loadMorphFromStream:" : "MK 6/8/2018 17:48", - "loadPresentation" : "MK 6/8/2018 19:11", + "loadPresentation" : "MK 6/8/2018 20:35", "loadPresentationFromDirectory:" : "MK 6/8/2018 17:14", "loadPresentationUnchecked:" : "MK 6/8/2018 18:23", "loadSlideFromDirectory:" : "MK 6/8/2018 17:25", @@ -51,7 +51,7 @@ "presentationModeButtonData" : "MK 5/25/2018 15:05", "previousSlide" : "LM 5/6/2018 15:33", "previousSlideButtonData" : "LM 5/15/2018 15:28", - "riskyOperationMessage" : "JZ 6/8/2018 20:19", + "riskyOperationMessage" : "MK 6/8/2018 20:34", "saveButtonData" : "JZ 6/8/2018 20:11", "savePresentation" : "JZ 6/8/2018 20:22", "savingConfirmation" : "JZ 6/8/2018 20:11", From fad6fd73ad290b6d9afb310b4682e1831f558544 Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Fri, 8 Jun 2018 20:48:38 +0200 Subject: [PATCH 23/36] Disable the yellow triangle in PSTextMorph --- .../PSTextMorph.class/instance/accept.st | 4 ++++ .../PSTextMorph.class/instance/hasUnacceptedEdits.st | 5 +++++ .../PSTextMorph.class/methodProperties.json | 2 ++ 3 files changed, 11 insertions(+) create mode 100644 packages/Presenter-Core.package/PSTextMorph.class/instance/accept.st create mode 100644 packages/Presenter-Core.package/PSTextMorph.class/instance/hasUnacceptedEdits.st diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/accept.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/accept.st new file mode 100644 index 0000000..0f2f064 --- /dev/null +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/accept.st @@ -0,0 +1,4 @@ +as yet unclassified +accept + + "overwritten in order to disable the unwanted behavior of the text getting cleared, whenever the TextMorph is saved" \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/hasUnacceptedEdits.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/hasUnacceptedEdits.st new file mode 100644 index 0000000..6cf2e34 --- /dev/null +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/hasUnacceptedEdits.st @@ -0,0 +1,5 @@ +as yet unclassified +hasUnacceptedEdits + + "Disables the small yellow triangle" + ^ false \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json index 3d0d45b..10cdb40 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json @@ -2,11 +2,13 @@ "class" : { "DefaultTextStyle" : "LB 5/25/2018 17:35" }, "instance" : { + "accept" : "LM 6/8/2018 20:47", "createFontSizeAttribute" : "LB 6/8/2018 15:42", "customContextMenuContent" : "WoC 6/2/2018 23:38", "defaultBasicTextSize" : "LB 5/25/2018 16:44", "defaultFontColor" : "LM 6/6/2018 19:22", "defaultTextBackgroundColor" : "LM 6/6/2018 19:24", + "hasUnacceptedEdits" : "LM 6/8/2018 20:48", "initialize" : "LM 6/8/2018 16:20", "initializeTextAttribute" : "LB 6/8/2018 17:07", "rescale:" : "LB 5/25/2018 16:42", From ffb096ad2f9a0fe9d8783b02297f9a160f5e87b2 Mon Sep 17 00:00:00 2001 From: Leon Bein Date: Tue, 12 Jun 2018 16:49:00 +0200 Subject: [PATCH 24/36] Fixes known bug of #41 --- .../PSTextMorph.class/instance/initialize.st | 8 +++----- .../PSTextMorph.class/instance/initializeTextAttribute.st | 6 +----- .../instance/selectionAddAttribute.onNoSelection..st | 4 +++- .../PSTextMorph.class/methodProperties.json | 6 +++--- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st index 6de0abf..64df129 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/initialize.st @@ -2,12 +2,10 @@ initialize-release initialize super initialize. - self textMorph text addAttribute: (PSScalingFontAttribute styled: PSTextMorph DefaultTextStyle sized: self defaultBasicTextSize scaledBy: self). - self extension - setProperty: #acceptRescale toValue: true; - setProperty: #wantsCustomContextMenu toValue: true. - self + initializeTextAttribute; + setProperty: #acceptRescale toValue: true; + setProperty: #wantsCustomContextMenu toValue: true; borderWidth: 0; color: self defaultTextBackgroundColor; selectionColor: self defaultFontColor \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/initializeTextAttribute.st b/packages/Presenter-Core.package/PSTextMorph.class/instance/initializeTextAttribute.st index 51f0b19..60f363b 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/initializeTextAttribute.st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/initializeTextAttribute.st @@ -2,8 +2,4 @@ initialize-release initializeTextAttribute self textMorph text addAttribute: self createFontSizeAttribute. - "self textMorph text addAttribute: (TextFontReference toFont:(PSTextMorph DefaultTextStyle fontOfSize: 44))." - "self textMorph recomposeChain." - "self textMorph releaseParagraph." - "self textMorph createParagraph." - "self textMorph releaseCachedState." \ No newline at end of file + self textMorph releaseParagraph \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st index 944ef6c..5a5c9ec 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st @@ -9,4 +9,6 @@ selectionAddAttribute: anAttribute onNoSelection: aBlock self textMorph text addAttribute: anAttribute from: interval first to: interval last. interval size = self textMorph text string size ifTrue: aBlock. - self textMorph changed \ No newline at end of file + self textMorph + releaseParagraph; + changed \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json index 10cdb40..4807577 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json @@ -9,11 +9,11 @@ "defaultFontColor" : "LM 6/6/2018 19:22", "defaultTextBackgroundColor" : "LM 6/6/2018 19:24", "hasUnacceptedEdits" : "LM 6/8/2018 20:48", - "initialize" : "LM 6/8/2018 16:20", - "initializeTextAttribute" : "LB 6/8/2018 17:07", + "initialize" : "LB 6/12/2018 16:47", + "initializeTextAttribute" : "LB 6/12/2018 16:48", "rescale:" : "LB 5/25/2018 16:42", "selectionAddAttribute:" : "LB 6/8/2018 15:11", - "selectionAddAttribute:onNoSelection:" : "LB 6/8/2018 15:23", + "selectionAddAttribute:onNoSelection:" : "LB 6/12/2018 16:47", "selectionAttribute:" : "LB 6/8/2018 15:06", "selectionColor" : "LB 6/8/2018 15:05", "selectionColor:" : "LB 6/8/2018 15:22", From ea6b929c88cdc526208273fc6b93d0d2fe935eda Mon Sep 17 00:00:00 2001 From: Leon Bein Date: Tue, 12 Jun 2018 17:16:49 +0200 Subject: [PATCH 25/36] Fixes tests --- .../instance/selectionAddAttribute.onNoSelection..st | 4 +--- .../PSTextMorph.class/methodProperties.json | 2 +- .../PSTextMorphTest.class/instance/testLocalFontColor.st | 1 + .../PSTextMorphTest.class/instance/testLocalFontSize.st | 1 + .../PSTextMorphTest.class/methodProperties.json | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st index 5a5c9ec..541f621 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st +++ b/packages/Presenter-Core.package/PSTextMorph.class/instance/selectionAddAttribute.onNoSelection..st @@ -9,6 +9,4 @@ selectionAddAttribute: anAttribute onNoSelection: aBlock self textMorph text addAttribute: anAttribute from: interval first to: interval last. interval size = self textMorph text string size ifTrue: aBlock. - self textMorph - releaseParagraph; - changed \ No newline at end of file + self textMorph releaseParagraph \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json index 4807577..e1d5844 100644 --- a/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSTextMorph.class/methodProperties.json @@ -13,7 +13,7 @@ "initializeTextAttribute" : "LB 6/12/2018 16:48", "rescale:" : "LB 5/25/2018 16:42", "selectionAddAttribute:" : "LB 6/8/2018 15:11", - "selectionAddAttribute:onNoSelection:" : "LB 6/12/2018 16:47", + "selectionAddAttribute:onNoSelection:" : "LB 6/12/2018 17:14", "selectionAttribute:" : "LB 6/8/2018 15:06", "selectionColor" : "LB 6/8/2018 15:05", "selectionColor:" : "LB 6/8/2018 15:22", diff --git a/packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testLocalFontColor.st b/packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testLocalFontColor.st index 3e90e9d..3689994 100644 --- a/packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testLocalFontColor.st +++ b/packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testLocalFontColor.st @@ -8,6 +8,7 @@ testLocalFontColor color := Color random. self textField textMorph selectFrom: begin to: end. self textField selectionColor: color. + self textField textMorph selectFrom: begin to: end. self assert: self textField selectionColor equals: color ] ] \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testLocalFontSize.st b/packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testLocalFontSize.st index d8de8ab..94e28aa 100644 --- a/packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testLocalFontSize.st +++ b/packages/Presenter-Tests.package/PSTextMorphTest.class/instance/testLocalFontSize.st @@ -8,6 +8,7 @@ testLocalFontSize size := 200 atRandom. self textField textMorph selectFrom: begin to: end. self textField selectionFontSize: size. + self textField textMorph selectFrom: begin to: end. self assert: self textField selectionFontSize equals: size ] ] \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSTextMorphTest.class/methodProperties.json b/packages/Presenter-Tests.package/PSTextMorphTest.class/methodProperties.json index fb22569..945b491 100644 --- a/packages/Presenter-Tests.package/PSTextMorphTest.class/methodProperties.json +++ b/packages/Presenter-Tests.package/PSTextMorphTest.class/methodProperties.json @@ -6,8 +6,8 @@ "setUp" : "LB 6/1/2018 18:12", "tearDown" : "LB 6/1/2018 18:21", "testContextMenu" : "MK 6/1/2018 19:45", - "testLocalFontColor" : "LB 6/1/2018 18:35", - "testLocalFontSize" : "LB 6/8/2018 16:07", + "testLocalFontColor" : "LB 6/12/2018 17:15", + "testLocalFontSize" : "LB 6/12/2018 17:15", "testTextFieldRescale" : "LB 6/8/2018 14:59", "textField" : "LB 6/1/2018 18:21", "textField:" : "LB 6/1/2018 17:57" } } From 182db0d5ebce0ea441edc335f58091e9ac83219a Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Wed, 13 Jun 2018 14:09:58 +0200 Subject: [PATCH 26/36] Closes #51 --- .../BaselineOfPresenter.class/instance/baseline..st | 4 ++-- .../BaselineOfPresenter.class/instance/postLoad.st | 4 ++++ .../BaselineOfPresenter.class/instance/preLoad.st | 2 +- .../BaselineOfPresenter.class/methodProperties.json | 3 ++- .../PSPresentationTool.class/class/initialize.st | 5 +++++ .../PSPresentationTool.class/class/registerInWorldMenu.st | 4 ++++ .../PSPresentationTool.class/methodProperties.json | 4 +++- 7 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 packages/BaselineOfPresenter.package/BaselineOfPresenter.class/instance/postLoad.st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/class/initialize.st create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/class/registerInWorldMenu.st diff --git a/packages/BaselineOfPresenter.package/BaselineOfPresenter.class/instance/baseline..st b/packages/BaselineOfPresenter.package/BaselineOfPresenter.class/instance/baseline..st index 0acd483..3ffd645 100644 --- a/packages/BaselineOfPresenter.package/BaselineOfPresenter.class/instance/baseline..st +++ b/packages/BaselineOfPresenter.package/BaselineOfPresenter.class/instance/baseline..st @@ -5,7 +5,6 @@ baseline: spec for: #'common' do: [ spec - package: 'Presenter-Core'; package: 'Presenter-Tests' with: [spec requires: #('Presenter-Core')]; yourself. @@ -14,4 +13,5 @@ baseline: spec group: 'tests' with: #('Presenter-Tests')]; yourself. spec - preLoadDoIt: #preLoad + preLoadDoIt: #preLoad; + postLoadDoIt: #postLoad. diff --git a/packages/BaselineOfPresenter.package/BaselineOfPresenter.class/instance/postLoad.st b/packages/BaselineOfPresenter.package/BaselineOfPresenter.class/instance/postLoad.st new file mode 100644 index 0000000..9c9fdde --- /dev/null +++ b/packages/BaselineOfPresenter.package/BaselineOfPresenter.class/instance/postLoad.st @@ -0,0 +1,4 @@ +baseline +postLoad + + PSPresentationTool initialize. \ No newline at end of file diff --git a/packages/BaselineOfPresenter.package/BaselineOfPresenter.class/instance/preLoad.st b/packages/BaselineOfPresenter.package/BaselineOfPresenter.class/instance/preLoad.st index 0276a62..3cc1c71 100644 --- a/packages/BaselineOfPresenter.package/BaselineOfPresenter.class/instance/preLoad.st +++ b/packages/BaselineOfPresenter.package/BaselineOfPresenter.class/instance/preLoad.st @@ -1,4 +1,4 @@ -as yet unclassified +baseline preLoad (TextStyle named: 'BitstreamVeraSans') fontArray do: [:font | diff --git a/packages/BaselineOfPresenter.package/BaselineOfPresenter.class/methodProperties.json b/packages/BaselineOfPresenter.package/BaselineOfPresenter.class/methodProperties.json index c5b7e8e..b4472a6 100644 --- a/packages/BaselineOfPresenter.package/BaselineOfPresenter.class/methodProperties.json +++ b/packages/BaselineOfPresenter.package/BaselineOfPresenter.class/methodProperties.json @@ -2,5 +2,6 @@ "class" : { }, "instance" : { - "baseline:" : "fn 4/17/2018 11:58", + "baseline:" : "LM 6/13/2018 13:41", + "postLoad" : "LM 6/13/2018 13:51", "preLoad" : "WoC 5/28/2018 17:40" } } diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/class/initialize.st b/packages/Presenter-Core.package/PSPresentationTool.class/class/initialize.st new file mode 100644 index 0000000..804cd15 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/class/initialize.st @@ -0,0 +1,5 @@ +instance creation +initialize + + super initialize. + self registerInWorldMenu \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/class/registerInWorldMenu.st b/packages/Presenter-Core.package/PSPresentationTool.class/class/registerInWorldMenu.st new file mode 100644 index 0000000..00488f0 --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/class/registerInWorldMenu.st @@ -0,0 +1,4 @@ +instance creation +registerInWorldMenu + + TheWorldMenu registerOpenCommand: {'PowerSqueak'. {self. #open}} \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json index c838e06..d9bf4f7 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json @@ -1,7 +1,9 @@ { "class" : { + "initialize" : "LM 6/13/2018 13:54", "open" : "WoC 5/6/2018 13:36", - "openIn:" : "LB 5/23/2018 16:11" }, + "openIn:" : "LB 5/23/2018 16:11", + "registerInWorldMenu" : "LM 6/13/2018 12:19" }, "instance" : { "abandonMorph:" : "MK 6/8/2018 17:37", "addSlideButtonData" : "LM 5/16/2018 17:08", From e88615810518f885f4128bba5f8d7cdc3f102579 Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Wed, 13 Jun 2018 14:19:31 +0200 Subject: [PATCH 27/36] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2340fda..9f8727a 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Then run the following code in your Squeak 5.1/6.0(trunk) image: ``` smalltalk Metacello new baseline: 'Presenter'; - repository: 'github://hpi-swa-teaching/SWT18-Project-09:master/packages'; + repository: 'github://hpi-swa-teaching/SWT18-Project-09:release/packages'; load. ``` From d1000d2887d99a0e2c1a4136aa0ac9ea5b6b6f32 Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Wed, 13 Jun 2018 15:07:36 +0200 Subject: [PATCH 28/36] Update README with informations about release [skip ci] --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9f8727a..59350fa 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# PowerSqueak [![Build Status](https://travis-ci.org/hpi-swa-teaching/SWT18-Project-09.svg?branch=master)](https://travis-ci.org/hpi-swa-teaching/SWT18-Project-09)[![Coverage Status](https://coveralls.io/repos/github/hpi-swa-teaching/SWT18-Project-09/badge.svg?branch=master)](https://coveralls.io/github/hpi-swa-teaching/SWT18-Project-09?branch=master) +# PowerSqueak [![Build Status](https://travis-ci.org/hpi-swa-teaching/SWT18-Project-09.svg?branch=release)](https://travis-ci.org/hpi-swa-teaching/SWT18-Project-09)[![Coverage Status](https://coveralls.io/repos/github/hpi-swa-teaching/SWT18-Project-09/badge.svg?branch=release)](https://coveralls.io/github/hpi-swa-teaching/SWT18-Project-09?branch=release) A presentation tool for the Squeak development platform @@ -21,6 +21,12 @@ Metacello new load. ``` +## Build status +| [Release](https://github.com/hpi-swa-teaching/SWT18-Project-09/releases/latest) | master +| ------------------------- | ------------------- | +| [![Build Status](https://travis-ci.org/hpi-swa-teaching/SWT18-Project-09.svg?branch=release)](https://travis-ci.org/hpi-swa-teaching/SWT18-Project-09) | [![Build Status](https://travis-ci.org/hpi-swa-teaching/SWT18-Project-09.svg?branch=master)](https://travis-ci.org/hpi-swa-teaching/SWT18-Project-09) | +| [![Coverage Status](https://coveralls.io/repos/github/hpi-swa-teaching/SWT18-Project-09/badge.svg?branch=release)](https://coveralls.io/github/hpi-swa-teaching/SWT18-Project-09?branch=release) | [![Coverage Status](https://coveralls.io/repos/github/hpi-swa-teaching/SWT18-Project-09/badge.svg?branch=master)](https://coveralls.io/github/hpi-swa-teaching/SWT18-Project-09?branch=master) | + ## Using PowerSqueak To open PowerSqueak run: ``` PSPresentationTool open. ``` From 0a2ae40d63e2b549b23e12ddcf723e8e9659d94a Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Wed, 13 Jun 2018 15:11:09 +0200 Subject: [PATCH 29/36] Update Usage instructions [skip ci] --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 59350fa..97b8bea 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,11 @@ Metacello new | [![Coverage Status](https://coveralls.io/repos/github/hpi-swa-teaching/SWT18-Project-09/badge.svg?branch=release)](https://coveralls.io/github/hpi-swa-teaching/SWT18-Project-09?branch=release) | [![Coverage Status](https://coveralls.io/repos/github/hpi-swa-teaching/SWT18-Project-09/badge.svg?branch=master)](https://coveralls.io/github/hpi-swa-teaching/SWT18-Project-09?branch=master) | ## Using PowerSqueak -To open PowerSqueak run: ``` PSPresentationTool open. ``` +To open PowerSqueak either +* run: ``` PSPresentationTool open. ``` +* open PowerSqueak in the "Apps" drop-down-menu You can then use the buttons at the top to create, delete and navigate slides and to create different slide elements (like text boxes, and images) and drop them onto the slide. You may also drop in other Morphs, but be aware, that some features of those Morphs might not work as expected. + +For advanced features like deleting morphs or resizing text, right-click the morph. From dab540151c2cd25a2c3c0eb6a14c8a1a28299655 Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Wed, 13 Jun 2018 15:19:32 +0200 Subject: [PATCH 30/36] Create pictures folder [skip ci] --- pictures/init.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 pictures/init.txt diff --git a/pictures/init.txt b/pictures/init.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/pictures/init.txt @@ -0,0 +1 @@ + From eb65c2fec07a0e4d804ab64fe7d2fc3bf8dea985 Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Wed, 13 Jun 2018 15:19:48 +0200 Subject: [PATCH 31/36] Delete init.txt [skip ci] --- pictures/init.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 pictures/init.txt diff --git a/pictures/init.txt b/pictures/init.txt deleted file mode 100644 index 8b13789..0000000 --- a/pictures/init.txt +++ /dev/null @@ -1 +0,0 @@ - From c498c5dbba9c6def8ef181f9d3e06b9faf2c387a Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Wed, 13 Jun 2018 15:20:29 +0200 Subject: [PATCH 32/36] Create pictures folder [skip ci] --- pictures/init.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 pictures/init.txt diff --git a/pictures/init.txt b/pictures/init.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/pictures/init.txt @@ -0,0 +1 @@ + From 1b962d7f0647b385d093d62a5907e58e8abf68fc Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Wed, 13 Jun 2018 15:23:53 +0200 Subject: [PATCH 33/36] Added pictures for usage instructions [skip ci] --- pictures/apps-drawer.png | Bin 0 -> 190282 bytes pictures/right-click.png | Bin 0 -> 59218 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 pictures/apps-drawer.png create mode 100644 pictures/right-click.png diff --git a/pictures/apps-drawer.png b/pictures/apps-drawer.png new file mode 100644 index 0000000000000000000000000000000000000000..58d65b78e7a5dbfc8b18f052e62d0b20fbb1cdc7 GIT binary patch literal 190282 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 SG7Y95NTgabDl{G-CbEI1%yVhS&Y9 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%0Dj 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 =2%_E^Bm!LN1wK*C3>h&e4QSghAhQKI!}Vm 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 JPDHLkV1lw+RH^^~ literal 0 HcmV?d00001 diff --git a/pictures/right-click.png b/pictures/right-click.png new file mode 100644 index 0000000000000000000000000000000000000000..910369665766e551d36e631612ea6f04fe55a94e GIT binary patch literal 59218 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 literal 0 HcmV?d00001 From 92141102d52436a766aa5e8cd77ee0450d902bd2 Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Wed, 13 Jun 2018 15:40:26 +0200 Subject: [PATCH 34/36] Update usage instructions in README [skip ci] --- README.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 97b8bea..b17d416 100644 --- a/README.md +++ b/README.md @@ -30,9 +30,23 @@ Metacello new ## Using PowerSqueak To open PowerSqueak either * run: ``` PSPresentationTool open. ``` -* open PowerSqueak in the "Apps" drop-down-menu +* click PowerSqueak in the "Apps" drop-down-menu
Open PowerSqueak in the Apps menu -You can then use the buttons at the top to create, delete and navigate slides and to create different slide elements (like text boxes, and images) and drop them onto the slide. +### Edit mode +During edit mode, you can use the buttons at the top to create, delete and navigate slides and to create different slide elements (like text boxes, and images) and drop them onto the slide. You may also drop in other Morphs, but be aware, that some features of those Morphs might not work as expected. For advanced features like deleting morphs or resizing text, right-click the morph. +
Right-click example + +### Presentation mode +To enter presentation mode, click the "Present" button. + +To control your presentation during presentation mode, use: + +| Key | Action | +| ------- | ------- | +| Esc | Leave presentation mode | +| right arrow/page down | next slide | +| left arrow/page up | previous slide | +| Number keys | Jump to a slide number | From f4edacfb305674a26d5cba3b4a20954b51da8b93 Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Wed, 13 Jun 2018 17:37:17 +0200 Subject: [PATCH 35/36] Working on loading tests --- .../instance/loadMorphFromStream..st | 12 ++---------- .../instance/loadMorphFromStream.testIn..st | 11 +++++++++++ ...ivesOneCycle..st => morph.survivesOneCycleIn..st} | 4 ++-- .../PSPresentationTool.class/methodProperties.json | 5 +++-- .../instance/morphLoadingStreamFor..st | 7 +++++++ .../instance/testInvalidLoadReturnsNil.st | 2 +- .../instance/testMorphLoadIsValid.st | 11 +++++++---- .../methodProperties.json | 5 +++-- 8 files changed, 36 insertions(+), 21 deletions(-) create mode 100644 packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream.testIn..st rename packages/Presenter-Core.package/PSPresentationTool.class/instance/{morphSurvivesOneCycle..st => morph.survivesOneCycleIn..st} (88%) create mode 100644 packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/morphLoadingStreamFor..st diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream..st index d6496de..7670cce 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream..st @@ -1,12 +1,4 @@ presentation loading -loadMorphFromStream: aReadWriteStream +loadMorphFromStream: aStream - | morph | - [morph := aReadWriteStream fileInObjectAndCode] - on: Error - do: [:each | - morph := self abandonMorph: morph]. - (morph isNil not and: [self morphSurvivesOneCycle: morph]) - ifFalse: [morph := self abandonMorph: morph]. - ^ morph - \ No newline at end of file + ^ self loadMorphFromStream: aStream testIn: World. \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream.testIn..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream.testIn..st new file mode 100644 index 0000000..2e13acb --- /dev/null +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/loadMorphFromStream.testIn..st @@ -0,0 +1,11 @@ +presentation loading +loadMorphFromStream: aStream testIn: aWorld + + | morph | + [morph := aStream fileInObjectAndCode] + on: Error + do: [:error | + morph := self abandonMorph: morph]. + (morph isNil not and: [self morph: morph survivesOneCycleIn: aWorld]) + ifFalse: [morph := self abandonMorph: morph]. + ^ morph \ No newline at end of file diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/instance/morphSurvivesOneCycle..st b/packages/Presenter-Core.package/PSPresentationTool.class/instance/morph.survivesOneCycleIn..st similarity index 88% rename from packages/Presenter-Core.package/PSPresentationTool.class/instance/morphSurvivesOneCycle..st rename to packages/Presenter-Core.package/PSPresentationTool.class/instance/morph.survivesOneCycleIn..st index 928eda3..52bb7c6 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/instance/morphSurvivesOneCycle..st +++ b/packages/Presenter-Core.package/PSPresentationTool.class/instance/morph.survivesOneCycleIn..st @@ -1,10 +1,10 @@ presentation loading -morphSurvivesOneCycle: aMorph +morph: aMorph survivesOneCycleIn: aWorld "Some morphs may be loaded successfully but throw errors every world cycle therefore crashing the image." "World doOneCycle consumes all errors and opens the corresponding debuggers. Therefore we cannot do normal error checking but we can compare the debuggers." | debuggersBefore newDebuggers | debuggersBefore := Debugger allInstances. - aMorph openInWorld. + aMorph openInWorld: aWorld. World doOneCycle. newDebuggers := Debugger allInstances reject: [:each | debuggersBefore includes: each]. diff --git a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json index d9bf4f7..3867edb 100644 --- a/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json +++ b/packages/Presenter-Core.package/PSPresentationTool.class/methodProperties.json @@ -33,14 +33,15 @@ "initialize" : "LM 5/25/2018 16:58", "isValidPresentationDirectory:" : "MK 6/8/2018 18:15", "loadMorphFromFile:" : "MK 6/8/2018 17:32", - "loadMorphFromStream:" : "MK 6/8/2018 17:48", + "loadMorphFromStream:" : "LM 6/13/2018 16:46", + "loadMorphFromStream:testIn:" : "LM 6/13/2018 16:45", "loadPresentation" : "MK 6/8/2018 20:35", "loadPresentationFromDirectory:" : "MK 6/8/2018 17:14", "loadPresentationUnchecked:" : "MK 6/8/2018 18:23", "loadSlideFromDirectory:" : "MK 6/8/2018 17:25", "loadingButtonData" : "MK 6/8/2018 19:16", "minimumSlideCount" : "LM 5/6/2018 15:35", - "morphSurvivesOneCycle:" : "MK 6/8/2018 17:52", + "morph:survivesOneCycleIn:" : "LM 6/13/2018 16:57", "newImageField" : "LM 5/18/2018 17:13", "newTextField" : "LB 5/25/2018 16:43", "nextSlide" : "LM 5/6/2018 15:33", diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/morphLoadingStreamFor..st b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/morphLoadingStreamFor..st new file mode 100644 index 0000000..37cfa67 --- /dev/null +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/morphLoadingStreamFor..st @@ -0,0 +1,7 @@ +loading tests +morphLoadingStreamFor: aByteArray + + ^ (MultiByteBinaryOrTextStream with: aByteArray) + binary; + reset; + yourself \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testInvalidLoadReturnsNil.st b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testInvalidLoadReturnsNil.st index ea58a14..ae9ef88 100644 --- a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testInvalidLoadReturnsNil.st +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testInvalidLoadReturnsNil.st @@ -1,4 +1,4 @@ loading tests testInvalidLoadReturnsNil - self assert: (self tool loadMorphFromStream: (MultiByteBinaryOrTextStream on: '')) equals: nil \ No newline at end of file + self assert: (self tool loadMorphFromStream: (self morphLoadingStreamFor: '')) equals: nil \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testMorphLoadIsValid.st b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testMorphLoadIsValid.st index a365095..078d9be 100644 --- a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testMorphLoadIsValid.st +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/testMorphLoadIsValid.st @@ -1,7 +1,10 @@ loading tests testMorphLoadIsValid - self flag: #TODO. - "| morph | - morph := self tool loadMorphFromStream: (ReadWriteStream with: self validMorphFileData) binary reset. - self assert: morph isNil not" \ No newline at end of file + | morph | + morph := self tool + loadMorphFromStream: (self morphLoadingStreamFor: self validMorphFileData) + testIn: self world. + self assert: morph isNil not. + self assert: morph class = PSContentContainer. + morph ifNotNil: [morph abandon.] \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json b/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json index 73f1431..c247535 100644 --- a/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json @@ -5,6 +5,7 @@ "assertDeviatesLessThan:onWindowResize:" : "LB 5/29/2018 17:54", "assertIsConstantOnWindowResize:" : "LB 5/18/2018 18:19", "assertIsNearlyConstantOnWindowResize:" : "LB 5/22/2018 17:49", + "morphLoadingStreamFor:" : "LM 6/13/2018 16:50", "setUp" : "LB 5/23/2018 16:11", "setUpSlideDeletion" : "LM 5/18/2018 18:21", "tearDown" : "LB 5/22/2018 17:37", @@ -13,8 +14,8 @@ "testDeleteFirstSlide" : "LM 5/18/2018 18:25", "testDeletionDecreasesSlideCount" : "LM 5/18/2018 18:31", "testDeletionRemovesSlide" : "LM 5/18/2018 18:28", - "testInvalidLoadReturnsNil" : "LM 6/8/2018 18:58", - "testMorphLoadIsValid" : "LM 6/8/2018 19:55", + "testInvalidLoadReturnsNil" : "LM 6/13/2018 17:34", + "testMorphLoadIsValid" : "LM 6/13/2018 16:50", "testNextSlide" : "LM 5/18/2018 18:43", "testPreviousSlideClampsToMin" : "LM 5/18/2018 18:45", "testSelectSlide" : "LM 5/18/2018 18:46", From 0012ad12576adf7a486c184e55ddab2217432558 Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Wed, 13 Jun 2018 17:48:44 +0200 Subject: [PATCH 36/36] Travis fix --- .../instance/validMorphFileData.st | 3 ++- .../PSPresentationToolTest.class/methodProperties.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/validMorphFileData.st b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/validMorphFileData.st index 05c64d8..92e7316 100644 --- a/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/validMorphFileData.st +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/instance/validMorphFileData.st @@ -1,4 +1,5 @@ loading tests validMorphFileData - ^ 275239445479955668195285742884177155882523958894135758242282457763617158954751295913884400231659245989153846528861883849088681196302755524595422604970914680356158974644234007283235202579858943182137659660134580635654216502891297520504661494819482975389695697443617735615865830178817145810693120099097864113374951754040560286958436153749706438658448680496455440133765400888115770478438598394658635762949660766738461628541312929654153968754076350484377742251435631891619479139468168425735269926118292757801681584562987855953875170378060256323860412933913432370831650273540940940021523587597280600530136289605298314667065602643104295204275656015797862076290001876712935883473559407912411370765014488383061681604039500350459395088224093487834453621898602793457660904789799669923251044872751152882439399063159651551803733626574089348974662498120431707622848923507782409709221918963663516667877637624351963502762160325866563207165576213432869691510363589468769703740402240194110706799173694635567438038672837137979671161035762914381625466829396351465597829655851499293342120573627172225914034199493707796615419321110135475381147699894836126015769919169355922041089855199494787964468875772491795397601703753562293533830342055917972570557321522122964430016168782777526950893233145663880464773686966945658348440734339227615413143825151431102164328746255678621541448842803951129622370691509744010276634518782035417900126497098437815341350521897861293635433108170456402213222247277094577035665403792097592588020357226271007038895298247157208177591817827789245846126543508140094615462097961392714166038061965381073929022575276933222917479677997281481913643793154023062324997057520188164884153285777309860088010553558706490010018968649876613018629962545767099129297601953928421182455042874658220809833613321030393276466567048939954133197417411444067936140480918088006587650306122366154616626875778754562610760296913413447373923922653087077043775305162968487766783140154980538393925460612145081952816699188175052491932970294671714802648331882939981893164948401306320451646752461868722348027902268261514406241873927414303472267062547023800015017709628994810857964209124294215293680748506322144187114506198290039001072182530067893440967182463002097544613466562190032884815613128831119950123614383758738559994169895983579956742436420510660240165293036917667389389355400149626601031896070857266450289899958677987963546686953182400696064607267015392516251686360780718701436440864138995828879532874215716514918913917198790059526255033404032733586598384265860765549549172380313731321386700264138289270127670903389688445372376510683395608762330596359982959098574957507129331826169267193045770199446452363519673610654118600695806307071968511452590910471905838544222660258900646626574324073890523030230654244222218457806155012136896541685632307526359091791050573510697736151675349481176283048956179465313358013467362845247516053079673293313551537976905456189051878365211464012261911005406702377597994578614046523061892288042676187025832132853875579003894755207392866945530435480995134219185033747528930948849592538291074293978602068469026807518734815714212014912272280788769546093725862279662199260935966073045112095886159340461316257749425284920487915695525506706224791072198720882609304092481878887935884953776021247320320449210469078500372737276425992234502964283481210411846486992337452868578140041588204795096909777369503898325061850255891251478203859787076552005428299113826340431116985832698500703845396333491293469722198390330920589929100022682294548057164575707944958624155373249048017959695412611238566025301394203781930556686567836610365792557217343886738091595361485602281015346856069751384868851427076400822895067385583750124312323271223035701452925564018163190253164845296855561120600547926690422214652586898964114421680695329483940780954816686868918931035200337157355311501077144411026342167713991971411098230401346880923805766384400309211197184615980015901722377119921206750567574981033346411339891052491060824566881600191266796131711501625015807362835800994288273290821762820555955923277167386353792830425805538712780496490266317013038930767900687107677878372640225248639937704669519045277555466374597425097116477145649297369676819450683507264993060665583126382175414682439433255922234129779899300455082204913546142586366788146522599025292509280707805531220178807216245900563946859242581249394635509485397578352481316840718683789737940349759712530071592405425705761337627237487294257809997739146849407786171640993924792211690656050133787977672900844351926026840230780807741891861782539676861783285667894363556221513262633633781379699382490799905361648771355893761322939307921858282744138284599371196380649485357620891893903992432423365630952981211813274643764966601492416126189754646297267485746560605250037988291871338413596503972518596582473112901242227978573338481445858097798091247794354685929151261825729008533936828880338879002636243962408393629050973597365375062171263178727888327772401756981101865694914031622193719625765790173671460144494065524905664175627918537561094302954986075697536877664609543267711535544585662442651695133054703303525783302181781473274478296868286288965147992840659565131693595555519772528624170856633126198130071213446167068389586229460465131225237104520163138672286584865524301941086226682295517921935616498092745716627062193361189700381819810403530852343259765996382134370175968991489301876519154728786392124921385680286005501551600562858892163666506371918136312666738331461418256883106797528776037282694794881111674306797630904942338477430656256347589117327146191536003338371479134900697026820399098237412616174437722398401598058652102650679583584469137545016228167114053836706921674573371089013869060738701015990915263396712817972394032680228586996270271849878820003895583512671460479454285980128891006199492048324455945195261594171668273514979455848802264338627340845952428007126683432980627181311689034408684872064467685832612530330046404013833393278570806931530910784883327879623237288599489771057398673060409134094528028697297443884823279234571963674779371169149956251273388699700398080357626748180572119833390559753740587369113147370030526570145694012568914092529753461888149767510063302200129930243384303372743367755012504830655138968788172321610052042779500905427689781831647609286770293455534113711524569694907790256464560343334457212983835881150530601589895322465095969063678718628164138712272270997309699010583470642013156809383552483277238208138795701883814372922762124962863368420956267449978291397315448894734554199682707233490320281237930419977334696742532152318089281102921105559486385895462167273190988041602952606833990639088075902216892147464573890736462045826013879277849850841621773319598944510534302937913287137312809390429965166936800831635716103053687698006472928918459258760505286432733704375426122960146498682263979313206221445567907858738689977520738570328264114960375522037366713550985941679632593823645930168316220873575718196637149500957644060518467081594226701909643661458635026916800661646695914857658545074049348615399105606268231296359963950823757756303420711621045498756364756828180353879591348471245800719314347159882430759037718430775829087863665044778118304860784719824454281274337483093756736276138366105368024513412641157894086355617813299518631041690272242042153087518071072421230255346654807654944733630620621079187698836831978930374393880177281734549019720949821308170560041344583217278221546570820766968584560986775437024275117272339421993034669642034186236103192104354992131085621238709743612755733102232170190111544196444612679205354176345486313063988885281672118861567633988855604683843144277440455921491740080180233217673484550133474027950827963659206345103177552255621166726653171390431017927098110640231837221282578945436419914760079037366590614426078649883548176043479432754125770776343872407405276332126185574547926143373801655962203894907820499930190616839074929981783344730499182739685036097739509794568643582374232036594486937272651600379172351165206428448639909906585640032572296500814293984313209862611979076060145731560795658321805679051172045672024657115794785124086561408353301203336235038165048445500392823487666137467324587994082360269102204393738798315325068712265743508820959689852705829080220336986203505313463491174794892511626466682969051729285957809823586014194824257510042488336273793000487141008030347728148045944912182984396527165988709929793462769406178818733203779483344205559169282945076105439353594383033469514922374585751509436196799616115574774071402354818439306276156772183586303784189836053865405929899598113696984195054906337024853532497359384006290200963480708130900896346523447119847106805490818162142581876625228423738213939014317748267150365958517224049599798669241578764219375622740851182721292853284226026501038555508978797678079453492869229121503131507851066377914265348506722301198835193184411201694740770768423032550375514230437039474949427342632927986442549603012081165515061182820632948432023373849696577434443881838410388555726747470461644750266126267457777976507109543200180380952891883194131063983403263178322883005818036367037938763404121556587371818594971232858225435789082770300984586189805434822499568328271802403964378554799879262039104503908487794340568864371872466190092554346825400721082920440620241868547046148034001419247699989527850010243486396735848418339905267451108505635718304146053176381311535780669381488799033105430677183193689893024546518546712055906153488720248705173523642873770833284956688858525881465955902778032481856304716822038690686570971737919907300977058974556779277951430619193683258862742814673926182576040580304185692814861189165434035097487304456714468365448536062148634144892429400349423172791620504368215366984942965968270090039257469014195188065052451946142615307750748867614705089169594778205243528351852472430205476351271462774561238128496636448333997078911305918033051880647165524943078064488474336980098243056486305150134927520824228199036449992826388318220994020459817880257033781543032514707100414809388606535850086756950247926470600198820608682243920909189058857350666585995137179178280371228910424815841403769942953751471080774079248417411912832739673198740336950414893260387470886219137546609320958491051104799195518513555669602384985914977227426916064269476784128300916304649780344645376283239263875390032192685899797103063942588321552272466820488250812269990710028290145952814802412204680097097600220167068323828541699580501229370972886076669230535563586225533039500829891077187941928294855097070334632568792997704174752512474409330919714013117056641257413100645658096327063400886070079882875062491491600046455142554612810234937350310522912181471044123342537947969127355527697334852892046321636305221111272029882142708221938634720604082650958074137241731349901054531517269219571464176701017418463280930653294949232708953449601285676775221490496762783323441734985346178649950852320053723771576700180364133519103021982376030305975809176629297947697216061769617952802568419251247269992582708976960064667654833868955112582242945584412388972366061431079190985226377097227511438877501933335900550321952905407174733318987952824058148479035302468098647022487338556675178900611300188078116877865854434247598373159999635627321097479142920703096270610113755360353025379335237028977255944429186912106689236828623755219250292720297187828834983421595371788284941871863331609210658769167595821259466156628660794725503317879671033421346089073574534350467966290380029322969334354550173816235421952170544660721610290932573169446142913193375709839442445416296302457398638291112066654712975227929353480159565908082498879977545865246920614626143529499888787204627842279536592108488514380709337127731165400467506838444901866879088330604398394612166934427916304673074166405975982150379940622018235085898778568145988316924065038779939523744770753004273974628798119467257728963527992919335901271613508369250570376193596246230294666702945118054069391586288984809387396486334707596635327532195204677544874414061569365165150615170669436731923980006201279783813413130081915989433170370042720457828568065475414108438955154818835830722708999893367400161959895067351513911237009048956247851435846027094599617170683166290655337152363842023883828770571745027088850300061235934515035910697201673773499501393262196421135812265540320661452738782961112800331226785547072339086814055317259556227448369708484737528100156667118651816844092194402409963828850722033276209352303694995898034958432590535961158371479499135248636606642727036510643321952569704073472119062596167673696283822221065096072795363045394003434893044573993369939279198209214881026081983145980922738449543962444792888511084973059737447138171308976836740548175060925100636740925460940858970787713061754409072725888791964532357171100310456756333855850338222904151750385459988699137276397910698746883245107291473433680199709490189492329098506316053924407365591118419587175782090464865948698086000463828280757054866137985347441762473103546646744459161256758216792366560878321805286023816807973832681782489758338299307180207139803813133305310887119321704441748249461666418278443997990931503776153342203551436551021699804185499489165213373690716297488927675260646736991791689662225560731972710444106482399637401133797058575868761419430667548826503182914490801639448692805506029628914106500342833934216040765683590895379541891660784511420985215305303126306438692163811911791923875486320812889644645295795923429449090208134856333914520740367705533987827411988361505924563838813913729273646260424254760860200732269359032609593605086930734737981247225545207087048108214792129750072764577397348836405506543727573208929237974716575638555096684457477179844329504923939332871365526092440152445387949538464067949022112112998836012072807778484140197897740528219291987897657788401198667953064103694327660556832660386469233626764776910843208777540448855595789978290807217886440092899292174319990161333367947280305157929724191923776147577401567861089248090539868336254397330107669161956084057125708670666494377297027196691870393217249829029158388364785411783906884429391162682170848775942549183445518177218981939172864169531229792858899231819846284677052700927231817953603824048015649339350446711753156448061702902644981421292051257315554846527110654145461514407654793977984268905959068284461055819262812872270984497032426317884881106684735148855206064467796446155639240326295732166815970750660622862557527835876200947835977819148723724527696886223678477529061823225107537717728376111498218739117063146602056523377097184159911346401865135715446387630726799905874432355697702023715752629180987341860472148410766203202384039927284754762411351294955013477571985762006330189094131377974033948325718528058900749411741523558810759705325051716258992163268359367459256355253043652670556073435098529735270954275443774200574769516556933714417284445513276963015736213722019585795856171938046436823791613124934278585814827285954975348994208689188014076006887126868972192252998729633072213866309659140420267623661427959878856654887028108034864774572157753898737953291186384090943216837972650671795811311428204617149161855325287321022878964410939676045705389678868460739519242572456464058682061418270706380732984420924340672901043944748314990000743929293248582672500022205131829320575171321162916936808907248000544142692517459735187811299679130599075236328877179994548184982647258990965035577065832954284706863953795007294947484166989131163247990423487121437292073638726577436750633312007974919920373208477927247147842593116508104278272724747217621610382526929351832308033462325885394374415814347711332635227434344881718816122709848484228775885773790135495672516721649334054662419885564920482519257882774279010445430868419786844938531098796602356701064980171771179198917965314931957418845282448667093681962282659170171502783286929343586257009461334992379969352844340132733065098837650031053981419139004216546533026266624493322883220706510655194363213705880983826163821225651148238926674185033452439774409200927644713572356949972431914639543445426590792432965290952180144633710226003300102356481952461605028228600717347644220795635611005858515317925140311568793088879532533995558266944201664431637223507333629754477201124364484262553860584471389303967479525307210772989588550444174486733980910307463564852931461140363796629969845436291273901045202304234642650143473864426080314937279387975161540629939860343225615461301100081752923145734109096732101184079530017505383480991850472053070521754369296710203212217972762733229775311925661086309082751569742634012642207753826546873719647292012447504770195422244223065070944990089030229901592888525514433368347754988739190869946558168970765942418184137903230003833625038787930605741272031121733827794633934860133799747038774375328559112547207937236889202992024858479743953532893126167212209427085390744437708210886288885737588423655032375040232333500595133266882530575389999120801466535029765223814725157372213340791872356595052243771432607909757826965782798135937350627462619794183718335961219199844513204147343492940636681811927823427574146032433360579340035668736063426199370184624619288449355602772434531333283790345518527499273162408648455400930175595855401525965802329446995535802644916914646806750970336180119313613654985471355252218424418960512905087876244820018552661933305802369770635698882201357911132172054136874798392713714416161174167577017909760455927086170470044374362974138121916412442198237475125178230412654513300874209957376093921888981069730695943729670227567888533528348060936916057050897188963861075287789203183412204498670013378557962944858420423827890674006144081317043428464013416937764408199990759426592250672661632155808918062546152228986077035846438673338216882009782259033869056815637590619884012287032085189913599669754502146500939595395102323230377808005010566445934475384094136805356969416524694998699014637838719772035747552206404630460402592382443730293105369643828663602414704642610580933999729423985295191475793614879174250698429229496753638995777358827536425927110477563228569927151048755501478737817584687250167119025002720189240372275850485724362622710872869955938675317536170153377107839567032551122896512014233847239769509618603985566011805676677420563718557712088782686922163752223265814232896019177799623556101602988150856972676914212172897166930199565341812125762984872179710497449913432488350494345752057099845241317857889476219193469762215309608811269670782504049879188364798343890435159160611297562367807004929994793246231598304281893956994808314737642728265160996470749968151518562152589272439055214977656561370731783903392784803149738839897273938271865641515348765621978808860180553969818087114424043431064416852947668560340141891732542357827297793733852214194792517587869484522831186745167103597066416382765849421638331772730725738569553894957008489986527493072267598108398532317784467971240086907225748396689227231817245384286425842280703325152435691033245749289990997439567486228589499535658309604642988235945893042517465099980032059040537271735811199192679360625346960506056225010340818931755953710085623449092230003722119266446875733413437095419721734038240625626971752055289123923785858880870325950050333966165924142965409204517391655665946377258471954465291394671757758069136653262136094348486543578377850555096820491047214355513657373061930309980322341745280873554179085887762779540808681119828885318330293951375898255666332517744319762145924904993297006863840065853676312677404542759822364795548522870653119822474781561643669527530621803396780019639005840805600177138310447936194034292096956068471968622971830739038105866428785255243339450530587068718325072089905163118017446945879606846017034797189554759921301115896649947275038494032059203309201701660794758270204141623652156166934172346574862093049325809733556609499996100114905526429637425862361782458895089168845284643538577493639579972515500360116393596235970858304538594237248044826180661713664841551036120835259000342198524692624514651586715114498074325040712560957615821770427491907859809683118948018770284744686485548191641175130724317285942706618072445656160150358846686169218747337682991388751392577483203134970070647908127096269056942327409825924267242996628066561844277827869301728399239987454590842287962090315675567479458237247141813611678242973160055061561580677791209321303828381304450455979265406464902553656246153969833813335067768087934248052000579221680266103614323563119296820679686623241432206222661232725555792374431395490517107410081959957653805164880709649016810651037496279609686917022744176759783210582975424217154812545902394956520234081393252969019691456596519816294781516453036641557221907638861083001729116918469286566298083621007938309776537425310503597584151106004432553889988293818360061425370007678607817590675475099584280059550759677647852116297223933254200354724698441442303388389612886261390749412135219713484749768842328947061750221480253896266603674025165559121200225414597053301912852059924668415156863416344947890374179743205003999849460086753872765211213801320977707964250923079142671544119760621718114980188321776567434204560295062072153908270545436971822000986493481013454824029712777679927561557137756290604487393643122870839300812371241354869443039522693374665380621364867247506654121018225714098630855305454939615547503001867068888442184701858412765056584131532707638597500743502828191111751237479629840256870949973453134971526007011894691275920042239188376431965643358352744939278542514941404102270815402392693226030259213561642089327963353437443695882054801242501390293887231767584334188470536310684633281501701222243740196641653876166764365650367259478539767579285420882029170584699620152556477794035959681635217937416656476060006660302234522949499475260923666071640356649323732046589150336069616123734638631934535750672859756767654139430721771842081840733051854364327381711180772669378103132339685139153328487736433278283245085452399442799866054021640159844160017670231643507130612031193462330614629186007788612597626541472657639326235360211304810535744857165605393354268839345779904473182338361146423412917049675497070691650443204135319857952716449016592463626311007838090400746851987231690084275861804241620490017073853386904959317980686594179837889478655998186053863794240253996452034540163412163939887546691115108322034625154752240261911655557370913629547491716476462000261931382604150660844568789858937416621389833709037431943348256869351848394165012627701851042725269577179961873622616104649115641880167392261950848214633515588069188630966532456934142686015636641250685290618275365604980990713178568387103119968041778228554849996231658651845896546844730827523038382177909122452445042876711482124816045901302283633208615056096202537627042815424086836131397991374092844069362555106120657314353701242445242113104946514296479014730294887381377361562490384456312388476835813105484051371873742223820561736552869204793158901484921416041052890553076621666834842298760333589907988428443514050465483515780274542807129654270470032992239268458044042179088289527493467313576486144662839956548090700944282659572280233967520879739125464907912238739547966082576864863052097898763751640059076955332251900488333884883457930517552969414492133395378220037762455021959902291982671913250396935930279374040312154792742425179139436867367972114691727268825130072175691503664833674285466333640071754150795145673116607005871562888078865916675630856123124642634359583842082082165484566180710104614069880811228648431997810802258862698704260230564125910936836544513516781517617821751576740397514025911741502553823717241552359879712643867219432493665558281861194487585066861622133748434304395903125292097993442645367202860794446545705181454632430101296847230952707278475296830867219602567029937465102553149302492855008546103642669723611997941898410234946760054638393824018944342656538023731316884440410724895781787651138610393650001438805011784039347788318622428062532041741529582168872759469592053140433830930458154245858149218439703713566926867279413780333254471161572444497325883589827014883868284866266460410687857825613427311746397020546752561576330010137009392693409514741663428301065921428328185529573502732647316784994344339063979669770624832021400672271619596706391030790050097792816712946210598648200321177701461309243808990715918985242612911246858993033675023381327885845497578284645148902711241544865724923680056566755486734283081558042274717984049085322564853144388432363155030980183727074655526825845113929014596303902064817926358994939443877468352017300453739137499782813726049359464821467766839821205835010386349634554076385241506443781479080206603167734963025914383276786034282902301016806260012034426634072087752735975720887048315284042093277992672726395732617901308288890112097413191408161464454496803365698950004439971332789705799343529961081774418009781078186773482901695733289221445215241799285482653554295715058916746635463002160584291667819651515162642391366450650221473125899115641518916524303270092848055341347974386682445374288263941971394112019235359426506665376162190335544221097184538489552272723123128302692825025857212400781788216550025620157738874905691673034625912800930445679367423771202830111085675109079377079585818701568875887731319332074754349672908888287664845041597991964072384532024003778052147540789111121751007512182674168280257785615430358763303435634285778550757537176771993919570800391591113336241702825897091414236225975240052433603845966340204360064114220669862968137842857740296874066625929738208282809136999591787999670532208517465297989320997158937396556791833969289375260394132470354269780753386375339163435649316695778921748722106168313514409203652747593985344645888862231655474273272914252561654593590484066273871390100575735450009594698798790352389232587187742308778419983571745352739660079726572660689376096766891572621298856635384018300973667854001318428183108078050298206990941071477615680342980619667287721292129922324091922747818084709622901730942180293356941605352457702927453984569500060709840160686972432978607366948218615818360303052700628161602139402904920778089518888967606765664250707884958812823970144939812316435325524193583362423070294387959680689935503486925488037213559014099774092690466299615100983058776366145094762119805557349231846639596631569305002873364343463031391247553098578745149779501793972846696758672626421558993115016109594204846158896241340018433117353435977722887427027262860635826549768293941575131710798732949858211288837190649840448958700630076268821538299276679634053271062879850641552600721728157101802726092774531689702025055565651027928640605270896391753589574156911791852717629825744118698650364395022153671548889413340366930617453112269848372831504479440051682239029210659850435043707150309287897670996539610979217234839138659331956798260212258935568024868777328823066484160682669746134608527840969930394602029680550240610371586882567339070275794226110348333953812429573322474197967030355829865086989658953334429895326555600143587870728694974800830023191595536831776632157161900247227326881995316149843825885072042195432936094221533667610606221777965966306452560331242461642789203046748326076451102875473409062742568524161257198703184988865143294899866302536335993326847479380018632318301596920910644133061880075611176174574946219616141139407872224211841742711798535444604869547983170537873267383678392545592453569313807276938586146228742409203099922059148093501311747835371464788071607264045150505872579857598991638621740075807529358776670675689639871746888060114639221049598113452421628791840964845625225903098541265646260154457548085504398396495822787880342635529306824216410995433911823301891802660641717965744267973472264244329277238915105011052497469050433367483387605116983454893028241264341943487687017125872849479600280367199759011920514260530918696591711579554764205685316926397659620563018807369106254876927820550360129557405849544246490766156452645251954514365448683221548883403207653084818453528393405481607481412776005492875388910106243243059098193527608885685255026358405418796398723264283655489019814949575467649378198882528853934013898518620924383023559198494209570172352864530505715275051385562351345764475426450465783640865942707264119011794186429334274542690492005262769527094404079086302846047741815377913328534847335872723767287832251857755047095440552560028378312717721211377488081149621992263455647248051647076263971443490602553746658539990380137499990606784854214229579482844656984226879017643335161511523887924457403509845088853805424800153394425037224461847320063794704026770686414920516253845759982202734406536425717389990824848348877421967751916717501642763028071674158496139080006587666730099328589655747345673857342785999597613512089750607635227844548661154047502422779904424300193664161874624562144584657454271179789530261956949701183814689334839184026538551583398930838397117742451742203188759118581849725122354238924575627957882771774268427612742436928416044182272316383873179347403032516805639144759411476532180984599718515847471393035420106890305732486864034245792661141885125193010257609970243022302860308206260153623948406224287883449039052716486293291345583724506017116073012178148315450083017647192796312585399379296490117512680044490904238268391810369766272256546670237580576987036227857479311410994701971754456706096378776901542250470074666114571615307294107476480124803518044143884673058306099382647489284706512758941550165979793837950155236892251679132137352059334003375184370960818124672501447657569836571452952468454430017707966725164793921570650388795279695300324216139437749048395462696615049653946570629022760379187892506543907384812964411031222445305878981139360770600385310047349901732805207995434454661047744444854787581626917082006049151271768121707576825694241656478607680267717928988275421335674537584217631798905532787230225687150904540797243654014686094429304012150739056256295821128274920801436581389108896485938184920392805714552585627134430988703028325390517209448363013565410237102403676247222684044709491351441417921520536504073300325472369420716334332718389070824562044319398341029329264313870160931203029545228326235879850478415436764130420128709409333773484643429181250924757122477062968680764803073491485923822272499758693943539368949061727019716027231072826434194560255683307634562020587958965598747834613631997553240476193767582549053236453743939586389263368098984049941152891787430007656790263749553320772111901905243931600011338840976180964121543902948312437246398825728118588088300087928600753759711502060443815788795825243575148113582866899521594043656613696984971832753120870388415923641774984917584253916511738671317592527008339030891719506139149700364592604328219229600005378509731721057520106652827291054928648135774931727803712239762923842710152845248908277706933312532635539085200764953045154760833042880912875889867349931159365033646988247316825621191234913815054253240780642379936383680625092318929611029427777101941118065060575321919655743416751029534335058756947758467191791277576018084835534001554967917067969263316144886061554863310796868268767075491104898436627577571070554182126382733467535780325714852829912511309188471382460936960321807601327265098274710379573366249238495266892330177234446576750181298169843110732031535659894754205560662463808734614274594532037500213679708504497280397831514356134122374834813951418078918325075232587312144815524700919748352347704429013100462204867124095996118195347295608149340728301369473749930443854620934272941880323931881490034057780699256300285296329607908266700047520391286559594859716749933855684410544867103369713722639773507249016278918936501877660595148320465997528692022994145643799153638165754143580516540918710668254024491082131000943139529250810074751218204585281801293455508645687353981102332773621910307057474246099165871029837076616552881485644347488231016949498844227677463837160281264849225356754685080726781059569714750444990941602094143024375638432152560849562164952130614787226937740052391761657982970027168829806658357212036221541901929368443290972372957866083073149639825637161947838101195140321085376046638359656661738589330428497514810010145579041359718604744818440883605989736780890475149021495811383790767583510708234905053215470736488680759101061758685509486577645949714401671538758449853379026420355546321966267106500968635139481160025188750629759557129272640894646506244793953163238366748420205867313964426427924094129356042832682702807650211193502836194030691691610533847009477148106315875646912057684341897114613203901634613627217391138548577558720264417373403509934534575122574658742145817516323318184853563139486394643883049843259250521310657020913066198773516646774095583518215611922604402824709830945361698054703420599951629755272685356532602964057474088516066374432117120771714140800050916645854511851020171047888539240257448745851731180027718110852162939219776921967072022366057956594092262180096284373026204303117767172768038976181417422623748170484824445471325880204267543305893016553455010604556183022813103843437928353376088454621866963051758123088757452277111651817281259342941651173295459111688965176072177351722948723698943985238828554661254813976915442866363403946764830920350846464093008992900643485377455676617166094187302744720739912108148426900678856719642640272880124832360181861243435214342034979523459442835408249926034642738543893517231860737266200351332829457249936118266206857471814664367287133475839594929249236526828646128187951159923969226622560848999477635002246260474702081177758960397722123052860300058651287208805250961956808507411234752930249928779116511856310160724589985142548579083182140365645944955500947658161544180842345470213572781819301293321363617551741423504374848905880531729375337779997726083765759592242744740546797656115634715495506776486512836452262959750581697821774940507220868827583022978529212199068540359749123591539974592363910054350454165427089692536064906016260083316963382415842452663580901527937396579039523375622561219817784615402527935610631576764420113545574283419213524411557699384008834693289513727556771521064804051620190676227684329444386362537039831171349827717351654867418554498819858389430420518908205319052725065182580965820829121257283216877221141618820347559951023016773936507823751190016997393550985290684403827603597299642680903212075936763568127941330395401212785745595899657551184193487573247178029759648557155493786655872684263878249076119534732250971941382398107719821314880197063137451642125 asByteArray. \ No newline at end of file + ^ +#[239 187 191 39 70 114 111 109 32 83 113 117 101 97 107 54 46 48 97 108 112 104 97 32 111 102 32 49 55 32 65 112 114 105 108 32 50 48 49 56 32 91 108 97 116 101 115 116 32 117 112 100 97 116 101 58 32 35 49 55 57 48 49 93 32 111 110 32 54 32 74 117 110 101 32 50 48 49 56 32 97 116 32 53 58 50 49 58 50 56 32 112 109 39 33 13 13 33 79 98 106 101 99 116 83 99 97 110 110 101 114 32 110 101 119 32 105 110 105 116 105 97 108 105 122 101 33 13 13 13 13 33 115 101 108 102 32 115 109 97 114 116 82 101 102 83 116 114 101 97 109 33 4 0 0 0 4 8 0 0 0 4 17 15 99 108 97 115 115 32 115 116 114 117 99 116 117 114 101 9 0 0 0 3 6 10 68 105 99 116 105 111 110 97 114 121 4 0 0 0 70 8 0 0 0 149 1 1 1 1 1 1 1 9 0 0 0 3 6 11 65 115 115 111 99 105 97 116 105 111 110 6 10 83 99 114 111 108 108 80 97 110 101 8 0 0 0 23 4 0 0 0 0 17 6 98 111 117 110 100 115 17 5 111 119 110 101 114 17 9 115 117 98 109 111 114 112 104 115 17 10 102 117 108 108 66 111 117 110 100 115 17 5 99 111 108 111 114 17 9 101 120 116 101 110 115 105 111 110 17 11 98 111 114 100 101 114 87 105 100 116 104 17 11 98 111 114 100 101 114 67 111 108 111 114 17 5 109 111 100 101 108 17 8 115 108 111 116 78 97 109 101 17 4 111 112 101 110 17 9 115 99 114 111 108 108 66 97 114 17 8 115 99 114 111 108 108 101 114 17 20 114 101 116 114 97 99 116 97 98 108 101 83 99 114 111 108 108 66 97 114 17 15 115 99 114 111 108 108 66 97 114 79 110 76 101 102 116 17 15 103 101 116 77 101 110 117 83 101 108 101 99 116 111 114 17 20 103 101 116 77 101 110 117 84 105 116 108 101 83 101 108 101 99 116 111 114 17 8 104 97 115 70 111 99 117 115 17 10 104 83 99 114 111 108 108 66 97 114 17 16 104 83 99 114 111 108 108 66 97 114 80 111 108 105 99 121 17 16 118 83 99 114 111 108 108 66 97 114 80 111 108 105 99 121 17 18 115 99 114 111 108 108 66 97 114 84 104 105 99 107 110 101 115 115 16 3 0 66 6 9 84 101 120 116 77 111 114 112 104 8 0 0 0 22 4 0 0 0 0 10 0 0 0 101 10 0 0 0 109 10 0 0 0 116 10 0 0 0 127 10 0 0 0 139 10 0 0 0 146 10 0 0 0 157 10 0 0 0 170 17 9 116 101 120 116 83 116 121 108 101 17 4 116 101 120 116 17 8 119 114 97 112 70 108 97 103 17 9 112 97 114 97 103 114 97 112 104 17 6 101 100 105 116 111 114 17 9 99 111 110 116 97 105 110 101 114 17 11 112 114 101 100 101 99 101 115 115 111 114 17 9 115 117 99 99 101 115 115 111 114 17 15 98 97 99 107 103 114 111 117 110 100 67 111 108 111 114 17 7 109 97 114 103 105 110 115 17 11 101 100 105 116 72 105 115 116 111 114 121 17 8 114 101 97 100 79 110 108 121 17 7 97 117 116 111 70 105 116 16 3 0 66 6 18 80 83 67 111 110 116 101 110 116 67 111 110 116 97 105 110 101 114 8 0 0 0 10 4 0 0 0 0 10 0 0 0 101 10 0 0 0 109 10 0 0 0 116 10 0 0 0 127 10 0 0 0 139 10 0 0 0 146 17 13 114 101 115 105 122 101 72 97 110 100 108 101 115 17 10 104 97 115 72 97 110 100 108 101 115 17 5 99 104 105 108 100 16 3 0 66 6 11 76 97 121 111 117 116 70 114 97 109 101 8 0 0 0 9 4 0 0 0 1 17 12 108 101 102 116 70 114 97 99 116 105 111 110 17 10 108 101 102 116 79 102 102 115 101 116 17 11 116 111 112 70 114 97 99 116 105 111 110 17 9 116 111 112 79 102 102 115 101 116 17 13 114 105 103 104 116 70 114 97 99 116 105 111 110 17 11 114 105 103 104 116 79 102 102 115 101 116 17 14 98 111 116 116 111 109 70 114 97 99 116 105 111 110 17 12 98 111 116 116 111 109 79 102 102 115 101 116 16 3 0 66 6 10 73 109 97 103 101 77 111 114 112 104 8 0 0 0 8 4 0 0 0 0 10 0 0 0 101 10 0 0 0 109 10 0 0 0 116 10 0 0 0 127 10 0 0 0 139 10 0 0 0 146 17 5 105 109 97 103 101 16 3 0 66 6 12 77 111 114 112 104 105 99 77 111 100 101 108 8 0 0 0 12 4 0 0 0 0 10 0 0 0 101 10 0 0 0 109 10 0 0 0 116 10 0 0 0 127 10 0 0 0 139 10 0 0 0 146 10 0 0 0 157 10 0 0 0 170 10 0 0 0 183 10 0 0 0 190 10 0 0 0 200 16 3 0 66 6 13 84 101 120 116 65 116 116 114 105 98 117 116 101 8 0 0 0 1 4 0 0 0 0 1 1 1 16 3 0 66 6 9 76 111 111 107 117 112 75 101 121 8 0 0 0 2 4 0 0 0 0 17 3 107 101 121 16 3 0 66 6 18 80 108 117 103 103 97 98 108 101 84 101 120 116 77 111 114 112 104 8 0 0 0 33 4 0 0 0 0 10 0 0 0 101 10 0 0 0 109 10 0 0 0 116 10 0 0 0 127 10 0 0 0 139 10 0 0 0 146 10 0 0 0 157 10 0 0 0 170 10 0 0 0 183 10 0 0 0 190 10 0 0 0 200 10 0 0 0 206 10 0 0 0 217 10 0 0 0 227 10 0 0 0 249 10 0 0 1 10 10 0 0 1 27 10 0 0 1 49 10 0 0 1 59 10 0 0 1 71 10 0 0 1 89 10 0 0 1 107 17 9 116 101 120 116 77 111 114 112 104 17 15 103 101 116 84 101 120 116 83 101 108 101 99 116 111 114 17 15 115 101 116 84 101 120 116 83 101 108 101 99 116 111 114 17 20 103 101 116 83 101 108 101 99 116 105 111 110 83 101 108 101 99 116 111 114 17 18 104 97 115 85 110 97 99 99 101 112 116 101 100 69 100 105 116 115 17 24 97 115 107 66 101 102 111 114 101 68 105 115 99 97 114 100 105 110 103 69 100 105 116 115 17 17 115 101 108 101 99 116 105 111 110 73 110 116 101 114 118 97 108 17 19 104 97 115 69 100 105 116 105 110 103 67 111 110 102 108 105 99 116 115 17 16 101 100 105 116 84 101 120 116 83 101 108 101 99 116 111 114 17 15 119 97 110 116 115 87 114 97 112 66 111 114 100 101 114 16 3 0 66 6 7 84 84 67 70 111 110 116 8 0 0 0 12 4 0 0 0 1 17 14 116 116 99 68 101 115 99 114 105 112 116 105 111 110 17 9 112 111 105 110 116 83 105 122 101 17 15 102 111 114 101 103 114 111 117 110 100 67 111 108 111 114 17 5 99 97 99 104 101 17 11 100 101 114 105 118 97 116 105 118 101 115 17 12 102 97 108 108 98 97 99 107 70 111 110 116 17 6 104 101 105 103 104 116 17 6 97 115 99 101 110 116 17 7 100 101 115 99 101 110 116 17 8 109 97 120 65 115 99 105 105 17 15 99 111 108 111 114 84 111 67 97 99 104 101 77 97 112 16 3 0 66 6 12 83 105 109 112 108 101 66 111 114 100 101 114 8 0 0 0 4 4 0 0 0 0 17 9 98 97 115 101 67 111 108 111 114 17 5 99 111 108 111 114 17 5 119 105 100 116 104 1 1 16 3 0 66 6 9 66 121 116 101 65 114 114 97 121 8 0 0 0 1 4 0 0 0 0 16 3 0 66 6 18 73 100 101 110 116 105 116 121 68 105 99 116 105 111 110 97 114 121 8 0 0 0 3 4 0 0 0 0 17 5 116 97 108 108 121 17 5 97 114 114 97 121 16 3 0 66 6 20 76 97 114 103 101 80 111 115 105 116 105 118 101 73 110 116 101 103 101 114 8 0 0 0 1 4 0 0 0 0 16 3 0 66 6 6 79 98 106 101 99 116 8 0 0 0 1 4 0 0 0 0 1 1 1 16 3 0 66 6 5 65 114 114 97 121 8 0 0 0 1 4 0 0 0 0 16 3 0 66 6 10 66 121 116 101 83 121 109 98 111 108 8 0 0 0 1 4 0 0 0 0 1 1 16 3 0 66 6 4 70 111 114 109 8 0 0 0 6 4 0 0 0 0 17 4 98 105 116 115 17 5 119 105 100 116 104 17 6 104 101 105 103 104 116 17 5 100 101 112 116 104 17 6 111 102 102 115 101 116 1 1 1 1 16 3 0 66 6 16 68 105 115 112 108 97 121 84 114 97 110 115 102 111 114 109 8 0 0 0 1 4 0 0 0 0 1 16 3 0 66 6 16 77 111 114 112 104 105 99 84 114 97 110 115 102 111 114 109 8 0 0 0 4 4 0 0 0 0 17 6 111 102 102 115 101 116 17 5 97 110 103 108 101 17 5 115 99 97 108 101 16 3 0 66 6 14 84 114 97 110 115 102 111 114 109 77 111 114 112 104 8 0 0 0 10 4 0 0 0 0 10 0 0 0 101 10 0 0 0 109 10 0 0 0 116 10 0 0 0 127 10 0 0 0 139 10 0 0 0 146 17 9 116 114 97 110 115 102 111 114 109 17 9 115 109 111 111 116 104 105 110 103 17 11 108 111 99 97 108 66 111 117 110 100 115 1 1 1 1 16 3 0 66 6 11 80 83 84 101 120 116 77 111 114 112 104 8 0 0 0 35 4 0 0 0 0 10 0 0 0 101 10 0 0 0 109 10 0 0 0 116 10 0 0 0 127 10 0 0 0 139 10 0 0 0 146 10 0 0 0 157 10 0 0 0 170 10 0 0 0 183 10 0 0 0 190 10 0 0 0 200 10 0 0 0 206 10 0 0 0 217 10 0 0 0 227 10 0 0 0 249 10 0 0 1 10 10 0 0 1 27 10 0 0 1 49 10 0 0 1 59 10 0 0 1 71 10 0 0 1 89 10 0 0 1 107 10 0 0 4 148 10 0 0 4 159 10 0 0 4 176 10 0 0 4 193 10 0 0 4 215 10 0 0 4 235 10 0 0 5 5 10 0 0 5 24 10 0 0 5 45 10 0 0 5 63 17 13 98 97 115 105 99 84 101 120 116 83 105 122 101 17 9 116 101 120 116 83 99 97 108 101 1 1 16 3 0 66 6 5 80 111 105 110 116 8 0 0 0 3 4 0 0 0 0 17 1 120 17 1 121 16 3 0 66 6 12 83 109 97 108 108 70 108 111 97 116 54 52 8 0 0 0 1 4 0 0 0 0 16 3 0 66 6 9 77 97 103 110 105 116 117 100 101 8 0 0 0 1 4 0 0 0 0 16 3 0 66 6 9 87 101 97 107 65 114 114 97 121 8 0 0 0 1 4 0 0 0 0 1 1 1 1 1 16 3 0 66 6 17 65 114 114 97 121 101 100 67 111 108 108 101 99 116 105 111 110 8 0 0 0 1 4 0 0 0 0 1 16 3 0 66 6 5 70 108 111 97 116 8 0 0 0 1 4 0 0 0 0 1 1 1 1 16 3 0 66 6 9 82 101 99 116 97 110 103 108 101 8 0 0 0 3 4 0 0 0 0 17 6 111 114 105 103 105 110 17 6 99 111 114 110 101 114 16 3 0 66 6 14 82 101 99 116 97 110 103 108 101 77 111 114 112 104 8 0 0 0 9 4 0 0 0 0 10 0 0 0 101 10 0 0 0 109 10 0 0 0 116 10 0 0 0 127 10 0 0 0 139 10 0 0 0 146 10 0 0 0 157 10 0 0 0 170 1 1 1 1 1 1 16 3 0 66 6 6 83 116 114 105 110 103 8 0 0 0 1 4 0 0 0 0 1 1 1 16 3 0 66 6 22 83 101 113 117 101 110 99 101 97 98 108 101 67 111 108 108 101 99 116 105 111 110 8 0 0 0 1 4 0 0 0 0 16 3 0 66 6 10 67 111 108 108 101 99 116 105 111 110 8 0 0 0 1 4 0 0 0 0 1 16 3 0 66 6 12 69 118 101 110 116 72 97 110 100 108 101 114 8 0 0 0 37 4 0 0 0 0 17 18 109 111 117 115 101 68 111 119 110 82 101 99 105 112 105 101 110 116 17 17 109 111 117 115 101 68 111 119 110 83 101 108 101 99 116 111 114 17 18 109 111 117 115 101 77 111 118 101 82 101 99 105 112 105 101 110 116 17 17 109 111 117 115 101 77 111 118 101 83 101 108 101 99 116 111 114 17 23 109 111 117 115 101 83 116 105 108 108 68 111 119 110 82 101 99 105 112 105 101 110 116 17 22 109 111 117 115 101 83 116 105 108 108 68 111 119 110 83 101 108 101 99 116 111 114 17 16 109 111 117 115 101 85 112 82 101 99 105 112 105 101 110 116 17 15 109 111 117 115 101 85 112 83 101 108 101 99 116 111 114 17 19 109 111 117 115 101 69 110 116 101 114 82 101 99 105 112 105 101 110 116 17 18 109 111 117 115 101 69 110 116 101 114 83 101 108 101 99 116 111 114 17 19 109 111 117 115 101 76 101 97 118 101 82 101 99 105 112 105 101 110 116 17 18 109 111 117 115 101 76 101 97 118 101 83 101 108 101 99 116 111 114 17 27 109 111 117 115 101 69 110 116 101 114 68 114 97 103 103 105 110 103 82 101 99 105 112 105 101 110 116 17 26 109 111 117 115 101 69 110 116 101 114 68 114 97 103 103 105 110 103 83 101 108 101 99 116 111 114 17 27 109 111 117 115 101 76 101 97 118 101 68 114 97 103 103 105 110 103 82 101 99 105 112 105 101 110 116 17 26 109 111 117 115 101 76 101 97 118 101 68 114 97 103 103 105 110 103 83 101 108 101 99 116 111 114 17 19 109 111 117 115 101 87 104 101 101 108 82 101 99 105 112 105 101 110 116 17 18 109 111 117 115 101 87 104 101 101 108 83 101 108 101 99 116 111 114 17 18 107 101 121 83 116 114 111 107 101 82 101 99 105 112 105 101 110 116 17 17 107 101 121 83 116 114 111 107 101 83 101 108 101 99 116 111 114 17 14 107 101 121 85 112 82 101 99 105 112 105 101 110 116 17 13 107 101 121 85 112 83 101 108 101 99 116 111 114 17 16 107 101 121 68 111 119 110 82 101 99 105 112 105 101 110 116 17 15 107 101 121 68 111 119 110 83 101 108 101 99 116 111 114 17 14 118 97 108 117 101 80 97 114 97 109 101 116 101 114 17 18 115 116 97 114 116 68 114 97 103 82 101 99 105 112 105 101 110 116 17 17 115 116 97 114 116 68 114 97 103 83 101 108 101 99 116 111 114 17 19 100 111 117 98 108 101 67 108 105 99 107 83 101 108 101 99 116 111 114 17 20 100 111 117 98 108 101 67 108 105 99 107 82 101 99 105 112 105 101 110 116 17 26 100 111 117 98 108 101 67 108 105 99 107 84 105 109 101 111 117 116 83 101 108 101 99 116 111 114 17 27 100 111 117 98 108 101 67 108 105 99 107 84 105 109 101 111 117 116 82 101 99 105 112 105 101 110 116 17 13 99 108 105 99 107 83 101 108 101 99 116 111 114 17 14 99 108 105 99 107 82 101 99 105 112 105 101 110 116 17 28 107 101 121 98 111 97 114 100 70 111 99 117 115 67 104 97 110 103 101 82 101 99 105 112 105 101 110 116 17 27 107 101 121 98 111 97 114 100 70 111 99 117 115 67 104 97 110 103 101 83 101 108 101 99 116 111 114 17 19 119 97 110 116 115 69 118 101 114 121 77 111 117 115 101 77 111 118 101 16 3 0 66 6 9 83 99 114 111 108 108 66 97 114 8 0 0 0 37 4 0 0 0 0 10 0 0 0 101 10 0 0 0 109 10 0 0 0 116 10 0 0 0 127 10 0 0 0 139 10 0 0 0 146 10 0 0 0 157 10 0 0 0 170 10 0 0 0 183 10 0 0 0 190 10 0 0 0 200 17 6 115 108 105 100 101 114 17 5 118 97 108 117 101 17 16 115 101 116 86 97 108 117 101 83 101 108 101 99 116 111 114 17 16 103 101 116 86 97 108 117 101 83 101 108 101 99 116 111 114 17 12 115 108 105 100 101 114 83 104 97 100 111 119 17 11 115 108 105 100 101 114 67 111 108 111 114 17 10 100 101 115 99 101 110 100 105 110 103 17 12 109 105 110 105 109 117 109 86 97 108 117 101 17 12 109 97 120 105 109 117 109 86 97 108 117 101 17 7 113 117 97 110 116 117 109 17 23 103 101 116 77 105 110 105 109 117 109 86 97 108 117 101 83 101 108 101 99 116 111 114 17 23 103 101 116 77 97 120 105 109 117 109 86 97 108 117 101 83 101 108 101 99 116 111 114 17 11 111 114 105 101 110 116 97 116 105 111 110 17 10 109 101 110 117 66 117 116 116 111 110 17 8 117 112 66 117 116 116 111 110 17 10 100 111 119 110 66 117 116 116 111 110 17 10 112 97 103 105 110 103 65 114 101 97 17 11 115 99 114 111 108 108 68 101 108 116 97 17 9 112 97 103 101 68 101 108 116 97 17 8 105 110 116 101 114 118 97 108 17 12 109 101 110 117 83 101 108 101 99 116 111 114 17 15 116 105 109 101 79 102 77 111 117 115 101 68 111 119 110 17 16 116 105 109 101 79 102 76 97 115 116 83 99 114 111 108 108 17 17 110 101 120 116 80 97 103 101 68 105 114 101 99 116 105 111 110 17 18 99 117 114 114 101 110 116 83 99 114 111 108 108 68 101 108 97 121 16 3 0 66 6 8 82 117 110 65 114 114 97 121 8 0 0 0 6 4 0 0 0 0 17 4 114 117 110 115 17 6 118 97 108 117 101 115 17 9 108 97 115 116 73 110 100 101 120 17 7 108 97 115 116 82 117 110 17 10 108 97 115 116 79 102 102 115 101 116 16 3 0 66 6 9 84 101 120 116 83 116 121 108 101 8 0 0 0 13 4 0 0 0 0 17 9 102 111 110 116 65 114 114 97 121 17 14 102 111 110 116 70 97 109 105 108 121 83 105 122 101 17 8 108 105 110 101 71 114 105 100 17 8 98 97 115 101 108 105 110 101 17 9 97 108 105 103 110 109 101 110 116 17 11 102 105 114 115 116 73 110 100 101 110 116 17 10 114 101 115 116 73 110 100 101 110 116 17 11 114 105 103 104 116 73 110 100 101 110 116 17 9 116 97 98 115 65 114 114 97 121 17 15 109 97 114 103 105 110 84 97 98 115 65 114 114 97 121 17 7 108 101 97 100 105 110 103 17 16 100 101 102 97 117 108 116 70 111 110 116 73 110 100 101 120 16 3 0 66 6 12 65 98 115 116 114 97 99 116 70 111 110 116 8 0 0 0 1 4 0 0 0 0 16 3 0 66 6 6 66 105 116 109 97 112 8 0 0 0 1 4 0 0 0 0 16 3 0 66 6 12 66 111 120 101 100 70 108 111 97 116 54 52 8 0 0 0 1 4 0 0 0 0 1 16 3 0 66 6 8 70 114 97 99 116 105 111 110 8 0 0 0 3 4 0 0 0 0 17 9 110 117 109 101 114 97 116 111 114 17 11 100 101 110 111 109 105 110 97 116 111 114 1 1 1 16 3 0 66 6 16 72 97 115 104 101 100 67 111 108 108 101 99 116 105 111 110 8 0 0 0 3 4 0 0 0 0 10 0 0 6 91 10 0 0 6 98 16 3 0 66 6 12 78 101 119 80 97 114 97 103 114 97 112 104 8 0 0 0 18 4 0 0 0 0 17 4 116 101 120 116 17 9 116 101 120 116 83 116 121 108 101 17 19 102 105 114 115 116 67 104 97 114 97 99 116 101 114 73 110 100 101 120 17 9 99 111 110 116 97 105 110 101 114 17 5 108 105 110 101 115 17 20 112 111 115 105 116 105 111 110 87 104 101 110 67 111 109 112 111 115 101 100 17 11 111 102 102 115 101 116 84 111 69 110 100 17 9 109 97 120 82 105 103 104 116 88 17 14 115 101 108 101 99 116 105 111 110 83 116 97 114 116 17 13 115 101 108 101 99 116 105 111 110 83 116 111 112 17 17 119 97 110 116 115 67 111 108 117 109 110 66 114 101 97 107 115 17 7 102 111 99 117 115 101 100 17 9 99 97 114 101 116 82 101 99 116 17 9 115 104 111 119 67 97 114 101 116 17 10 99 97 114 101 116 67 111 108 111 114 17 14 115 101 108 101 99 116 105 111 110 67 111 108 111 114 17 23 117 110 102 111 99 117 115 101 100 83 101 108 101 99 116 105 111 110 67 111 108 111 114 16 3 0 66 6 14 84 101 120 116 70 111 110 116 67 104 97 110 103 101 8 0 0 0 2 4 0 0 0 0 17 10 102 111 110 116 78 117 109 98 101 114 1 1 16 3 0 66 6 14 77 111 114 112 104 69 120 116 101 110 115 105 111 110 8 0 0 0 12 4 0 0 0 0 17 6 108 111 99 107 101 100 17 7 118 105 115 105 98 108 101 17 6 115 116 105 99 107 121 17 11 98 97 108 108 111 111 110 84 101 120 116 17 19 98 97 108 108 111 111 110 84 101 120 116 83 101 108 101 99 116 111 114 17 12 101 120 116 101 114 110 97 108 78 97 109 101 17 12 105 115 80 97 114 116 115 68 111 110 111 114 17 10 97 99 116 111 114 83 116 97 116 101 17 6 112 108 97 121 101 114 17 12 101 118 101 110 116 72 97 110 100 108 101 114 17 15 111 116 104 101 114 80 114 111 112 101 114 116 105 101 115 1 1 1 1 1 16 3 0 66 6 16 84 114 97 110 115 108 117 99 101 110 116 67 111 108 111 114 8 0 0 0 5 4 0 0 0 0 17 3 114 103 98 17 11 99 97 99 104 101 100 68 101 112 116 104 17 16 99 97 99 104 101 100 66 105 116 80 97 116 116 101 114 110 17 5 97 108 112 104 97 16 3 0 66 6 7 80 83 83 108 105 100 101 8 0 0 0 22 4 0 0 0 0 10 0 0 0 101 10 0 0 0 109 10 0 0 0 116 10 0 0 0 127 10 0 0 0 139 10 0 0 0 146 10 0 0 0 157 10 0 0 0 170 17 9 112 114 101 115 101 110 116 101 114 17 5 109 111 100 101 108 17 6 99 117 114 115 111 114 17 7 112 97 100 100 105 110 103 17 15 98 97 99 107 103 114 111 117 110 100 77 111 114 112 104 17 16 116 117 114 116 108 101 84 114 97 105 108 115 70 111 114 109 17 9 116 117 114 116 108 101 80 101 110 17 19 108 97 115 116 84 117 114 116 108 101 80 111 115 105 116 105 111 110 115 17 10 105 115 80 97 114 116 115 66 105 110 17 14 105 110 100 105 99 97 116 101 67 117 114 115 111 114 17 19 119 97 110 116 115 77 111 117 115 101 79 118 101 114 72 97 108 111 115 17 10 119 111 114 108 100 83 116 97 116 101 17 10 103 114 105 100 100 105 110 103 79 110 16 3 0 66 6 5 67 111 108 111 114 8 0 0 0 4 4 0 0 0 0 10 0 0 18 147 10 0 0 18 152 10 0 0 18 165 16 3 0 66 6 13 68 105 115 112 108 97 121 77 101 100 105 117 109 8 0 0 0 1 4 0 0 0 0 16 3 0 66 6 12 80 97 115 116 101 85 112 77 111 114 112 104 8 0 0 0 22 4 0 0 0 0 10 0 0 0 101 10 0 0 0 109 10 0 0 0 116 10 0 0 0 127 10 0 0 0 139 10 0 0 0 146 10 0 0 0 157 10 0 0 0 170 10 0 0 18 253 10 0 0 19 8 10 0 0 19 15 10 0 0 19 23 10 0 0 19 32 10 0 0 19 49 10 0 0 19 67 10 0 0 19 78 10 0 0 19 99 10 0 0 19 111 10 0 0 19 127 10 0 0 19 148 10 0 0 19 160 16 3 0 66 6 8 73 110 116 101 114 118 97 108 8 0 0 0 4 4 0 0 0 0 17 5 115 116 97 114 116 17 4 115 116 111 112 17 4 115 116 101 112 16 3 0 66 10 0 0 0 66 8 0 0 0 3 4 0 0 0 0 10 0 0 3 255 17 5 118 97 108 117 101 16 3 0 66 6 13 66 111 114 100 101 114 101 100 77 111 114 112 104 8 0 0 0 9 4 0 0 0 0 10 0 0 0 101 10 0 0 0 109 10 0 0 0 116 10 0 0 0 127 10 0 0 0 139 10 0 0 0 146 10 0 0 0 157 10 0 0 0 170 16 3 0 66 6 16 76 97 121 111 117 116 80 114 111 112 101 114 116 105 101 115 8 0 0 0 4 4 0 0 0 0 17 9 104 82 101 115 105 122 105 110 103 17 9 118 82 101 115 105 122 105 110 103 17 13 100 105 115 97 98 108 101 76 97 121 111 117 116 16 3 0 66 6 11 80 114 111 116 111 79 98 106 101 99 116 8 0 0 0 1 4 0 0 0 0 16 3 0 66 6 8 84 101 120 116 76 105 110 101 8 0 0 0 11 4 0 0 0 0 17 4 108 101 102 116 17 5 114 105 103 104 116 17 3 116 111 112 17 6 98 111 116 116 111 109 17 10 102 105 114 115 116 73 110 100 101 120 17 9 108 97 115 116 73 110 100 101 120 17 14 105 110 116 101 114 110 97 108 83 112 97 99 101 115 17 12 112 97 100 100 105 110 103 87 105 100 116 104 17 8 98 97 115 101 108 105 110 101 17 10 108 101 102 116 77 97 114 103 105 110 16 3 0 66 6 11 66 111 114 100 101 114 83 116 121 108 101 8 0 0 0 1 4 0 0 0 0 16 3 0 66 6 6 83 121 109 98 111 108 8 0 0 0 1 4 0 0 0 0 16 3 0 66 6 17 79 114 100 101 114 101 100 67 111 108 108 101 99 116 105 111 110 8 0 0 0 4 4 0 0 0 0 17 5 97 114 114 97 121 17 10 102 105 114 115 116 73 110 100 101 120 17 9 108 97 115 116 73 110 100 101 120 16 3 0 66 6 13 68 105 115 112 108 97 121 79 98 106 101 99 116 8 0 0 0 1 4 0 0 0 0 1 1 16 3 0 66 6 6 78 117 109 98 101 114 8 0 0 0 1 4 0 0 0 0 1 16 3 0 66 6 9 68 105 115 107 80 114 111 120 121 8 0 0 0 5 4 0 0 0 0 17 16 103 108 111 98 97 108 79 98 106 101 99 116 78 97 109 101 17 11 112 114 101 83 101 108 101 99 116 111 114 17 19 99 111 110 115 116 114 117 99 116 111 114 83 101 108 101 99 116 111 114 17 15 99 111 110 115 116 114 117 99 116 111 114 65 114 103 115 16 3 0 66 6 20 84 101 120 116 77 111 114 112 104 70 111 114 69 100 105 116 86 105 101 119 8 0 0 0 24 4 0 0 0 0 10 0 0 0 101 10 0 0 0 109 10 0 0 0 116 10 0 0 0 127 10 0 0 0 139 10 0 0 0 146 10 0 0 0 157 10 0 0 0 170 10 0 0 1 192 10 0 0 1 203 10 0 0 1 209 10 0 0 1 219 10 0 0 1 230 10 0 0 1 238 10 0 0 1 249 10 0 0 2 6 10 0 0 2 17 10 0 0 2 34 10 0 0 2 43 10 0 0 2 56 10 0 0 2 66 17 8 101 100 105 116 86 105 101 119 17 10 97 99 99 101 112 116 79 110 67 82 1 1 16 3 0 66 10 0 0 0 32 8 0 0 0 3 4 0 0 0 0 10 0 0 6 91 10 0 0 6 98 1 1 1 1 1 16 3 0 66 6 6 83 108 105 100 101 114 8 0 0 0 25 4 0 0 0 0 10 0 0 0 101 10 0 0 0 109 10 0 0 0 116 10 0 0 0 127 10 0 0 0 139 10 0 0 0 146 10 0 0 0 157 10 0 0 0 170 10 0 0 0 183 10 0 0 0 190 10 0 0 0 200 10 0 0 13 138 10 0 0 13 146 10 0 0 13 153 10 0 0 13 171 10 0 0 13 189 10 0 0 13 203 10 0 0 13 216 10 0 0 13 228 10 0 0 13 242 10 0 0 14 0 10 0 0 14 9 10 0 0 14 34 10 0 0 14 59 1 1 16 3 0 66 6 5 77 111 114 112 104 8 0 0 0 7 4 0 0 0 0 10 0 0 0 101 10 0 0 0 109 10 0 0 0 116 10 0 0 0 127 10 0 0 0 139 10 0 0 0 146 1 1 16 3 0 66 6 17 84 101 120 116 70 111 110 116 82 101 102 101 114 101 110 99 101 8 0 0 0 3 4 0 0 0 0 10 0 0 17 184 17 4 102 111 110 116 1 16 3 0 66 6 4 84 101 120 116 8 0 0 0 3 4 0 0 0 0 17 6 115 116 114 105 110 103 17 4 114 117 110 115 1 1 1 1 16 3 0 66 6 7 73 110 116 101 103 101 114 8 0 0 0 1 4 0 0 0 0 1 16 3 0 66 6 10 66 121 116 101 83 116 114 105 110 103 8 0 0 0 1 4 0 0 0 0 17 12 115 117 112 101 114 99 108 97 115 115 101 115 16 3 0 32 4 0 0 0 70 8 0 0 0 149 1 1 1 1 1 1 1 16 3 0 66 10 0 0 0 79 10 0 0 3 119 16 3 0 66 10 0 0 1 131 10 0 0 9 122 16 3 0 66 10 0 0 2 79 10 0 0 24 61 16 3 0 66 10 0 0 2 177 10 0 0 6 145 16 3 0 66 10 0 0 3 56 10 0 0 24 61 16 3 0 66 10 0 0 3 202 10 0 0 6 145 16 3 0 66 10 0 0 3 119 10 0 0 20 192 1 1 1 16 3 0 66 10 0 0 3 234 10 0 0 8 223 16 3 0 66 10 0 0 4 8 10 0 0 0 79 16 3 0 66 10 0 0 5 84 10 0 0 15 234 16 3 0 66 10 0 0 5 237 10 0 0 21 226 1 1 16 3 0 66 10 0 0 6 61 10 0 0 0 32 16 3 0 66 10 0 0 6 36 10 0 0 9 22 16 3 0 66 10 0 0 6 109 10 0 0 24 197 16 3 0 66 10 0 0 6 145 10 0 0 21 74 1 1 1 16 3 0 66 10 0 0 6 170 10 0 0 9 22 16 3 0 66 10 0 0 6 191 10 0 0 21 253 1 1 16 3 0 66 10 0 0 6 219 10 0 0 19 212 1 1 1 1 16 3 0 66 10 0 0 7 23 10 0 0 6 145 1 16 3 0 66 10 0 0 7 56 10 0 0 7 23 16 3 0 66 10 0 0 7 110 10 0 0 24 61 1 1 1 1 16 3 0 66 10 0 0 7 209 10 0 0 4 8 1 1 16 3 0 66 10 0 0 8 223 10 0 0 6 145 16 3 0 66 10 0 0 8 195 10 0 0 9 56 16 3 0 66 10 0 0 8 248 10 0 0 6 170 16 3 0 66 10 0 0 8 168 10 0 0 6 145 1 1 1 1 1 16 3 0 66 10 0 0 9 22 10 0 0 9 223 1 16 3 0 66 10 0 0 9 56 10 0 0 22 113 1 1 1 1 16 3 0 66 10 0 0 9 81 10 0 0 6 145 16 3 0 66 10 0 0 9 122 10 0 0 20 192 1 1 1 1 1 1 16 3 0 66 10 0 0 9 198 10 0 0 9 22 1 1 1 16 3 0 66 10 0 0 9 223 10 0 0 10 5 16 3 0 66 10 0 0 10 5 10 0 0 6 145 1 16 3 0 66 10 0 0 10 32 10 0 0 6 145 16 3 0 66 10 0 0 13 62 10 0 0 23 173 16 3 0 66 10 0 0 14 244 10 0 0 9 22 16 3 0 66 10 0 0 15 234 10 0 0 6 145 16 3 0 66 10 0 0 15 58 10 0 0 6 145 16 3 0 66 10 0 0 16 6 10 0 0 9 22 16 3 0 66 10 0 0 16 28 10 0 0 9 56 1 16 3 0 66 10 0 0 16 57 10 0 0 22 113 1 1 1 16 3 0 66 10 0 0 16 108 10 0 0 10 5 16 3 0 66 10 0 0 16 150 10 0 0 6 145 16 3 0 66 10 0 0 17 158 10 0 0 3 202 1 1 16 3 0 66 10 0 0 17 202 10 0 0 6 145 1 1 1 1 1 16 3 0 66 10 0 0 18 119 10 0 0 19 176 16 3 0 66 10 0 0 18 194 10 0 0 19 241 16 3 0 66 10 0 0 21 253 10 0 0 9 198 16 3 0 66 10 0 0 19 212 10 0 0 22 82 16 3 0 66 10 0 0 19 241 10 0 0 20 192 16 3 0 66 10 0 0 19 176 10 0 0 6 145 16 3 0 66 10 0 0 0 66 10 0 0 3 234 16 3 0 66 10 0 0 21 101 10 0 0 6 145 16 3 0 66 10 0 0 21 5 10 0 0 6 145 16 3 0 66 10 0 0 20 192 10 0 0 24 61 16 3 0 66 10 0 0 21 74 17 3 110 105 108 16 3 0 66 10 0 0 21 226 10 0 0 6 145 16 3 0 66 10 0 0 20 118 10 0 0 9 223 16 3 0 66 10 0 0 22 19 10 0 0 9 223 16 3 0 66 10 0 0 22 82 10 0 0 6 145 1 1 16 3 0 66 10 0 0 22 113 10 0 0 8 223 1 16 3 0 66 10 0 0 22 136 10 0 0 6 145 16 3 0 66 10 0 0 22 230 10 0 0 1 131 1 1 16 3 0 66 10 0 0 0 32 10 0 0 16 108 1 1 1 1 1 16 3 0 66 10 0 0 23 173 10 0 0 3 119 1 1 16 3 0 66 10 0 0 24 61 10 0 0 6 145 1 1 16 3 0 66 10 0 0 24 114 10 0 0 17 158 1 16 3 0 66 10 0 0 24 159 10 0 0 9 22 1 1 1 1 16 3 0 66 10 0 0 24 197 10 0 0 22 113 1 16 3 0 66 10 0 0 24 221 10 0 0 9 198 16 10 2 79 15 15 144 242 24 241 106 10 63 255 255 255 8 0 0 0 5 16 35 7 209 15 15 144 242 24 241 106 10 0 0 29 50 8 0 0 0 1 16 10 7 110 15 15 160 243 24 225 105 10 0 0 29 71 8 0 0 0 1 16 24 22 230 15 0 0 0 9 64 86 10 0 0 29 92 8 0 0 0 0 1 16 4 19 176 4 57 158 103 153 4 0 0 0 32 11 128 6 1 7 255 230 230 230 16 12 17 202 3 2 3 1 1 1 3 1 1 1 16 3 6 61 4 0 0 0 9 8 0 0 0 17 1 16 3 0 66 6 23 117 110 102 111 99 117 115 101 100 83 101 108 101 99 116 105 111 110 67 111 108 111 114 16 4 19 176 4 7 52 129 32 1 1 16 3 0 66 6 11 100 114 111 112 69 110 97 98 108 101 100 2 1 1 1 16 3 0 66 6 10 98 108 105 110 107 83 116 97 114 116 16 7 6 109 4 0 0 0 142 4 0 0 0 72 4 0 0 0 252 4 0 0 0 207 4 0 0 0 94 4 0 0 0 3 16 3 0 66 6 10 99 97 114 101 116 67 111 108 111 114 16 4 19 176 4 58 216 212 0 4 0 0 0 32 11 128 6 1 7 255 235 141 0 1 16 3 0 66 6 21 105 110 100 105 99 97 116 101 75 101 121 98 111 97 114 100 70 111 99 117 115 6 5 110 101 118 101 114 1 16 3 0 66 6 10 97 110 105 109 97 116 105 111 110 115 16 4 22 19 8 0 0 0 10 1 1 1 1 1 1 1 1 1 1 4 0 0 0 1 4 0 0 0 0 16 3 0 66 6 14 115 101 108 101 99 116 105 111 110 67 111 108 111 114 16 4 19 176 4 7 86 25 134 4 0 0 0 32 11 128 6 1 7 255 29 97 97 16 3 0 66 6 11 100 114 97 103 69 110 97 98 108 101 100 2 1 16 3 0 66 6 17 115 105 103 110 97 108 67 111 110 110 101 99 116 105 111 110 115 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 1 4 0 0 0 0 16 4 19 176 4 0 0 0 0 4 0 0 0 32 11 128 6 1 7 255 0 0 1 16 13 15 58 8 0 0 0 1 16 5 22 136 10 0 0 5 84 1 6 30 102 97 109 105 108 121 78 97 109 101 58 112 111 105 110 116 83 105 122 101 58 101 109 112 104 97 115 105 115 58 8 0 0 0 3 17 17 66 105 116 115 116 114 101 97 109 86 101 114 97 83 97 110 115 4 0 0 0 20 4 0 0 0 0 1 4 0 0 0 28 4 0 0 0 22 4 0 0 0 0 4 0 0 0 0 4 0 0 0 0 4 0 0 0 0 16 5 22 136 6 13 84 101 120 116 67 111 110 115 116 97 110 116 115 1 6 3 97 116 58 8 0 0 0 1 6 16 68 101 102 97 117 108 116 84 97 98 115 65 114 114 97 121 16 5 22 136 10 0 0 31 159 1 10 0 0 31 175 8 0 0 0 1 6 22 68 101 102 97 117 108 116 77 97 114 103 105 110 84 97 98 115 65 114 114 97 121 4 0 0 0 2 1 16 3 24 159 17 33 68 105 101 115 32 105 115 116 32 101 105 110 32 84 101 120 116 109 111 114 112 104 32 109 105 116 32 73 110 104 97 108 116 16 6 14 244 8 0 0 0 1 4 0 0 0 33 8 0 0 0 1 8 0 0 0 1 16 3 24 114 1 10 0 0 31 48 4 0 0 0 24 4 0 0 0 1 4 0 0 0 23 2 16 18 16 150 10 0 0 31 253 16 13 15 58 10 0 0 31 43 1 4 0 0 0 28 4 0 0 0 22 4 0 0 0 0 4 0 0 0 0 4 0 0 0 0 4 0 0 0 0 10 0 0 31 155 10 0 0 31 203 4 0 0 0 2 1 4 0 0 0 1 16 3 9 81 16 3 8 168 4 0 0 0 3 4 0 0 0 0 16 3 8 168 4 0 0 0 148 4 0 152 150 127 8 0 0 0 3 16 11 21 101 4 0 0 0 3 4 0 0 0 148 4 0 0 0 0 4 0 0 0 28 4 0 0 0 1 4 0 0 0 13 4 0 0 0 2 4 0 0 0 21 4 0 0 0 22 1 16 11 21 101 4 0 0 0 3 4 0 0 0 148 4 0 0 0 28 4 0 0 0 56 4 0 0 0 14 4 0 0 0 23 4 0 0 0 0 4 0 0 0 22 4 0 0 0 22 1 16 11 21 101 4 0 0 0 3 4 0 0 0 148 4 0 0 0 56 4 0 0 0 84 4 0 0 0 24 4 0 0 0 33 4 0 0 0 0 4 0 0 0 37 4 0 0 0 22 1 16 3 8 168 4 0 0 0 0 4 0 0 0 0 4 0 0 0 32 4 0 0 0 127 1 1 3 3 1 1 10 0 0 30 58 10 0 0 30 182 10 0 0 29 216 1 1 1 1 1 15 0 48 0 0 0 0 1 1 1 10 0 0 29 71 3 1 16 5 18 119 4 0 0 0 0 1 1 4 0 0 0 0 16 12 17 202 3 2 3 1 1 1 3 1 1 1 16 3 6 61 4 0 0 0 3 8 0 0 0 5 1 1 16 3 0 66 6 13 99 108 105 112 83 117 98 109 111 114 112 104 115 2 16 3 0 66 10 0 0 30 121 16 4 22 19 8 0 0 0 10 1 1 1 1 1 1 1 1 1 1 4 0 0 0 1 4 0 0 0 0 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 16 4 7 56 16 3 8 168 4 255 255 255 6 4 255 255 255 13 14 0 0 0 0 0 0 0 0 14 63 240 0 0 0 0 0 0 4 0 0 0 1 10 0 0 29 117 1 10 0 0 31 16 16 12 17 202 3 2 3 1 1 1 3 1 1 1 16 3 6 61 4 0 0 0 15 8 0 0 0 23 1 16 3 0 66 6 17 97 100 111 114 110 109 101 110 116 82 101 97 100 79 110 108 121 16 4 19 176 4 44 169 74 238 1 1 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 1 1 16 3 0 66 6 9 109 105 110 72 101 105 103 104 116 4 0 0 0 20 16 3 0 66 6 19 97 100 111 114 110 109 101 110 116 78 111 114 109 97 108 69 100 105 116 16 4 19 176 4 55 185 57 125 1 1 1 16 3 0 66 6 11 98 111 114 100 101 114 83 116 121 108 101 16 4 5 237 1 16 4 19 176 4 0 80 20 5 4 0 0 0 32 11 128 6 1 7 255 1 1 1 4 0 0 0 1 16 3 0 66 10 0 0 30 121 16 4 22 19 8 0 0 0 10 1 1 1 1 1 1 1 1 1 1 4 0 0 0 1 4 0 0 0 0 1 16 3 0 66 6 15 119 114 97 112 66 111 114 100 101 114 67 111 108 111 114 16 5 18 119 4 49 44 75 18 1 1 4 0 0 0 76 16 3 0 66 6 13 97 100 111 114 110 109 101 110 116 68 105 102 102 16 4 19 176 4 21 40 169 38 1 1 1 16 3 0 66 6 15 97 100 111 114 110 109 101 110 116 82 101 102 117 115 101 16 4 19 176 4 25 248 142 148 1 1 16 3 0 66 6 17 97 100 111 114 110 109 101 110 116 67 111 110 102 108 105 99 116 16 4 19 176 4 47 244 1 0 1 1 16 3 0 66 6 8 109 105 110 87 105 100 116 104 4 0 0 0 10 16 3 0 66 6 19 102 114 97 109 101 65 100 111 114 110 109 101 110 116 87 105 100 116 104 4 0 0 0 2 16 3 0 66 6 22 107 101 121 98 111 97 114 100 67 97 112 116 117 114 101 70 105 108 116 101 114 115 16 2 8 248 10 0 0 29 71 16 3 0 66 6 17 97 100 111 114 110 109 101 110 116 68 105 102 102 69 100 105 116 16 4 19 176 4 43 58 28 164 1 1 16 3 0 66 6 13 97 99 99 101 112 116 82 101 115 99 97 108 101 2 4 0 0 0 1 10 0 0 35 0 1 1 3 16 37 13 62 15 24 80 242 24 241 106 1 8 0 0 0 6 16 9 9 122 15 24 80 242 24 241 106 10 0 0 36 98 10 0 0 29 129 1 16 4 19 176 4 18 228 185 46 4 0 0 0 32 11 128 6 1 7 255 75 75 75 16 12 17 202 3 2 3 1 1 1 3 1 1 16 37 10 32 10 0 0 36 98 6 18 109 111 117 115 101 68 111 119 110 73 110 83 108 105 100 101 114 58 10 0 0 36 98 6 15 115 99 114 111 108 108 65 98 115 111 108 117 116 101 58 1 1 10 0 0 36 98 6 16 109 111 117 115 101 85 112 73 110 83 108 105 100 101 114 58 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 3 6 61 4 0 0 0 2 8 0 0 0 5 1 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 16 4 19 176 4 0 80 20 5 1 1 4 0 0 0 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 1 10 0 0 37 51 16 9 9 122 15 24 80 242 24 241 106 10 0 0 36 98 10 0 0 29 129 1 16 5 18 119 4 18 228 185 46 1 1 4 0 0 0 178 16 12 17 202 3 3 3 1 1 1 3 1 1 1 16 3 6 61 4 0 0 0 2 8 0 0 0 5 1 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 10 0 0 33 154 4 0 0 0 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 1 10 0 0 33 154 16 9 9 122 15 24 81 96 24 241 106 10 0 0 36 98 8 0 0 0 1 16 8 3 56 15 24 81 96 24 241 106 10 0 0 37 237 8 0 0 0 0 1 16 4 19 176 4 0 0 3 255 4 0 0 0 32 11 128 6 1 7 255 0 0 255 16 12 17 202 3 2 3 1 1 1 3 1 1 1 16 3 6 61 4 0 0 0 1 8 0 0 0 5 1 1 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 16 6 6 219 7 0 0 0 38 100 133 0 22 255 1 1 1 25 0 18 255 1 1 1 25 0 14 255 1 1 1 33 0 10 255 1 1 1 33 0 7 255 1 1 1 97 0 4 0 0 0 10 4 0 0 0 10 4 0 0 0 32 1 1 10 0 0 36 137 16 12 17 202 3 3 3 1 1 1 3 1 1 16 37 10 32 10 0 0 36 98 6 14 115 99 114 111 108 108 68 111 119 110 73 110 105 116 1 1 1 1 10 0 0 36 98 6 17 102 105 110 105 115 104 101 100 83 99 114 111 108 108 105 110 103 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 3 6 61 4 0 0 0 2 8 0 0 0 5 1 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 10 0 0 37 51 4 0 0 0 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 1 10 0 0 37 51 16 9 9 122 15 24 80 242 24 240 252 10 0 0 36 98 8 0 0 0 1 16 8 3 56 15 24 80 242 24 240 252 10 0 0 39 93 10 0 0 38 18 1 10 0 0 38 24 16 12 17 202 3 2 3 1 1 1 3 1 1 1 16 3 6 61 4 0 0 0 1 8 0 0 0 5 1 1 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 16 6 6 219 7 0 0 0 38 100 141 0 7 255 1 1 1 33 0 10 255 1 1 1 33 0 14 255 1 1 1 25 0 18 255 1 1 1 25 0 22 255 1 1 1 89 0 4 0 0 0 10 4 0 0 0 10 4 0 0 0 32 1 1 10 0 0 36 137 16 12 17 202 3 3 3 1 1 1 3 1 1 16 37 10 32 10 0 0 36 98 6 12 115 99 114 111 108 108 85 112 73 110 105 116 1 1 1 1 10 0 0 36 98 10 0 0 38 223 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 3 6 61 4 0 0 0 2 8 0 0 0 5 1 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 10 0 0 37 51 4 0 0 0 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 1 10 0 0 37 51 16 9 9 122 15 24 80 242 24 240 252 10 0 0 36 98 8 0 0 0 1 16 8 3 56 15 24 80 242 24 240 252 10 0 0 40 171 10 0 0 38 18 1 10 0 0 38 24 16 12 17 202 3 2 3 1 1 1 3 1 1 1 16 3 6 61 4 0 0 0 1 8 0 0 0 5 1 1 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 16 6 6 219 7 0 0 0 31 100 133 0 18 255 1 1 1 25 0 18 255 1 1 1 25 0 18 255 1 1 1 25 0 18 255 1 1 1 133 0 4 0 0 0 10 4 0 0 0 10 4 0 0 0 32 1 1 10 0 0 36 137 16 12 17 202 3 3 3 1 1 1 3 1 1 16 37 10 32 10 0 0 36 98 6 20 109 101 110 117 66 117 116 116 111 110 77 111 117 115 101 68 111 119 110 58 1 1 1 1 1 1 10 0 0 36 98 6 21 109 101 110 117 66 117 116 116 111 110 77 111 117 115 101 69 110 116 101 114 58 10 0 0 36 98 6 21 109 101 110 117 66 117 116 116 111 110 77 111 117 115 101 76 101 97 118 101 58 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 3 6 61 4 0 0 0 2 8 0 0 0 5 1 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 10 0 0 37 51 4 0 0 0 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 1 10 0 0 37 51 16 9 9 122 15 24 80 242 24 241 106 10 0 0 36 98 10 0 0 29 129 1 16 5 18 119 4 13 195 112 220 1 1 4 0 0 0 89 16 12 17 202 3 2 3 1 1 1 3 1 1 16 37 10 32 10 0 0 36 98 6 15 115 99 114 111 108 108 80 97 103 101 73 110 105 116 58 1 1 1 1 10 0 0 36 98 10 0 0 38 223 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 3 6 61 4 0 0 0 1 8 0 0 0 5 1 1 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 0 10 0 0 31 16 1 10 0 0 33 154 16 12 17 202 3 2 3 1 1 1 3 1 1 1 16 3 6 61 4 0 0 0 2 8 0 0 0 5 1 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 16 4 19 176 4 63 255 252 0 4 0 0 0 32 11 128 6 1 7 255 255 255 0 4 0 0 0 2 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 0 10 0 0 43 7 10 0 0 29 71 1 3 10 0 0 36 115 10 0 0 34 48 6 16 118 83 99 114 111 108 108 66 97 114 86 97 108 117 101 58 1 10 0 0 37 106 10 0 0 36 137 3 1 4 0 0 0 0 4 0 0 0 1 1 1 6 8 118 101 114 116 105 99 97 108 10 0 0 40 171 10 0 0 39 93 10 0 0 37 237 10 0 0 42 38 4 0 0 0 28 4 0 0 1 24 14 63 240 0 0 0 0 0 0 6 28 118 83 99 114 111 108 108 66 97 114 77 101 110 117 66 117 116 116 111 110 80 114 101 115 115 101 100 58 1 1 1 1 10 0 0 29 92 3 3 1 1 3 16 37 13 62 15 0 0 0 0 64 8 1 8 0 0 0 6 16 9 9 122 15 0 0 0 0 64 8 10 0 0 43 227 10 0 0 29 129 1 10 0 0 36 137 16 12 17 202 3 2 3 1 1 1 3 1 1 16 37 10 32 10 0 0 43 227 10 0 0 36 182 10 0 0 43 227 10 0 0 36 207 1 1 10 0 0 43 227 10 0 0 36 231 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 3 6 61 4 0 0 0 2 8 0 0 0 5 1 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 16 4 19 176 4 0 80 20 5 1 1 4 0 0 0 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 1 10 0 0 44 122 16 9 9 122 15 0 0 0 0 64 8 10 0 0 43 227 10 0 0 29 129 1 16 5 18 119 4 18 228 185 46 1 1 4 0 0 0 178 16 12 17 202 3 3 3 1 1 1 3 1 1 1 16 3 6 61 4 0 0 0 2 8 0 0 0 5 1 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 10 0 0 33 154 4 0 0 0 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 1 10 0 0 33 154 16 9 9 122 15 255 192 0 0 64 8 10 0 0 43 227 8 0 0 0 1 16 8 3 56 15 255 192 0 0 64 8 10 0 0 45 52 10 0 0 38 18 1 10 0 0 38 24 16 12 17 202 3 2 3 1 1 1 3 1 1 1 16 3 6 61 4 0 0 0 1 8 0 0 0 5 1 1 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 16 6 6 219 7 0 0 0 24 64 109 0 10 255 1 1 1 25 0 14 255 1 1 1 21 0 7 255 1 1 1 81 0 4 0 0 0 8 4 0 0 0 8 4 0 0 0 32 1 1 10 0 0 36 137 16 12 17 202 3 3 3 1 1 1 3 1 1 16 37 10 32 10 0 0 43 227 10 0 0 38 198 1 1 1 1 10 0 0 43 227 10 0 0 38 223 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 3 6 61 4 0 0 0 2 8 0 0 0 5 1 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 10 0 0 44 122 4 0 0 0 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 1 10 0 0 44 122 16 9 9 122 15 0 0 0 0 128 8 10 0 0 43 227 8 0 0 0 1 16 8 3 56 15 0 0 0 0 128 8 10 0 0 46 107 10 0 0 38 18 1 10 0 0 38 24 16 12 17 202 3 2 3 1 1 1 3 1 1 1 16 3 6 61 4 0 0 0 1 8 0 0 0 5 1 1 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 16 6 6 219 7 0 0 0 24 64 117 0 7 255 1 1 1 21 0 14 255 1 1 1 25 0 10 255 1 1 1 73 0 4 0 0 0 8 4 0 0 0 8 4 0 0 0 32 1 1 10 0 0 36 137 16 12 17 202 3 3 3 1 1 1 3 1 1 16 37 10 32 10 0 0 43 227 10 0 0 40 36 1 1 1 1 10 0 0 43 227 10 0 0 38 223 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 3 6 61 4 0 0 0 2 8 0 0 0 5 1 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 10 0 0 44 122 4 0 0 0 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 1 10 0 0 44 122 16 9 9 122 15 0 0 0 0 128 8 10 0 0 43 227 8 0 0 0 1 16 8 3 56 15 0 0 0 0 128 8 10 0 0 47 162 10 0 0 38 18 1 10 0 0 38 24 16 12 17 202 3 2 3 1 1 1 3 1 1 1 16 3 6 61 4 0 0 0 1 8 0 0 0 5 1 1 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 16 6 6 219 7 0 0 0 17 64 109 0 10 255 1 1 1 25 0 10 255 1 1 1 109 0 4 0 0 0 8 4 0 0 0 8 4 0 0 0 32 1 1 10 0 0 36 137 16 12 17 202 3 3 3 1 1 1 3 1 1 16 37 10 32 10 0 0 43 227 10 0 0 41 107 1 1 1 1 1 1 10 0 0 43 227 10 0 0 41 140 10 0 0 43 227 10 0 0 41 168 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 3 6 61 4 0 0 0 2 8 0 0 0 5 1 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 10 0 0 44 122 4 0 0 0 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 1 10 0 0 44 122 16 9 9 122 15 0 0 0 0 64 8 10 0 0 43 227 10 0 0 29 129 1 16 5 18 119 4 13 195 112 220 1 1 4 0 0 0 89 16 12 17 202 3 2 3 1 1 1 3 1 1 16 37 10 32 10 0 0 43 227 10 0 0 42 98 1 1 1 1 10 0 0 43 227 10 0 0 38 223 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 3 6 61 4 0 0 0 1 8 0 0 0 5 1 1 1 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 0 10 0 0 31 16 1 10 0 0 33 154 16 12 17 202 3 2 3 1 1 1 3 1 1 1 16 3 6 61 4 0 0 0 2 8 0 0 0 5 1 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 10 0 0 43 7 4 0 0 0 2 1 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 0 10 0 0 43 7 10 0 0 29 71 1 3 10 0 0 43 244 10 0 0 34 48 6 16 104 83 99 114 111 108 108 66 97 114 86 97 108 117 101 58 1 10 0 0 44 177 10 0 0 36 137 3 1 4 0 0 0 0 4 0 0 0 1 1 1 6 10 104 111 114 105 122 111 110 116 97 108 10 0 0 47 162 10 0 0 46 107 10 0 0 45 52 10 0 0 48 218 4 0 0 0 10 4 0 0 0 100 10 0 0 43 174 6 28 104 83 99 114 111 108 108 66 97 114 77 101 110 117 66 117 116 116 111 110 80 114 101 115 115 101 100 58 1 1 1 1 10 0 0 30 109 6 10 119 104 101 110 78 101 101 100 101 100 4 0 0 0 10 10 0 0 29 113 1 1 1 2 2 16 4 20 118 4 0 0 0 34 4 0 0 0 33 4 0 0 0 1 3 1 1 4 0 0 0 11 16 3 16 57 4 0 0 0 237 4 0 0 0 100 16 9 9 122 15 15 64 237 15 224 247 10 0 0 29 50 10 0 0 29 129 1 10 0 0 31 16 16 12 17 202 3 2 3 1 1 1 3 1 1 16 37 10 32 1 1 10 0 0 29 50 6 28 100 114 97 103 67 111 114 110 101 114 58 101 118 101 110 116 58 102 114 111 109 72 97 110 100 108 101 58 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 16 3 6 61 4 0 0 0 4 8 0 0 0 5 16 3 0 66 6 18 109 111 114 112 104 105 99 76 97 121 101 114 78 117 109 98 101 114 4 0 0 0 200 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 10 0 0 31 16 4 0 0 0 2 16 3 0 66 10 0 0 30 121 16 4 22 19 8 0 0 0 10 1 1 1 1 1 1 1 1 1 1 4 0 0 0 1 4 0 0 0 0 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 2 10 0 0 31 16 16 9 9 122 15 24 160 237 25 64 247 10 0 0 29 50 10 0 0 29 129 1 10 0 0 31 16 16 12 17 202 3 2 3 1 1 1 3 1 1 16 37 10 32 1 1 10 0 0 29 50 10 0 0 50 233 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 0 0 0 2 1 1 1 1 1 1 1 1 1 1 1 16 3 6 61 4 0 0 0 4 8 0 0 0 5 16 3 0 66 10 0 0 51 61 4 0 0 0 200 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 10 0 0 31 16 4 0 0 0 2 16 3 0 66 10 0 0 30 121 16 4 22 19 8 0 0 0 10 1 1 1 1 1 1 1 1 1 1 4 0 0 0 1 4 0 0 0 0 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 2 10 0 0 31 16 16 9 9 122 15 24 161 101 25 65 111 10 0 0 29 50 10 0 0 29 129 1 10 0 0 31 16 16 12 17 202 3 2 3 1 1 1 3 1 1 16 37 10 32 1 1 10 0 0 29 50 10 0 0 50 233 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 0 0 0 3 1 1 1 1 1 1 1 1 1 1 1 16 3 6 61 4 0 0 0 4 8 0 0 0 5 16 3 0 66 10 0 0 51 61 4 0 0 0 200 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 10 0 0 31 16 4 0 0 0 2 16 3 0 66 10 0 0 30 121 16 4 22 19 8 0 0 0 10 1 1 1 1 1 1 1 1 1 1 4 0 0 0 1 4 0 0 0 0 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 2 10 0 0 31 16 16 9 9 122 15 15 65 101 15 225 111 10 0 0 29 50 10 0 0 29 129 1 10 0 0 31 16 16 12 17 202 3 2 3 1 1 1 3 1 1 16 37 10 32 1 1 10 0 0 29 50 10 0 0 50 233 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 0 0 0 4 1 1 1 1 1 1 1 1 1 1 1 16 3 6 61 4 0 0 0 4 8 0 0 0 5 16 3 0 66 10 0 0 51 61 4 0 0 0 200 1 16 3 0 66 10 0 0 34 238 16 4 5 237 1 10 0 0 31 16 4 0 0 0 2 16 3 0 66 10 0 0 30 121 16 4 22 19 8 0 0 0 10 1 1 1 1 1 1 1 1 1 1 4 0 0 0 1 4 0 0 0 0 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 4 0 0 0 2 10 0 0 31 16 1 10 0 0 33 154 16 12 17 202 3 2 3 1 1 1 3 1 1 1 16 3 6 61 4 0 0 0 4 8 0 0 0 5 16 3 0 66 6 11 108 97 121 111 117 116 70 114 97 109 101 16 9 2 177 16 3 16 57 4 0 0 0 47 4 0 0 1 60 4 0 0 0 0 16 3 16 57 4 0 0 0 1 4 0 0 0 79 4 0 0 0 0 16 3 16 57 4 0 0 0 197 4 0 0 1 60 4 0 0 0 0 16 3 16 57 4 0 0 0 41 4 0 0 0 79 4 0 0 0 0 16 3 0 66 6 16 108 97 121 111 117 116 80 114 111 112 101 114 116 105 101 115 16 4 21 5 6 9 115 112 97 99 101 70 105 108 108 10 0 0 54 239 3 1 16 3 0 66 10 0 0 30 121 16 4 22 19 8 0 0 0 10 1 1 1 1 1 1 1 1 1 1 4 0 0 0 1 4 0 0 0 0 16 3 0 66 10 0 0 30 228 16 3 0 32 4 0 0 0 0 8 0 0 0 5 1 1 1 1 1 16 4 22 19 8 0 0 0 10 10 0 0 50 182 10 0 0 51 187 10 0 0 52 152 10 0 0 53 117 1 1 1 1 1 1 4 0 0 0 1 4 0 0 0 4 2 10 0 0 29 71 33 13 13] \ No newline at end of file diff --git a/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json b/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json index c247535..f46ef1b 100644 --- a/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json +++ b/packages/Presenter-Tests.package/PSPresentationToolTest.class/methodProperties.json @@ -33,6 +33,6 @@ "testZeroSlidesRegression" : "LM 5/11/2018 18:09", "testnextSlideClampsToMax" : "LM 5/18/2018 18:42", "tool" : "LM 5/16/2018 17:13", - "validMorphFileData" : "LM 6/8/2018 19:21", + "validMorphFileData" : "LM 6/13/2018 17:48", "window" : "LM 5/11/2018 17:57", "window:" : "LM 5/11/2018 17:59" } }