summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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>