icon-themes/galaxy/sd/cmd/transition-none.png |binary icon-themes/galaxy/sd/cmd/transition-random-bars.png |binary icon-themes/galaxy/sd/cmd/transition-uncover.png |binary icon-themes/galaxy/sd/cmd/transition-wheel.png |binary icon-themes/galaxy/sd/cmd/transition-wipe.png |binary officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu | 945 ++++++++-- officecfg/registry/schema/org/openoffice/Office/UI/Effects.xcs | 47 sd/inc/TransitionPreset.hxx | 11 sd/source/core/TransitionPreset.cxx | 87 sd/source/ui/animations/SlideTransitionPane.cxx | 216 +- sd/source/ui/animations/SlideTransitionPane.hxx | 14 sd/source/ui/dlg/dlgass.cxx | 28 sd/source/ui/dlg/dlgctrls.cxx | 93 sd/source/ui/inc/dlgctrls.hxx | 5 sd/uiconfig/simpress/ui/assistentdialog.ui | 33 sd/uiconfig/simpress/ui/slidetransitionspanel.ui | 32 16 files changed, 1229 insertions(+), 282 deletions(-)
New commits: commit 95e13b89ecb70eb0a03a0c68f0f1e41d02acef22 Author: Tor Lillqvist <t...@collabora.com> Date: Tue Nov 3 14:18:23 2015 +0200 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 <t...@collabora.com> Tested-by: Tor Lillqvist <t...@collabora.com> 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 0000000..71b14a1 Binary files /dev/null and b/icon-themes/galaxy/sd/cmd/transition-none.png 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 0000000..e27b13c Binary files /dev/null and b/icon-themes/galaxy/sd/cmd/transition-random-bars.png 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 0000000..f799ef8 Binary files /dev/null and b/icon-themes/galaxy/sd/cmd/transition-uncover.png 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 0000000..b674a00 Binary files /dev/null and b/icon-themes/galaxy/sd/cmd/transition-wheel.png 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 0000000..6f5cbfb Binary files /dev/null and b/icon-themes/galaxy/sd/cmd/transition-wipe.png differ diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu index 84376c4..a7a1bfd 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 2faf88e..0104a9d 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 95416a2..eb31d0c 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 6b63d2f..2d55ee6 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 e7022c0..fa7f3ae 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 69e714d..814995e 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 2e35e9b..46202ab 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 9137f37..ff61414 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 583c131..a8ae4ac 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 bdb15ae..e91c0d7 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 3870b74..aed73b8 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> _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits