chart2/source/controller/dialogs/dlg_PropertyMapping.cxx | 5 chart2/uiconfig/ui/dlg_PropertyMapping.ui | 147 ++++++++------ dbaccess/AllLangResTarget_dbu.mk | 1 dbaccess/UIConfig_dbaccess.mk | 1 dbaccess/source/ui/dlg/dsselect.cxx | 65 +++--- dbaccess/source/ui/dlg/dsselect.hrc | 35 --- dbaccess/source/ui/dlg/dsselect.hxx | 16 - dbaccess/source/ui/dlg/dsselect.src | 98 --------- dbaccess/source/ui/inc/dbu_resource.hrc | 1 dbaccess/uiconfig/ui/choosedatasourcedialog.ui | 125 ++++++++++++ sd/inc/EffectMigration.hxx | 2 sd/source/core/EffectMigration.cxx | 150 ++++++++++++++- sd/source/ui/dlg/animobjs.cxx | 64 +++--- sd/source/ui/unoidl/unoobj.cxx | 35 +++ xmloff/source/draw/animimp.cxx | 5 15 files changed, 474 insertions(+), 276 deletions(-)
New commits: commit 829a2f9b1f978db92d7cf50a30feead5128bce9f Author: Caolán McNamara <caol...@redhat.com> Date: Mon Feb 17 10:43:52 2014 +0000 this dialog is unfinished, but fix it to not crash Change-Id: Icb6d1d1bb14678eb711100644f3f60725db4b5db diff --git a/chart2/source/controller/dialogs/dlg_PropertyMapping.cxx b/chart2/source/controller/dialogs/dlg_PropertyMapping.cxx index c41859f..8022c5d 100644 --- a/chart2/source/controller/dialogs/dlg_PropertyMapping.cxx +++ b/chart2/source/controller/dialogs/dlg_PropertyMapping.cxx @@ -21,8 +21,9 @@ static long pListBoxTabs[] = } -PropertyMappingDlg::PropertyMappingDlg(Window* pParent): - ModalDialog(pParent, "Property Mapping Dialog", "modules/schart/ui/dlg_PropertyMapping.ui") +PropertyMappingDlg::PropertyMappingDlg(Window* pParent) + : ModalDialog(pParent, "PropertyMappingDialog", + "modules/schart/ui/dlg_PropertyMapping.ui") { get(mpMappingTable, "LST_PROPERTY_MAPPING"); diff --git a/chart2/uiconfig/ui/dlg_PropertyMapping.ui b/chart2/uiconfig/ui/dlg_PropertyMapping.ui index 55ae428..cbdd35b 100644 --- a/chart2/uiconfig/ui/dlg_PropertyMapping.ui +++ b/chart2/uiconfig/ui/dlg_PropertyMapping.ui @@ -3,50 +3,20 @@ <interface> <requires lib="gtk+" version="3.10"/> <!-- interface-requires LibreOffice 1.0 --> - <object class="GtkWindow" id="window1"> + <object class="GtkDialog" id="PropertyMappingDialog"> <property name="can_focus">False</property> + <property name="border_width">6</property> + <property name="title" translatable="yes">Add Property Mapping</property> <property name="type_hint">dialog</property> - <child> - <object class="GtkBox" id="box1"> - <property name="visible">True</property> + <child internal-child="vbox"> + <object class="GtkBox" id="dialog-vbox1"> <property name="can_focus">False</property> <property name="orientation">vertical</property> - <child> - <object class="GtkLabel" id="LB_TITLE"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes">Select property mapping:</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="svtlo-SvTabListBox" id="LST_PROPERTY_MAPPING"> - <property name="width_request">110</property> - <property name="height_request">110</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <child internal-child="selection"> - <object class="GtkTreeSelection" id="Tab List-selection2"/> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkButtonBox" id="buttonbox1"> - <property name="visible">True</property> + <property name="spacing">2</property> + <child internal-child="action_area"> + <object class="GtkButtonBox" id="dialog-action_area1"> <property name="can_focus">False</property> - <property name="margin_top">6</property> - <property name="margin_bottom">6</property> - <property name="spacing">6</property> - <property name="layout_style">start</property> + <property name="layout_style">end</property> <child> <object class="GtkButton" id="ok"> <property name="label" translatable="yes">Ok</property> @@ -77,40 +47,87 @@ <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">2</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="LB_COLOR"> - <property name="can_focus">False</property> - <property name="label" translatable="yes">Color</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">3</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="LB_FILLCOLOR"> - <property name="can_focus">False</property> - <property name="label" translatable="yes">FillColor</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">4</property> + <property name="pack_type">end</property> + <property name="position">0</property> </packing> </child> <child> - <object class="GtkLabel" id="LB_BORDERCOLOR"> + <object class="GtkBox" id="box1"> + <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="yes">BorderColor</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="LB_TITLE"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Select property mapping:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">LST_PROPERTY_MAPPING:border</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="svtlo-SvTabListBox" id="LST_PROPERTY_MAPPING:border"> + <property name="width_request">110</property> + <property name="height_request">110</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="Tab List-selection"/> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="LB_COLOR"> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Color</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="LB_FILLCOLOR"> + <property name="can_focus">False</property> + <property name="label" translatable="yes">FillColor</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="LB_BORDERCOLOR"> + <property name="can_focus">False</property> + <property name="label" translatable="yes">BorderColor</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">4</property> + </packing> + </child> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">5</property> + <property name="position">1</property> </packing> </child> </object> commit 41630e9aed81220ce77088826d62cf17ae2adb85 Author: Caolán McNamara <caol...@redhat.com> Date: Mon Feb 17 10:12:08 2014 +0000 convert select data source dialog to .ui Change-Id: I1506f59dc6e6b6bd2b9cb1a7dd36044bef7f40e2 diff --git a/dbaccess/AllLangResTarget_dbu.mk b/dbaccess/AllLangResTarget_dbu.mk index f0b87a0..af9c757 100644 --- a/dbaccess/AllLangResTarget_dbu.mk +++ b/dbaccess/AllLangResTarget_dbu.mk @@ -45,7 +45,6 @@ $(eval $(call gb_SrsTarget_add_files,dbaccess/dbu,\ dbaccess/source/ui/dlg/dbadmin.src \ dbaccess/source/ui/dlg/dbfindex.src \ dbaccess/source/ui/dlg/directsql.src \ - dbaccess/source/ui/dlg/dsselect.src \ dbaccess/source/ui/dlg/indexdialog.src \ dbaccess/source/ui/dlg/paramdialog.src \ dbaccess/source/ui/dlg/RelationDlg.src \ diff --git a/dbaccess/UIConfig_dbaccess.mk b/dbaccess/UIConfig_dbaccess.mk index 0d5ff65..ce70f56 100644 --- a/dbaccess/UIConfig_dbaccess.mk +++ b/dbaccess/UIConfig_dbaccess.mk @@ -12,6 +12,7 @@ $(eval $(call gb_UIConfig_UIConfig,dbaccess)) $(eval $(call gb_UIConfig_add_uifiles,dbaccess, \ dbaccess/uiconfig/ui/admindialog \ dbaccess/uiconfig/ui/advancedsettingsdialog \ + dbaccess/uiconfig/ui/choosedatasourcedialog \ dbaccess/uiconfig/ui/colwidthdialog \ dbaccess/uiconfig/ui/directsqldialog \ dbaccess/uiconfig/ui/fielddialog \ diff --git a/dbaccess/source/ui/dlg/dsselect.cxx b/dbaccess/source/ui/dlg/dsselect.cxx index e127037..45c5605 100644 --- a/dbaccess/source/ui/dlg/dsselect.cxx +++ b/dbaccess/source/ui/dlg/dsselect.cxx @@ -18,7 +18,6 @@ */ #include "dsselect.hxx" -#include "dsselect.hrc" #include "dbu_dlg.hrc" #include <vcl/msgbox.hxx> #include "localresaccess.hxx" @@ -49,26 +48,26 @@ using namespace ::com::sun::star::sdbcx; using namespace ::com::sun::star::ui::dialogs; using namespace ::comphelper; ODatasourceSelectDialog::ODatasourceSelectDialog(Window* _pParent, const StringBag& _rDatasources, SfxItemSet* _pOutputSet) - :ModalDialog(_pParent, ModuleRes(DLG_DATASOURCE_SELECTION)) - ,m_aDescription (this, ModuleRes(FT_DESCRIPTION)) - ,m_aDatasource (this, ModuleRes(LB_DATASOURCE)) - ,m_aOk (this, ModuleRes(PB_OK)) - ,m_aCancel (this, ModuleRes(PB_CANCEL)) - ,m_aHelp (this, ModuleRes(PB_HELP)) -#ifdef HAVE_ODBC_ADMINISTRATION - ,m_aManageDatasources (this, ModuleRes(PB_MANAGE)) -#endif - ,m_pOutputSet(_pOutputSet) + : ModalDialog(_pParent, "ChooseDataSourceDialog", + "dbaccess/ui/choosedatasourcedialog.ui") + , m_pOutputSet(_pOutputSet) { + get(m_pDatasource, "treeview"); + m_pDatasource->set_height_request(m_pDatasource->GetTextHeight() * 6); + get(m_pOk, "ok"); + get(m_pCancel, "cancel"); + fillListBox(_rDatasources); #ifdef HAVE_ODBC_ADMINISTRATION + get(m_pManageDatasources, "organize"); + m_pManageDatasources->Show(); + // allow ODBC datasource managenment - m_aManageDatasources.Show(); - m_aManageDatasources.Enable(); - m_aManageDatasources.SetClickHdl(LINK(this,ODatasourceSelectDialog,ManageClickHdl)); + m_pManageDatasources->Show(); + m_pManageDatasources->Enable(); + m_pManageDatasources->SetClickHdl(LINK(this,ODatasourceSelectDialog,ManageClickHdl)); #endif - m_aDatasource.SetDoubleClickHdl(LINK(this,ODatasourceSelectDialog,ListDblClickHdl)); - FreeResource(); + m_pDatasource->SetDoubleClickHdl(LINK(this,ODatasourceSelectDialog,ListDblClickHdl)); } ODatasourceSelectDialog::~ODatasourceSelectDialog() @@ -101,15 +100,15 @@ IMPL_LINK_NOARG(ODatasourceSelectDialog, ManageClickHdl) if ( !m_pODBCManagement->manageDataSources_async() ) { // TODO: error message - m_aDatasource.GrabFocus(); - m_aManageDatasources.Disable(); + m_pDatasource->GrabFocus(); + m_pManageDatasources->Disable(); return 1L; } - m_aDatasource.Disable(); - m_aOk.Disable(); - m_aCancel.Disable(); - m_aManageDatasources.Disable(); + m_pDatasource->Disable(); + m_pOk->Disable(); + m_pCancel->Disable(); + m_pManageDatasources->Disable(); OSL_POSTCOND( m_pODBCManagement->isRunning(), "ODatasourceSelectDialog::ManageClickHdl: success, but not running - you were *fast*!" ); return 0L; @@ -122,10 +121,10 @@ IMPL_LINK( ODatasourceSelectDialog, ManageProcessFinished, void*, /**/ ) aEnumeration.getDatasourceNames( aOdbcDatasources ); fillListBox( aOdbcDatasources ); - m_aDatasource.Enable(); - m_aOk.Enable(); - m_aCancel.Enable(); - m_aManageDatasources.Enable(); + m_pDatasource->Enable(); + m_pOk->Enable(); + m_pCancel->Enable(); + m_pManageDatasources->Enable(); return 0L; } @@ -134,24 +133,24 @@ IMPL_LINK( ODatasourceSelectDialog, ManageProcessFinished, void*, /**/ ) void ODatasourceSelectDialog::fillListBox(const StringBag& _rDatasources) { OUString sSelected; - if (m_aDatasource.GetEntryCount()) - sSelected = m_aDatasource.GetSelectEntry(); - m_aDatasource.Clear(); + if (m_pDatasource->GetEntryCount()) + sSelected = m_pDatasource->GetSelectEntry(); + m_pDatasource->Clear(); // fill the list for ( StringBag::const_iterator aDS = _rDatasources.begin(); aDS != _rDatasources.end(); ++aDS ) { - m_aDatasource.InsertEntry( *aDS ); + m_pDatasource->InsertEntry( *aDS ); } - if (m_aDatasource.GetEntryCount()) + if (m_pDatasource->GetEntryCount()) { if (!sSelected.isEmpty()) - m_aDatasource.SelectEntry(sSelected); + m_pDatasource->SelectEntry(sSelected); else // select the first entry - m_aDatasource.SelectEntryPos(0); + m_pDatasource->SelectEntryPos(0); } } diff --git a/dbaccess/source/ui/dlg/dsselect.hrc b/dbaccess/source/ui/dlg/dsselect.hrc deleted file mode 100644 index f0058ce..0000000 --- a/dbaccess/source/ui/dlg/dsselect.hrc +++ /dev/null @@ -1,35 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#ifndef _DBAUI_DSSELECT_HRC_ -#define _DBAUI_DSSELECT_HRC_ - -#define LB_DATASOURCE 1 -#define PB_OK 2 -#define PB_CANCEL 3 -#define PB_HELP 4 -#define PB_MANAGE 5 -#define FT_DESCRIPTION 6 -#define STR_LOCAL_DATASOURCES 7 -#define PB_CREATE 9 -#define STR_DESCRIPTION2 10 - -#endif // _DBAUI_DSSELECT_HRC_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/dbaccess/source/ui/dlg/dsselect.hxx b/dbaccess/source/ui/dlg/dsselect.hxx index 338eb34..6623766 100644 --- a/dbaccess/source/ui/dlg/dsselect.hxx +++ b/dbaccess/source/ui/dlg/dsselect.hxx @@ -41,16 +41,12 @@ namespace dbaui class ODatasourceSelectDialog : public ModalDialog { protected: - FixedText m_aDescription; - ListBox m_aDatasource; - OKButton m_aOk; - CancelButton m_aCancel; - HelpButton m_aHelp; -#ifdef HAVE_ODBC_ADMINISTRATION - PushButton m_aManageDatasources; -#endif + ListBox* m_pDatasource; + OKButton* m_pOk; + CancelButton* m_pCancel; SfxItemSet* m_pOutputSet; #ifdef HAVE_ODBC_ADMINISTRATION + PushButton* m_pManageDatasources; ::std::auto_ptr< OOdbcManagement > m_pODBCManagement; #endif @@ -59,8 +55,8 @@ public: ODatasourceSelectDialog( Window* _pParent, const StringBag& _rDatasources, SfxItemSet* _pOutputSet = NULL ); ~ODatasourceSelectDialog(); - inline OUString GetSelected() const { return m_aDatasource.GetSelectEntry();} - void Select( const OUString& _rEntry ) { m_aDatasource.SelectEntry(_rEntry); } + OUString GetSelected() const { return m_pDatasource->GetSelectEntry();} + void Select( const OUString& _rEntry ) { m_pDatasource->SelectEntry(_rEntry); } virtual sal_Bool Close(); diff --git a/dbaccess/source/ui/dlg/dsselect.src b/dbaccess/source/ui/dlg/dsselect.src deleted file mode 100644 index ee89e6a..0000000 --- a/dbaccess/source/ui/dlg/dsselect.src +++ /dev/null @@ -1,98 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#include "dsselect.hrc" -#include "dbu_dlg.hrc" - -ModalDialog DLG_DATASOURCE_SELECTION -{ - HelpID = "dbaccess:ModalDialog:DLG_DATASOURCE_SELECTION"; - OutputSize = TRUE ; - Moveable = TRUE ; - Closeable = TRUE ; - SVLook = TRUE ; - Size = MAP_APPFONT ( 218 , 118 ) ; - Text [ en-US ] = "Data Source" ; - - FixedText FT_DESCRIPTION - { - Pos = MAP_APPFONT ( 6 , 6 ) ; - Size = MAP_APPFONT ( 154 , 10 ) ; - Text [ en-US ] = "Choose a data source:"; - }; - ListBox LB_DATASOURCE - { - HelpID = "dbaccess:ListBox:DLG_DATASOURCE_SELECTION:LB_DATASOURCE"; - Border = TRUE ; - Pos = MAP_APPFONT ( 6 , 19 ) ; - Size = MAP_APPFONT ( 154 , 94 ) ; - TabStop = TRUE ; - HScroll = TRUE ; - Sort = TRUE ; - }; - - OKButton PB_OK - { - Pos = MAP_APPFONT ( 166 , 6 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - DefButton = TRUE ; - }; - CancelButton PB_CANCEL - { - Pos = MAP_APPFONT ( 166 , 23 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - HelpButton PB_HELP - { - Pos = MAP_APPFONT ( 166 , 43 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - PushButton PB_MANAGE - { - HelpID = "dbaccess:PushButton:DLG_DATASOURCE_SELECTION:PB_MANAGE"; - Pos = MAP_APPFONT ( 166 , 99 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - Disable = TRUE ; - Hide = TRUE ; - Text [ en-US ] = "Organize..." ; - }; - PushButton PB_CREATE - { - HelpID = "dbaccess:PushButton:DLG_DATASOURCE_SELECTION:PB_CREATE"; - Pos = MAP_APPFONT ( 166 , 99 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - Hide = TRUE ; - Text [ en-US ] = "Create..." ; - }; - String STR_LOCAL_DATASOURCES - { - Text [ en-US ] = "Local Databases" ; - }; - String STR_DESCRIPTION2 - { - Text [ en-US ] = "Choose a database"; - }; -}; - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/dbaccess/source/ui/inc/dbu_resource.hrc b/dbaccess/source/ui/inc/dbu_resource.hrc index 1532133..e766ed7 100644 --- a/dbaccess/source/ui/inc/dbu_resource.hrc +++ b/dbaccess/source/ui/inc/dbu_resource.hrc @@ -78,7 +78,6 @@ #define DLG_DBASE_INDEXES RID_DIALOG_START + 1 #define DLG_SQLEXCEPTIONCHAIN RID_DIALOG_START + 3 -#define DLG_DATASOURCE_SELECTION RID_DIALOG_START + 4 #define DLG_PARAMETERS RID_DIALOG_START + 5 #define DLG_JOIN_TABADD RID_DIALOG_START + 14 diff --git a/dbaccess/uiconfig/ui/choosedatasourcedialog.ui b/dbaccess/uiconfig/ui/choosedatasourcedialog.ui new file mode 100644 index 0000000..b6202f8 --- /dev/null +++ b/dbaccess/uiconfig/ui/choosedatasourcedialog.ui @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.16.1 --> +<interface> + <requires lib="gtk+" version="3.0"/> + <object class="GtkDialog" id="ChooseDataSourceDialog"> + <property name="can_focus">False</property> + <property name="border_width">6</property> + <property name="title" translatable="yes">Data Source</property> + <property name="type_hint">dialog</property> + <child internal-child="vbox"> + <object class="GtkBox" id="dialog-vbox1"> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child internal-child="action_area"> + <object class="GtkButtonBox" id="dialog-action_area1"> + <property name="can_focus">False</property> + <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="ok"> + <property name="label">gtk-ok</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="cancel"> + <property name="label">gtk-cancel</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="organize"> + <property name="label" translatable="yes">Or_ganize...</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="no_show_all">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + <property name="secondary">True</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frame1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="top_padding">6</property> + <property name="left_padding">12</property> + <child> + <object class="GtkTreeView" id="treeview:border"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="treeview-selection1"/> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Choose a data source:</property> + <attributes> + <attribute name="weight" value="semibold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + <action-widgets> + <action-widget response="0">ok</action-widget> + <action-widget response="0">cancel</action-widget> + </action-widgets> + </object> +</interface> commit a51929600789af4d67e4f52226f8f5ae13ed58ba Author: Armin Le Grand <a...@apache.org> Date: Sat Feb 15 01:16:09 2014 +0000 Resolves: #i42894# added support for <presentation:animations>... at import and creation (cherry picked from commit 0f11a9d487744af6c50e9f1d547c22cd4bdeab48) Conflicts: sd/source/core/EffectMigration.cxx sd/source/ui/dlg/animobjs.cxx sd/source/ui/unoidl/unoobj.cxx Change-Id: Ib498bf718d40501cbab71a700342343df68a6ee9 diff --git a/sd/inc/EffectMigration.hxx b/sd/inc/EffectMigration.hxx index 0cd2f9d..62c6a35 100644 --- a/sd/inc/EffectMigration.hxx +++ b/sd/inc/EffectMigration.hxx @@ -29,6 +29,7 @@ class SvxShape; class SdAnimationInfo; class SdrObject; class SdrPathObj; +class SdrObjGroup; namespace sd { @@ -71,6 +72,7 @@ public: static sal_Bool GetSoundOn( SvxShape* pShape ); static void SetAnimationPath( SvxShape* pShape, SdrPathObj* pPathObj ); + static void CreateAnimatedGroup(SdrObjGroup& rGroupObj, SdPage& rPage); }; } // end of namespace sd diff --git a/sd/source/core/EffectMigration.cxx b/sd/source/core/EffectMigration.cxx index 0a496a3..b919a54 100644 --- a/sd/source/core/EffectMigration.cxx +++ b/sd/source/core/EffectMigration.cxx @@ -21,9 +21,18 @@ #include <com/sun/star/presentation/ShapeAnimationSubType.hpp> #include <com/sun/star/presentation/TextAnimationType.hpp> #include <com/sun/star/presentation/ParagraphTarget.hpp> +#include <com/sun/star/animations/Event.hpp> +#include <com/sun/star/animations/EventTrigger.hpp> +#include <com/sun/star/animations/Timing.hpp> +#include <comphelper/processfactory.hxx> +#include <com/sun/star/animations/AnimationFill.hpp> +#include <com/sun/star/animations/XAnimate.hpp> +#include <com/sun/star/beans/NamedValue.hpp> #include <svx/unoshape.hxx> #include <svx/svdotext.hxx> #include <svx/svdopath.hxx> +#include <svx/svdogrp.hxx> +#include <svx/svditer.hxx> #include "drawdoc.hxx" #include "sdpage.hxx" #include <CustomAnimationPreset.hxx> @@ -35,14 +44,17 @@ using namespace ::sd; using namespace ::com::sun::star::uno; using namespace ::com::sun::star::animations; using namespace ::com::sun::star::presentation; - using ::com::sun::star::drawing::XShape; +using ::com::sun::star::lang::XMultiServiceFactory; +using ::com::sun::star::drawing::XShape; +using ::com::sun::star::beans::NamedValue; struct deprecated_FadeEffect_conversion_table_entry { FadeEffect meFadeEffect; const sal_Char* mpPresetId; } + deprecated_FadeEffect_conversion_table[] = { // OOo 1.x transitions @@ -1332,4 +1344,140 @@ void EffectMigration::SetAnimationPath( SvxShape* pShape, SdrPathObj* pPathObj ) } } +// #i42894# helper which creates the needed XAnimate for changing visibility and all the (currently) needed embeddings +void createVisibilityOnOffNode(Reference< XTimeContainer >& rxParentContainer, SdrObject& rCandidate, bool bVisible, bool bOnClick, double fDuration) +{ + Reference< XMultiServiceFactory > xMsf(::comphelper::getProcessServiceFactory()); + Any aAny; + + // create par container node + Reference< XAnimationNode > xOuterSeqTimeContainer(xMsf->createInstance("com.sun.star.animations.ParallelTimeContainer"), UNO_QUERY_THROW); + + // set begin + aAny <<= (double)(0.0); + xOuterSeqTimeContainer->setBegin(aAny); + + // set fill + xOuterSeqTimeContainer->setFill(AnimationFill::HOLD); + + // set named values + Sequence< NamedValue > aUserDataSequence; + aUserDataSequence.realloc(1); + + aUserDataSequence[0].Name = OUString("node-type"); + aUserDataSequence[0].Value <<= bOnClick ? EffectNodeType::ON_CLICK : EffectNodeType::AFTER_PREVIOUS; + + xOuterSeqTimeContainer->setUserData(aUserDataSequence); + + // create animate set to change visibility for rCandidate + Reference< XAnimationNode > xAnimateSetForLast(xMsf->createInstance("com.sun.star.animations.AnimateSet"), UNO_QUERY_THROW); + + // set begin + aAny <<= (double)(0.0); + xAnimateSetForLast->setBegin(aAny); + + // set duration + aAny <<= fDuration; + xAnimateSetForLast->setDuration(aAny); + + // set fill + xAnimateSetForLast->setFill(AnimationFill::HOLD); + + // set target + Reference< XAnimate > xAnimate(xAnimateSetForLast, UNO_QUERY); + Reference< XShape > xTargetShape(rCandidate.getUnoShape(), UNO_QUERY); + aAny <<= xTargetShape; + xAnimate->setTarget(aAny); + + // set AttributeName + xAnimate->setAttributeName(OUString("Visibility")); + + // set attribute value + aAny <<= bVisible ? sal_True : sal_False; + xAnimate->setTo(aAny); + + // ad set node to par node + Reference< XTimeContainer > xParentContainer(xOuterSeqTimeContainer, UNO_QUERY_THROW); + xParentContainer->appendChild(xAnimateSetForLast); + + // add node + rxParentContainer->appendChild(xOuterSeqTimeContainer); +} + +// #i42894# older native formats supported animated group objects, that means all members of the group +// were shown animated by showing one after the other. This is no longer supported, but the following +// fallback will create the needed SMIL animation stuff. Unfortunately the members of the group +// have to be moved directly to the page, else the (explained to be generic, thus I expected this to +// work) animations will not work in slideshow +void EffectMigration::CreateAnimatedGroup(SdrObjGroup& rGroupObj, SdPage& rPage) +{ + // aw080 will give a vector immeditately + SdrObjListIter aIter(rGroupObj); + + if(aIter.Count()) + { + boost::shared_ptr< sd::MainSequence > pMainSequence(rPage.getMainSequence()); + + if(pMainSequence.get()) + { + std::vector< SdrObject* > aObjects; + aObjects.reserve(aIter.Count()); + + while(aIter.IsMore()) + { + // do move to page rough with old/current stuff, will be different in aw080 anyways + SdrObject* pCandidate = aIter.Next(); + rGroupObj.GetSubList()->NbcRemoveObject(pCandidate->GetOrdNum()); + rPage.NbcInsertObject(pCandidate); + aObjects.push_back(pCandidate); + } + + // create main node + Reference< XMultiServiceFactory > xMsf(::comphelper::getProcessServiceFactory()); + Reference< XAnimationNode > xOuterSeqTimeContainer(xMsf->createInstance("com.sun.star.animations.ParallelTimeContainer"), UNO_QUERY_THROW); + Any aAny; + + // set begin + aAny <<= (double)(0.0); + xOuterSeqTimeContainer->setBegin(aAny); + + // prepare parent container + Reference< XTimeContainer > xParentContainer(xOuterSeqTimeContainer, UNO_QUERY_THROW); + + // prepare loop over objects + SdrObject* pLast = 0; + SdrObject* pNext = 0; + const double fDurationShow(0.2); + const double fDurationHide(0.001); + + for(sal_uInt32 a(0); a < aObjects.size(); a++) + { + pLast = pNext; + pNext = aObjects[a]; + + // create node + if(pLast) + { + createVisibilityOnOffNode(xParentContainer, *pLast, false, false, fDurationHide); + } + + if(pNext) + { + createVisibilityOnOffNode(xParentContainer, *pNext, true, !a, fDurationShow); + } + } + + // create end node + if(pNext) + { + createVisibilityOnOffNode(xParentContainer, *pNext, false, false, fDurationHide); + } + + // add to main sequence and rebuild + pMainSequence->createEffects(xOuterSeqTimeContainer); + pMainSequence->rebuild(); + } + } +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/dlg/animobjs.cxx b/sd/source/ui/dlg/animobjs.cxx index d4ae25c..9fe24b3 100644 --- a/sd/source/ui/dlg/animobjs.cxx +++ b/sd/source/ui/dlg/animobjs.cxx @@ -42,6 +42,9 @@ #include <vcl/svapp.hxx> +// #i42894# +#include <EffectMigration.hxx> + #include <string> #include <algorithm> @@ -1199,36 +1202,43 @@ void AnimationWindow::CreateAnimObj (::sd::View& rView ) pClone->NbcMove( aMoveSize ); } - // create animation group - SdrObjGroup* pGroup = new SdrObjGroup; - SdrObjList* pObjList = pGroup->GetSubList(); + // #i42894# Caution(!) variable pPage looks right, but it is a page from the local + // document the dialog is using (!), so get the target page from the target view + SdPage* pTargetSdPage = dynamic_cast< SdPage* >(rView.GetSdrPageView() ? rView.GetSdrPageView()->GetPage() : 0); - for (size_t i = 0; i < nCount; i++) + if(pTargetSdPage) { - // the clone remains in the animatior; we insert a clone of the - // clone into the group - pClone = pPage->GetObj(i); - SdrObject* pCloneOfClone = pClone->Clone(); - //SdrObject* pCloneOfClone = pPage->GetObj(i)->Clone(); - pObjList->InsertObject(pCloneOfClone, LIST_APPEND); - } + // create animation group + SdrObjGroup* pGroup = new SdrObjGroup; + SdrObjList* pObjList = pGroup->GetSubList(); + + for (size_t i = 0; i < nCount; i++) + { + // the clone remains in the animatior; we insert a clone of the + // clone into the group + pClone = pPage->GetObj(i); + SdrObject* pCloneOfClone = pClone->Clone(); + //SdrObject* pCloneOfClone = pPage->GetObj(i)->Clone(); + pObjList->InsertObject(pCloneOfClone, LIST_APPEND); + } + + // until now the top left corner of the group is in the window center; + // correct the position by half of the size of the group + aTemp = aMaxSizeLog; + aTemp.Height() = - aTemp.Height() / 2; + aTemp.Width() = - aTemp.Width() / 2; + pGroup->NbcMove(aTemp); + + // #i42894# create needed SMIL stuff and move child objects to page directly (see + // comments at EffectMigration::CreateAnimatedGroup why this has to be done). + EffectMigration::CreateAnimatedGroup(*pGroup, *pTargetSdPage); - // until now the top left corner of the group is in the window center; - // correct the position by half of the size of the group - aTemp = aMaxSizeLog; - aTemp.Height() = - aTemp.Height() / 2; - aTemp.Width() = - aTemp.Width() / 2; - pGroup->NbcMove(aTemp); - - // create animation information - SdAnimationInfo* pInfo = SdDrawDocument::GetShapeUserData(*pGroup,true); - pInfo->meEffect = presentation::AnimationEffect_NONE; - pInfo->meSpeed = presentation::AnimationSpeed_MEDIUM; - pInfo->mbActive = sal_True; - pInfo->mbIsMovie = sal_True; - pInfo->maBlueScreen = COL_WHITE; - - rView.InsertObjectAtView( pGroup, *pPV, SDRINSERT_SETDEFLAYER); + // #i42894# if that worked, delete the group again + if(!pGroup->GetSubList()->GetObjCount()) + { + delete pGroup; + } + } } ClickFirstHdl( this ); diff --git a/sd/source/ui/unoidl/unoobj.cxx b/sd/source/ui/unoidl/unoobj.cxx index c3a3433..9ee4eb0 100644 --- a/sd/source/ui/unoidl/unoobj.cxx +++ b/sd/source/ui/unoidl/unoobj.cxx @@ -55,6 +55,7 @@ #include "Outliner.hxx" #include "sdresid.hxx" #include <comphelper/serviceinfohelper.hxx> +#include <svx/svdogrp.hxx> #include "anminfo.hxx" #include "unohelp.hxx" @@ -531,7 +532,39 @@ void SAL_CALL SdXShape::setPropertyValue( const OUString& aPropertyName, const : EffectMigration::SetAnimationSpeed( mpShape, eSpeed ); break; } -// TODO: WID_ISANIMATION + case WID_ISANIMATION: + { + sal_Bool bIsAnimation(sal_False); + + if(!(aValue >>= bIsAnimation)) + { + throw lang::IllegalArgumentException(); + } + + if(bIsAnimation) + { + SdrObjGroup* pGroup = dynamic_cast< SdrObjGroup* >(pObj); + SdPage* pPage = dynamic_cast< SdPage* >(pGroup->GetPage()); + + if(pGroup && pPage) + { + // #i42894# Animated Group object, migrate that effect + EffectMigration::CreateAnimatedGroup(*pGroup, *pPage); + + // #i42894# unfortunately when doing this all group members have to + // be moved to the page as direct members, else the currently + // available forms of animation do not work. If it succeeds, + // the group is empty and can be removed and deleted + if(!pGroup->GetSubList()->GetObjCount()) + { + pPage->NbcRemoveObject(pGroup->GetOrdNum()); + delete pGroup; + } + } + } + //pInfo->mbIsMovie = bIsAnimation; + break; + } case WID_BOOKMARK: { OUString aString; diff --git a/xmloff/source/draw/animimp.cxx b/xmloff/source/draw/animimp.cxx index 9a90f0b..8c5deb9 100644 --- a/xmloff/source/draw/animimp.cxx +++ b/xmloff/source/draw/animimp.cxx @@ -597,8 +597,9 @@ void XMLAnimationsEffectContext::EndElement() aAny <<= (sal_Bool)sal_True; xSet->setPropertyValue( mpImpl->msIsAnimation, aAny ); - aAny <<= meSpeed; - xSet->setPropertyValue( mpImpl->msSpeed, aAny ); + // #i42894# speed is not supported for the old group animation fallback, so no need to set it + // aAny <<= meSpeed; + // xSet->setPropertyValue( mpImpl->msSpeed, aAny ); } else {
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits