summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2015-11-03 14:18:23 +0200
committerTor Lillqvist <tml@collabora.com>2015-11-05 21:32:55 +0000
commit95e13b89ecb70eb0a03a0c68f0f1e41d02acef22 (patch)
tree2f20d1ccd211f0466aeef862570b343cf263aefb
parent0c39c456f47c14e2b7f86d1bc6857dc0e2ca6cb3 (diff)
tdf#36946: Organise transitions hierarchically
Introduce the concept of transition groups and sets. (Suggestions for other terminology welcome.) A collection of transitions that differ only in the direction the transition is applied, or similar minor fashion, are called a set, and they show up only once in the long list of transitions in the UI. Each set also has an icon. Sets are then collected into groups based on some overall common feature, like "subtle" or "3D". Groups do not yet show up in the UI, but are only present in the configuration registry. I made only a few silly icons as I am not an artist. Not intended to be a final design in any way for them. Change-Id: I148cb7f8dc2e3ecd70cae188908dd02053308239 Reviewed-on: https://gerrit.libreoffice.org/19797 Reviewed-by: Tor Lillqvist <tml@collabora.com> Tested-by: Tor Lillqvist <tml@collabora.com>
-rw-r--r--icon-themes/galaxy/sd/cmd/transition-none.pngbin0 -> 1086 bytes
-rw-r--r--icon-themes/galaxy/sd/cmd/transition-random-bars.pngbin0 -> 1248 bytes
-rw-r--r--icon-themes/galaxy/sd/cmd/transition-uncover.pngbin0 -> 1411 bytes
-rw-r--r--icon-themes/galaxy/sd/cmd/transition-wheel.pngbin0 -> 1521 bytes
-rw-r--r--icon-themes/galaxy/sd/cmd/transition-wipe.pngbin0 -> 1449 bytes
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu945
-rw-r--r--officecfg/registry/schema/org/openoffice/Office/UI/Effects.xcs47
-rw-r--r--sd/inc/TransitionPreset.hxx11
-rw-r--r--sd/source/core/TransitionPreset.cxx87
-rw-r--r--sd/source/ui/animations/SlideTransitionPane.cxx216
-rw-r--r--sd/source/ui/animations/SlideTransitionPane.hxx14
-rw-r--r--sd/source/ui/dlg/dlgass.cxx28
-rw-r--r--sd/source/ui/dlg/dlgctrls.cxx93
-rw-r--r--sd/source/ui/inc/dlgctrls.hxx5
-rw-r--r--sd/uiconfig/simpress/ui/assistentdialog.ui33
-rw-r--r--sd/uiconfig/simpress/ui/slidetransitionspanel.ui32
16 files changed, 1229 insertions, 282 deletions
diff --git a/icon-themes/galaxy/sd/cmd/transition-none.png b/icon-themes/galaxy/sd/cmd/transition-none.png
new file mode 100644
index 000000000000..71b14a1d42bf
--- /dev/null
+++ b/icon-themes/galaxy/sd/cmd/transition-none.png
Binary files differ
diff --git a/icon-themes/galaxy/sd/cmd/transition-random-bars.png b/icon-themes/galaxy/sd/cmd/transition-random-bars.png
new file mode 100644
index 000000000000..e27b13c3a114
--- /dev/null
+++ b/icon-themes/galaxy/sd/cmd/transition-random-bars.png
Binary files differ
diff --git a/icon-themes/galaxy/sd/cmd/transition-uncover.png b/icon-themes/galaxy/sd/cmd/transition-uncover.png
new file mode 100644
index 000000000000..f799ef8cd3b3
--- /dev/null
+++ b/icon-themes/galaxy/sd/cmd/transition-uncover.png
Binary files differ
diff --git a/icon-themes/galaxy/sd/cmd/transition-wheel.png b/icon-themes/galaxy/sd/cmd/transition-wheel.png
new file mode 100644
index 000000000000..b674a007cfad
--- /dev/null
+++ b/icon-themes/galaxy/sd/cmd/transition-wheel.png
Binary files differ
diff --git a/icon-themes/galaxy/sd/cmd/transition-wipe.png b/icon-themes/galaxy/sd/cmd/transition-wipe.png
new file mode 100644
index 000000000000..6f5cbfbe2b8b
--- /dev/null
+++ b/icon-themes/galaxy/sd/cmd/transition-wipe.png
Binary files differ
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu
index 84376c424382..a7a1bfd1df9b 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu
@@ -1314,370 +1314,1025 @@
</prop>
</node>
</node>
- <node oor:name="Transitions">
- <node oor:name="venetian-blinds-horizontal" oor:op="replace">
+ <!-- Transitions are organised into groups, sets and variants. Is that enough levels? Is this
+ terminology good?
+
+ A group is a collection of transition sets that have some common high-level property, like
+ being "subtle" or "exciting".
+
+ A set is a collection of transition variants that differ only by the direction, or some
+ similar property, of the transition, but the actual transition is otherwise mostly the same
+ in all variants, i.e. it is produced by the same code with just different parameters.
+
+ In theory, we could use the css::animations::TransitionType and TransitionSubtype for the
+ set/variant typology, but unfortunately the "3D" transitions added in 2007 don't follow
+ that scheme; there the same transition type is used for wildly differing transitions.
+ -->
+ <node oor:name="TransitionGroups">
+ <node oor:name="subtle" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Venetian Blinds Horizontal</value>
+ <value xml:lang="en-US">Subtle</value>
</prop>
</node>
- <node oor:name="venetian-blinds-vertical" oor:op="replace">
+ <node oor:name="exciting" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Venetian Blinds Vertical</value>
+ <value xml:lang="en-US">Exciting</value>
</prop>
</node>
- <node oor:name="box-in" oor:op="replace">
+ </node>
+ <node oor:name="TransitionSets">
+ <node oor:name="venetian-blinds" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Box In</value>
+ <value xml:lang="en-US">Venetian Blinds</value>
</prop>
</node>
- <node oor:name="box-out" oor:op="replace">
+ <node oor:name="venetian-blinds-3d" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>exciting</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Box Out</value>
+ <value xml:lang="en-US">3D Venetian Blinds</value>
</prop>
</node>
- <node oor:name="checkerboard-across" oor:op="replace">
+ <node oor:name="box" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Checkerboard Across</value>
+ <value xml:lang="en-US">Box</value>
</prop>
</node>
- <node oor:name="checkerboard-down" oor:op="replace">
+ <node oor:name="checkerboard" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Checkerboard Down</value>
+ <value xml:lang="en-US">Checkerboard</value>
</prop>
</node>
- <node oor:name="comb-horizontal" oor:op="replace">
+ <node oor:name="comb" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Comb Horizontal</value>
+ <value xml:lang="en-US">Comb</value>
</prop>
</node>
- <node oor:name="comb-vertical" oor:op="replace">
+ <node oor:name="cover" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Comb Vertical</value>
+ <value xml:lang="en-US">Cover</value>
</prop>
</node>
- <node oor:name="cover-down" oor:op="replace">
+ <node oor:name="uncover" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Cover Down</value>
+ <value xml:lang="en-US">Uncover</value>
</prop>
</node>
- <node oor:name="cover-left" oor:op="replace">
+ <node oor:name="wipe" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Cover Left</value>
+ <value xml:lang="en-US">Wipe</value>
</prop>
</node>
- <node oor:name="cover-right" oor:op="replace">
+ <node oor:name="wedge" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Cover Right</value>
+ <value xml:lang="en-US">Wedge</value>
</prop>
</node>
- <node oor:name="cover-up" oor:op="replace">
+ <node oor:name="wheel" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Cover Up</value>
+ <value xml:lang="en-US">Wheel</value>
</prop>
</node>
- <node oor:name="cover-left-down" oor:op="replace">
+ <node oor:name="push" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Cover Left-Down</value>
+ <value xml:lang="en-US">Push</value>
</prop>
</node>
- <node oor:name="cover-left-up" oor:op="replace">
+ <node oor:name="cut" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Cover Left-Up</value>
+ <value xml:lang="en-US">Cut</value>
</prop>
</node>
- <node oor:name="cover-right-down" oor:op="replace">
+ <node oor:name="fade" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Cover Right-Down</value>
+ <value xml:lang="en-US">Fade</value>
</prop>
</node>
- <node oor:name="cover-right-up" oor:op="replace">
+ <node oor:name="random-bars" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Cover Right-Up</value>
+ <value xml:lang="en-US">Random Bars</value>
</prop>
</node>
- <node oor:name="cut" oor:op="replace">
+ <node oor:name="shape" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Cut</value>
+ <value xml:lang="en-US">Shape</value>
</prop>
</node>
- <node oor:name="cut-through-black" oor:op="replace">
+ <node oor:name="split" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Split</value>
+ </prop>
+ </node>
+ <node oor:name="diagonal-squares" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Diagonal Squares</value>
+ </prop>
+ </node>
+ <node oor:name="random" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Cut Through Black</value>
+ <value xml:lang="en-US">Random</value>
</prop>
</node>
<node oor:name="dissolve" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>subtle</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">Dissolve</value>
</prop>
</node>
- <node oor:name="fade-smoothly" oor:op="replace">
+ <node oor:name="finedissolve" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>exciting</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Fade Smoothly</value>
+ <value xml:lang="en-US">Fine Dissolve</value>
</prop>
</node>
- <node oor:name="fade-through-black" oor:op="replace">
+ <node oor:name="newsflash" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>exciting</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Fade Through Black</value>
+ <value xml:lang="en-US">Newsflash</value>
</prop>
</node>
- <node oor:name="zoom-rotate-in" oor:op="replace">
+ <node oor:name="tile-flip" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>exciting</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Newsflash</value>
+ <value xml:lang="en-US">Flipping Tiles</value>
</prop>
</node>
- <node oor:name="push-down" oor:op="replace">
+ <node oor:name="cube-turning" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>exciting</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Push Down</value>
+ <value xml:lang="en-US">Cube Turning</value>
</prop>
</node>
- <node oor:name="push-left" oor:op="replace">
+ <node oor:name="revolving-circles" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>exciting</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Push Left</value>
+ <value xml:lang="en-US">Revolving Circles</value>
</prop>
</node>
- <node oor:name="push-right" oor:op="replace">
+ <node oor:name="turning-helix" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>exciting</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Push Right</value>
+ <value xml:lang="en-US">Turning Helix</value>
</prop>
</node>
- <node oor:name="push-up" oor:op="replace">
+ <node oor:name="fall" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>exciting</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Push Up</value>
+ <value xml:lang="en-US">Fall</value>
</prop>
</node>
- <node oor:name="random-bars-horizontal" oor:op="replace">
+ <node oor:name="turn-around" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>exciting</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Random Bars Horizontal</value>
+ <value xml:lang="en-US">Turn Around</value>
</prop>
</node>
- <node oor:name="random-bars-vertical" oor:op="replace">
+ <node oor:name="turn-down" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>exciting</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Random Bars Vertical</value>
+ <value xml:lang="en-US">Turn Down</value>
</prop>
</node>
- <node oor:name="shape-circle" oor:op="replace">
+ <node oor:name="iris" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>exciting</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Shape Circle</value>
+ <value xml:lang="en-US">Iris</value>
</prop>
</node>
- <node oor:name="shape-diamond" oor:op="replace">
+ <node oor:name="rochade" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>exciting</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Shape Diamond</value>
+ <value xml:lang="en-US">Rochade</value>
</prop>
</node>
- <node oor:name="shape-plus" oor:op="replace">
+ <node oor:name="static" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>exciting</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Shape Plus</value>
+ <value xml:lang="en-US">Static</value>
</prop>
</node>
- <node oor:name="split-horizontal-in" oor:op="replace">
+ <node oor:name="vortex" oor:op="replace">
+ <prop oor:name="Group" oor:type="xs:string">
+ <value>exciting</value>
+ </prop>
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Split Horizontal In</value>
+ <value xml:lang="en-US">Vortex</value>
</prop>
</node>
- <node oor:name="split-horizontal-out" oor:op="replace">
+ </node>
+ <node oor:name="TransitionVariants">
+ <node oor:name="plain" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Split Horizontal Out</value>
+ <value xml:lang="en-US">Plain</value>
</prop>
</node>
- <node oor:name="split-vertical-in" oor:op="replace">
+ <node oor:name="smoothly" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Split Vertical In</value>
+ <value xml:lang="en-US">Smoothly</value>
</prop>
</node>
- <node oor:name="split-vertical-out" oor:op="replace">
+ <node oor:name="through-black" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Split Vertical Out</value>
+ <value xml:lang="en-US">Through Black</value>
</prop>
</node>
- <node oor:name="diagonal-squares-left-down" oor:op="replace">
+ <node oor:name="left-right" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Diagonal Squares Left-Down</value>
+ <value xml:lang="en-US">Left to Right</value>
</prop>
</node>
- <node oor:name="diagonal-squares-left-up" oor:op="replace">
+ <node oor:name="top-left-bottom-right" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Diagonal Squares Left-Up</value>
+ <value xml:lang="en-US">Top Left to Bottom Right</value>
</prop>
</node>
- <node oor:name="diagonal-squares-right-down" oor:op="replace">
+ <node oor:name="top-bottom" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Diagonal Squares Right-Down</value>
+ <value xml:lang="en-US">Top to Bottom</value>
</prop>
</node>
- <node oor:name="diagonal-squares-right-up" oor:op="replace">
+ <node oor:name="top-right-bottom-left" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Diagonal Squares Right-Up</value>
+ <value xml:lang="en-US">Top Right to Bottom Left</value>
</prop>
</node>
- <node oor:name="uncover-down" oor:op="replace">
+ <node oor:name="right-left" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Uncover Down</value>
+ <value xml:lang="en-US">Right to Left</value>
</prop>
</node>
- <node oor:name="uncover-left" oor:op="replace">
+ <node oor:name="bottom-right-top-left" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Uncover Left</value>
+ <value xml:lang="en-US">Bottom Right to Top Left</value>
</prop>
</node>
- <node oor:name="uncover-right" oor:op="replace">
+ <node oor:name="bottom-top" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Uncover Right</value>
+ <value xml:lang="en-US">Bottom to Top</value>
</prop>
</node>
- <node oor:name="uncover-up" oor:op="replace">
+ <node oor:name="bottom-left-top-right" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Uncover Up</value>
+ <value xml:lang="en-US">Bottom Left to Top Right</value>
</prop>
</node>
- <node oor:name="uncover-left-down" oor:op="replace">
+ <node oor:name="vertical" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Uncover Left-Down</value>
+ <value xml:lang="en-US">Vertical</value>
</prop>
</node>
- <node oor:name="uncover-left-up" oor:op="replace">
+ <node oor:name="horizontal" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Uncover Left-Up</value>
+ <value xml:lang="en-US">Horizontal</value>
</prop>
</node>
- <node oor:name="uncover-right-down" oor:op="replace">
+ <node oor:name="in" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Uncover Right-Down</value>
+ <value xml:lang="en-US">In</value>
</prop>
</node>
- <node oor:name="uncover-right-up" oor:op="replace">
+ <node oor:name="out" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Uncover Right-Up</value>
+ <value xml:lang="en-US">Out</value>
</prop>
</node>
- <node oor:name="wedge" oor:op="replace">
+ <node oor:name="across" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Wedge</value>
+ <value xml:lang="en-US">Across</value>
</prop>
</node>
- <node oor:name="wheel-clockwise-1-spoke" oor:op="replace">
+ <node oor:name="down" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Wheel Clockwise, 1 Spoke</value>
+ <value xml:lang="en-US">Down</value>
</prop>
</node>
- <node oor:name="wheel-clockwise-2-spokes" oor:op="replace">
+ <node oor:name="up" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Wheel Clockwise, 2 Spokes</value>
+ <value xml:lang="en-US">Up</value>
</prop>
</node>
- <node oor:name="wheel-clockwise-3-spokes" oor:op="replace">
+ <node oor:name="right" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Wheel Clockwise, 3 Spokes</value>
+ <value xml:lang="en-US">Right</value>
</prop>
</node>
- <node oor:name="wheel-clockwise-4-spokes" oor:op="replace">
+ <node oor:name="left" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Wheel Clockwise, 4 Spokes</value>
+ <value xml:lang="en-US">Left</value>
</prop>
</node>
- <node oor:name="wheel-clockwise-8-spokes" oor:op="replace">
+ <node oor:name="circle" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Wheel Clockwise, 8 Spokes</value>
+ <value xml:lang="en-US">Circle</value>
</prop>
</node>
- <node oor:name="wipe-down" oor:op="replace">
+ <node oor:name="diamond" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Wipe Down</value>
+ <value xml:lang="en-US">Diamond</value>
</prop>
</node>
- <node oor:name="wipe-left" oor:op="replace">
+ <node oor:name="plus" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Wipe Left</value>
+ <value xml:lang="en-US">Plus</value>
</prop>
</node>
- <node oor:name="wipe-right" oor:op="replace">
+ <node oor:name="horizontal-in" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Wipe Right</value>
+ <value xml:lang="en-US">Horizontal In</value>
</prop>
</node>
- <node oor:name="wipe-up" oor:op="replace">
+ <node oor:name="horizontal-out" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Wipe Up</value>
+ <value xml:lang="en-US">Horizontal Out</value>
</prop>
</node>
- <node oor:name="random-transition" oor:op="replace">
+ <node oor:name="vertical-in" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Random Transition</value>
+ <value xml:lang="en-US">Vertical In</value>
</prop>
</node>
- <node oor:name="tile-flip" oor:op="replace">
+ <node oor:name="vertical-out" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Flipping tiles</value>
+ <value xml:lang="en-US">Vertical Out</value>
</prop>
</node>
- <node oor:name="outside-cube" oor:op="replace">
+ <node oor:name="cw-1-spoke" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Outside turning cube</value>
+ <value xml:lang="en-US">Clockwise 1 Spoke</value>
</prop>
</node>
- <node oor:name="revolving-circles" oor:op="replace">
+ <node oor:name="cw-2-spoke" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Revolving circles</value>
+ <value xml:lang="en-US">Clockwise 2 Spokes</value>
</prop>
</node>
- <node oor:name="turning-helix" oor:op="replace">
+ <node oor:name="cw-3-spoke" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Turning helix</value>
+ <value xml:lang="en-US">Clockwise 3 Spokes</value>
</prop>
</node>
- <node oor:name="inside-cube" oor:op="replace">
+ <node oor:name="cw-4-spoke" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Inside turning cube</value>
+ <value xml:lang="en-US">Clockwise 4 Spokes</value>
</prop>
</node>
- <node oor:name="fall" oor:op="replace">
+ <node oor:name="cw-8-spoke" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Fall</value>
+ <value xml:lang="en-US">Clockwise 8 Spokes</value>
</prop>
</node>
- <node oor:name="turn-around" oor:op="replace">
+ <node oor:name="ccw-1-spoke" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Turn around</value>
+ <value xml:lang="en-US">Counterclockwise 1 Spoke</value>
</prop>
</node>
- <node oor:name="iris" oor:op="replace">
+ <node oor:name="ccw-2-spoke" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Iris</value>
+ <value xml:lang="en-US">Counterclockwise 2 Spokes</value>
</prop>
</node>
- <node oor:name="turn-down" oor:op="replace">
+ <node oor:name="ccw-3-spoke" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Turn down</value>
+ <value xml:lang="en-US">Counterclockwise 3 Spokes</value>
</prop>
</node>
- <node oor:name="rochade" oor:op="replace">
+ <node oor:name="ccw-4-spoke" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Rochade</value>
+ <value xml:lang="en-US">Counterclockwise 4 Spokes</value>
</prop>
</node>
- <node oor:name="venetian3dv" oor:op="replace">
+ <node oor:name="ccw-8-spoke" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Venetian Blinds 3D Vertical</value>
+ <value xml:lang="en-US">Counterclockwise 8 Spokes</value>
</prop>
</node>
- <node oor:name="venetian3dh" oor:op="replace">
+ <node oor:name="inside" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Venetian Blinds 3D Horizontal</value>
+ <value xml:lang="en-US">Inside</value>
</prop>
</node>
- <node oor:name="static" oor:op="replace">
+ <node oor:name="outside" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Static</value>
+ <value xml:lang="en-US">Outside</value>
+ </prop>
+ </node>
+ </node>
+ <node oor:name="Transitions">
+ <node oor:name="venetian-blinds-horizontal" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>venetian-blinds</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>horizontal</value>
+ </prop>
+ </node>
+ <node oor:name="venetian-blinds-vertical" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>venetian-blinds</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>vertical</value>
+ </prop>
+ </node>
+ <node oor:name="box-in" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>box</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>in</value>
+ </prop>
+ </node>
+ <node oor:name="box-out" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>box</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>out</value>
+ </prop>
+ </node>
+ <node oor:name="checkerboard-across" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>checkerboard</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>across</value>
+ </prop>
+ </node>
+ <node oor:name="checkerboard-down" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>checkerboard</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>down</value>
+ </prop>
+ </node>
+ <node oor:name="comb-horizontal" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>comb</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>horizontal</value>
+ </prop>
+ </node>
+ <node oor:name="comb-vertical" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>comb</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>vertical</value>
+ </prop>
+ </node>
+ <node oor:name="cover-down" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>cover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>top-bottom</value>
+ </prop>
+ </node>
+ <node oor:name="cover-left" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>cover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>right-left</value>
+ </prop>
+ </node>
+ <node oor:name="cover-right" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>cover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>left-right</value>
+ </prop>
+ </node>
+ <node oor:name="cover-up" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>cover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>bottom-top</value>
+ </prop>
+ </node>
+ <node oor:name="cover-left-down" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>cover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>top-left-bottom-right</value>
+ </prop>
+ </node>
+ <node oor:name="cover-left-up" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>cover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>bottom-left-top-right</value>
+ </prop>
+ </node>
+ <node oor:name="cover-right-down" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>cover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>top-left-bottom-right</value>
+ </prop>
+ </node>
+ <node oor:name="cover-right-up" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>cover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>bottom-left-top-right</value>
+ </prop>
+ </node>
+ <node oor:name="cut" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>cut</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>plain</value>
+ </prop>
+ </node>
+ <node oor:name="cut-through-black" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>cut</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>through-black</value>
+ </prop>
+ </node>
+ <node oor:name="dissolve" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>dissolve</value>
</prop>
</node>
<node oor:name="finedissolve" oor:op="replace">
- <prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Fine Dissolve</value>
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>finedissolve</value>
+ </prop>
+ </node>
+ <node oor:name="fade-smoothly" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>fade</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>smoothly</value>
+ </prop>
+ </node>
+ <node oor:name="fade-through-black" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>fade</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>through-black</value>
+ </prop>
+ </node>
+ <node oor:name="zoom-rotate-in" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>newsflash</value>
+ </prop>
+ </node>
+ <node oor:name="push-down" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>push</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>top-bottom</value>
+ </prop>
+ </node>
+ <node oor:name="push-left" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>push</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>right-left</value>
+ </prop>
+ </node>
+ <node oor:name="push-right" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>push</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>left-right</value>
+ </prop>
+ </node>
+ <node oor:name="push-up" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>push</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>bottom-top</value>
+ </prop>
+ </node>
+ <node oor:name="random-bars-horizontal" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>random-bars</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>horizontal</value>
+ </prop>
+ </node>
+ <node oor:name="random-bars-vertical" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>random-bars</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>vertical</value>
+ </prop>
+ </node>
+ <node oor:name="shape-circle" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>shape</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>circle</value>
+ </prop>
+ </node>
+ <node oor:name="shape-diamond" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>shape</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>diamond</value>
+ </prop>
+ </node>
+ <node oor:name="shape-plus" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>shape</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>plus</value>
+ </prop>
+ </node>
+ <node oor:name="split-horizontal-in" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>split</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>horizontal-in</value>
+ </prop>
+ </node>
+ <node oor:name="split-horizontal-out" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>split</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>horizontal-out</value>
+ </prop>
+ </node>
+ <node oor:name="split-vertical-in" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>split</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>vertical-in</value>
+ </prop>
+ </node>
+ <node oor:name="split-vertical-out" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>split</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>vertical-out</value>
+ </prop>
+ </node>
+ <node oor:name="diagonal-squares-left-down" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>diagonal-squares</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>top-left-bottom-right</value>
+ </prop>
+ </node>
+ <node oor:name="diagonal-squares-left-up" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>diagonal-squares</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>bottom-left-top-right</value>
+ </prop>
+ </node>
+ <node oor:name="diagonal-squares-right-down" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>diagonal-squares</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>top-left-bottom-right</value>
+ </prop>
+ </node>
+ <node oor:name="diagonal-squares-right-up" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>diagonal-squares</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>bottom-left-top-right</value>
+ </prop>
+ </node>
+ <node oor:name="uncover-down" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>uncover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>top-bottom</value>
+ </prop>
+ </node>
+ <node oor:name="uncover-left" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>uncover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>right-left</value>
+ </prop>
+ </node>
+ <node oor:name="uncover-right" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>uncover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>left-right</value>
+ </prop>
+ </node>
+ <node oor:name="uncover-up" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>uncover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>bottom-top</value>
+ </prop>
+ </node>
+ <node oor:name="uncover-left-down" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>uncover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>top-right-bottom-left</value>
+ </prop>
+ </node>
+ <node oor:name="uncover-left-up" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>uncover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>bottom-right-top-left</value>
+ </prop>
+ </node>
+ <node oor:name="uncover-right-down" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>uncover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>top-right-bottom-left</value>
+ </prop>
+ </node>
+ <node oor:name="uncover-right-up" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>uncover</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>bottom-left-top-right</value>
+ </prop>
+ </node>
+ <node oor:name="wedge" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>wedge</value>
+ </prop>
+ </node>
+ <node oor:name="wheel-clockwise-1-spoke" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>wheel</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>cw-1-spoke</value>
+ </prop>
+ </node>
+ <node oor:name="wheel-clockwise-2-spokes" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>wheel</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>cw-2-spoke</value>
+ </prop>
+ </node>
+ <node oor:name="wheel-clockwise-3-spokes" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>wheel</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>cw-3-spoke</value>
+ </prop>
+ </node>
+ <node oor:name="wheel-clockwise-4-spokes" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>wheel</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>cw-4-spoke</value>
+ </prop>
+ </node>
+ <node oor:name="wheel-clockwise-8-spokes" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>wheel</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>cw-8-spoke</value>
+ </prop>
+ </node>
+ <node oor:name="wipe-down" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>wipe</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>top-bottom</value>
+ </prop>
+ </node>
+ <node oor:name="wipe-left" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>wipe</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>right-left</value>
+ </prop>
+ </node>
+ <node oor:name="wipe-right" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>wipe</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>left-right</value>
+ </prop>
+ </node>
+ <node oor:name="wipe-up" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>wipe</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>bottom-top</value>
+ </prop>
+ </node>
+ <node oor:name="random-transition" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>random</value>
+ </prop>
+ </node>
+ <node oor:name="tile-flip" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>tile-flip</value>
+ </prop>
+ </node>
+ <node oor:name="outside-cube" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>cube-turning</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>outside</value>
+ </prop>
+ </node>
+ <node oor:name="inside-cube" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>cube-turning</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>inside</value>
+ </prop>
+ </node>
+ <node oor:name="revolving-circles" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>revolving-circles</value>
+ </prop>
+ </node>
+ <node oor:name="turning-helix" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>turning-helix</value>
+ </prop>
+ </node>
+ <node oor:name="fall" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>fall</value>
+ </prop>
+ </node>
+ <node oor:name="turn-around" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>turn-around</value>
+ </prop>
+ </node>
+ <node oor:name="iris" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>iris</value>
+ </prop>
+ </node>
+ <node oor:name="turn-down" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>turn-down</value>
+ </prop>
+ </node>
+ <node oor:name="rochade" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>rochade</value>
+ </prop>
+ </node>
+ <node oor:name="venetian3dv" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>venetian-blinds-3d</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>vertical</value>
+ </prop>
+ </node>
+ <node oor:name="venetian3dh" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>venetian-blinds-3d</value>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string">
+ <value>horizontal</value>
+ </prop>
+ </node>
+ <node oor:name="static" oor:op="replace">
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>static</value>
</prop>
</node>
<node oor:name="vortex" oor:op="replace">
- <prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Vortex</value>
+ <prop oor:name="Set" oor:type="xs:string">
+ <value>vortex</value>
</prop>
</node>
</node>
diff --git a/officecfg/registry/schema/org/openoffice/Office/UI/Effects.xcs b/officecfg/registry/schema/org/openoffice/Office/UI/Effects.xcs
index 2faf88ea2d13..0104a9d88fc7 100644
--- a/officecfg/registry/schema/org/openoffice/Office/UI/Effects.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/UI/Effects.xcs
@@ -32,6 +32,36 @@
</info>
</prop>
</group>
+ <group oor:name="TransitionType">
+ <info>
+ <desc>Provides a mapping between transition ids and their hierarchical representation on the user interface.</desc>
+ </info>
+ <prop oor:name="Set" oor:type="xs:string" oor:localized="false">
+ <info>
+ <desc>A localized text that describes the set of similar looking transitions the transition belongs to.</desc>
+ </info>
+ </prop>
+ <prop oor:name="Variant" oor:type="xs:string" oor:localized="false">
+ <info>
+ <desc>A localized text that identifies the variant inside a set of similar looking transitions the transition belongs to.</desc>
+ </info>
+ </prop>
+ </group>
+ <group oor:name="TransitionSetType">
+ <info>
+ <desc>Provides a mapping between transition sets and their textual representation on the user interface.</desc>
+ </info>
+ <prop oor:name="Label" oor:type="xs:string" oor:localized="true">
+ <info>
+ <desc>A localized text that describes the animation effect.</desc>
+ </info>
+ </prop>
+ <prop oor:name="Group" oor:type="xs:string" oor:localized="false">
+ <info>
+ <desc>A localized text that describes the top-level group of transitions the transition belongs to.</desc>
+ </info>
+ </prop>
+ </group>
<group oor:name="PresetCategory">
<info>
<desc>Maps a custom animation effect node to an effect category.</desc>
@@ -58,7 +88,22 @@
<desc>Contains preset ids for effects and identifiers that are used by the user interface."</desc>
</info>
</set>
- <set oor:name="Transitions" oor:node-type="LabelType">
+ <set oor:name="TransitionGroups" oor:node-type="LabelType">
+ <info>
+ <desc>Contains transition grouping ids for transitions and identifiers that are used by the user interface."</desc>
+ </info>
+ </set>
+ <set oor:name="TransitionSets" oor:node-type="TransitionSetType">
+ <info>
+ <desc>Contains transition set ids for transitions and identifiers that are used by the user interface."</desc>
+ </info>
+ </set>
+ <set oor:name="TransitionVariants" oor:node-type="LabelType">
+ <info>
+ <desc>Contains transition variants ids for transitions and identifiers that are used by the user interface."</desc>
+ </info>
+ </set>
+ <set oor:name="Transitions" oor:node-type="TransitionType">
<info>
<desc>Contains transition ids for transitions and identifiers that are used by the user interface."</desc>
</info>
diff --git a/sd/inc/TransitionPreset.hxx b/sd/inc/TransitionPreset.hxx
index 95416a259af3..eb31d0c6f7a9 100644
--- a/sd/inc/TransitionPreset.hxx
+++ b/sd/inc/TransitionPreset.hxx
@@ -53,8 +53,11 @@ public:
bool getDirection() const { return mbDirection; }
sal_Int32 getFadeColor() const { return mnFadeColor; }
- const OUString& getUIName() const { return maUIName; }
const OUString& getPresetId() const { return maPresetId; }
+ const OUString& getGroupId() const { return maGroupId; }
+ const OUString& getSetId() const { return maSetId; }
+ const OUString& getSetLabel() const { return maSetLabel; }
+ const OUString& getVariantLabel() const { return maVariantLabel; }
private:
TransitionPreset( const css::uno::Reference< css::animations::XAnimationNode >& xNode );
@@ -64,11 +67,13 @@ private:
bool mbDirection;
sal_Int32 mnFadeColor;
OUString maPresetId;
- OUString maUIName;
+ OUString maGroupId;
+ OUString maSetId;
+ OUString maSetLabel;
+ OUString maVariantLabel;
static bool importTransitionsFile( TransitionPresetList& rList,
css::uno::Reference< css::lang::XMultiServiceFactory >& xServiceFactory,
- UStringMap& rTransitionNameMap,
const OUString& aFilename );
};
diff --git a/sd/source/core/TransitionPreset.cxx b/sd/source/core/TransitionPreset.cxx
index 6b63d2f12c22..2d55ee6ece40 100644
--- a/sd/source/core/TransitionPreset.cxx
+++ b/sd/source/core/TransitionPreset.cxx
@@ -32,6 +32,7 @@
#include <comphelper/getexpandeduri.hxx>
#include <comphelper/processfactory.hxx>
#include <unotools/pathoptions.hxx>
+#include <officecfg/Office/UI/Effects.hxx>
#include <tools/stream.hxx>
#include <rtl/uri.hxx>
@@ -89,9 +90,15 @@ TransitionPreset::TransitionPreset( const css::uno::Reference< css::animations::
bool TransitionPreset::importTransitionsFile( TransitionPresetList& rList,
Reference< XMultiServiceFactory >& xServiceFactory,
- UStringMap& rTransitionNameMap,
const OUString& aURL )
{
+ SAL_INFO("sd.transitions", "Importing " << aURL);
+
+ Reference< container::XNameAccess > xTransitionSets( officecfg::Office::UI::Effects::UserInterface::TransitionSets::get() );
+ Reference< container::XNameAccess > xTransitionGroups( officecfg::Office::UI::Effects::UserInterface::TransitionGroups::get() );
+ Reference< container::XNameAccess > xTransitionVariants( officecfg::Office::UI::Effects::UserInterface::TransitionVariants::get() );
+ Reference< container::XNameAccess > xTransitions( officecfg::Office::UI::Effects::UserInterface::Transitions::get() );
+
// import transition presets
Reference< XAnimationNode > xAnimationNode;
@@ -105,26 +112,75 @@ bool TransitionPreset::importTransitionsFile( TransitionPresetList& rList,
Reference< XAnimationNode > xChildNode( xEnumeration->nextElement(), UNO_QUERY_THROW );
if( xChildNode->getType() == AnimationNodeType::PAR )
{
- // create it
TransitionPresetPtr pPreset( new TransitionPreset( xChildNode ) );
- // name it
OUString aPresetId( pPreset->getPresetId() );
+
if( !aPresetId.isEmpty() )
{
- UStringMap::const_iterator aIter( rTransitionNameMap.find( aPresetId ) );
- if( aIter != rTransitionNameMap.end() )
- pPreset->maUIName = (*aIter).second;
-
- // add it
- rList.push_back( pPreset );
+ Reference< container::XNameAccess > xTransitionNode;
+
+ if (xTransitions->hasByName( aPresetId ) &&
+ (xTransitions->getByName( aPresetId ) >>= xTransitionNode) &&
+ xTransitionNode.is() )
+ {
+ OUString sSet;
+ OUString sVariant;
+
+ xTransitionNode->getByName( "Set" ) >>= sSet;
+ xTransitionNode->getByName( "Variant" ) >>= sVariant;
+
+ Reference< container::XNameAccess > xSetNode;
+
+ xTransitionSets->getByName( sSet ) >>= xSetNode;
+ if( xSetNode.is() )
+ {
+ pPreset->maSetId = sSet;
+ xSetNode->getByName( "Label" ) >>= sSet;
+ pPreset->maSetLabel = sSet;
+
+ OUString sGroup;
+
+ xSetNode->getByName( "Group" ) >>= sGroup;
+
+ Reference< container::XNameAccess > xGroupNode;
+ xTransitionGroups->getByName( sGroup ) >>= xGroupNode;
+
+ if( xGroupNode.is() )
+ {
+ pPreset->maGroupId = sGroup;
+ xGroupNode->getByName( "Label" ) >>= sGroup;
+ if( !sVariant.isEmpty() )
+ {
+ Reference< container::XNameAccess > xVariantNode;
+ xTransitionVariants->getByName( sVariant ) >>= xVariantNode;
+ if( xVariantNode.is() )
+ {
+ xVariantNode->getByName( "Label" ) >>= sVariant;
+ pPreset->maVariantLabel = sVariant;
+ }
+ }
+
+ pPreset->maSetLabel = sSet;
+ SAL_INFO("sd.transitions", aPresetId << ": " << sGroup << "/" << sSet << (sVariant.isEmpty() ? OUString("") : OUString("/" + sVariant)));
+
+ rList.push_back( pPreset );
+ }
+ else
+ SAL_WARN("sd.transitions", "group node " << sGroup << " not found");
+ }
+ else
+ SAL_WARN("sd.transitions", "set node " << sSet << " not found");
+ }
+ else
+ SAL_WARN("sd.transitions", "transition node " << aPresetId << " not found");
}
}
else
- {
- OSL_FAIL( "sd::TransitionPreset::importTransitionPresetList(), malformed xml configuration file, giving up!" );
- break;
- }
+ {
+ SAL_WARN("sd.transitions", " malformed xml configuration file " << aURL );
+ break;
+ }
}
} catch( Exception& ) {
return false;
@@ -154,10 +210,6 @@ bool TransitionPreset::importTransitionPresetList( TransitionPresetList& rList )
Reference< XMultiServiceFactory > xConfigProvider =
configuration::theDefaultProvider::get( xContext );
- UStringMap aTransitionNameMap;
- const OUString aTransitionPath("/org.openoffice.Office.UI.Effects/UserInterface/Transitions" );
- implImportLabels( xConfigProvider, aTransitionPath, aTransitionNameMap );
-
// read path to transition effects files from config
Any propValue = uno::makeAny(
beans::PropertyValue("nodepath", -1,
@@ -178,7 +230,6 @@ bool TransitionPreset::importTransitionPresetList( TransitionPresetList& rList )
bRet |= importTransitionsFile( rList,
xServiceFactory,
- aTransitionNameMap,
aURL );
}
diff --git a/sd/source/ui/animations/SlideTransitionPane.cxx b/sd/source/ui/animations/SlideTransitionPane.cxx
index e7022c07755f..fa7f3aebac63 100644
--- a/sd/source/ui/animations/SlideTransitionPane.cxx
+++ b/sd/source/ui/animations/SlideTransitionPane.cxx
@@ -60,7 +60,6 @@ using ::com::sun::star::uno::RuntimeException;
using ::sd::framework::FrameworkHelper;
-// ::sd::impl::TransitionEffect
namespace sd
{
namespace impl
@@ -265,55 +264,6 @@ void lcl_CreateUndoForPages(
pManager->LeaveListAction();
}
-sal_Int32 lcl_getTransitionEffectIndex(
- SdDrawDocument * pDoc,
- const ::sd::impl::TransitionEffect & rTransition )
-{
- // first entry: "<none>"
- sal_Int32 nResultIndex = LISTBOX_ENTRY_NOTFOUND;
-
- if( pDoc )
- {
- sal_Int32 nCurrentIndex = 0;
- const ::sd::TransitionPresetList & rPresetList = ::sd::TransitionPreset::getTransitionPresetList();
- ::sd::TransitionPresetList::const_iterator aIt( rPresetList.begin());
- const ::sd::TransitionPresetList::const_iterator aEndIt( rPresetList.end());
- for( ; aIt != aEndIt; ++aIt, ++nCurrentIndex )
- {
- if( rTransition.operator==( *(*aIt) ))
- {
- nResultIndex = nCurrentIndex;
- break;
- }
- }
- }
-
- return nResultIndex;
-}
-
-::sd::TransitionPresetPtr lcl_getTransitionPresetByUIName(
- SdDrawDocument * pDoc,
- const OUString & rUIName )
-{
- ::sd::TransitionPresetPtr pResult;
- if( pDoc )
- {
- const ::sd::TransitionPresetList& rPresetList = ::sd::TransitionPreset::getTransitionPresetList();
- ::sd::TransitionPresetList::const_iterator aIter( rPresetList.begin() );
- const ::sd::TransitionPresetList::const_iterator aEnd( rPresetList.end() );
- for( ; aIter != aEnd; ++aIter )
- {
- if( (*aIter)->getUIName().equals( rUIName ))
- {
- pResult = *aIter;
- break;
- }
- }
- }
-
- return pResult;
-}
-
struct lcl_EqualsSoundFileName : public ::std::unary_function< OUString, bool >
{
explicit lcl_EqualsSoundFileName( const OUString & rStr ) :
@@ -424,6 +374,8 @@ SlideTransitionPane::SlideTransitionPane(
maLateInitTimer()
{
get(mpLB_SLIDE_TRANSITIONS, "transitions_list");
+ get(mpFT_VARIANT, "variant_label");
+ get(mpLB_VARIANT, "variant_list");
get(mpFT_SPEED, "speed_label");
get(mpLB_SPEED, "speed_list");
get(mpFT_SOUND, "sound_label");
@@ -439,6 +391,8 @@ SlideTransitionPane::SlideTransitionPane(
mpLB_SLIDE_TRANSITIONS->set_width_request(mpLB_SLIDE_TRANSITIONS->approximate_char_width() * 16);
mpLB_SLIDE_TRANSITIONS->SetDropDownLineCount(4);
+ mpLB_VARIANT->SetDropDownLineCount(4);
+
if( pDoc )
mxModel.set( pDoc->getUnoModel(), uno::UNO_QUERY );
// TODO: get correct view
@@ -446,7 +400,8 @@ SlideTransitionPane::SlideTransitionPane(
mxView.set( mxModel->getCurrentController(), uno::UNO_QUERY );
// fill list box of slide transitions
- mpLB_SLIDE_TRANSITIONS->InsertEntry( SD_RESSTR( STR_SLIDETRANSITION_NONE ) );
+ mpLB_SLIDE_TRANSITIONS->InsertEntry( SD_RESSTR( STR_SLIDETRANSITION_NONE ), Image( BitmapEx( "sd/cmd/transition-none.png" ) ) );
+ m_aTransitionLBToSet.push_back( "" );
// set defaults
mpCB_AUTO_PREVIEW->Check(); // automatic preview on
@@ -460,6 +415,7 @@ SlideTransitionPane::SlideTransitionPane(
mpLB_SLIDE_TRANSITIONS->SetSelectHdl( LINK( this, SlideTransitionPane, TransitionSelected ));
+ mpLB_VARIANT->SetSelectHdl( LINK( this, SlideTransitionPane, VariantListBoxSelected ));
mpLB_SPEED->SetSelectHdl( LINK( this, SlideTransitionPane, SpeedListBoxSelected ));
mpLB_SOUND->SetSelectHdl( LINK( this, SlideTransitionPane, SoundListBoxSelected ));
mpCB_LOOP_SOUND->SetClickHdl( LINK( this, SlideTransitionPane, LoopSoundBoxChecked ));
@@ -487,6 +443,8 @@ void SlideTransitionPane::dispose()
maLateInitTimer.Stop();
removeListener();
mpLB_SLIDE_TRANSITIONS.clear();
+ mpFT_VARIANT.clear();
+ mpLB_VARIANT.clear();
mpFT_SPEED.clear();
mpLB_SPEED.clear();
mpFT_SOUND.clear();
@@ -568,16 +526,16 @@ void SlideTransitionPane::updateControls()
impl::TransitionEffect aEffect( *pFirstPage );
// merge with other pages
- ::sd::slidesorter::SlideSorterViewShell::PageSelection::const_iterator aIt(
+ ::sd::slidesorter::SlideSorterViewShell::PageSelection::const_iterator aPageIt(
pSelectedPages->begin());
- ::sd::slidesorter::SlideSorterViewShell::PageSelection::const_iterator aEndIt(
+ ::sd::slidesorter::SlideSorterViewShell::PageSelection::const_iterator aPageEndIt(
pSelectedPages->end());
// start with second page (note aIt != aEndIt, because ! aSelectedPages.empty())
- for( ++aIt ;aIt != aEndIt; ++aIt )
+ for( ++aPageIt; aPageIt != aPageEndIt; ++aPageIt )
{
- if( *aIt )
- aEffect.compareWith( *(*aIt) );
+ if( *aPageIt )
+ aEffect.compareWith( *(*aPageIt) );
}
// detect current slide effect
@@ -591,16 +549,50 @@ void SlideTransitionPane::updateControls()
mpLB_SLIDE_TRANSITIONS->SelectEntryPos( 0 );
else
{
- sal_Int32 nEntry = lcl_getTransitionEffectIndex( mpDrawDoc, aEffect );
+ int nEntry = LISTBOX_ENTRY_NOTFOUND;
+ const sd::TransitionPresetList& rPresetList = sd::TransitionPreset::getTransitionPresetList();
+ sd::TransitionPresetPtr pFound;
+
+ for( auto aIt: rPresetList )
+ {
+ if( aEffect.operator==( *aIt ))
+ {
+ pFound = aIt;
+ // This function can be called before LateInit, with m_aSetToTransitionLBIndex
+ // not set up properly. In that case nEntry will stay as
+ // LISTBOX_ENTRY_NOTFOUND. But in that case we will be called soon again, I think.
+ if( m_aSetToTransitionLBIndex.find( aIt->getSetId() ) != m_aSetToTransitionLBIndex.end() )
+ nEntry = m_aSetToTransitionLBIndex[aIt->getSetId()];
+ break;
+ }
+ }
+
+ mpLB_VARIANT->Clear();
if( nEntry == LISTBOX_ENTRY_NOTFOUND )
+ {
mpLB_SLIDE_TRANSITIONS->SetNoSelection();
+ mpLB_VARIANT->Enable( false );
+ }
else
{
- // first entry in list is "none", so add 1 after translation
- if( m_aPresetIndexes.find( nEntry ) != m_aPresetIndexes.end())
- mpLB_SLIDE_TRANSITIONS->SelectEntryPos( m_aPresetIndexes[ nEntry ] + 1 );
+ // Fill in the variant listbox
+ for( auto aIt: rPresetList )
+ {
+ if( aIt->getSetId().equals( pFound->getSetId() ) )
+ {
+ if( !aIt->getVariantLabel().isEmpty() )
+ {
+ mpLB_VARIANT->InsertEntry( aIt->getVariantLabel() );
+ if( aEffect.operator==( *aIt ))
+ mpLB_VARIANT->SelectEntryPos( mpLB_VARIANT->GetEntryCount()-1 );
+ }
+ }
+ }
+ if( mpLB_VARIANT->GetEntryCount() == 0 )
+ mpLB_VARIANT->Enable( false );
else
- mpLB_SLIDE_TRANSITIONS->SetNoSelection();
+ mpLB_VARIANT->Enable();
+ mpLB_SLIDE_TRANSITIONS->SelectEntryPos( nEntry );
}
}
}
@@ -673,6 +665,7 @@ void SlideTransitionPane::updateControls()
void SlideTransitionPane::updateControlState()
{
mpLB_SLIDE_TRANSITIONS->Enable( mbHasSelection );
+ mpLB_VARIANT->Enable( mbHasSelection && mpLB_VARIANT->GetEntryCount() > 0 );
mpLB_SPEED->Enable( mbHasSelection );
mpLB_SOUND->Enable( mbHasSelection );
mpCB_LOOP_SOUND->Enable( mbHasSelection && (mpLB_SOUND->GetSelectEntryPos() > 2));
@@ -775,15 +768,28 @@ impl::TransitionEffect SlideTransitionPane::getTransitionEffectFromControls() co
if( mpLB_SLIDE_TRANSITIONS->IsEnabled() &&
mpLB_SLIDE_TRANSITIONS->GetSelectEntryCount() > 0 )
{
- TransitionPresetPtr pPreset = lcl_getTransitionPresetByUIName(
- mpDrawDoc, OUString( mpLB_SLIDE_TRANSITIONS->GetSelectEntry()));
+ const sd::TransitionPresetList& rPresetList = sd::TransitionPreset::getTransitionPresetList();
- if( pPreset.get())
+ int nVariant = 0;
+ bool bFound = false;
+ for( auto aIter: rPresetList )
{
- aResult = impl::TransitionEffect( *pPreset );
- aResult.setAllAmbiguous();
+ if( aIter->getSetId().equals(m_aTransitionLBToSet[mpLB_SLIDE_TRANSITIONS->GetSelectEntryPos()]) )
+ {
+ if( mpLB_VARIANT->GetSelectEntryPos() == nVariant)
+ {
+ aResult = impl::TransitionEffect( *aIter );
+ aResult.setAllAmbiguous();
+ bFound = true;
+ break;
+ }
+ else
+ {
+ nVariant++;
+ }
+ }
}
- else
+ if( !bFound )
{
aResult.mnType = 0;
}
@@ -1000,6 +1006,32 @@ IMPL_LINK_NOARG_TYPED(SlideTransitionPane, PlayButtonClicked, Button*, void)
IMPL_LINK_NOARG_TYPED(SlideTransitionPane, TransitionSelected, ListBox&, void)
{
+ mpLB_VARIANT->Clear();
+
+ if( mpLB_SLIDE_TRANSITIONS->GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND)
+ return;
+
+ if( mpLB_SLIDE_TRANSITIONS->GetSelectEntryPos() > 0)
+ {
+ const sd::TransitionPresetList& rPresetList = sd::TransitionPreset::getTransitionPresetList();
+
+ for( auto aIt: rPresetList )
+ {
+ if( m_aSetToTransitionLBIndex[aIt->getSetId()] == mpLB_SLIDE_TRANSITIONS->GetSelectEntryPos() )
+ mpLB_VARIANT->InsertEntry( aIt->getVariantLabel() );
+ }
+ }
+
+ if( mpLB_VARIANT->GetEntryCount() == 0 )
+ {
+ mpLB_VARIANT->Enable( false );
+ }
+ else
+ {
+ mpLB_VARIANT->Enable();
+ mpLB_VARIANT->SelectEntryPos( 0 );
+ }
+
applyToSelectedPages();
}
@@ -1014,6 +1046,11 @@ IMPL_LINK_NOARG_TYPED(SlideTransitionPane, AdvanceTimeModified, Edit&, void)
applyToSelectedPages();
}
+IMPL_LINK_NOARG_TYPED(SlideTransitionPane, VariantListBoxSelected, ListBox&, void)
+{
+ applyToSelectedPages();
+}
+
IMPL_LINK_NOARG_TYPED(SlideTransitionPane, SpeedListBoxSelected, ListBox&, void)
{
applyToSelectedPages();
@@ -1048,21 +1085,42 @@ IMPL_LINK_NOARG_TYPED(SlideTransitionPane, AutoPreviewClicked, Button*, void)
IMPL_LINK_NOARG_TYPED(SlideTransitionPane, LateInitCallback, Timer *, void)
{
const TransitionPresetList& rPresetList = TransitionPreset::getTransitionPresetList();
- TransitionPresetList::const_iterator aIter( rPresetList.begin() );
- const TransitionPresetList::const_iterator aEnd( rPresetList.end() );
- sal_uInt16 nIndex = 0;
- ::std::size_t nUIIndex = 0;
- while( aIter != aEnd )
+
+ for( auto aIter: rPresetList )
{
- TransitionPresetPtr pPreset = (*aIter++);
- const OUString aUIName( pPreset->getUIName() );
- if( !aUIName.isEmpty() )
+ TransitionPresetPtr pPreset = aIter;
+ const OUString sLabel( pPreset->getSetLabel() );
+ if( !sLabel.isEmpty() )
{
- mpLB_SLIDE_TRANSITIONS->InsertEntry( aUIName );
- m_aPresetIndexes[ nIndex ] = (sal_uInt16)nUIIndex;
- ++nUIIndex;
+ if( m_aNumVariants.find( pPreset->getSetId() ) == m_aNumVariants.end() )
+ {
+ OUString sImageName("sd/cmd/transition-" + pPreset->getSetId() + ".png");
+
+ mpLB_SLIDE_TRANSITIONS->InsertEntry( sLabel, Image( BitmapEx( sImageName) ) );
+
+ m_aTransitionLBToSet.push_back( pPreset->getSetId() );
+
+ assert( m_aTransitionLBToSet.size() == static_cast<size_t>( mpLB_SLIDE_TRANSITIONS->GetEntryCount() ) );
+
+ m_aNumVariants[ pPreset->getSetId() ] = 1;
+ m_aSetToTransitionLBIndex[ aIter->getSetId() ] = mpLB_SLIDE_TRANSITIONS->GetEntryCount() - 1;
+ }
+ else
+ {
+ m_aNumVariants[ pPreset->getSetId() ]++;
+ }
}
- ++nIndex;
+ }
+
+ for( int i = 0; i < mpLB_SLIDE_TRANSITIONS->GetEntryCount(); ++i )
+ SAL_INFO("sd.transitions", i << ":" << mpLB_SLIDE_TRANSITIONS->GetEntry( i ) << " (" << m_aTransitionLBToSet[i] << ")");
+
+ for( auto aIter: rPresetList )
+ {
+ SAL_INFO("sd.transitions",
+ aIter->getPresetId() << ": " <<
+ m_aSetToTransitionLBIndex[ aIter->getSetId() ] <<
+ " (" << mpLB_SLIDE_TRANSITIONS->GetEntry( m_aSetToTransitionLBIndex[ aIter->getSetId() ] ) << ")" );
}
updateSoundList();
diff --git a/sd/source/ui/animations/SlideTransitionPane.hxx b/sd/source/ui/animations/SlideTransitionPane.hxx
index 69e714d7be6d..814995ec9c2e 100644
--- a/sd/source/ui/animations/SlideTransitionPane.hxx
+++ b/sd/source/ui/animations/SlideTransitionPane.hxx
@@ -22,6 +22,7 @@
#include "EventMultiplexer.hxx"
#include "SlideSorterViewShell.hxx"
+#include "TransitionPreset.hxx"
#include <vcl/ctrl.hxx>
#include <vcl/lstbox.hxx>
@@ -92,6 +93,7 @@ private:
DECL_LINK_TYPED( TransitionSelected, ListBox&, void );
DECL_LINK_TYPED( AdvanceSlideRadioButtonToggled, RadioButton&, void );
DECL_LINK_TYPED( AdvanceTimeModified, Edit&, void );
+ DECL_LINK_TYPED( VariantListBoxSelected, ListBox&, void );
DECL_LINK_TYPED( SpeedListBoxSelected, ListBox&, void );
DECL_LINK_TYPED( SoundListBoxSelected, ListBox&, void );
DECL_LINK_TYPED( LoopSoundBoxChecked, Button*, void );
@@ -102,6 +104,8 @@ private:
SdDrawDocument * mpDrawDoc;
VclPtr<ListBox> mpLB_SLIDE_TRANSITIONS;
+ VclPtr<FixedText> mpFT_VARIANT;
+ VclPtr<ListBox> mpLB_VARIANT;
VclPtr<FixedText> mpFT_SPEED;
VclPtr<ListBox> mpLB_SPEED;
VclPtr<FixedText> mpFT_SOUND;
@@ -125,8 +129,14 @@ private:
tSoundListType maSoundList;
mutable OUString maCurrentSoundFile;
- typedef ::std::map< sal_uInt16, sal_uInt16 > tPresetIndexesType;
- tPresetIndexesType m_aPresetIndexes;
+ // Map from TransitionSets (as in Effects.xcu) to mpLB_SLIDE_TRANSITIONS entry index.
+ std::map< OUString, int > m_aSetToTransitionLBIndex;
+
+ // The reverse mapping: TransitionSets id of each entry in mpLB_SLIDE_TRANSITIONS.
+ std::vector< OUString > m_aTransitionLBToSet;
+
+ // How many variants each transition set has
+ std::map< OUString, int > m_aNumVariants;
Timer maLateInitTimer;
};
diff --git a/sd/source/ui/dlg/dlgass.cxx b/sd/source/ui/dlg/dlgass.cxx
index 2e35e9bf41c2..46202abab5b0 100644
--- a/sd/source/ui/dlg/dlgass.cxx
+++ b/sd/source/ui/dlg/dlgass.cxx
@@ -241,6 +241,8 @@ public:
DECL_LINK_TYPED( PresTypeHdl, Button*, void );
DECL_LINK_TYPED( UpdateUserDataHdl, Edit&, void );
DECL_LINK_TYPED( SelectEffectHdl, ListBox&, void);
+ DECL_LINK_TYPED( SelectVariantHdl, ListBox&, void);
+ DECL_LINK_TYPED( SelectSpeedHdl, ListBox&, void);
DECL_LINK_TYPED( OpenButtonHdl, Button *, void );
OUString maCreateStr;
@@ -288,7 +290,9 @@ public:
VclPtr<FixedText> mpPage3EffectFL;
VclPtr<FixedText> mpPage3EffectFT;
VclPtr<FadeEffectLB> mpPage3EffectLB;
+ VclPtr<FixedText> mpPage3VariantFT;
VclPtr<FixedText> mpPage3SpeedFT;
+ VclPtr<ListBox> mpPage3VariantLB;
VclPtr<ListBox> mpPage3SpeedLB;
VclPtr<FixedText> mpPage3PresTypeFL;
VclPtr<RadioButton> mpPage3PresTypeLiveRB;
@@ -477,6 +481,8 @@ AssistentDlgImpl::AssistentDlgImpl( vcl::Window* pWindow, const Link<ListBox&,vo
assDlg->get(mpPage3EffectFL, "page3EffectLabel");
assDlg->get(mpPage3EffectFT, "effectLabel");
assDlg->get(mpPage3EffectLB, "effectCombobox");
+ assDlg->get(mpPage3VariantFT, "variantLabel");
+ assDlg->get(mpPage3VariantLB, "variantCombobox");
assDlg->get(mpPage3SpeedFT, "speedLabel");
assDlg->get(mpPage3SpeedLB, "speedCombobox");
assDlg->get(mpPage3PresTypeFL, "presTypeLabel");
@@ -496,6 +502,8 @@ AssistentDlgImpl::AssistentDlgImpl( vcl::Window* pWindow, const Link<ListBox&,vo
maAssistentFunc.InsertControl(3, mpPage3EffectFL );
maAssistentFunc.InsertControl(3, mpPage3EffectFT );
maAssistentFunc.InsertControl(3, mpPage3EffectLB );
+ maAssistentFunc.InsertControl(3, mpPage3VariantFT );
+ maAssistentFunc.InsertControl(3, mpPage3VariantLB );
maAssistentFunc.InsertControl(3, mpPage3SpeedFT );
maAssistentFunc.InsertControl(3, mpPage3SpeedLB );
maAssistentFunc.InsertControl(3, mpPage3PresTypeFL );
@@ -511,11 +519,14 @@ AssistentDlgImpl::AssistentDlgImpl( vcl::Window* pWindow, const Link<ListBox&,vo
mpPage3EffectLB->SetSelectHdl( LINK(this,AssistentDlgImpl,SelectEffectHdl ));
mpPage3EffectLB->SetDropDownLineCount( 12 );
+ mpPage3VariantLB->SetSelectHdl( LINK(this,AssistentDlgImpl,SelectVariantHdl ));
+ mpPage3VariantLB->SetDropDownLineCount( 4 );
+
mpPage3SpeedLB->InsertEntry( SD_RESSTR(STR_SLOW) );
mpPage3SpeedLB->InsertEntry( SD_RESSTR(STR_MEDIUM) );
mpPage3SpeedLB->InsertEntry( SD_RESSTR(STR_FAST) );
mpPage3SpeedLB->SetDropDownLineCount( 3 );
- mpPage3SpeedLB->SetSelectHdl( LINK(this,AssistentDlgImpl,SelectEffectHdl ));
+ mpPage3SpeedLB->SetSelectHdl( LINK(this,AssistentDlgImpl,SelectSpeedHdl ));
mpPage3SpeedLB->SelectEntryPos( 1 );
mpPage3PresTypeLiveRB->Check();
@@ -964,7 +975,7 @@ SfxObjectShellLock AssistentDlgImpl::GetDocument()
SdPage* pPage = pDoc->GetSdPage( nPgRelNum, PK_STANDARD );
if( mpPage5PageListCT->IsPageChecked(nPgAbsNum) )
{
- mpPage3EffectLB->applySelected(pPage);
+ mpPage3EffectLB->applySelected(pPage, *mpPage3VariantLB);
const sal_Int32 nPos = mpPage3SpeedLB->GetSelectEntryPos();
pPage->setTransitionDuration( (nPos == 0) ? 3.0 : (nPos == 1) ? 2.0 : 1.0 );
if(bKiosk)
@@ -1096,6 +1107,17 @@ IMPL_LINK_TYPED( AssistentDlgImpl, SelectRegionHdl, ListBox&, rLB, void )
IMPL_LINK_NOARG_TYPED(AssistentDlgImpl, SelectEffectHdl, ListBox&, void)
{
maEffectPrevIdle.Start();
+ mpPage3EffectLB->FillVariantLB(*mpPage3VariantLB);
+}
+
+IMPL_LINK_NOARG_TYPED(AssistentDlgImpl, SelectVariantHdl, ListBox&, void)
+{
+ maEffectPrevIdle.Start();
+}
+
+IMPL_LINK_NOARG_TYPED(AssistentDlgImpl, SelectSpeedHdl, ListBox&, void)
+{
+ maEffectPrevIdle.Start();
}
IMPL_LINK_NOARG_TYPED( AssistentDlgImpl, OpenButtonHdl, Button*, void )
@@ -1118,7 +1140,7 @@ IMPL_LINK_NOARG_TYPED(AssistentDlgImpl, EffectPreviewIdleHdl, Idle *, void)
{
SdPage* pPage = pDoc->GetSdPage( mnShowPage, PK_STANDARD );
if( pPage )
- mpPage3EffectLB->applySelected(pPage);
+ mpPage3EffectLB->applySelected(pPage, *mpPage3VariantLB);
}
}
mpPreview->startPreview();
diff --git a/sd/source/ui/dlg/dlgctrls.cxx b/sd/source/ui/dlg/dlgctrls.cxx
index 9137f37d3388..ff6141410a6d 100644
--- a/sd/source/ui/dlg/dlgctrls.cxx
+++ b/sd/source/ui/dlg/dlgctrls.cxx
@@ -19,6 +19,9 @@
#include <vcl/builderfactory.hxx>
+#include <map>
+#include <set>
+
#include "strings.hrc"
#include "dlgctrls.hxx"
#include "sdresid.hxx"
@@ -29,6 +32,12 @@ using namespace ::sd;
struct FadeEffectLBImpl
{
+ // The set id of each entry
+ std::vector< OUString > maSet;
+
+ // How many variants each transition set has
+ std::map< OUString, int > maNumVariants;
+
std::vector< TransitionPresetPtr > maPresets;
};
@@ -51,27 +60,56 @@ void FadeEffectLB::dispose()
void FadeEffectLB::Fill()
{
- TransitionPresetPtr pPreset;
-
InsertEntry( SD_RESSTR( STR_EFFECT_NONE ) );
- mpImpl->maPresets.push_back( pPreset );
+ mpImpl->maPresets.push_back( TransitionPresetPtr() );
+ mpImpl->maSet.push_back( "" );
const TransitionPresetList& rPresetList = TransitionPreset::getTransitionPresetList();
- TransitionPresetList::const_iterator aIter;
- for( aIter = rPresetList.begin(); aIter != rPresetList.end(); ++aIter )
+
+ for( auto aIter = rPresetList.begin(); aIter != rPresetList.end(); ++aIter )
{
- pPreset = (*aIter);
- const OUString aUIName( pPreset->getUIName() );
- if( !aUIName.isEmpty() )
+ TransitionPresetPtr pPreset = *aIter;
+ const OUString sLabel( pPreset->getSetLabel() );
+ if( !sLabel.isEmpty() )
{
- InsertEntry( aUIName );
+ if( mpImpl->maNumVariants.find( pPreset->getSetId() ) == mpImpl->maNumVariants.end() )
+ {
+ InsertEntry( sLabel );
+ mpImpl->maSet.push_back( pPreset->getSetId() );
+ mpImpl->maNumVariants[pPreset->getSetId()] = 1;
+ }
+ else
+ {
+ mpImpl->maNumVariants[pPreset->getSetId()]++;
+ }
mpImpl->maPresets.push_back( pPreset );
}
}
+ assert( static_cast<size_t>( GetEntryCount() ) == mpImpl->maSet.size() );
+ assert( mpImpl->maPresets.size() == 1 + TransitionPreset::getTransitionPresetList().size() );
+
SelectEntryPos(0);
}
+void FadeEffectLB::FillVariantLB(ListBox& rVariantLB)
+{
+ rVariantLB.Clear();
+ for( auto aIter = mpImpl->maPresets.begin(); aIter != mpImpl->maPresets.end(); ++aIter )
+ {
+ TransitionPresetPtr pPreset = *aIter;
+ if( !pPreset )
+ continue;
+ const OUString sLabel( pPreset->getSetLabel() );
+ if( !sLabel.isEmpty() && mpImpl->maSet[GetSelectEntryPos()].equals( pPreset->getSetId() ) )
+ {
+ rVariantLB.InsertEntry( pPreset->getVariantLabel() );
+ }
+ }
+ if( rVariantLB.GetEntryCount() > 0 )
+ rVariantLB.SelectEntryPos( 0 );
+}
+
VCL_BUILDER_DECL_FACTORY(FadeEffectLB)
{
WinBits nBits = WB_CLIPCHILDREN|WB_LEFT|WB_VCENTER|WB_3DLOOK;
@@ -84,24 +122,35 @@ VCL_BUILDER_DECL_FACTORY(FadeEffectLB)
rRet = VclPtr<FadeEffectLB>::Create(pParent, nBits);
}
-void FadeEffectLB::applySelected( SdPage* pSlide ) const
+void FadeEffectLB::applySelected( SdPage* pSlide, ListBox& rVariantLB ) const
{
- const sal_Int32 nPos = GetSelectEntryPos();
+ if( !pSlide )
+ return;
- if( pSlide && (static_cast<size_t>(nPos) < mpImpl->maPresets.size() ) )
+ if( GetSelectEntryPos() == 0 )
{
- TransitionPresetPtr pPreset( mpImpl->maPresets[nPos] );
+ pSlide->setTransitionType( 0 );
+ pSlide->setTransitionSubtype( 0 );
+ pSlide->setTransitionDirection( true );
+ pSlide->setTransitionFadeColor( 0 );
+ return;
+ }
- if( pPreset.get() )
- {
- pPreset->apply( pSlide );
- }
- else
+ int nMatch = 0;
+ for( auto aIter = mpImpl->maPresets.begin(); aIter != mpImpl->maPresets.end(); ++aIter )
+ {
+ TransitionPresetPtr pPreset = *aIter;
+ if( !pPreset )
+ continue;
+ const OUString sLabel( pPreset->getSetLabel() );
+ if( !sLabel.isEmpty() && mpImpl->maSet[GetSelectEntryPos()].equals( pPreset->getSetId() ) )
{
- pSlide->setTransitionType( 0 );
- pSlide->setTransitionSubtype( 0 );
- pSlide->setTransitionDirection( true );
- pSlide->setTransitionFadeColor( 0 );
+ if( nMatch == rVariantLB.GetSelectEntryPos() )
+ {
+ pPreset->apply( pSlide );
+ break;
+ }
+ nMatch++;
}
}
}
diff --git a/sd/source/ui/inc/dlgctrls.hxx b/sd/source/ui/inc/dlgctrls.hxx
index 583c131e40d2..a8ae4ac905c2 100644
--- a/sd/source/ui/inc/dlgctrls.hxx
+++ b/sd/source/ui/inc/dlgctrls.hxx
@@ -40,8 +40,9 @@ public:
virtual void dispose() override;
void Fill();
-/* void selectEffectFromPage( SdPage* pPage ); */
- void applySelected( SdPage* pSlide ) const;
+ void FillVariantLB(ListBox& rVariantLB);
+
+ void applySelected( SdPage* pSlide, ListBox& rVariantLB ) const;
FadeEffectLBImpl* mpImpl;
};
diff --git a/sd/uiconfig/simpress/ui/assistentdialog.ui b/sd/uiconfig/simpress/ui/assistentdialog.ui
index bdb15ae8174d..e91c0d7b1e67 100644
--- a/sd/uiconfig/simpress/ui/assistentdialog.ui
+++ b/sd/uiconfig/simpress/ui/assistentdialog.ui
@@ -711,6 +711,22 @@
</packing>
</child>
<child>
+ <object class="GtkLabel" id="variantLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">_Variant:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">variantCombobox</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkLabel" id="speedLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -721,7 +737,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">1</property>
+ <property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
@@ -740,7 +756,7 @@
</packing>
</child>
<child>
- <object class="GtkComboBox" id="speedCombobox">
+ <object class="GtkComboBox" id="variantCombobox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
@@ -752,6 +768,19 @@
<property name="height">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkComboBox" id="speedCombobox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
</object>
</child>
</object>
diff --git a/sd/uiconfig/simpress/ui/slidetransitionspanel.ui b/sd/uiconfig/simpress/ui/slidetransitionspanel.ui
index 3870b74a0903..aed73b8fe587 100644
--- a/sd/uiconfig/simpress/ui/slidetransitionspanel.ui
+++ b/sd/uiconfig/simpress/ui/slidetransitionspanel.ui
@@ -78,10 +78,11 @@
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="label" translatable="yes">Speed:</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">0</property>
+ <property name="top_attach">1</property>
</packing>
</child>
<child>
@@ -97,7 +98,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">0</property>
+ <property name="top_attach">1</property>
</packing>
</child>
<child>
@@ -109,7 +110,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">1</property>
+ <property name="top_attach">2</property>
</packing>
</child>
<child>
@@ -125,7 +126,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">1</property>
+ <property name="top_attach">2</property>
</packing>
</child>
<child>
@@ -139,7 +140,28 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">2</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="variant_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Variant</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="variant_list">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
</packing>
</child>
<child>