diff options
author | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-02-27 08:32:54 +0100 |
---|---|---|
committer | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-02-27 08:32:54 +0100 |
commit | f73ffb91b85422067274fafc0d411aef8a6e6abb (patch) | |
tree | ddcdd880d45643557ad4172f22b3a1de5db44a2f /sw | |
parent | 5c57c9b6eb30265fe7312ff2b4d6ce7363cf2006 (diff) |
fdo#73159 Make back border dialog work again
I removed border dialog with commit
8560fb88c7252e5ad60674e447f2e194298f08de
because it seems unused and when the corresponding
command was called only a blank window was opened.
It seems it was just bugous, so revert this commit
and fix the dialog.
Conflicts:
sw/inc/swabstdlg.hxx
sw/source/ui/dialog/swdlgfact.cxx
sw/source/ui/dialog/swdlgfact.hxx
Change-Id: I68f8c13457e899a894f03bdd60ebedfb2b70afea
Diffstat (limited to 'sw')
-rw-r--r-- | sw/Library_swui.mk | 1 | ||||
-rw-r--r-- | sw/inc/cmdid.h | 1 | ||||
-rw-r--r-- | sw/inc/dialog.hrc | 1 | ||||
-rw-r--r-- | sw/inc/swabstdlg.hxx | 1 | ||||
-rw-r--r-- | sw/sdi/_basesh.sdi | 6 | ||||
-rw-r--r-- | sw/sdi/swriter.sdi | 25 | ||||
-rw-r--r-- | sw/source/ui/dialog/swdlgfact.cxx | 18 | ||||
-rw-r--r-- | sw/source/ui/dialog/swdlgfact.hxx | 1 | ||||
-rw-r--r-- | sw/source/ui/frmdlg/frmui.src | 4 | ||||
-rw-r--r-- | sw/source/ui/frmdlg/uiborder.cxx | 58 | ||||
-rw-r--r-- | sw/source/ui/inc/frmui.hrc | 1 | ||||
-rw-r--r-- | sw/source/ui/inc/uiborder.hxx | 41 | ||||
-rw-r--r-- | sw/source/ui/shells/basesh.cxx | 67 |
13 files changed, 225 insertions, 0 deletions
diff --git a/sw/Library_swui.mk b/sw/Library_swui.mk index b9ef786e8869..b6932f1cb73d 100644 --- a/sw/Library_swui.mk +++ b/sw/Library_swui.mk @@ -119,6 +119,7 @@ $(eval $(call gb_Library_add_exception_objects,swui,\ sw/source/ui/frmdlg/frmdlg \ sw/source/ui/frmdlg/frmpage \ sw/source/ui/frmdlg/pattern \ + sw/source/ui/frmdlg/uiborder \ sw/source/ui/frmdlg/wrap \ sw/source/ui/index/cntex \ sw/source/ui/index/cnttab \ diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h index 4ed35a4d1a8f..303642a621d6 100644 --- a/sw/inc/cmdid.h +++ b/sw/inc/cmdid.h @@ -326,6 +326,7 @@ included in c-context files, so c++ style stuff will cause problems. #define FN_FORMAT_PAGE_SETTING_DLG (FN_FORMAT + 42) /* */ #define FN_NUM_FORMAT_TABLE_DLG (FN_FORMAT + 45) /* number format in table */ +#define FN_FORMAT_BORDER_DLG (FN_FORMAT + 48) /* */ #define FN_FORMAT_PAGE_COLUMN_DLG (FN_FORMAT + 49) /* columns per page */ #define FN_FORMAT_BACKGROUND_DLG (FN_FORMAT + 50) /* background */ #define FN_FORMAT_PAGE_DLG (FN_FORMAT + 52) /* page */ diff --git a/sw/inc/dialog.hrc b/sw/inc/dialog.hrc index b39567516224..f95ef0fda046 100644 --- a/sw/inc/dialog.hrc +++ b/sw/inc/dialog.hrc @@ -54,6 +54,7 @@ #define RC_DLG_ADDR (RC_DIALOG_BEGIN + 90) #define RC_SWDLG_BACKGROUND (RC_DIALOG_BEGIN + 91) #define RC_DLG_SWNUMFMTDLG (RC_DIALOG_BEGIN + 92) +#define RC_DLG_SWBORDERDLG (RC_DIALOG_BEGIN + 93) #define RC_DLG_SWWRAPDLG (RC_DIALOG_BEGIN + 94) #define RC_DLG_SWFLDEDITDLG (RC_DIALOG_BEGIN + 95) // Ueberlaufpruefung ******************************************************** diff --git a/sw/inc/swabstdlg.hxx b/sw/inc/swabstdlg.hxx index a6bfa51085b8..925da1bfb578 100644 --- a/sw/inc/swabstdlg.hxx +++ b/sw/inc/swabstdlg.hxx @@ -373,6 +373,7 @@ public: virtual AbstractSwAutoFormatDlg * CreateSwAutoFormatDlg( Window* pParent, SwWrtShell* pShell, sal_Bool bSetAutoFmt = sal_True, const SwTableAutoFmt* pSelFmt = 0 ) = 0; + virtual SfxAbstractDialog * CreateSwBorderDlg ( Window* pParent, SfxItemSet& rSet, sal_uInt16 nType, int nResId ) = 0; virtual SfxAbstractDialog * CreateSwWrapDlg ( Window* pParent, SfxItemSet& rSet, SwWrtShell* pSh, sal_Bool bDrawMode, int nResId ) = 0; virtual VclAbstractDialog * CreateSwTableWidthDlg(Window *pParent, SwTableFUNC &rFnc) = 0; diff --git a/sw/sdi/_basesh.sdi b/sw/sdi/_basesh.sdi index 66ab3fb9608c..2891ebae24f0 100644 --- a/sw/sdi/_basesh.sdi +++ b/sw/sdi/_basesh.sdi @@ -274,6 +274,12 @@ interface BaseTextSelection DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; ] + FN_FORMAT_BORDER_DLG // status(final|play) + [ + ExecMethod = ExecDlg ; + DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; + ] + SID_ATTR_BORDER_INNER // status() [ StateMethod = GetBorderState ; diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi index 675540b0e2ba..82d26838aea9 100644 --- a/sw/sdi/swriter.sdi +++ b/sw/sdi/swriter.sdi @@ -624,6 +624,31 @@ SfxVoidItem SwBackspace FN_BACKSPACE ] //-------------------------------------------------------------------------- +SfxVoidItem BorderDialog FN_FORMAT_BORDER_DLG +() +[ + /* flags: */ + AutoUpdate = FALSE, + Cachable = Cachable, + FastCall = TRUE, + HasCoreId = FALSE, + HasDialog = TRUE, + ReadOnlyDoc = FALSE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + Asynchron; + + /* config: */ + AccelConfig = TRUE, + MenuConfig = TRUE, + StatusBarConfig = FALSE, + ToolBoxConfig = TRUE, + GroupId = GID_FORMAT; +] + +//-------------------------------------------------------------------------- SfxVoidItem BulletsAndNumberingDialog FN_NUMBER_BULLETS () [ diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx index c363300b9087..0b5e06c74349 100644 --- a/sw/source/ui/dialog/swdlgfact.cxx +++ b/sw/source/ui/dialog/swdlgfact.cxx @@ -90,6 +90,7 @@ #include <svx/dialogs.hrc> #include <mailmergewizard.hxx> #include <mailconfigpage.hxx> +#include <uiborder.hxx> using namespace ::com::sun::star; @@ -848,6 +849,23 @@ AbstractSwAutoFormatDlg * SwAbstractDialogFactory_Impl::CreateSwAutoFormatDlg(Wi return new AbstractSwAutoFormatDlg_Impl(pDlg); } +SfxAbstractDialog * SwAbstractDialogFactory_Impl::CreateSwBorderDlg(Window* pParent, SfxItemSet& rSet, sal_uInt16 nType, int nResId ) +{ + SfxModalDialog* pDlg=NULL; + switch ( nResId ) + { + case RC_DLG_SWBORDERDLG : + pDlg = new SwBorderDlg( pParent, rSet, nType ); + break; + default: + break; + } + + if ( pDlg ) + return new SwAbstractSfxDialog_Impl( pDlg ); + return 0; +} + SfxAbstractDialog* SwAbstractDialogFactory_Impl::CreateSwWrapDlg ( Window* pParent, SfxItemSet& rSet, SwWrtShell* pSh, sal_Bool bDrawMode, int nResId ) { SfxModalDialog* pDlg=NULL; diff --git a/sw/source/ui/dialog/swdlgfact.hxx b/sw/source/ui/dialog/swdlgfact.hxx index 94cc59f78edc..12c3b0e1856b 100644 --- a/sw/source/ui/dialog/swdlgfact.hxx +++ b/sw/source/ui/dialog/swdlgfact.hxx @@ -422,6 +422,7 @@ public: virtual AbstractSwAutoFormatDlg * CreateSwAutoFormatDlg( Window* pParent, SwWrtShell* pShell, sal_Bool bSetAutoFmt = sal_True, const SwTableAutoFmt* pSelFmt = 0 ); + virtual SfxAbstractDialog * CreateSwBorderDlg (Window* pParent, SfxItemSet& rSet, sal_uInt16 nType, int nResId ); virtual SfxAbstractDialog * CreateSwWrapDlg ( Window* pParent, SfxItemSet& rSet, SwWrtShell* pSh, sal_Bool bDrawMode, int nResId ); virtual VclAbstractDialog * CreateSwTableWidthDlg(Window *pParent, SwTableFUNC &rFnc); diff --git a/sw/source/ui/frmdlg/frmui.src b/sw/source/ui/frmdlg/frmui.src index 939f5af33e62..c6d436a8baf3 100644 --- a/sw/source/ui/frmdlg/frmui.src +++ b/sw/source/ui/frmdlg/frmui.src @@ -102,6 +102,10 @@ String STR_COLL_HEADER { Text [ en-US ] = " (Template: " ; }; +String STR_FRMUI_BORDER +{ + Text [ en-US ] = "Borders" ; +}; String STR_FRMUI_PATTERN { Text [ en-US ] = "Background" ; diff --git a/sw/source/ui/frmdlg/uiborder.cxx b/sw/source/ui/frmdlg/uiborder.cxx new file mode 100644 index 000000000000..5ed679f3f570 --- /dev/null +++ b/sw/source/ui/frmdlg/uiborder.cxx @@ -0,0 +1,58 @@ +/* -*- 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 <svx/svxdlg.hxx> +#include <svx/svxids.hrc> +#include <svx/dialogs.hrc> +#include <svl/itemset.hxx> +#include <svx/flagsdef.hxx> +#include <sfx2/tabdlg.hxx> +#include <svl/intitem.hxx> + +#include "swtypes.hxx" +#include "uiborder.hxx" +#include "frmui.hrc" + +SwBorderDlg::SwBorderDlg(Window* pParent, SfxItemSet& rSet, sal_uInt16 nType) : + SfxSingleTabDialog(pParent, rSet) + +{ + SetText(SW_RESSTR(STR_FRMUI_BORDER)); + + SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); + OSL_ENSURE(pFact, "Dialogdiet fail!"); + ::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ); + + if ( fnCreatePage ) + { + SfxTabPage* pNewPage = (*fnCreatePage)( get_content_area(), rSet ); + SfxAllItemSet aSet(*(rSet.GetPool())); + aSet.Put (SfxUInt16Item(SID_SWMODE_TYPE,nType)); + if(SW_BORDER_MODE_TABLE == nType) + aSet.Put (SfxUInt32Item(SID_FLAG_TYPE,SVX_HIDESHADOWCTL)); + pNewPage->PageCreated(aSet); + SetTabPage(pNewPage); + } +} + +SwBorderDlg::~SwBorderDlg() +{ +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/ui/inc/frmui.hrc b/sw/source/ui/inc/frmui.hrc index ae14bbb4e035..4e765f9c9456 100644 --- a/sw/source/ui/inc/frmui.hrc +++ b/sw/source/ui/inc/frmui.hrc @@ -44,6 +44,7 @@ #define STR_TOPPRT (STR_FRMDLG_BEGIN + 1) +#define STR_BORDER (STR_FRMDLG_BEGIN + 16) #define STR_COLUMN (STR_FRMDLG_BEGIN + 17) #define STR_CHAR (STR_FRMDLG_BEGIN + 19) diff --git a/sw/source/ui/inc/uiborder.hxx b/sw/source/ui/inc/uiborder.hxx new file mode 100644 index 000000000000..78adaeb7846d --- /dev/null +++ b/sw/source/ui/inc/uiborder.hxx @@ -0,0 +1,41 @@ +/* -*- 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 _UIBORDER_HXX +#define _UIBORDER_HXX + +#include <sfx2/basedlgs.hxx> +class Window; +class SfxItemSet; + +class SwBorderDlg : public SfxSingleTabDialog +{ +public: + + // nType may be: + // SW_BORDER_MODE_PARA + // SW_BORDER_MODE_TABLE + // SW_BORDER_MODE_FRAME + + SwBorderDlg(Window* pParent, SfxItemSet& rSet, sal_uInt16 nType); + ~SwBorderDlg(); +}; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/ui/shells/basesh.cxx b/sw/source/ui/shells/basesh.cxx index 75b25a3c39e0..7ce08aa87c2a 100644 --- a/sw/source/ui/shells/basesh.cxx +++ b/sw/source/ui/shells/basesh.cxx @@ -2375,6 +2375,73 @@ void SwBaseShell::ExecDlg(SfxRequest &rReq) } } break; + case FN_FORMAT_BORDER_DLG: + { + SfxItemSet aSet( rSh.GetAttrPool(), + RES_BOX , RES_SHADOW, + SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER, + 0 ); + SfxAbstractDialog * pDlg = 0; + // Table cell(s) selected? + if ( rSh.IsTableMode() ) + { + // Set border attributes Get/SetTabBorders() + ::PrepareBoxInfo( aSet, rSh ); + rSh.GetTabBorders( aSet ); + SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); + OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!"); + + pDlg = pFact->CreateSwBorderDlg( pMDI, aSet, SW_BORDER_MODE_TABLE, RC_DLG_SWBORDERDLG ); + OSL_ENSURE(pDlg, "Dialogdiet fail!"); + if ( pDlg->Execute() == RET_OK ) + { + rSh.SetTabBorders( *pDlg->GetOutputItemSet() ); + pOutSet = pDlg->GetOutputItemSet(); + } + } + else if ( rSh.IsFrmSelected() ) + { + // Set border attributes via Frame-Manager + SwFlyFrmAttrMgr aMgr( sal_False, &rSh, FRMMGR_TYPE_NONE ); + aSet.Put( aMgr.GetAttrSet() ); + + SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); + OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!"); + + pDlg = pFact->CreateSwBorderDlg( pMDI, aSet, SW_BORDER_MODE_FRAME, RC_DLG_SWBORDERDLG ); + OSL_ENSURE(pDlg, "Dialogdiet fail!"); + if ( pDlg->Execute() == RET_OK ) + { + aMgr.SetAttrSet( *pDlg->GetOutputItemSet() ); + aMgr.UpdateFlyFrm(); + pOutSet = pDlg->GetOutputItemSet(); + } + } + else + { + // Set border attributes via Shell quite normal + rSh.GetCurAttr( aSet ); + ::PrepareBoxInfo( aSet, rSh ); + + SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); + OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!"); + + pDlg = pFact->CreateSwBorderDlg( pMDI, aSet, SW_BORDER_MODE_PARA, RC_DLG_SWBORDERDLG ); + OSL_ENSURE(pDlg, "Dialogdiet fail!"); + if ( pDlg->Execute() == RET_OK ) + { + rSh.SetAttrSet( *pDlg->GetOutputItemSet() ); + pOutSet = pDlg->GetOutputItemSet(); + } + } + if(pOutSet) + { + rReq.Done(*pOutSet); + bDone = true; + } + delete pDlg; + } + break; case FN_FORMAT_BACKGROUND_DLG: { SfxItemSet aSet( rSh.GetAttrPool(), |