On 05/04/12 14:59, Radek Doulik wrote:
Yup, having fewer categories makes sense. Powerpoint 2010 has only 3
categories too.
Ok, I now have "Wipe", "3d" and "Other" transitions as the categories -- but might add another one or two.
I would prefer adding the information into transitions.xml. Otherwise it
would be less clear when adding new transitions.

I've done that -- this should make adding new categories and adding new transitions fairly simple.

Attached is a preview patch -- I still need to actually decide what categories to add and which transitions to add to each category, so regard the actual categorisations as random -- this is just to show the code allowing the changes.

If anyone does modify transitions.xml or transitions-ogl.xml: "make sd" does not update the xml files that are used when running impress -- you will need to rerun make dev-install (takes some time) or copy the xml files from sd/xml/ to install/program/share/config/soffice.cfg/simpress/ (assuming you've done dev-install). I'm not sure how Effects.xcu is processed, but it may be enough to run "make officecfg" to update that.

There is a separate UI issue, related to this topic: when a non-transition is selected, a preview of a transition is still shown that does nothing -- this already occured for the "No Transition" entry, and now also occurs for the Categories. I'll look into this, but probably will make it a separate patch.

Cheers,
Andrzej
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu
index 7395d91..6c6b7b5 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu
@@ -1570,6 +1570,28 @@
                 </prop>
             </node>
         </node>
+        
+        <node oor:name="Transition-UICategories">
+            <node oor:name="category-wipe" oor:op="replace">
+                <prop oor:name="Label" oor:type="xs:string">
+                    <value xml:lang="en-US">Wipe Transitions</value>
+
+                </prop>
+            </node>
+            <node oor:name="category-ogl" oor:op="replace">
+                <prop oor:name="Label" oor:type="xs:string">
+                    <value xml:lang="en-US">3D Transitions</value>
+
+                </prop>
+            </node>
+            <node oor:name="category-other" oor:op="replace">
+                <prop oor:name="Label" oor:type="xs:string">
+                    <value xml:lang="en-US">Other Transitions</value>
+
+                </prop>
+            </node>
+        </node>
+        
         <node oor:name="Transitions">
             <node oor:name="venetian-blinds-horizontal" oor:op="replace">
                 <prop oor:name="Label" oor:type="xs:string">
diff --git a/officecfg/registry/schema/org/openoffice/Office/UI/Effects.xcs b/officecfg/registry/schema/org/openoffice/Office/UI/Effects.xcs
index b89f2de..0062e54 100644
--- a/officecfg/registry/schema/org/openoffice/Office/UI/Effects.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/UI/Effects.xcs
@@ -68,6 +68,11 @@
 		            <desc>Contains preset ids for effects and identifiers that are used by the user interface."</desc>
 		        </info>
 			</set>
+            <set oor:name="Transition-UICategories" oor:node-type="LabelType">
+                <info>
+                    <desc>Contains category ids for the transition categories that are used by the user interface."</desc>
+                </info>
+            </set>
 			<set oor:name="Transitions" oor:node-type="LabelType">
 		        <info>
 		            <desc>Contains transition ids for transitions and identifiers that are used by the user interface."</desc>
diff --git a/sd/inc/TransitionPreset.hxx b/sd/inc/TransitionPreset.hxx
index d28f700..f81c3a8 100644
--- a/sd/inc/TransitionPreset.hxx
+++ b/sd/inc/TransitionPreset.hxx
@@ -51,13 +51,15 @@ class TransitionPreset;
 typedef boost::shared_ptr< TransitionPreset > TransitionPresetPtr;
 typedef std::list< TransitionPresetPtr > TransitionPresetList;
 typedef boost::unordered_map< rtl::OUString, rtl::OUString, rtl::OUStringHash, comphelper::UStringEqual > UStringMap;
+typedef std::vector< rtl::OUString > UStringList;
 
 class TransitionPreset
 {
 public:
     static const TransitionPresetList& getTransitionPresetList();
-    static bool importTransitionPresetList( TransitionPresetList& rList );
-
+    static const UStringList& getTransitionPresetCategoryList();
+    static bool importTransitionPresetList( TransitionPresetList& rList, UStringList& rCategoryList );
+    
     void apply( SdPage* pSlide ) const;
 
     sal_Int16 getTransition() const { return mnTransition; }
@@ -66,7 +68,9 @@ public:
     sal_Int32 getFadeColor() const { return mnFadeColor; }
 
     const rtl::OUString& getUIName() const { return maUIName; }
+    const rtl::OUString& getUICategory() const { return maUICategory; }
     const rtl::OUString& getPresetId() const { return maPresetId; }
+    const rtl::OUString& getUICategoryId() const { return maUICategoryId; }
 
 private:
     TransitionPreset( const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& xNode );
@@ -77,10 +81,13 @@ private:
     sal_Int32 mnFadeColor;
     rtl::OUString maPresetId;
     rtl::OUString maUIName;
-
+    rtl::OUString maUICategoryId;
+    rtl::OUString maUICategory;
+    
     static bool importTransitionsFile( TransitionPresetList& rList,
                                        ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory,
                                        UStringMap& rTransitionNameMape,
+                                       UStringMap& rTransitionCategoryNameMape,
                                        String aFilaname );
 };
 
diff --git a/sd/source/core/TransitionPreset.cxx b/sd/source/core/TransitionPreset.cxx
index 5d48200..a7cd46e 100644
--- a/sd/source/core/TransitionPreset.cxx
+++ b/sd/source/core/TransitionPreset.cxx
@@ -49,6 +49,7 @@
 #include <unotools/ucbstreamhelper.hxx>
 
 #include <algorithm>
+#include <list>
 
 #include "sdpage.hxx"
 
@@ -76,17 +77,20 @@ TransitionPreset::TransitionPreset( const ::com::sun::star::uno::Reference< ::co
 {
     // first locate preset id
     Sequence< NamedValue > aUserData( xNode->getUserData() );
-    sal_Int32 nLength = aUserData.getLength();
+    const sal_Int32 nLength = aUserData.getLength();
     const NamedValue* p = aUserData.getConstArray();
-    while( nLength-- )
+    sal_Int32 i;
+    for( i=0; i < nLength; i++ )
     {
-        if ( p->Name == "preset-id" )
+        if ( p[i].Name == "preset-id" )
         {
-            p->Value >>= maPresetId;
-            break;
+            p[i].Value >>= maPresetId;
+        }
+        else if ( p[i].Name == "preset-uicategory" )
+        {
+            p[i].Value >>= maUICategoryId;
         }
     }
-
     // second, locate transition filter element
     Reference< XEnumerationAccess > xEnumerationAccess( xNode, UNO_QUERY_THROW );
     Reference< XEnumeration > xEnumeration( xEnumerationAccess->createEnumeration(), UNO_QUERY_THROW );
@@ -101,6 +105,7 @@ TransitionPreset::TransitionPreset( const ::com::sun::star::uno::Reference< ::co
 bool TransitionPreset::importTransitionsFile( TransitionPresetList& rList,
                                               Reference< XMultiServiceFactory >& xServiceFactory,
                                               UStringMap& rTransitionNameMape,
+                                              UStringMap& rTransitionCategoryNameMape,
                                               String aURL )
 {
     // import transition presets
@@ -121,12 +126,17 @@ bool TransitionPreset::importTransitionsFile( TransitionPresetList& rList,
 
                 // name it
                 OUString aPresetId( pPreset->getPresetId() );
-                if( !aPresetId.isEmpty() )
+                OUString aCategoryId( pPreset->getUICategoryId() );
+                if( !aPresetId.isEmpty() && !aCategoryId.isEmpty() )
                 {
                     UStringMap::const_iterator aIter( rTransitionNameMape.find( aPresetId ) );
                     if( aIter != rTransitionNameMape.end() )
                         pPreset->maUIName = (*aIter).second;
 
+                    aIter = rTransitionCategoryNameMape.find( aCategoryId );
+                    if( aIter != rTransitionCategoryNameMape.end() )
+                        pPreset->maUICategory = (*aIter).second;
+                    
                                 // add it
                     rList.push_back( pPreset );
                 }
@@ -146,7 +156,7 @@ bool TransitionPreset::importTransitionsFile( TransitionPresetList& rList,
 
 #define EXPAND_PROTOCOL "vnd.sun.star.expand:"
 
-bool TransitionPreset::importTransitionPresetList( TransitionPresetList& rList )
+bool TransitionPreset::importTransitionPresetList( TransitionPresetList& rList, UStringList& categoryList )
 {
     bool bRet = false;
 
@@ -178,6 +188,21 @@ bool TransitionPreset::importTransitionPresetList( TransitionPresetList& rList )
         const OUString aTransitionPath( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Office.UI.Effects/UserInterface/Transitions" ) );
         implImportLabels( xConfigProvider, aTransitionPath, aTransitionNameMape );
 
+        
+        UStringMap aTransitionCategoryNameMape;
+        const OUString aTransitionCategoriesPath( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Office.UI.Effects/UserInterface/Transition-UICategories" ) );
+        implImportLabels( xConfigProvider, aTransitionCategoriesPath, aTransitionCategoryNameMape );   
+        
+        
+        UStringMap::const_iterator aIterator;
+        for ( aIterator = aTransitionCategoryNameMape.begin();
+             aIterator != aTransitionCategoryNameMape.end();
+             aIterator++ )
+        {
+            OUString aCategory = aIterator->second;
+            categoryList.insert( categoryList.end(), aCategory );
+        }
+        
         // read path to transition effects files from config
         Any propValue = uno::makeAny(
             beans::PropertyValue(
@@ -209,6 +234,7 @@ bool TransitionPreset::importTransitionPresetList( TransitionPresetList& rList )
             bRet |= importTransitionsFile( rList,
                                            xServiceFactory,
                                            aTransitionNameMape,
+                                           aTransitionCategoryNameMape,
                                            aURL );
         }
 
@@ -228,16 +254,21 @@ namespace
     {
     private:
         sd::TransitionPresetList m_aTransitionPresetList;
+        UStringList m_aTransitionPresetCategoryList;
     public:
         ImportedTransitionPresetList()
         {
             sd::TransitionPreset::importTransitionPresetList(
-                m_aTransitionPresetList);
+                m_aTransitionPresetList, m_aTransitionPresetCategoryList);
         }
         const sd::TransitionPresetList& getList() const
         {
             return m_aTransitionPresetList;
         }
+        const UStringList& getCategoryList() const
+        {
+            return m_aTransitionPresetCategoryList;
+        }
     };
 
     class theTransitionPresetList :
@@ -245,6 +276,7 @@ namespace
                            theTransitionPresetList>
     {
     };
+    
 }
 
 const TransitionPresetList& TransitionPreset::getTransitionPresetList()
@@ -252,6 +284,11 @@ const TransitionPresetList& TransitionPreset::getTransitionPresetList()
     return theTransitionPresetList::get().getList();
 }
 
+const UStringList& TransitionPreset::getTransitionPresetCategoryList()
+{
+    return theTransitionPresetList::get().getCategoryList();  
+}
+
 void TransitionPreset::apply( SdPage* pSlide ) const
 {
     if( pSlide )
diff --git a/sd/source/ui/animations/SlideTransitionPane.cxx b/sd/source/ui/animations/SlideTransitionPane.cxx
index 90fdab4..9748e58 100644
--- a/sd/source/ui/animations/SlideTransitionPane.cxx
+++ b/sd/source/ui/animations/SlideTransitionPane.cxx
@@ -451,7 +451,7 @@ SlideTransitionPane::SlideTransitionPane(
         mpDrawDoc( pDoc ),
         maMinSize( rMinSize ),
         maFL_APPLY_TRANSITION( this, SdResId( FL_APPLY_TRANSITION ) ),
-        maLB_SLIDE_TRANSITIONS( this, SdResId( LB_SLIDE_TRANSITIONS ) ),
+        maTLB_SLIDE_TRANSITIONS( this, SdResId( LB_SLIDE_TRANSITIONS ) ),
         maFL_MODIFY_TRANSITION( this, SdResId( FL_MODIFY_TRANSITION ) ),
         maFT_SPEED( this, SdResId( FT_SPEED ) ),
         maLB_SPEED( this, SdResId( LB_SPEED ) ),
@@ -492,8 +492,13 @@ SlideTransitionPane::SlideTransitionPane(
         mxView.set( mxModel->getCurrentController(), uno::UNO_QUERY );
 
     // fill list box of slide transitions
-    maLB_SLIDE_TRANSITIONS.InsertEntry( maSTR_NO_TRANSITION );
+    maTLB_SLIDE_TRANSITIONS.InsertEntry( maSTR_NO_TRANSITION );
 
+    maTLB_SLIDE_TRANSITIONS.SetStyle( maTLB_SLIDE_TRANSITIONS.GetStyle()|
+            WB_HASBUTTONS|WB_HASBUTTONSATROOT|
+            WB_CLIPCHILDREN|WB_HSCROLL|WB_FORCE_MAKEVISIBLE );
+    maTLB_SLIDE_TRANSITIONS.SetSelectionMode( SINGLE_SELECTION );
+    maTLB_SLIDE_TRANSITIONS.SetNodeDefaultImages();
     // set defaults
     maCB_AUTO_PREVIEW.Check();      // automatic preview on
 
@@ -506,8 +511,8 @@ SlideTransitionPane::SlideTransitionPane(
     maPB_PLAY.SetClickHdl( LINK( this, SlideTransitionPane, PlayButtonClicked ));
     maPB_SLIDE_SHOW.SetClickHdl( LINK( this, SlideTransitionPane, SlideShowButtonClicked ));
 
-    maLB_SLIDE_TRANSITIONS.SetSelectHdl( LINK( this, SlideTransitionPane, TransitionSelected ));
-
+    maTLB_SLIDE_TRANSITIONS.SetSelectHdl( LINK( this, SlideTransitionPane, TransitionSelected ));
+    
     maLB_SPEED.SetSelectHdl( LINK( this, SlideTransitionPane, SpeedListBoxSelected ));
     maLB_SOUND.SetSelectHdl( LINK( this, SlideTransitionPane, SoundListBoxSelected ));
     maCB_LOOP_SOUND.SetClickHdl( LINK( this, SlideTransitionPane, LoopSoundBoxChecked ));
@@ -754,11 +759,12 @@ void SlideTransitionPane::updateLayout()
     // list box slide transitions
     aCtrlSize.setWidth( nMaxWidth );
     aCtrlSize.setHeight( aUpperLeft.getY() - aUpperLeftCorner.getY() );
-    maLB_SLIDE_TRANSITIONS.SetPosSizePixel( aUpperLeftCorner, aCtrlSize );
+    maTLB_SLIDE_TRANSITIONS.SetPosSizePixel( aUpperLeftCorner, aCtrlSize );
 }
 
 void SlideTransitionPane::updateControls()
 {
+    OSL_TRACE("updateControls()");
     ::sd::slidesorter::SharedPageSelection pSelectedPages(getSelectedPages());
     if( pSelectedPages->empty())
     {
@@ -791,25 +797,28 @@ void SlideTransitionPane::updateControls()
 
     // detect current slide effect
     if( aEffect.mbEffectAmbiguous )
-        maLB_SLIDE_TRANSITIONS.SetNoSelection();
+    {
+        maTLB_SLIDE_TRANSITIONS.SetCurEntry( 0 );
+    }
     else
     {
         // ToDo: That 0 is "no transition" is documented nowhere except in the
         // CTOR of sdpage
         if( aEffect.mnType == 0 )
-            maLB_SLIDE_TRANSITIONS.SelectEntryPos( 0 );
+            maTLB_SLIDE_TRANSITIONS.SetCurEntry( 0 );
         else
         {
             sal_uInt16 nEntry = lcl_getTransitionEffectIndex( mpDrawDoc, aEffect );
             if( nEntry == LISTBOX_ENTRY_NOTFOUND )
-                maLB_SLIDE_TRANSITIONS.SetNoSelection();
+                maTLB_SLIDE_TRANSITIONS.SetCurEntry( 0 );
             else
             {
                 // first entry in list is "none", so add 1 after translation
-                if( m_aPresetIndexes.find( nEntry ) != m_aPresetIndexes.end())
-                    maLB_SLIDE_TRANSITIONS.SelectEntryPos( m_aPresetIndexes[ nEntry ] + 1 );
+                tPresetIndexesType::const_iterator aIterator = m_aPresetIndexes.find( nEntry );
+                if( aIterator != m_aPresetIndexes.end() )
+                    maTLB_SLIDE_TRANSITIONS.SetCurEntry( aIterator->second );
                 else
-                    maLB_SLIDE_TRANSITIONS.SetNoSelection();
+                    maTLB_SLIDE_TRANSITIONS.SetCurEntry( 0 );
             }
         }
     }
@@ -881,7 +890,7 @@ void SlideTransitionPane::updateControls()
 
 void SlideTransitionPane::updateControlState()
 {
-    maLB_SLIDE_TRANSITIONS.Enable( mbHasSelection );
+    maTLB_SLIDE_TRANSITIONS.EnableList( mbHasSelection );
     maLB_SPEED.Enable( mbHasSelection );
     maLB_SOUND.Enable( mbHasSelection );
     maCB_LOOP_SOUND.Enable( mbHasSelection && (maLB_SOUND.GetSelectEntryPos() > 2));
@@ -991,12 +1000,11 @@ impl::TransitionEffect SlideTransitionPane::getTransitionEffectFromControls() co
     aResult.setAllAmbiguous();
 
     // check first (aResult might be overwritten)
-    if( maLB_SLIDE_TRANSITIONS.IsEnabled() &&
-        maLB_SLIDE_TRANSITIONS.GetSelectEntryCount() > 0 )
+    if(  maTLB_SLIDE_TRANSITIONS.IsEnabled() &&
+        maTLB_SLIDE_TRANSITIONS.GetSelectionCount() > 0 )
     {
         TransitionPresetPtr pPreset = lcl_getTransitionPresetByUIName(
-            mpDrawDoc, OUString( maLB_SLIDE_TRANSITIONS.GetSelectEntry()));
-
+            mpDrawDoc, OUString( maTLB_SLIDE_TRANSITIONS.GetEntryText( maTLB_SLIDE_TRANSITIONS.GetCurEntry() ) ) );
         if( pPreset.get())
         {
             aResult = impl::TransitionEffect( *pPreset );
@@ -1267,20 +1275,44 @@ IMPL_LINK_NOARG(SlideTransitionPane, AutoPreviewClicked)
 
 IMPL_LINK_NOARG(SlideTransitionPane, LateInitCallback)
 {
+    const UStringList& rPresetCategoryList = TransitionPreset::getTransitionPresetCategoryList();
+    UStringList::const_iterator aIterS;
+    std::map<OUString, SvLBoxEntry*> aCategoryMap;
+    // Add the categories
+    for ( aIterS = rPresetCategoryList.begin(); aIterS != rPresetCategoryList.end(); aIterS++ )
+    {
+        OUString aCategoryName = *aIterS;
+        SvLBoxEntry *aCategory = maTLB_SLIDE_TRANSITIONS.InsertEntry ( 
+                    aCategoryName, 0, sal_True );
+        aCategoryMap.insert( std::map<OUString, SvLBoxEntry*>::value_type( aCategoryName, aCategory ));
+        aCategory->SetFlags( aCategory->GetFlags() | SV_LBOXTAB_SHOW_SELECTION );
+    }
     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 )
     {
         TransitionPresetPtr pPreset = (*aIter++);
         const OUString aUIName( pPreset->getUIName() );
-         if( !aUIName.isEmpty() )
+        if( !aUIName.isEmpty() )
         {
-            maLB_SLIDE_TRANSITIONS.InsertEntry( aUIName );
-            m_aPresetIndexes[ nIndex ] = (sal_uInt16)nUIIndex;
-            ++nUIIndex;
+            OUString aCategoryName = pPreset->getUICategory();
+            std::map<OUString, SvLBoxEntry*>::iterator it = aCategoryMap.find( aCategoryName );
+
+            SvLBoxEntry *aCategory;     
+            SvLBoxEntry *aItem;
+            if ( it != aCategoryMap.end() ) { // Insert category into map
+                aCategory = it->second;
+                aItem = maTLB_SLIDE_TRANSITIONS.InsertEntry( aUIName, aCategory );
+            }
+            else // Should deal with uncategorised entries.
+            {
+                aItem = maTLB_SLIDE_TRANSITIONS.InsertEntry( aUIName );
+            }
+            
+
+            m_aPresetIndexes[ nIndex ] = aItem;
         }
         ++nIndex;
     }
diff --git a/sd/source/ui/animations/SlideTransitionPane.hxx b/sd/source/ui/animations/SlideTransitionPane.hxx
index e5db4fb..044ac64 100644
--- a/sd/source/ui/animations/SlideTransitionPane.hxx
+++ b/sd/source/ui/animations/SlideTransitionPane.hxx
@@ -37,6 +37,7 @@
 #include <vcl/fixed.hxx>
 #include <vcl/button.hxx>
 #include <vcl/field.hxx>
+#include <svtools/svtreebx.hxx>
 #include <com/sun/star/drawing/XDrawView.hpp>
 #include <com/sun/star/frame/XModel.hpp>
 
@@ -108,26 +109,26 @@ private:
     SdDrawDocument *  mpDrawDoc;
     Size              maMinSize;
 
-    FixedLine    maFL_APPLY_TRANSITION;
-    ListBox      maLB_SLIDE_TRANSITIONS;
-    FixedLine    maFL_MODIFY_TRANSITION;
-    FixedText    maFT_SPEED;
-    ListBox      maLB_SPEED;
-    FixedText    maFT_SOUND;
-    ListBox      maLB_SOUND;
-    CheckBox     maCB_LOOP_SOUND;
-    FixedLine    maFL_ADVANCE_SLIDE;
-    RadioButton  maRB_ADVANCE_ON_MOUSE;
-    RadioButton  maRB_ADVANCE_AUTO;
-    MetricField  maMF_ADVANCE_AUTO_AFTER;
-    FixedLine    maFL_EMPTY1;
-    PushButton   maPB_APPLY_TO_ALL;
-    PushButton   maPB_PLAY;
-    PushButton   maPB_SLIDE_SHOW;
-    FixedLine    maFL_EMPTY2;
-    CheckBox     maCB_AUTO_PREVIEW;
-
-    String       maSTR_NO_TRANSITION;
+    FixedLine     maFL_APPLY_TRANSITION;
+    SvTreeListBox maTLB_SLIDE_TRANSITIONS;
+    FixedLine     maFL_MODIFY_TRANSITION;
+    FixedText     maFT_SPEED;
+    ListBox       maLB_SPEED;
+    FixedText     maFT_SOUND;
+    ListBox       maLB_SOUND;
+    CheckBox      maCB_LOOP_SOUND;
+    FixedLine     maFL_ADVANCE_SLIDE;
+    RadioButton   maRB_ADVANCE_ON_MOUSE;
+    RadioButton   maRB_ADVANCE_AUTO;
+    MetricField   maMF_ADVANCE_AUTO_AFTER;
+    FixedLine     maFL_EMPTY1;
+    PushButton    maPB_APPLY_TO_ALL;
+    PushButton    maPB_PLAY;
+    PushButton    maPB_SLIDE_SHOW;
+    FixedLine     maFL_EMPTY2;
+    CheckBox      maCB_AUTO_PREVIEW;
+
+    String        maSTR_NO_TRANSITION;
 
     ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawView >             mxView;
     ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >                  mxModel;
@@ -140,7 +141,7 @@ private:
     tSoundListType  maSoundList;
     mutable String  maCurrentSoundFile;
 
-    typedef ::std::map< sal_uInt16, sal_uInt16 > tPresetIndexesType;
+    typedef ::std::map< sal_uInt16, SvLBoxEntry* > tPresetIndexesType;
     tPresetIndexesType m_aPresetIndexes;
 
     Timer maLateInitTimer;
diff --git a/sd/xml/transitions-ogl.xml b/sd/xml/transitions-ogl.xml
index ca1e366..1125fe4 100644
--- a/sd/xml/transitions-ogl.xml
+++ b/sd/xml/transitions-ogl.xml
@@ -1,48 +1,48 @@
 <?xml version="1.0"?>
 <anim:seq xmlns:office="urn:oasis:names:tc:openoffice:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:openoffice:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:openoffice:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:openoffice:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:openoffice:xmlns:drawing:1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format"; xmlns:xlink="http://www.w3.org/1999/xlink"; xmlns:dc="http://purl.org/dc/elements/1.1/"; xmlns:meta="urn:oasis:names:tc:openoffice:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:openoffice:xmlns:datastyle:1.0" xmlns:pres="urn:oasis:names:tc:openoffice:xmlns:presentation:1.0" xmlns:svg="http://www.w3.org/2000/svg"; xmlns:chart="urn:oasis:names:tc:openoffice:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:openoffice:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML"; xmlns:form="urn:oasis:names:tc:openoffice:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:openoffice:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office"; xmlns:ooow="http://openoffice.org/2004/writer"; xmlns:oooc="http://openoffice.org/2004/calc"; xmlns:dom="http://www.w3.org/2001/xml-events"; xmlns:smil="http://www.w3.org/2001/SMIL20"; xmlns:anim="urn:oasis:names:tc:openoffice:xmlns:animation:1.0" pres:node-type="main-sequence">
- <anim:par pres:preset-id="tile-flip">
+ <anim:par pres:preset-id="tile-flip" pres:preset-uicategory="category-ogl">
   <anim:transitionFilter smil:type="miscShapeWipe" smil:subtype="across"/>
  </anim:par>
- <anim:par pres:preset-id="outside-cube">
+ <anim:par pres:preset-id="outside-cube" pres:preset-uicategory="category-ogl">
   <anim:transitionFilter smil:type="miscShapeWipe" smil:subtype="cornersOut"/>
  </anim:par>
- <anim:par pres:preset-id="revolving-circles">
+ <anim:par pres:preset-id="revolving-circles" pres:preset-uicategory="category-ogl">
   <anim:transitionFilter smil:type="miscShapeWipe" smil:subtype="circle"/>
  </anim:par>
- <anim:par pres:preset-id="turning-helix">
+ <anim:par pres:preset-id="turning-helix" pres:preset-uicategory="category-ogl">
   <anim:transitionFilter smil:type="miscShapeWipe" smil:subtype="fanOutHorizontal"/>
  </anim:par>
- <anim:par pres:preset-id="inside-cube">
+ <anim:par pres:preset-id="inside-cube" pres:preset-uicategory="category-ogl">
   <anim:transitionFilter smil:type="miscShapeWipe" smil:subtype="cornersIn"/>
  </anim:par>
- <anim:par pres:preset-id="fall">
+ <anim:par pres:preset-id="fall" pres:preset-uicategory="category-ogl">
   <anim:transitionFilter smil:type="miscShapeWipe" smil:subtype="leftToRight"/>
  </anim:par>
- <anim:par pres:preset-id="turn-around">
+ <anim:par pres:preset-id="turn-around" pres:preset-uicategory="category-ogl">
   <anim:transitionFilter smil:type="miscShapeWipe" smil:subtype="topToBottom"/>
  </anim:par>
- <anim:par pres:preset-id="iris">
+ <anim:par pres:preset-id="iris" pres:preset-uicategory="category-ogl">
   <anim:transitionFilter smil:type="miscShapeWipe" smil:subtype="topLeft"/>
  </anim:par>
- <anim:par pres:preset-id="turn-down">
+ <anim:par pres:preset-id="turn-down" pres:preset-uicategory="category-ogl">
   <anim:transitionFilter smil:type="miscShapeWipe" smil:subtype="topRight"/>
  </anim:par>
- <anim:par pres:preset-id="rochade">
+ <anim:par pres:preset-id="rochade" pres:preset-uicategory="category-ogl">
   <anim:transitionFilter smil:type="miscShapeWipe" smil:subtype="bottomRight"/>
  </anim:par>
- <anim:par pres:preset-id="venetian3dv">
+ <anim:par pres:preset-id="venetian3dv" pres:preset-uicategory="category-ogl">
   <anim:transitionFilter smil:type="miscShapeWipe" smil:subtype="bottomLeft"/>
  </anim:par>
- <anim:par pres:preset-id="venetian3dh">
+ <anim:par pres:preset-id="venetian3dh" pres:preset-uicategory="category-ogl">
   <anim:transitionFilter smil:type="miscShapeWipe" smil:subtype="topCenter"/>
  </anim:par>
- <anim:par pres:preset-id="static">
+ <anim:par pres:preset-id="static" pres:preset-uicategory="category-ogl">
   <anim:transitionFilter smil:type="miscShapeWipe" smil:subtype="rightCenter"/>
  </anim:par>
- <anim:par pres:preset-id="finedissolve">
+ <anim:par pres:preset-id="finedissolve" pres:preset-uicategory="category-ogl">
   <anim:transitionFilter smil:type="miscShapeWipe" smil:subtype="bottomCenter"/>
  </anim:par>
- <anim:par pres:preset-id="zoom-rotate-in">
+ <anim:par pres:preset-id="zoom-rotate-in" pres:preset-uicategory="category-ogl">
   <anim:transitionFilter smil:type="zoom" smil:subtype="rotateIn"/>
  </anim:par>
  </anim:seq>
diff --git a/sd/xml/transitions.xml b/sd/xml/transitions.xml
index 556eb6f..c7a4aa5 100644
--- a/sd/xml/transitions.xml
+++ b/sd/xml/transitions.xml
@@ -1,54 +1,54 @@
 <?xml version="1.0"?>
 <anim:seq xmlns:office="urn:oasis:names:tc:openoffice:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:openoffice:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:openoffice:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:openoffice:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:openoffice:xmlns:drawing:1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format"; xmlns:xlink="http://www.w3.org/1999/xlink"; xmlns:dc="http://purl.org/dc/elements/1.1/"; xmlns:meta="urn:oasis:names:tc:openoffice:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:openoffice:xmlns:datastyle:1.0" xmlns:pres="urn:oasis:names:tc:openoffice:xmlns:presentation:1.0" xmlns:svg="http://www.w3.org/2000/svg"; xmlns:chart="urn:oasis:names:tc:openoffice:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:openoffice:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML"; xmlns:form="urn:oasis:names:tc:openoffice:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:openoffice:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office"; xmlns:ooow="http://openoffice.org/2004/writer"; xmlns:oooc="http://openoffice.org/2004/calc"; xmlns:dom="http://www.w3.org/2001/xml-events"; xmlns:smil="http://www.w3.org/2001/SMIL20"; xmlns:anim="urn:oasis:names:tc:openoffice:xmlns:animation:1.0" pres:node-type="main-sequence">
- <anim:par pres:preset-id="wipe-up">
+ <anim:par pres:preset-id="wipe-up" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="barWipe" smil:subtype="topToBottom" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="wipe-right">
+ <anim:par pres:preset-id="wipe-right" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="barWipe" smil:subtype="leftToRight"/>
  </anim:par>
- <anim:par pres:preset-id="wipe-left">
+ <anim:par pres:preset-id="wipe-left" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="barWipe" smil:subtype="leftToRight" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="wipe-down">
+ <anim:par pres:preset-id="wipe-down" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="barWipe" smil:subtype="topToBottom"/>
  </anim:par>
- <anim:par pres:preset-id="wheel-clockwise-1-spoke">
+ <anim:par pres:preset-id="wheel-clockwise-1-spoke" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="pinWheelWipe" smil:subtype="oneBlade"/>
  </anim:par>
- <anim:par pres:preset-id="wheel-clockwise-2-spokes">
+ <anim:par pres:preset-id="wheel-clockwise-2-spokes" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="pinWheelWipe" smil:subtype="twoBladeVertical"/>
  </anim:par>
- <anim:par pres:preset-id="wheel-clockwise-3-spokes">
+ <anim:par pres:preset-id="wheel-clockwise-3-spokes" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="pinWheelWipe" smil:subtype="threeBlade"/>
  </anim:par>
- <anim:par pres:preset-id="wheel-clockwise-4-spokes">
+ <anim:par pres:preset-id="wheel-clockwise-4-spokes" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="pinWheelWipe" smil:subtype="fourBlade"/>
  </anim:par>
- <anim:par pres:preset-id="wheel-clockwise-8-spokes">
+ <anim:par pres:preset-id="wheel-clockwise-8-spokes" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="pinWheelWipe" smil:subtype="eightBlade"/>
  </anim:par>
- <anim:par pres:preset-id="uncover-down">
+ <anim:par pres:preset-id="uncover-down" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromTop" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="uncover-left">
+ <anim:par pres:preset-id="uncover-left" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromRight" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="uncover-right">
+ <anim:par pres:preset-id="uncover-right" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromLeft" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="uncover-up">
+ <anim:par pres:preset-id="uncover-up" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromBottom" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="uncover-left-down">
+ <anim:par pres:preset-id="uncover-left-down" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromTopRight" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="uncover-left-up">
+ <anim:par pres:preset-id="uncover-left-up" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromBottomRight" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="uncover-right-down">
+ <anim:par pres:preset-id="uncover-right-down" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromTopLeft" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="uncover-right-up">
+ <anim:par pres:preset-id="uncover-right-up" pres:preset-uicategory="category-wipe">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromBottomLeft" smil:direction="reverse"/>
  </anim:par>
 <!--  <anim:par pres:preset-id="barn-inVertical"> -->
@@ -63,163 +63,163 @@
 <!--  <anim:par pres:preset-id="barn-outHorizontal"> -->
 <!--   <anim:transitionFilter smil:type="barnDoorWipe" smil:subtype="horizontal" smil:direction="reverse"/> -->
 <!--  </anim:par> -->
- <anim:par pres:preset-id="random-bars-vertical">
+ <anim:par pres:preset-id="random-bars-vertical" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="randomBarWipe" smil:subtype="vertical"/>},
  </anim:par>
- <anim:par pres:preset-id="random-bars-horizontal">
+ <anim:par pres:preset-id="random-bars-horizontal" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="randomBarWipe" smil:subtype="horizontal"/>
  </anim:par>
- <anim:par pres:preset-id="checkerboard-down">
+ <anim:par pres:preset-id="checkerboard-down" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="checkerBoardWipe" smil:subtype="down"/>},
  </anim:par>
- <anim:par pres:preset-id="checkerboard-across">
+ <anim:par pres:preset-id="checkerboard-across" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="checkerBoardWipe" smil:subtype="across"/>
  </anim:par>
- <anim:par pres:preset-id="shape-plus">
+ <anim:par pres:preset-id="shape-plus" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="fourBoxWipe" smil:subtype="cornersOut"/>
  </anim:par>
 <!--  <anim:par pres:preset-id="plus-in"> -->
 <!--   <anim:transitionFilter smil:type="fourBoxWipe" smil:subtype="cornersIn"/> -->
 <!--  </anim:par> -->
- <anim:par pres:preset-id="shape-diamond">
+ <anim:par pres:preset-id="shape-diamond" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="irisWipe" smil:subtype="diamond"/>
  </anim:par>
 <!--  <anim:par pres:preset-id="diamond-in"> -->
 <!--   <anim:transitionFilter smil:type="irisWipe" smil:subtype="diamond" smil:direction="reverse"/> -->
 <!--  </anim:par> -->
- <anim:par pres:preset-id="shape-circle">
+ <anim:par pres:preset-id="shape-circle" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="ellipseWipe" smil:subtype="circle"/>
  </anim:par>
 <!--  <anim:par pres:preset-id="circle-in"> -->
 <!--   <anim:transitionFilter smil:type="ellipseWipe" smil:subtype="circle" smil:direction="reverse"/> -->
 <!--  </anim:par> -->
- <anim:par pres:preset-id="box-out">
+ <anim:par pres:preset-id="box-out" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="irisWipe" smil:subtype="rectangle"/>
  </anim:par>
- <anim:par pres:preset-id="box-in">
+ <anim:par pres:preset-id="box-in" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="irisWipe" smil:subtype="rectangle" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="wedge">
+ <anim:par pres:preset-id="wedge" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="fanWipe" smil:subtype="centerTop"/>
  </anim:par>
- <anim:par pres:preset-id="venetian-blinds-vertical">
+ <anim:par pres:preset-id="venetian-blinds-vertical" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="blindsWipe" smil:subtype="vertical"/>
  </anim:par>
- <anim:par pres:preset-id="venetian-blinds-horizontal">
+ <anim:par pres:preset-id="venetian-blinds-horizontal" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="blindsWipe" smil:subtype="horizontal"/>
  </anim:par>
- <anim:par pres:preset-id="fade-through-black">
+ <anim:par pres:preset-id="fade-through-black" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="fade" smil:subtype="fadeOverColor" smil:fadeColor="#000000"/>
  </anim:par>
- <anim:par pres:preset-id="cut-through-black">
+ <anim:par pres:preset-id="cut-through-black" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="barWipe" smil:subtype="fadeOverColor" smil:fadeColor="#000000"/>
  </anim:par>
- <anim:par pres:preset-id="cover-down">
+ <anim:par pres:preset-id="cover-down" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromTop"/>
  </anim:par>
- <anim:par pres:preset-id="cover-left">
+ <anim:par pres:preset-id="cover-left" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromRight"/>
  </anim:par>
- <anim:par pres:preset-id="cover-right">
+ <anim:par pres:preset-id="cover-right" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromLeft"/>
  </anim:par>
- <anim:par pres:preset-id="cover-up">
+ <anim:par pres:preset-id="cover-up" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromBottom"/>
  </anim:par>
- <anim:par pres:preset-id="cover-left-down">
+ <anim:par pres:preset-id="cover-left-down" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromTopRight"/>
  </anim:par>
- <anim:par pres:preset-id="cover-left-up">
+ <anim:par pres:preset-id="cover-left-up" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromBottomRight"/>
  </anim:par>
- <anim:par pres:preset-id="cover-right-down">
+ <anim:par pres:preset-id="cover-right-down" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromTopLeft"/>
  </anim:par>
- <anim:par pres:preset-id="cover-right-up">
+ <anim:par pres:preset-id="cover-right-up" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="slideWipe" smil:subtype="fromBottomLeft"/>
  </anim:par>
- <anim:par pres:preset-id="dissolve">
+ <anim:par pres:preset-id="dissolve" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="dissolve" smil:subtype="default"/>
  </anim:par>
- <anim:par pres:preset-id="random-transition">
+ <anim:par pres:preset-id="random-transition" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="random"/>
  </anim:par>
  <!--anim:par pres:preset-id="zoom-rotate-in">
   <anim:transitionFilter smil:type="zoom" smil:subtype="rotateIn"/>
  </anim:par-->
- <anim:par pres:preset-id="clock-wipe-twelve">
+ <anim:par pres:preset-id="clock-wipe-twelve" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="clockWipe" smil:subtype="clockwiseTwelve"/>
  </anim:par>
- <anim:par pres:preset-id="reverse-clock-wipe-twelve">
+ <anim:par pres:preset-id="reverse-clock-wipe-twelve" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="clockWipe" smil:subtype="clockwiseTwelve" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="spiral-wipe-top-left-clockwise">
+ <anim:par pres:preset-id="spiral-wipe-top-left-clockwise" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="spiralWipe" smil:subtype="topLeftClockwise"/>
  </anim:par>
- <anim:par pres:preset-id="spiral-wipe-top-right-counter-clockwise">
+ <anim:par pres:preset-id="spiral-wipe-top-right-counter-clockwise" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="spiralWipe" smil:subtype="topRightCounterClockwise"/>
  </anim:par>
- <anim:par pres:preset-id="spiral-wipe-out-to-bottom-right-clockwise">
+ <anim:par pres:preset-id="spiral-wipe-out-to-bottom-right-clockwise" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="spiralWipe" smil:subtype="bottomRightCounterClockwise" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="spiral-wipe-out-to-bottom-left-counter-clockwise">
+ <anim:par pres:preset-id="spiral-wipe-out-to-bottom-left-counter-clockwise" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="spiralWipe" smil:subtype="bottomLeftClockwise" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="snake-wipe-top-left-vertical">
+ <anim:par pres:preset-id="snake-wipe-top-left-vertical" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="snakeWipe" smil:subtype="topLeftVertical"/>
  </anim:par>
- <anim:par pres:preset-id="snake-wipe-top-left-horizontal">
+ <anim:par pres:preset-id="snake-wipe-top-left-horizontal" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="snakeWipe" smil:subtype="topLeftHorizontal"/>
  </anim:par>
- <anim:par pres:preset-id="snake-wipe-bottom-right-vertical">
+ <anim:par pres:preset-id="snake-wipe-bottom-right-vertical" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="snakeWipe" smil:subtype="topLeftVertical" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="snake-wipe-bottom-right-horizontal">
+ <anim:par pres:preset-id="snake-wipe-bottom-right-horizontal" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="snakeWipe" smil:subtype="topLeftHorizontal" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="comb-horizontal">
+ <anim:par pres:preset-id="comb-horizontal" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="pushWipe" smil:subtype="combHorizontal"/>
  </anim:par>
- <anim:par pres:preset-id="comb-vertical">
+ <anim:par pres:preset-id="comb-vertical" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="pushWipe" smil:subtype="combVertical"/>
  </anim:par>
- <anim:par pres:preset-id="fade-smoothly">
+ <anim:par pres:preset-id="fade-smoothly" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="fade" smil:subtype="crossfade"/>
  </anim:par>
- <anim:par pres:preset-id="push-down">
+ <anim:par pres:preset-id="push-down" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="pushWipe" smil:subtype="fromTop"/>
  </anim:par>
- <anim:par pres:preset-id="push-left">
+ <anim:par pres:preset-id="push-left" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="pushWipe" smil:subtype="fromRight"/>
  </anim:par>
- <anim:par pres:preset-id="push-right">
+ <anim:par pres:preset-id="push-right" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="pushWipe" smil:subtype="fromLeft"/>
  </anim:par>
- <anim:par pres:preset-id="push-up">
+ <anim:par pres:preset-id="push-up" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="pushWipe" smil:subtype="fromBottom"/>
  </anim:par>
- <anim:par pres:preset-id="split-horizontal-in">
+ <anim:par pres:preset-id="split-horizontal-in" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="barnDoorWipe" smil:subtype="horizontal" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="split-horizontal-out">
+ <anim:par pres:preset-id="split-horizontal-out" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="barnDoorWipe" smil:subtype="horizontal"/>
  </anim:par>
- <anim:par pres:preset-id="split-vertical-in">
+ <anim:par pres:preset-id="split-vertical-in" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="barnDoorWipe" smil:subtype="vertical" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="split-vertical-out">
+ <anim:par pres:preset-id="split-vertical-out" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="barnDoorWipe" smil:subtype="vertical"/>
  </anim:par>
- <anim:par pres:preset-id="diagonal-squares-left-down">
+ <anim:par pres:preset-id="diagonal-squares-left-down" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="waterfallWipe" smil:subtype="horizontalRight"/>
  </anim:par>
- <anim:par pres:preset-id="diagonal-squares-left-up">
+ <anim:par pres:preset-id="diagonal-squares-left-up" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="waterfallWipe" smil:subtype="horizontalLeft" smil:direction="reverse"/>
  </anim:par>
- <anim:par pres:preset-id="diagonal-squares-right-down">
+ <anim:par pres:preset-id="diagonal-squares-right-down" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="waterfallWipe" smil:subtype="horizontalLeft"/>
  </anim:par>
- <anim:par pres:preset-id="diagonal-squares-right-up">
+ <anim:par pres:preset-id="diagonal-squares-right-up" pres:preset-uicategory="category-other">
   <anim:transitionFilter smil:type="waterfallWipe" smil:subtype="horizontalRight" smil:direction="reverse"/>
  </anim:par>
  </anim:seq>
diff --git a/xmloff/inc/xmloff/xmltoken.hxx b/xmloff/inc/xmloff/xmltoken.hxx
index f241023..fa2cadd 100644
--- a/xmloff/inc/xmloff/xmltoken.hxx
+++ b/xmloff/inc/xmloff/xmltoken.hxx
@@ -2849,6 +2849,7 @@ namespace xmloff { namespace token {
 
         XML_NODE_TYPE,
         XML_PRESET_ID,
+        XML_PRESET_UICATEGORY,
         XML_PRESET_SUB_TYPE,
         XML_PRESET_CLASS,
         XML_CUSTOM,
diff --git a/xmloff/source/core/xmltoken.cxx b/xmloff/source/core/xmltoken.cxx
index 7c56037..a18a4bf 100644
--- a/xmloff/source/core/xmltoken.cxx
+++ b/xmloff/source/core/xmltoken.cxx
@@ -2845,6 +2845,7 @@ namespace xmloff { namespace token {
 
         TOKEN( "node-type",         XML_NODE_TYPE ),
         TOKEN( "preset-id",         XML_PRESET_ID ),
+        TOKEN( "preset-uicategory", XML_PRESET_UICATEGORY ),
         TOKEN( "preset-sub-type",       XML_PRESET_SUB_TYPE ),
         TOKEN( "preset-class",      XML_PRESET_CLASS ),
         TOKEN( "custom",                XML_CUSTOM ),
diff --git a/xmloff/source/draw/animationimport.cxx b/xmloff/source/draw/animationimport.cxx
index 5baefba..f5ce628 100644
--- a/xmloff/source/draw/animationimport.cxx
+++ b/xmloff/source/draw/animationimport.cxx
@@ -203,6 +203,7 @@ enum AnimationNodeAttributes
     ANA_EndSync,
     ANA_Node_Type,
     ANA_Preset_ID,
+    ANA_Preset_UICategory,
     ANA_Preset_Sub_Type,
     ANA_Preset_Class,
     ANA_After_Effect,
@@ -260,6 +261,7 @@ const SvXMLTokenMap& AnimationsImportHelperImpl::getAnimationNodeAttributeTokenM
             { XML_NAMESPACE_SMIL, XML_ENDSYNC,                  (sal_uInt16)ANA_EndSync },
             { XML_NAMESPACE_PRESENTATION, XML_NODE_TYPE,        (sal_uInt16)ANA_Node_Type },
             { XML_NAMESPACE_PRESENTATION, XML_PRESET_ID,        (sal_uInt16)ANA_Preset_ID },
+            { XML_NAMESPACE_PRESENTATION, XML_PRESET_UICATEGORY,   (sal_uInt16)ANA_Preset_UICategory },
             { XML_NAMESPACE_PRESENTATION, XML_PRESET_SUB_TYPE,  (sal_uInt16)ANA_Preset_Sub_Type },
             { XML_NAMESPACE_PRESENTATION, XML_PRESET_CLASS,     (sal_uInt16)ANA_Preset_Class },
             { XML_NAMESPACE_PRESENTATION, XML_AFTER_EFFECT,     (sal_uInt16)ANA_After_Effect },
@@ -872,6 +874,11 @@ void AnimationNodeContext::init_node(  const ::com::sun::star::uno::Reference< :
                 aUserData.push_back( NamedValue( GetXMLToken( XML_PRESET_ID ), makeAny( rValue ) ) );
             }
             break;
+            case ANA_Preset_UICategory:
+            {
+                aUserData.push_back( NamedValue( GetXMLToken( XML_PRESET_UICATEGORY ), makeAny( rValue ) ) );
+            }
+            break;
             case ANA_Preset_Sub_Type:
             {
                 aUserData.push_back( NamedValue( GetXMLToken( XML_PRESET_SUB_TYPE ), makeAny( rValue ) ) );
_______________________________________________
LibreOffice mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to