cui/Library_cui.mk | 2 cui/UIConfig_cui.mk | 2 cui/source/inc/cuires.hrc | 2 cui/source/inc/cuitabarea.hxx | 41 cui/source/tabpages/strings.src | 8 cui/source/tabpages/tabarea.cxx | 51 - cui/source/tabpages/tpbitmap.cxx | 979 ---------------------- cui/source/tabpages/tppattern.cxx | 876 +++++++++++++++++++ cui/uiconfig/ui/areadialog.ui | 4 cui/uiconfig/ui/bitmaptabpage.ui | 347 ------- cui/uiconfig/ui/patterntabpage.ui | 334 +++++++ extras/Package_palettes.mk | 1 extras/source/glade/libreoffice-catalog.xml.in | 11 extras/source/palettes/standard.sob |binary extras/source/palettes/standard.sop |binary include/svx/dialogs.hrc | 3 include/svx/dlgctrl.hxx | 19 include/svx/drawitem.hxx | 24 include/svx/sidebar/AreaPropertyPanelBase.hxx | 2 include/svx/svdmodel.hxx | 1 include/svx/svxids.hrc | 39 include/svx/xtable.hxx | 26 sc/sdi/drawsh.sdi | 1 sc/source/ui/docshell/docsh2.cxx | 1 scp2/source/ooo/registryitem_ooo.scp | 7 sd/sdi/_drvwsh.sdi | 4 sd/source/ui/dlg/dlgpage.cxx | 4 sd/source/ui/dlg/prltempl.cxx | 2 sd/source/ui/dlg/tabtempl.cxx | 2 sd/source/ui/docshell/docshell.cxx | 1 sd/source/ui/inc/dlgpage.hxx | 1 sd/source/ui/inc/prltempl.hxx | 1 sd/source/ui/inc/tabtempl.hxx | 1 sd/source/ui/sidebar/SlideBackground.cxx | 156 ++- sd/source/ui/sidebar/SlideBackground.hxx | 1 svx/Library_svxcore.mk | 1 svx/sdi/svx.sdi | 16 svx/sdi/svxitems.sdi | 1 svx/source/dialog/dlgctrl.cxx | 155 +++ svx/source/dialog/hdft.cxx | 3 svx/source/dialog/sdstring.src | 10 svx/source/items/drawitem.cxx | 42 svx/source/sidebar/area/AreaPropertyPanel.cxx | 2 svx/source/sidebar/area/AreaPropertyPanel.hxx | 1 svx/source/sidebar/area/AreaPropertyPanelBase.cxx | 567 +++++++----- svx/source/xoutdev/xattrbmp.cxx | 5 svx/source/xoutdev/xtabbtmp.cxx | 33 svx/source/xoutdev/xtable.cxx | 6 svx/source/xoutdev/xtabptrn.cxx | 92 ++ svx/uiconfig/ui/sidebararea.ui | 170 +-- sw/sdi/_frmsh.sdi | 6 sw/sdi/drawsh.sdi | 5 sw/source/core/draw/drawdoc.cxx | 1 sw/source/ui/chrdlg/pardlg.cxx | 2 sw/source/ui/frmdlg/frmdlg.cxx | 2 sw/source/uibase/app/docshdrw.cxx | 1 sw/source/uibase/app/docst.cxx | 1 sw/source/uibase/app/docstyle.cxx | 3 sw/source/uibase/shells/frmsh.cxx | 2 sw/source/uibase/shells/grfsh.cxx | 3 sw/source/uibase/shells/textsh.cxx | 2 sw/source/uibase/shells/textsh1.cxx | 4 62 files changed, 2302 insertions(+), 1788 deletions(-)
New commits: commit 76585ae33f3ca75c05c0ccbf6a621b6e2d42bc00 Author: Rishabh Kumar <kris.kr...@gmail.com> Date: Tue Jun 7 16:58:20 2016 +0530 Convert Bitmap tab to Pattern tab Change-Id: I5cf02f1889090539f7adb826483c91a1ef3c3925 Reviewed-on: https://gerrit.libreoffice.org/26015 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Katarina Behrens <katarina.behr...@cib.de> diff --git a/cui/Library_cui.mk b/cui/Library_cui.mk index 7bb181d..c81ef962 100644 --- a/cui/Library_cui.mk +++ b/cui/Library_cui.mk @@ -197,13 +197,13 @@ $(eval $(call gb_Library_add_exception_objects,cui,\ cui/source/tabpages/textanim \ cui/source/tabpages/textattr \ cui/source/tabpages/tparea \ - cui/source/tabpages/tpbitmap \ cui/source/tabpages/tpcolor \ cui/source/tabpages/tpgradnt \ cui/source/tabpages/tphatch \ cui/source/tabpages/tpline \ cui/source/tabpages/tplnedef \ cui/source/tabpages/tplneend \ + cui/source/tabpages/tppattern \ cui/source/tabpages/tpshadow \ cui/source/tabpages/tptrans \ cui/source/tabpages/transfrm \ diff --git a/cui/UIConfig_cui.mk b/cui/UIConfig_cui.mk index b0f72cb..60c8d18 100644 --- a/cui/UIConfig_cui.mk +++ b/cui/UIConfig_cui.mk @@ -27,7 +27,6 @@ $(eval $(call gb_UIConfig_add_uifiles,cui,\ cui/uiconfig/ui/autocorrectdialog \ cui/uiconfig/ui/backgroundpage \ cui/uiconfig/ui/baselinksdialog \ - cui/uiconfig/ui/bitmaptabpage \ cui/uiconfig/ui/blackorwhitelistentrydialog \ cui/uiconfig/ui/borderareatransparencydialog \ cui/uiconfig/ui/borderbackgrounddialog \ @@ -145,6 +144,7 @@ $(eval $(call gb_UIConfig_add_uifiles,cui,\ cui/uiconfig/ui/paratabspage \ cui/uiconfig/ui/password \ cui/uiconfig/ui/pastespecial \ + cui/uiconfig/ui/patterntabpage \ cui/uiconfig/ui/percentdialog \ cui/uiconfig/ui/personalization_tab \ cui/uiconfig/ui/pickbulletpage \ diff --git a/cui/source/inc/cuires.hrc b/cui/source/inc/cuires.hrc index 376117c..67c79e2 100644 --- a/cui/source/inc/cuires.hrc +++ b/cui/source/inc/cuires.hrc @@ -70,6 +70,8 @@ #define RID_SVXSTR_ASK_CHANGE_BITMAP (RID_SVX_START + 172) #define RID_SVXSTR_DESC_NEW_BITMAP (RID_SVX_START + 168) #define RID_SVXSTR_DESC_EXT_BITMAP (RID_SVX_START + 169) +#define RID_SVXSTR_DESC_NEW_PATTERN (RID_SVX_START + 170) +#define RID_SVXSTR_ASK_CHANGE_PATTERN (RID_SVX_START + 171) #define RID_SVXSTR_DESC_LINESTYLE (RID_SVX_START + 174) #define RID_SVXSTR_ASK_CHANGE_LINESTYLE (RID_SVX_START + 177) diff --git a/cui/source/inc/cuitabarea.hxx b/cui/source/inc/cuitabarea.hxx index d2a0391..397f3bc 100644 --- a/cui/source/inc/cuitabarea.hxx +++ b/cui/source/inc/cuitabarea.hxx @@ -44,7 +44,8 @@ class SvxAreaTabDialog : public SfxTabDialog sal_uInt16 m_nColorTabPage; sal_uInt16 m_nGradientTabPage; sal_uInt16 m_nHatchTabPage; - sal_uInt16 m_nBitmapTabPage; + //sal_uInt16 m_nBitmapTabPage; + sal_uInt16 m_nPatternTabPage; private: SdrModel* mpDrawModel; @@ -57,11 +58,14 @@ private: XHatchListRef mpNewHatchingList; XBitmapListRef mpBitmapList; XBitmapListRef mpNewBitmapList; + XPatternListRef mpPatternList; + XPatternListRef mpNewPatternList; const SfxItemSet& mrOutAttrs; ChangeType mnColorListState; ChangeType mnBitmapListState; + ChangeType mnPatternListState; ChangeType mnGradientListState; ChangeType mnHatchingListState; @@ -97,6 +101,10 @@ public: void SetNewBitmapList( XBitmapListRef pBmpLst) { mpNewBitmapList = pBmpLst; } const XBitmapListRef& GetNewBitmapList() const { return mpNewBitmapList; } + + void SetNewPatternList( XPatternListRef pPtrnLst ) + { mpNewPatternList = pPtrnLst; } + const XPatternListRef& GetNewPatternList() const { return mpNewPatternList; } }; /************************************************************************/ @@ -545,7 +553,7 @@ public: /************************************************************************/ -class SvxBitmapTabPage : public SvxTabPage +class SvxPatternTabPage : public SvxTabPage { using TabPage::ActivatePage; using TabPage::DeactivatePage; @@ -555,12 +563,11 @@ private: VclPtr<SvxPixelCtl> m_pCtlPixel; VclPtr<ColorLB> m_pLbColor; VclPtr<ColorLB> m_pLbBackgroundColor; - VclPtr<FixedText> m_pLbBitmapsHidden; - VclPtr<BitmapLB> m_pLbBitmaps; + VclPtr<FixedText> m_pLbPatternsHidden; + VclPtr<PatternLB> m_pLbPatterns; VclPtr<SvxXRectPreview> m_pCtlPreview; VclPtr<PushButton> m_pBtnAdd; VclPtr<PushButton> m_pBtnModify; - VclPtr<PushButton> m_pBtnImport; VclPtr<PushButton> m_pBtnDelete; VclPtr<PushButton> m_pBtnLoad; VclPtr<PushButton> m_pBtnSave; @@ -570,37 +577,35 @@ private: const SfxItemSet& m_rOutAttrs; XColorListRef m_pColorList; - XBitmapListRef m_pBitmapList; + XPatternListRef m_pPatternList; - ChangeType* m_pnBitmapListState; + ChangeType* m_pnPatternListState; ChangeType* m_pnColorListState; sal_uInt16* m_pPageType; sal_uInt16 m_nDlgType; sal_Int32* m_pPos; bool* m_pbAreaTP; - bool m_bBmpChanged; + bool m_bPtrnChanged; XFillStyleItem m_aXFStyleItem; - XFillBitmapItem m_aXBitmapItem; + XFillBitmapItem m_aXPatternItem; XFillAttrSetItem m_aXFillAttr; SfxItemSet& m_rXFSet; DECL_LINK_TYPED( ClickAddHdl_Impl, Button*, void ); - DECL_LINK_TYPED( ClickImportHdl_Impl, Button*, void ); DECL_LINK_TYPED( ClickModifyHdl_Impl, Button*, void ); DECL_LINK_TYPED( ClickDeleteHdl_Impl, Button*, void ); - DECL_LINK_TYPED( ChangeBitmapHdl_Impl, ListBox&, void ); - DECL_LINK_TYPED( ChangePixelColorHdl_Impl, ListBox&, void ); - DECL_LINK_TYPED( ChangeBackgrndColorHdl_Impl, ListBox&, void ); + DECL_LINK_TYPED( ChangePatternHdl_Impl, ListBox&, void ); + DECL_LINK_TYPED( ChangeColorHdl_Impl, ListBox&, void ); DECL_LINK_TYPED( ClickLoadHdl_Impl, Button*, void ); DECL_LINK_TYPED( ClickSaveHdl_Impl, Button*, void ); long CheckChanges_Impl(); public: - SvxBitmapTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs ); - virtual ~SvxBitmapTabPage(); + SvxPatternTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs ); + virtual ~SvxPatternTabPage(); virtual void dispose() override; void Construct(); @@ -615,16 +620,16 @@ public: virtual void PointChanged( vcl::Window* pWindow, RECT_POINT eRP ) override; void SetColorList( XColorListRef pColorList ) { m_pColorList = pColorList; } - void SetBitmapList( XBitmapListRef pBitmapList) { m_pBitmapList = pBitmapList; } + void SetPatternList( XPatternListRef pPatternList) { m_pPatternList = pPatternList; } void SetPageType( sal_uInt16* pInType ) { m_pPageType = pInType; } void SetDlgType( sal_uInt16 nInType ) { m_nDlgType = nInType; } void SetPos( sal_Int32* pInPos ) { m_pPos = pInPos; } void SetAreaTP( bool* pIn ) { m_pbAreaTP = pIn; } - void SetBmpChgd( ChangeType* pIn ) { m_pnBitmapListState = pIn; } + void SetPtrnChgd( ChangeType* pIn ) { m_pnPatternListState = pIn; } void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; } - + void ChangeColor_Impl(); /** Return a label that is associated with the given control. This label is used to the determine the name for the control. @param pLabeled diff --git a/cui/source/tabpages/strings.src b/cui/source/tabpages/strings.src index db14dd0..2bf8809 100644 --- a/cui/source/tabpages/strings.src +++ b/cui/source/tabpages/strings.src @@ -35,10 +35,18 @@ String RID_SVXSTR_DESC_EXT_BITMAP { Text [ en-US ] = "Please enter a name for the external bitmap:" ; }; +String RID_SVXSTR_DESC_NEW_PATTERN +{ + Text [ en-US ] = "Please enter a name for the pattern:" ; +}; String RID_SVXSTR_ASK_CHANGE_BITMAP { Text [ en-US ] = "The bitmap was modified without saving. \nModify the selected bitmap or add a new bitmap." ; }; +String RID_SVXSTR_ASK_CHANGE_PATTERN +{ + Text [ en-US ] = "The pattern was modified without saving. \nModify the selected pattern or add a new pattern"; +}; String RID_SVXSTR_DESC_LINESTYLE { Text [ en-US ] = "Please enter a name for the line style:" ; diff --git a/cui/source/tabpages/tabarea.cxx b/cui/source/tabpages/tabarea.cxx index 6a6ce03..e6b9ae6 100644 --- a/cui/source/tabpages/tabarea.cxx +++ b/cui/source/tabpages/tabarea.cxx @@ -52,7 +52,8 @@ SvxAreaTabDialog::SvxAreaTabDialog , m_nColorTabPage(0) , m_nGradientTabPage(0) , m_nHatchTabPage(0) - , m_nBitmapTabPage(0) + //, m_nBitmapTabPage(0) + , m_nPatternTabPage(0) , mpDrawModel ( pModel ), mpColorList ( pModel->GetColorList() ), @@ -63,10 +64,13 @@ SvxAreaTabDialog::SvxAreaTabDialog mpNewHatchingList ( pModel->GetHatchList() ), mpBitmapList ( pModel->GetBitmapList() ), mpNewBitmapList ( pModel->GetBitmapList() ), + mpPatternList ( pModel->GetPatternList() ), + mpNewPatternList ( pModel->GetPatternList() ), mrOutAttrs ( *pAttr ), mnColorListState ( ChangeType::NONE ), mnBitmapListState ( ChangeType::NONE ), + mnPatternListState ( ChangeType::NONE ), mnGradientListState ( ChangeType::NONE ), mnHatchingListState ( ChangeType::NONE ), mnPageType( PT_AREA ), @@ -88,7 +92,7 @@ SvxAreaTabDialog::SvxAreaTabDialog m_nColorTabPage = AddTabPage( "RID_SVXPAGE_COLOR", SvxColorTabPage::Create, nullptr ); m_nGradientTabPage = AddTabPage( "RID_SVXPAGE_GRADIENT", SvxGradientTabPage::Create, nullptr ); m_nHatchTabPage = AddTabPage( "RID_SVXPAGE_HATCH", SvxHatchTabPage::Create, nullptr ); - m_nBitmapTabPage = AddTabPage( "RID_SVXPAGE_BITMAP", SvxBitmapTabPage::Create, nullptr); + m_nPatternTabPage = AddTabPage( "RID_SVXPAGE_PATTERN", SvxPatternTabPage::Create, nullptr); SetCurPageId( "RID_SVXPAGE_AREA" ); @@ -139,6 +143,16 @@ void SvxAreaTabDialog::SavePalettes() mpDrawModel->GetItemPool().Put(aItem,SID_BITMAP_LIST); mpBitmapList = mpDrawModel->GetBitmapList(); } + if( mpNewPatternList != mpDrawModel->GetPatternList() ) + { + mpDrawModel->SetPropertyList( static_cast<XPropertyList *>(mpNewPatternList.get()) ); + SvxPatternListItem aItem( mpNewPatternList, SID_PATTERN_LIST ); + if( pShell ) + pShell->PutItem( aItem ); + else + mpDrawModel->GetItemPool().Put(aItem,SID_PATTERN_LIST); + mpPatternList = mpDrawModel->GetPatternList(); + } // save the tables when they have been changed @@ -179,6 +193,19 @@ void SvxAreaTabDialog::SavePalettes() } } + if( mnPatternListState & ChangeType::MODIFIED ) + { + mpPatternList->SetPath( aPath ); + mpPatternList->Save(); + + SvxPatternListItem aItem( mpPatternList, SID_PATTERN_LIST ); + // ToolBoxControls are informed: + if( pShell ) + pShell->PutItem( aItem ); + else + mpDrawModel->GetItemPool().Put(aItem); + } + if( mnGradientListState & ChangeType::MODIFIED ) { mpGradientList->SetPath( aPath ); @@ -282,17 +309,17 @@ void SvxAreaTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) static_cast<SvxHatchTabPage&>(rPage).SetColorChgd( &mnColorListState ); static_cast<SvxHatchTabPage&>(rPage).Construct(); } - else if (nId == m_nBitmapTabPage) + else if (nId == m_nPatternTabPage) { - static_cast<SvxBitmapTabPage&>(rPage).SetColorList( mpColorList ); - static_cast<SvxBitmapTabPage&>(rPage).SetBitmapList( mpBitmapList ); - static_cast<SvxBitmapTabPage&>(rPage).SetPageType( &mnPageType ); - static_cast<SvxBitmapTabPage&>(rPage).SetDlgType( 0 ); - static_cast<SvxBitmapTabPage&>(rPage).SetPos( &mnPos ); - static_cast<SvxBitmapTabPage&>(rPage).SetAreaTP( &mbAreaTP ); - static_cast<SvxBitmapTabPage&>(rPage).SetBmpChgd( &mnBitmapListState ); - static_cast<SvxBitmapTabPage&>(rPage).SetColorChgd( &mnColorListState ); - static_cast<SvxBitmapTabPage&>(rPage).Construct(); + static_cast<SvxPatternTabPage&>(rPage).SetColorList( mpColorList ); + static_cast<SvxPatternTabPage&>(rPage).SetPatternList( mpPatternList ); + static_cast<SvxPatternTabPage&>(rPage).SetPageType( &mnPageType ); + static_cast<SvxPatternTabPage&>(rPage).SetDlgType( 0 ); + static_cast<SvxPatternTabPage&>(rPage).SetPos( &mnPos ); + static_cast<SvxPatternTabPage&>(rPage).SetAreaTP( &mbAreaTP ); + static_cast<SvxPatternTabPage&>(rPage).SetPtrnChgd( &mnPatternListState ); + static_cast<SvxPatternTabPage&>(rPage).SetColorChgd( &mnColorListState ); + static_cast<SvxPatternTabPage&>(rPage).Construct(); } else if (nId == m_nColorTabPage) { diff --git a/cui/source/tabpages/tpbitmap.cxx b/cui/source/tabpages/tppattern.cxx similarity index 66% rename from cui/source/tabpages/tpbitmap.cxx rename to cui/source/tabpages/tppattern.cxx index 05d9b54..b90a5bd 100644 --- a/cui/source/tabpages/tpbitmap.cxx +++ b/cui/source/tabpages/tppattern.cxx @@ -49,25 +49,25 @@ using namespace com::sun::star; -SvxBitmapTabPage::SvxBitmapTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs) : +SvxPatternTabPage::SvxPatternTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs) : SvxTabPage ( pParent, "BitmapTabPage", - "cui/ui/bitmaptabpage.ui", + "cui/ui/patterntabpage.ui", rInAttrs ), m_rOutAttrs ( rInAttrs ), - m_pnBitmapListState ( nullptr ), + m_pnPatternListState ( nullptr ), m_pnColorListState ( nullptr ), m_pPageType ( nullptr ), m_nDlgType ( 0 ), m_pPos ( nullptr ), m_pbAreaTP ( nullptr ), - m_bBmpChanged ( false ), + m_bPtrnChanged ( false ), m_aXFStyleItem ( drawing::FillStyle_BITMAP ), - m_aXBitmapItem ( OUString(), Graphic() ), + m_aXPatternItem ( OUString(), Graphic() ), m_aXFillAttr ( rInAttrs.GetPool() ), m_rXFSet ( m_aXFillAttr.GetItemSet() ) { @@ -76,19 +76,18 @@ SvxBitmapTabPage::SvxBitmapTabPage( vcl::Window* pParent, const SfxItemSet& rIn get(m_pLbColor,"LB_COLOR"); get(m_pLbBackgroundColor,"LB_BACKGROUND_COLOR"); get(m_pCtlPreview,"CTL_PREVIEW"); - get(m_pLbBitmaps,"LB_BITMAPS"); - get(m_pLbBitmapsHidden,"FT_BITMAPS_HIDDEN"); + get(m_pLbPatterns,"LB_PATTERN"); + get(m_pLbPatternsHidden,"FT_BITMAPS_HIDDEN"); get(m_pBtnAdd,"BTN_ADD"); get(m_pBtnModify,"BTN_MODIFY"); - get(m_pBtnImport,"BTN_IMPORT"); get(m_pBtnDelete,"BTN_DELETE"); get(m_pBtnLoad,"BTN_LOAD"); get(m_pBtnSave,"BTN_SAVE"); // size of the bitmap listbox Size aSize = getDrawListBoxOptimalSize(this); - m_pLbBitmaps->set_width_request(aSize.Width()); - m_pLbBitmaps->set_height_request(aSize.Height()); + m_pLbPatterns->set_width_request(aSize.Width()); + m_pLbPatterns->set_height_request(aSize.Height()); // size of the bitmap display Size aSize2 = getDrawPreviewOptimalSize(this); @@ -102,28 +101,27 @@ SvxBitmapTabPage::SvxBitmapTabPage( vcl::Window* pParent, const SfxItemSet& rIn // setting the output device m_rXFSet.Put( m_aXFStyleItem ); - m_rXFSet.Put( m_aXBitmapItem ); + m_rXFSet.Put( m_aXPatternItem ); - m_pBtnAdd->SetClickHdl( LINK( this, SvxBitmapTabPage, ClickAddHdl_Impl ) ); - m_pBtnImport->SetClickHdl( LINK( this, SvxBitmapTabPage, ClickImportHdl_Impl ) ); - m_pBtnModify->SetClickHdl( LINK( this, SvxBitmapTabPage, ClickModifyHdl_Impl ) ); - m_pBtnDelete->SetClickHdl( LINK( this, SvxBitmapTabPage, ClickDeleteHdl_Impl ) ); - m_pBtnLoad->SetClickHdl( LINK( this, SvxBitmapTabPage, ClickLoadHdl_Impl ) ); - m_pBtnSave->SetClickHdl( LINK( this, SvxBitmapTabPage, ClickSaveHdl_Impl ) ); + m_pBtnAdd->SetClickHdl( LINK( this, SvxPatternTabPage, ClickAddHdl_Impl ) ); + m_pBtnModify->SetClickHdl( LINK( this, SvxPatternTabPage, ClickModifyHdl_Impl ) ); + m_pBtnDelete->SetClickHdl( LINK( this, SvxPatternTabPage, ClickDeleteHdl_Impl ) ); + m_pBtnLoad->SetClickHdl( LINK( this, SvxPatternTabPage, ClickLoadHdl_Impl ) ); + m_pBtnSave->SetClickHdl( LINK( this, SvxPatternTabPage, ClickSaveHdl_Impl ) ); - m_pLbBitmaps->SetSelectHdl( LINK( this, SvxBitmapTabPage, ChangeBitmapHdl_Impl ) ); - m_pLbColor->SetSelectHdl( LINK( this, SvxBitmapTabPage, ChangePixelColorHdl_Impl ) ); - m_pLbBackgroundColor->SetSelectHdl( LINK( this, SvxBitmapTabPage, ChangeBackgrndColorHdl_Impl ) ); + m_pLbPatterns->SetSelectHdl( LINK( this, SvxPatternTabPage, ChangePatternHdl_Impl ) ); + m_pLbColor->SetSelectHdl( LINK( this, SvxPatternTabPage, ChangeColorHdl_Impl ) ); + m_pLbBackgroundColor->SetSelectHdl( LINK( this, SvxPatternTabPage, ChangeColorHdl_Impl ) ); setPreviewsToSamePlace(pParent, this); } -SvxBitmapTabPage::~SvxBitmapTabPage() +SvxPatternTabPage::~SvxPatternTabPage() { disposeOnce(); } -void SvxBitmapTabPage::dispose() +void SvxPatternTabPage::dispose() { delete m_pBitmapCtl; m_pBitmapCtl = nullptr; @@ -131,28 +129,26 @@ void SvxBitmapTabPage::dispose() m_pCtlPixel.clear(); m_pLbColor.clear(); m_pLbBackgroundColor.clear(); - m_pLbBitmapsHidden.clear(); - m_pLbBitmaps.clear(); + m_pLbPatternsHidden.clear(); + m_pLbPatterns.clear(); m_pCtlPreview.clear(); m_pBtnAdd.clear(); m_pBtnModify.clear(); - m_pBtnImport.clear(); m_pBtnDelete.clear(); m_pBtnLoad.clear(); m_pBtnSave.clear(); SvxTabPage::dispose(); } -void SvxBitmapTabPage::Construct() +void SvxPatternTabPage::Construct() { m_pLbColor->Fill( m_pColorList ); m_pLbBackgroundColor->CopyEntries( *m_pLbColor ); - - m_pLbBitmaps->Fill( m_pBitmapList ); + m_pLbPatterns->Fill( m_pPatternList ); } -void SvxBitmapTabPage::ActivatePage( const SfxItemSet& ) +void SvxPatternTabPage::ActivatePage( const SfxItemSet& ) { sal_Int32 nPos; sal_Int32 nCount; @@ -193,19 +189,17 @@ void SvxBitmapTabPage::ActivatePage( const SfxItemSet& ) m_pLbBackgroundColor->SelectEntryPos( 0 ); else m_pLbBackgroundColor->SelectEntryPos( nPos ); - - ChangePixelColorHdl_Impl( *m_pLbColor ); - ChangeBackgrndColorHdl_Impl( *m_pLbBackgroundColor ); + ChangeColor_Impl(); } // determining (possibly cutting) the name and // displaying it in the GroupBox OUString aString( CUI_RES( RID_SVXSTR_TABLE ) ); aString += ": "; - INetURLObject aURL( m_pBitmapList->GetPath() ); + INetURLObject aURL( m_pPatternList->GetPath() ); - aURL.Append( m_pBitmapList->GetName() ); - DBG_ASSERT( aURL.GetProtocol() != INetProtocol::NotValid, "invalid URL" ); + aURL.Append( m_pPatternList->GetName() ); + SAL_WARN_IF( aURL.GetProtocol() == INetProtocol::NotValid, "cui.tabpages", "invalid URL" ); if( aURL.getBase().getLength() > 18 ) { @@ -217,10 +211,10 @@ void SvxBitmapTabPage::ActivatePage( const SfxItemSet& ) if( *m_pPageType == PT_BITMAP && *m_pPos != LISTBOX_ENTRY_NOTFOUND ) { - m_pLbBitmaps->SelectEntryPos( *m_pPos ); + m_pLbPatterns->SelectEntryPos( *m_pPos ); } // colors could have been deleted - ChangeBitmapHdl_Impl( *m_pLbBitmaps ); + ChangePatternHdl_Impl( *m_pLbPatterns ); *m_pPageType = PT_BITMAP; *m_pPos = LISTBOX_ENTRY_NOTFOUND; @@ -229,7 +223,7 @@ void SvxBitmapTabPage::ActivatePage( const SfxItemSet& ) } -DeactivateRC SvxBitmapTabPage::DeactivatePage( SfxItemSet* _pSet) +DeactivateRC SvxPatternTabPage::DeactivatePage( SfxItemSet* _pSet) { if ( CheckChanges_Impl() == -1L ) return DeactivateRC::KeepPage; @@ -241,18 +235,18 @@ DeactivateRC SvxBitmapTabPage::DeactivatePage( SfxItemSet* _pSet) } -bool SvxBitmapTabPage::FillItemSet( SfxItemSet* _rOutAttrs ) +bool SvxPatternTabPage::FillItemSet( SfxItemSet* _rOutAttrs ) { if( m_nDlgType == 0 && !*m_pbAreaTP ) // area dialog { if(PT_BITMAP == *m_pPageType) { _rOutAttrs->Put(XFillStyleItem(drawing::FillStyle_BITMAP)); - sal_Int32 nPos = m_pLbBitmaps->GetSelectEntryPos(); + sal_Int32 nPos = m_pLbPatterns->GetSelectEntryPos(); if(LISTBOX_ENTRY_NOTFOUND != nPos) { - const XBitmapEntry* pXBitmapEntry = m_pBitmapList->GetBitmap(nPos); - const OUString aString(m_pLbBitmaps->GetSelectEntry()); + const XBitmapEntry* pXBitmapEntry = m_pPatternList->GetBitmap(nPos); + const OUString aString(m_pLbPatterns->GetSelectEntry()); _rOutAttrs->Put(XFillBitmapItem(aString, pXBitmapEntry->GetGraphicObject())); } @@ -269,7 +263,7 @@ bool SvxBitmapTabPage::FillItemSet( SfxItemSet* _rOutAttrs ) } -void SvxBitmapTabPage::Reset( const SfxItemSet* ) +void SvxPatternTabPage::Reset( const SfxItemSet* ) { // aLbBitmaps.SelectEntryPos( 0 ); @@ -284,10 +278,10 @@ void SvxBitmapTabPage::Reset( const SfxItemSet* ) m_pCtlPreview->SetAttributes( m_aXFillAttr.GetItemSet() ); m_pCtlPreview->Invalidate(); - ChangeBitmapHdl_Impl( *m_pLbBitmaps ); + ChangePatternHdl_Impl( *m_pLbPatterns ); // determine button state - if( m_pBitmapList.is() && m_pBitmapList->Count() ) + if( m_pPatternList.is() && m_pPatternList->Count() ) { m_pBtnAdd->Enable(); m_pBtnModify->Enable(); @@ -303,21 +297,21 @@ void SvxBitmapTabPage::Reset( const SfxItemSet* ) } -VclPtr<SfxTabPage> SvxBitmapTabPage::Create( vcl::Window* pWindow, +VclPtr<SfxTabPage> SvxPatternTabPage::Create( vcl::Window* pWindow, const SfxItemSet* rSet ) { - return VclPtr<SvxBitmapTabPage>::Create( pWindow, *rSet ); + return VclPtr<SvxPatternTabPage>::Create( pWindow, *rSet ); } -IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ChangeBitmapHdl_Impl, ListBox&, void) +IMPL_LINK_NOARG_TYPED(SvxPatternTabPage, ChangePatternHdl_Impl, ListBox&, void) { std::unique_ptr<GraphicObject> pGraphicObject; - int nPos(m_pLbBitmaps->GetSelectEntryPos()); + int nPos(m_pLbPatterns->GetSelectEntryPos()); if(LISTBOX_ENTRY_NOTFOUND != nPos) { - pGraphicObject.reset(new GraphicObject(m_pBitmapList->GetBitmap(nPos)->GetGraphicObject())); + pGraphicObject.reset(new GraphicObject(m_pPatternList->GetBitmap(nPos)->GetGraphicObject())); } else { @@ -335,12 +329,12 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ChangeBitmapHdl_Impl, ListBox&, void) if(!pGraphicObject) { - m_pLbBitmaps->SelectEntryPos(0); - nPos = m_pLbBitmaps->GetSelectEntryPos(); + m_pLbPatterns->SelectEntryPos(0); + nPos = m_pLbPatterns->GetSelectEntryPos(); if(LISTBOX_ENTRY_NOTFOUND != nPos) { - pGraphicObject.reset(new GraphicObject(m_pBitmapList->GetBitmap(nPos)->GetGraphicObject())); + pGraphicObject.reset(new GraphicObject(m_pPatternList->GetBitmap(nPos)->GetGraphicObject())); } } } @@ -414,32 +408,25 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ChangeBitmapHdl_Impl, ListBox&, void) m_pCtlPixel->Invalidate(); - // display bitmap - const XFillBitmapItem aXBmpItem(OUString(), *pGraphicObject); - m_rXFSet.Put( aXBmpItem ); - - m_pCtlPreview->SetAttributes( m_aXFillAttr.GetItemSet() ); - m_pCtlPreview->Invalidate(); - - m_bBmpChanged = false; + m_bPtrnChanged = false; } } -long SvxBitmapTabPage::CheckChanges_Impl() +long SvxPatternTabPage::CheckChanges_Impl() { - sal_Int32 nPos = m_pLbBitmaps->GetSelectEntryPos(); + sal_Int32 nPos = m_pLbPatterns->GetSelectEntryPos(); if( nPos != LISTBOX_ENTRY_NOTFOUND ) { - if( m_bBmpChanged ) + if( m_bPtrnChanged ) { ResMgr& rMgr = CUI_MGR(); Image aWarningBoxImage = WarningBox::GetStandardImage(); ScopedVclPtrInstance<SvxMessDialog> aMessDlg( GetParentDialog(), - SVX_RES( RID_SVXSTR_BITMAP ), - CUI_RES( RID_SVXSTR_ASK_CHANGE_BITMAP ), + SVX_RES( RID_SVXSTR_PATTERN ), + CUI_RES( RID_SVXSTR_ASK_CHANGE_PATTERN ), &aWarningBoxImage ); - DBG_ASSERT(aMessDlg, "Dialog creation failed!"); + assert(aMessDlg && "Dialog creation failed!"); aMessDlg->SetButtonText( SvxMessDialogButton::N1, ResId( RID_SVXSTR_CHANGE, rMgr ) ); aMessDlg->SetButtonText( SvxMessDialogButton::N2, ResId( RID_SVXSTR_ADD, rMgr ) ); @@ -464,21 +451,21 @@ long SvxBitmapTabPage::CheckChanges_Impl() } } } - nPos = m_pLbBitmaps->GetSelectEntryPos(); + nPos = m_pLbPatterns->GetSelectEntryPos(); if( nPos != LISTBOX_ENTRY_NOTFOUND ) *m_pPos = nPos; return 0L; } -IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickAddHdl_Impl, Button*, void) +IMPL_LINK_NOARG_TYPED(SvxPatternTabPage, ClickAddHdl_Impl, Button*, void) { - OUString aNewName( SVX_RES( RID_SVXSTR_BITMAP ) ); - OUString aDesc( CUI_RES( RID_SVXSTR_DESC_NEW_BITMAP ) ); + OUString aNewName( SVX_RES( RID_SVXSTR_PATTERN_UNTITLED ) ); + OUString aDesc( CUI_RES( RID_SVXSTR_DESC_NEW_PATTERN ) ); OUString aName; - long nCount = m_pBitmapList->Count(); + long nCount = m_pPatternList->Count(); long j = 1; bool bDifferent = false; @@ -490,14 +477,14 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickAddHdl_Impl, Button*, void) bDifferent = true; for( long i = 0; i < nCount && bDifferent; i++ ) - if( aName == m_pBitmapList->GetBitmap( i )->GetName() ) + if( aName == m_pPatternList->GetBitmap( i )->GetName() ) bDifferent = false; } SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - DBG_ASSERT(pFact, "Dialog creation failed!"); + assert(pFact && "Dialog creation failed!"); std::unique_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc )); - DBG_ASSERT(pDlg, "Dialog creation failed!"); + assert(pDlg && "Dialog creation failed!"); ScopedVclPtr<MessageDialog> pWarnBox; sal_uInt16 nError(1); @@ -508,7 +495,7 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickAddHdl_Impl, Button*, void) bDifferent = true; for( long i = 0; i < nCount && bDifferent; i++ ) - if( aName == m_pBitmapList->GetBitmap( i )->GetName() ) + if( aName == m_pPatternList->GetBitmap( i )->GetName() ) bDifferent = false; if( bDifferent ) { @@ -549,23 +536,23 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickAddHdl_Impl, Button*, void) } } - DBG_ASSERT( pEntry, "SvxBitmapTabPage::ClickAddHdl_Impl(), pEntry == 0 ?" ); + assert( pEntry && "SvxPatternTabPage::ClickAddHdl_Impl(), pEntry == 0 ?" ); if( pEntry ) { - m_pBitmapList->Insert( pEntry ); + m_pPatternList->Insert( pEntry ); const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); - m_pLbBitmaps->Append(rStyleSettings.GetListBoxPreviewDefaultPixelSize(), *pEntry ); - m_pLbBitmaps->SelectEntryPos( m_pLbBitmaps->GetEntryCount() - 1 ); + m_pLbPatterns->Append(rStyleSettings.GetListBoxPreviewDefaultPixelSize(), *pEntry ); + m_pLbPatterns->SelectEntryPos( m_pLbPatterns->GetEntryCount() - 1 ); - *m_pnBitmapListState |= ChangeType::MODIFIED; + *m_pnPatternListState |= ChangeType::MODIFIED; - ChangeBitmapHdl_Impl( *m_pLbBitmaps ); + ChangePatternHdl_Impl( *m_pLbPatterns ); } } // determine button state - if( m_pBitmapList->Count() ) + if( m_pPatternList->Count() ) { m_pBtnModify->Enable(); m_pBtnDelete->Enable(); @@ -578,104 +565,23 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickAddHdl_Impl, Button*, void) /******************************************************************************/ -IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickImportHdl_Impl, Button*, void) -{ - ResMgr& rMgr = CUI_MGR(); - SvxOpenGraphicDialog aDlg( OUString("Import") ); - aDlg.EnableLink(false); - - if( !aDlg.Execute() ) - { - Graphic aGraphic; - - EnterWait(); - int nError = aDlg.GetGraphic( aGraphic ); - LeaveWait(); - - if( !nError ) - { - OUString aDesc( ResId(RID_SVXSTR_DESC_EXT_BITMAP, rMgr) ); - ScopedVclPtr<MessageDialog> pWarnBox; - - // convert file URL to UI name - OUString aName; - INetURLObject aURL( aDlg.GetPath() ); - SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - DBG_ASSERT(pFact, "Dialog creation failed!"); - std::unique_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aURL.GetName().getToken( 0, '.' ), aDesc )); - DBG_ASSERT(pDlg, "Dialog creation failed!"); - nError = 1; - - while( pDlg->Execute() == RET_OK ) - { - pDlg->GetName( aName ); - - bool bDifferent = true; - long nCount = m_pBitmapList->Count(); - - for( long i = 0; i < nCount && bDifferent; i++ ) - if( aName == m_pBitmapList->GetBitmap( i )->GetName() ) - bDifferent = false; - - if( bDifferent ) { - nError = 0; - break; - } - - if( !pWarnBox ) - { - pWarnBox.disposeAndReset(VclPtr<MessageDialog>::Create( GetParentDialog() - ,"DuplicateNameDialog" - ,"cui/ui/queryduplicatedialog.ui")); - } - - if( pWarnBox->Execute() != RET_OK ) - break; - } - - pDlg.reset(); - pWarnBox.disposeAndClear(); - - if( !nError ) - { - XBitmapEntry* pEntry = new XBitmapEntry( aGraphic, aName ); - m_pBitmapList->Insert( pEntry ); - - const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); - m_pLbBitmaps->Append(rStyleSettings.GetListBoxPreviewDefaultPixelSize(), *pEntry ); - m_pLbBitmaps->SelectEntryPos( m_pLbBitmaps->GetEntryCount() - 1 ); - - *m_pnBitmapListState |= ChangeType::MODIFIED; - - ChangeBitmapHdl_Impl( *m_pLbBitmaps ); - } - } - else - // graphic couldn't be loaded - ScopedVclPtrInstance<MessageDialog>::Create( GetParentDialog() - ,"NoLoadedFileDialog" - ,"cui/ui/querynoloadedfiledialog.ui")->Execute(); - } -} - - -IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickModifyHdl_Impl, Button*, void) +IMPL_LINK_NOARG_TYPED(SvxPatternTabPage, ClickModifyHdl_Impl, Button*, void) { - sal_Int32 nPos = m_pLbBitmaps->GetSelectEntryPos(); + sal_Int32 nPos = m_pLbPatterns->GetSelectEntryPos(); if ( nPos != LISTBOX_ENTRY_NOTFOUND ) { ResMgr& rMgr = CUI_MGR(); - OUString aDesc( ResId( RID_SVXSTR_DESC_NEW_BITMAP, rMgr ) ); - OUString aName( m_pBitmapList->GetBitmap( nPos )->GetName() ); + OUString aDesc( ResId( RID_SVXSTR_DESC_NEW_PATTERN, rMgr ) ); + OUString aName( m_pPatternList->GetBitmap( nPos )->GetName() ); OUString aOldName = aName; SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - DBG_ASSERT(pFact, "Dialog creation failed!"); + assert(pFact && "Dialog creation failed!"); std::unique_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc )); - DBG_ASSERT(pDlg, "Dialog creation failed!"); + assert(pDlg && "Dialog creation failed!"); - long nCount = m_pBitmapList->Count(); + long nCount = m_pPatternList->Count(); bool bLoop = true; const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); @@ -686,7 +592,7 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickModifyHdl_Impl, Button*, void) for( long i = 0; i < nCount && bDifferent; i++ ) { - if( aName == m_pBitmapList->GetBitmap( i )->GetName() && + if( aName == m_pPatternList->GetBitmap( i )->GetName() && aName != aOldName ) bDifferent = false; } @@ -699,14 +605,14 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickModifyHdl_Impl, Button*, void) // #i123497# Need to replace the existing entry with a new one (old returned needs to be deleted) XBitmapEntry* pEntry = new XBitmapEntry(Graphic(aBitmapEx), aName); - delete m_pBitmapList->Replace(pEntry, nPos); + delete m_pPatternList->Replace(pEntry, nPos); - m_pLbBitmaps->Modify( rStyleSettings.GetListBoxPreviewDefaultPixelSize(), *pEntry, nPos ); - m_pLbBitmaps->SelectEntryPos( nPos ); + m_pLbPatterns->Modify( rStyleSettings.GetListBoxPreviewDefaultPixelSize(), *pEntry, nPos ); + m_pLbPatterns->SelectEntryPos( nPos ); - *m_pnBitmapListState |= ChangeType::MODIFIED; + *m_pnPatternListState |= ChangeType::MODIFIED; - m_bBmpChanged = false; + m_bPtrnChanged = false; } else { @@ -721,9 +627,9 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickModifyHdl_Impl, Button*, void) } -IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickDeleteHdl_Impl, Button*, void) +IMPL_LINK_NOARG_TYPED(SvxPatternTabPage, ClickDeleteHdl_Impl, Button*, void) { - sal_Int32 nPos = m_pLbBitmaps->GetSelectEntryPos(); + sal_Int32 nPos = m_pLbPatterns->GetSelectEntryPos(); if( nPos != LISTBOX_ENTRY_NOTFOUND ) { @@ -731,20 +637,20 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickDeleteHdl_Impl, Button*, void) if( aQueryBox->Execute() == RET_YES ) { - delete m_pBitmapList->Remove( nPos ); - m_pLbBitmaps->RemoveEntry( nPos ); - m_pLbBitmaps->SelectEntryPos( 0 ); + delete m_pPatternList->Remove( nPos ); + m_pLbPatterns->RemoveEntry( nPos ); + m_pLbPatterns->SelectEntryPos( 0 ); m_pCtlPreview->Invalidate(); m_pCtlPixel->Invalidate(); - ChangeBitmapHdl_Impl( *m_pLbBitmaps ); + ChangePatternHdl_Impl( *m_pLbPatterns ); - *m_pnBitmapListState |= ChangeType::MODIFIED; + *m_pnPatternListState |= ChangeType::MODIFIED; } } // determine button state - if( !m_pBitmapList->Count() ) + if( !m_pPatternList->Count() ) { m_pBtnModify->Disable(); m_pBtnDelete->Disable(); @@ -753,25 +659,25 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickDeleteHdl_Impl, Button*, void) } -IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickLoadHdl_Impl, Button*, void) +IMPL_LINK_NOARG_TYPED(SvxPatternTabPage, ClickLoadHdl_Impl, Button*, void) { sal_uInt16 nReturn = RET_YES; ResMgr& rMgr = CUI_MGR(); - if ( *m_pnBitmapListState & ChangeType::MODIFIED ) + if ( *m_pnPatternListState & ChangeType::MODIFIED ) { nReturn = ScopedVclPtrInstance<MessageDialog>::Create( GetParentDialog() ,"AskSaveList" ,"cui/ui/querysavelistdialog.ui")->Execute(); if ( nReturn == RET_YES ) - m_pBitmapList->Save(); + m_pPatternList->Save(); } if ( nReturn != RET_CANCEL ) { ::sfx2::FileDialogHelper aDlg( css::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE ); - OUString aStrFilterType( "*.sob" ); + OUString aStrFilterType( "*.sop" ); aDlg.AddFilter( aStrFilterType, aStrFilterType ); OUString aPalettePath(SvtPathOptions().GetPalettePath()); OUString aLastDir; @@ -795,21 +701,21 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickLoadHdl_Impl, Button*, void) aPathURL.removeFinalSlash(); // save table - XBitmapListRef pBmpList = XPropertyList::AsBitmapList( + XPatternListRef pBmpList = XPropertyList::AsPatternList( XPropertyList::CreatePropertyList( - XBITMAP_LIST, aPathURL.GetMainURL(INetURLObject::NO_DECODE), + XPATTERN_LIST, aPathURL.GetMainURL(INetURLObject::NO_DECODE), "")); pBmpList->SetName( aURL.getName() ); if( pBmpList->Load() ) { - m_pBitmapList = pBmpList; - static_cast<SvxAreaTabDialog*>( GetParentDialog() )->SetNewBitmapList( m_pBitmapList ); + m_pPatternList = pBmpList; + static_cast<SvxAreaTabDialog*>( GetParentDialog() )->SetNewPatternList( m_pPatternList ); - m_pLbBitmaps->Clear(); - m_pLbBitmaps->Fill( m_pBitmapList ); + m_pLbPatterns->Clear(); + m_pLbPatterns->Fill( m_pPatternList ); Reset( &m_rOutAttrs ); - m_pBitmapList->SetName( aURL.getName() ); + m_pPatternList->SetName( aURL.getName() ); // determining (possibly cutting) the name // displaying it in the GroupBox @@ -824,8 +730,8 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickLoadHdl_Impl, Button*, void) else aString += aURL.getBase(); - *m_pnBitmapListState |= ChangeType::CHANGED; - *m_pnBitmapListState &= ~ChangeType::MODIFIED; + *m_pnPatternListState |= ChangeType::CHANGED; + *m_pnPatternListState &= ~ChangeType::MODIFIED; LeaveWait(); } else @@ -839,7 +745,7 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickLoadHdl_Impl, Button*, void) } // determine button state - if( m_pBitmapList->Count() ) + if( m_pPatternList->Count() ) { m_pBtnModify->Enable(); m_pBtnDelete->Enable(); @@ -854,10 +760,10 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickLoadHdl_Impl, Button*, void) } -IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickSaveHdl_Impl, Button*, void) +IMPL_LINK_NOARG_TYPED(SvxPatternTabPage, ClickSaveHdl_Impl, Button*, void) { ::sfx2::FileDialogHelper aDlg( css::ui::dialogs::TemplateDescription::FILESAVE_SIMPLE ); - OUString aStrFilterType( "*.sob" ); + OUString aStrFilterType( "*.sop" ); aDlg.AddFilter( aStrFilterType, aStrFilterType ); OUString aPalettePath(SvtPathOptions().GetPalettePath()); @@ -870,14 +776,14 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickSaveHdl_Impl, Button*, void) while (nIndex >= 0); INetURLObject aFile(aLastDir); - DBG_ASSERT( aFile.GetProtocol() != INetProtocol::NotValid, "invalid URL" ); + SAL_WARN_IF( aFile.GetProtocol() == INetProtocol::NotValid, "cui.tabpages", "invalid URL" ); - if( !m_pBitmapList->GetName().isEmpty() ) + if( !m_pPatternList->GetName().isEmpty() ) { - aFile.Append( m_pBitmapList->GetName() ); + aFile.Append( m_pPatternList->GetName() ); if( aFile.getExtension().isEmpty() ) - aFile.SetExtension( "sob" ); + aFile.SetExtension( "sop" ); } aDlg.SetDisplayDirectory( aFile.GetMainURL( INetURLObject::NO_DECODE ) ); @@ -889,10 +795,10 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickSaveHdl_Impl, Button*, void) aPathURL.removeSegment(); aPathURL.removeFinalSlash(); - m_pBitmapList->SetName( aURL.getName() ); - m_pBitmapList->SetPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) ); + m_pPatternList->SetName( aURL.getName() ); + m_pPatternList->SetPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) ); - if( m_pBitmapList->Save() ) + if( m_pPatternList->Save() ) { // determining (possibly cutting) the name // displaying it in the GroupBox @@ -907,8 +813,8 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickSaveHdl_Impl, Button*, void) else aString += aURL.getBase(); - *m_pnBitmapListState |= ChangeType::SAVED; - *m_pnBitmapListState &= ~ChangeType::MODIFIED; + *m_pnPatternListState |= ChangeType::SAVED; + *m_pnPatternListState &= ~ChangeType::MODIFIED; } else { @@ -920,27 +826,18 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ClickSaveHdl_Impl, Button*, void) } -IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ChangePixelColorHdl_Impl, ListBox&, void) +IMPL_LINK_NOARG_TYPED(SvxPatternTabPage, ChangeColorHdl_Impl, ListBox&, void) { - m_pCtlPixel->SetPixelColor( m_pLbColor->GetSelectEntryColor() ); - m_pCtlPixel->Invalidate(); - - m_pBitmapCtl->SetPixelColor( m_pLbColor->GetSelectEntryColor() ); - - // get bitmap and display it - m_rXFSet.Put(XFillBitmapItem(OUString(), Graphic(m_pBitmapCtl->GetBitmapEx()))); - m_pCtlPreview->SetAttributes( m_aXFillAttr.GetItemSet() ); - m_pCtlPreview->Invalidate(); - - m_bBmpChanged = true; + ChangeColor_Impl(); } - -IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ChangeBackgrndColorHdl_Impl, ListBox&, void) +void SvxPatternTabPage::ChangeColor_Impl() { + m_pCtlPixel->SetPixelColor( m_pLbColor->GetSelectEntryColor() ); m_pCtlPixel->SetBackgroundColor( m_pLbBackgroundColor->GetSelectEntryColor() ); m_pCtlPixel->Invalidate(); + m_pBitmapCtl->SetPixelColor( m_pLbColor->GetSelectEntryColor() ); m_pBitmapCtl->SetBackgroundColor( m_pLbBackgroundColor->GetSelectEntryColor() ); // get bitmap and display it @@ -948,11 +845,11 @@ IMPL_LINK_NOARG_TYPED(SvxBitmapTabPage, ChangeBackgrndColorHdl_Impl, ListBox&, v m_pCtlPreview->SetAttributes( m_aXFillAttr.GetItemSet() ); m_pCtlPreview->Invalidate(); - m_bBmpChanged = true; + m_bPtrnChanged = true; } -void SvxBitmapTabPage::PointChanged( vcl::Window* pWindow, RECT_POINT ) +void SvxPatternTabPage::PointChanged( vcl::Window* pWindow, RECT_POINT ) { if( pWindow == m_pCtlPixel ) { @@ -963,15 +860,15 @@ void SvxBitmapTabPage::PointChanged( vcl::Window* pWindow, RECT_POINT ) m_pCtlPreview->SetAttributes( m_aXFillAttr.GetItemSet() ); m_pCtlPreview->Invalidate(); - m_bBmpChanged = true; + m_bPtrnChanged = true; } } -vcl::Window* SvxBitmapTabPage::GetParentLabeledBy( const vcl::Window* pLabeled ) const +vcl::Window* SvxPatternTabPage::GetParentLabeledBy( const vcl::Window* pLabeled ) const { - if (pLabeled == m_pLbBitmaps) - return m_pLbBitmapsHidden.get(); + if (pLabeled == m_pLbPatterns) + return m_pLbPatternsHidden.get(); else return SvxTabPage::GetParentLabeledBy (pLabeled); } diff --git a/cui/uiconfig/ui/areadialog.ui b/cui/uiconfig/ui/areadialog.ui index bf64048..4482284 100644 --- a/cui/uiconfig/ui/areadialog.ui +++ b/cui/uiconfig/ui/areadialog.ui @@ -177,10 +177,10 @@ <placeholder/> </child> <child type="tab"> - <object class="GtkLabel" id="RID_SVXPAGE_BITMAP"> + <object class="GtkLabel" id="RID_SVXPAGE_PATTERN"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="yes">Bitmaps</property> + <property name="label" translatable="yes">Patterns</property> </object> <packing> <property name="position">6</property> diff --git a/cui/uiconfig/ui/bitmaptabpage.ui b/cui/uiconfig/ui/patterntabpage.ui similarity index 95% rename from cui/uiconfig/ui/bitmaptabpage.ui rename to cui/uiconfig/ui/patterntabpage.ui index 10f6d68..cce4493 100644 --- a/cui/uiconfig/ui/bitmaptabpage.ui +++ b/cui/uiconfig/ui/patterntabpage.ui @@ -1,7 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.16.1 --> <interface> - <!-- interface-requires gtk+ 3.0 --> + <requires lib="gtk+" version="3.0"/> <!-- interface-requires LibreOffice 1.0 --> + <object class="GtkImage" id="image1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="pixbuf">res/sc05501.png</property> + </object> + <object class="GtkImage" id="image2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="pixbuf">res/sc05502.png</property> + </object> <object class="GtkBox" id="BitmapTabPage"> <property name="visible">True</property> <property name="can_focus">False</property> @@ -85,7 +96,7 @@ </packing> </child> <child> - <object class="svxlo-ColorLB" id="LB_COLOR"> + <object class="svxlo-ColorLB" id="LB_BACKGROUND_COLOR"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="halign">start</property> @@ -111,7 +122,7 @@ </packing> </child> <child> - <object class="svxlo-ColorLB" id="LB_BACKGROUND_COLOR"> + <object class="svxlo-ColorLB" id="LB_COLOR"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="halign">start</property> @@ -139,7 +150,7 @@ <property name="orientation">vertical</property> <property name="spacing">6</property> <child> - <object class="svxlo-BitmapLB" id="LB_BITMAPS:border"> + <object class="svxlo-PatternLB" id="LB_PATTERN:border"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="vexpand">True</property> @@ -211,20 +222,6 @@ </packing> </child> <child> - <object class="GtkButton" id="BTN_IMPORT"> - <property name="label" translatable="yes">_Import</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="receives_default">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> - </packing> - </child> - <child> <object class="GtkButton" id="BTN_DELETE"> <property name="label">gtk-delete</property> <property name="visible">True</property> @@ -334,14 +331,4 @@ </packing> </child> </object> - <object class="GtkImage" id="image1"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="pixbuf">res/sc05501.png</property> - </object> - <object class="GtkImage" id="image2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="pixbuf">res/sc05502.png</property> - </object> </interface> diff --git a/extras/Package_palettes.mk b/extras/Package_palettes.mk index 5cf4c61..fa37de6 100644 --- a/extras/Package_palettes.mk +++ b/extras/Package_palettes.mk @@ -26,6 +26,7 @@ $(eval $(call gb_Package_add_files,extras_palettes,$(LIBO_SHARE_FOLDER)/palette, standard.soe \ standard.sog \ standard.soh \ + standard.sop \ styles.sod \ tango.soc \ web.soc \ diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in index 4dd4593..30dcecc 100644 --- a/extras/source/glade/libreoffice-catalog.xml.in +++ b/extras/source/glade/libreoffice-catalog.xml.in @@ -150,6 +150,17 @@ </property> </properties> </glade-widget-class> + <glade-widget-class title="Pattern ListBox" name="svxlo-PatternLB" + generic-name="PatternListBox" parent="GtkComboBox" + icon-name="widget-gtk-combobox"> + <properties> + <property save="True" query="False" id="dropdown" default="True" name="Use DropDown"> + <parameter-spec> + <type>GParamBoolean</type> + </parameter-spec> + </property> + </properties> + </glade-widget-class> <glade-widget-class title="Font Name ListBox" name="svtlo-FontNameBox" generic-name="Font name ListBox" parent="GtkComboBox" icon-name="widget-gtk-combobox"> diff --git a/extras/source/palettes/standard.sob b/extras/source/palettes/standard.sob index ee1f29f..820190b 100644 Binary files a/extras/source/palettes/standard.sob and b/extras/source/palettes/standard.sob differ diff --git a/extras/source/palettes/standard.sop b/extras/source/palettes/standard.sop new file mode 100644 index 0000000..bcdee67 Binary files /dev/null and b/extras/source/palettes/standard.sop differ diff --git a/include/svx/dialogs.hrc b/include/svx/dialogs.hrc index c2af3bc..da820fc 100644 --- a/include/svx/dialogs.hrc +++ b/include/svx/dialogs.hrc @@ -40,6 +40,8 @@ #define RID_SVXSTR_GRADIENT (RID_SVX_START + 161) #define RID_SVXSTR_HATCH (RID_SVX_START + 180) #define RID_SVXSTR_BITMAP (RID_SVX_START + 167) +#define RID_SVXSTR_PATTERN (RID_SVX_START + 168) +#define RID_SVXSTR_PATTERN_UNTITLED (RID_SVX_START + 169) #define RID_SVXSTR_LINESTYLE (RID_SVX_START + 173) #define RID_SVXSTR_FIELDUNIT_TABLE (RID_SVX_START + 311) #define RID_SVXSTR_COLOR_USER (RID_SVX_START + 250) @@ -84,6 +86,7 @@ #define RID_SVXPAGE_HATCH (RID_SVX_START + 57) #define RID_SVXPAGE_BITMAP (RID_SVX_START + 58) #define RID_SVXPAGE_GRADIENT (RID_SVX_START + 59) +#define RID_SVXPAGE_PATTERN (RID_SVX_START + 60) #define RID_SVXPAGE_MACROASSIGN (RID_SVX_START + 296) // why extra defines for pages that already exist? diff --git a/include/svx/dlgctrl.hxx b/include/svx/dlgctrl.hxx index 2e6aa4c..1478b64 100644 --- a/include/svx/dlgctrl.hxx +++ b/include/svx/dlgctrl.hxx @@ -293,6 +293,24 @@ private: /************************************************************************/ +class SAL_WARN_UNUSED SVX_DLLPUBLIC PatternLB : public ListBox +{ +public: + explicit PatternLB(vcl::Window* pParent, WinBits aWB); + + void Fill(const XPatternListRef &pList); + + void Append(const Size& rSize, const XBitmapEntry& rEntry); + void Modify(const Size& rSize, const XBitmapEntry& rEntry, sal_Int32 nPos); + +private: + BitmapEx maBitmapEx; + + XPatternListRef mpList; +}; + +/************************************************************************/ + class SAL_WARN_UNUSED SVX_DLLPUBLIC FillAttrLB : public ColorListBox { private: @@ -304,6 +322,7 @@ public: void Fill( const XHatchListRef &pList ); void Fill( const XGradientListRef &pList ); void Fill( const XBitmapListRef &pList ); + void Fill( const XPatternListRef &pList ); }; /************************************************************************/ diff --git a/include/svx/drawitem.hxx b/include/svx/drawitem.hxx index 64e94e9..1d7068c 100644 --- a/include/svx/drawitem.hxx +++ b/include/svx/drawitem.hxx @@ -123,6 +123,30 @@ public: const XBitmapListRef& GetBitmapList() const { return pBitmapList; } }; +class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxPatternListItem : public SfxPoolItem +{ + XPatternListRef pPatternList; + +public: + static SfxPoolItem* CreateDefault(); + + SvxPatternListItem(); + SvxPatternListItem( XPatternListRef pBL, + sal_uInt16 nWhich ); + SvxPatternListItem( const SvxPatternListItem& ); + + virtual bool GetPresentation( SfxItemPresentation ePres, + SfxMapUnit eCoreMetric, + SfxMapUnit ePresMetric, + OUString &rText, const IntlWrapper * = nullptr ) const override; + virtual bool operator==( const SfxPoolItem& ) const override; + virtual SfxPoolItem* Clone( SfxItemPool *pPool = nullptr ) const override; + virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override; + virtual bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override; + + const XPatternListRef& GetPatternList() const { return pPatternList; } +}; + class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxDashListItem : public SfxPoolItem { XDashListRef pDashList; diff --git a/include/svx/sidebar/AreaPropertyPanelBase.hxx b/include/svx/sidebar/AreaPropertyPanelBase.hxx index 525199e..a30bf73 100644 --- a/include/svx/sidebar/AreaPropertyPanelBase.hxx +++ b/include/svx/sidebar/AreaPropertyPanelBase.hxx @@ -113,6 +113,7 @@ protected: sal_Int32 mnLastPosGradient; sal_Int32 mnLastPosHatch; sal_Int32 mnLastPosBitmap; + sal_Int32 mnLastPosPattern; sal_uInt16 mnLastTransSolid; XGradient maGradientLinear; @@ -136,7 +137,6 @@ protected: VclPtr<ToolBox> mpBTNGradient; VclPtr<MetricField> mpMTRAngle; VclPtr<ListBox> mpGradientStyle; - VclPtr<SvxFillAttrBox> mpLbFillBitmap; VclPtr<PushButton> mpBmpImport; std::unique_ptr< XFillStyleItem > mpStyleItem; diff --git a/include/svx/svdmodel.hxx b/include/svx/svdmodel.hxx index 160af2d..81ec9c5 100644 --- a/include/svx/svdmodel.hxx +++ b/include/svx/svdmodel.hxx @@ -509,6 +509,7 @@ public: XHatchListRef GetHatchList() const { return XPropertyList::AsHatchList(GetPropertyList( XHATCH_LIST )); } XColorListRef GetColorList() const { return XPropertyList::AsColorList(GetPropertyList( XCOLOR_LIST )); } XBitmapListRef GetBitmapList() const { return XPropertyList::AsBitmapList(GetPropertyList( XBITMAP_LIST )); } + XPatternListRef GetPatternList() const { return XPropertyList::AsPatternList(GetPropertyList( XPATTERN_LIST )); } XLineEndListRef GetLineEndList() const { return XPropertyList::AsLineEndList(GetPropertyList( XLINE_END_LIST )); } XGradientListRef GetGradientList() const { return XPropertyList::AsGradientList(GetPropertyList( XGRADIENT_LIST )); } diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc index c5e8918..81eb9f4 100644 --- a/include/svx/svxids.hrc +++ b/include/svx/svxids.hrc @@ -339,25 +339,26 @@ #define SID_GRADIENT_LIST ( SID_SVX_START + 180 ) #define SID_HATCH_LIST ( SID_SVX_START + 181 ) #define SID_BITMAP_LIST ( SID_SVX_START + 182 ) -#define SID_DASH_LIST ( SID_SVX_START + 183 ) -#define SID_LINEEND_LIST ( SID_SVX_START + 184 ) -#define SID_BACKGROUND_COLOR ( SID_SVX_START + 185 ) -#define SID_BACKGROUND_PATTERN ( SID_SVX_START + 186 ) -#define SID_ATTR_BORDER ( SID_SVX_START + 187 ) -#define SID_INSERT_FIXEDTEXT ( SID_SVX_START + 188 ) -#define SID_INSERT_GROUPBOX ( SID_SVX_START + 189 ) -#define SID_INSERT_EDIT ( SID_SVX_START + 190 ) -#define SID_INSERT_LISTBOX ( SID_SVX_START + 191 ) -#define SID_INSERT_COMBOBOX ( SID_SVX_START + 192 ) -#define SID_INSERT_SPINBUTTON ( SID_SVX_START + 193 ) -#define SID_INSERT_HSCROLLBAR ( SID_SVX_START + 194 ) -#define SID_INSERT_VSCROLLBAR ( SID_SVX_START + 195 ) -#define SID_INSERT_PREVIEW ( SID_SVX_START + 196 ) -#define SID_INSERT_URLBUTTON ( SID_SVX_START + 197 ) -#define SID_INSERT_SELECT ( SID_SVX_START + 198 ) -#define SID_DIALOG_TESTMODE ( SID_SVX_START + 199 ) -#define SID_FRAME_LINESTYLE ( SID_SVX_START + 200 ) -#define SID_FRAME_LINECOLOR ( SID_SVX_START + 201 ) +#define SID_PATTERN_LIST ( SID_SVX_START + 183 ) +#define SID_DASH_LIST ( SID_SVX_START + 184 ) +#define SID_LINEEND_LIST ( SID_SVX_START + 185 ) +#define SID_BACKGROUND_COLOR ( SID_SVX_START + 186 ) +#define SID_BACKGROUND_PATTERN ( SID_SVX_START + 187 ) +#define SID_ATTR_BORDER ( SID_SVX_START + 188 ) +#define SID_INSERT_FIXEDTEXT ( SID_SVX_START + 189 ) +#define SID_INSERT_GROUPBOX ( SID_SVX_START + 190 ) +#define SID_INSERT_EDIT ( SID_SVX_START + 191 ) +#define SID_INSERT_LISTBOX ( SID_SVX_START + 192 ) +#define SID_INSERT_COMBOBOX ( SID_SVX_START + 193 ) +#define SID_INSERT_SPINBUTTON ( SID_SVX_START + 194 ) +#define SID_INSERT_HSCROLLBAR ( SID_SVX_START + 195 ) +#define SID_INSERT_VSCROLLBAR ( SID_SVX_START + 196 ) +#define SID_INSERT_PREVIEW ( SID_SVX_START + 197 ) +#define SID_INSERT_URLBUTTON ( SID_SVX_START + 198 ) +#define SID_INSERT_SELECT ( SID_SVX_START + 199 ) +#define SID_DIALOG_TESTMODE ( SID_SVX_START + 200 ) +#define SID_FRAME_LINESTYLE ( SID_SVX_START + 201 ) +#define SID_FRAME_LINECOLOR ( SID_SVX_START + 202 ) #define SID_SEARCHDLG_SEARCHSTRINGS ( SID_SVX_START + 215 ) #define SID_SEARCHDLG_REPLACESTRINGS ( SID_SVX_START + 216 ) #define SID_ATTR_TABLE ( SID_SVX_START + 217 ) diff --git a/include/svx/xtable.hxx b/include/svx/xtable.hxx index 9217d18..d9a9070 100644 --- a/include/svx/xtable.hxx +++ b/include/svx/xtable.hxx @@ -151,6 +151,7 @@ enum XPropertyListType { XHATCH_LIST, XGRADIENT_LIST, XBITMAP_LIST, + XPATTERN_LIST, XPROPERTY_LIST_COUNT }; @@ -160,6 +161,7 @@ class XDashList ; typedef rtl::Reference< class XDashList > XDashListRef; class XHatchList ; typedef rtl::Reference< class XHatchList > XHatchListRef; class XColorList ; typedef rtl::Reference< class XColorList > XColorListRef; class XBitmapList ; typedef rtl::Reference< class XBitmapList > XBitmapListRef; +class XPatternList ; typedef rtl::Reference< class XPatternList > XPatternListRef; class XLineEndList ; typedef rtl::Reference< class XLineEndList > XLineEndListRef; class XGradientList ; typedef rtl::Reference< class XGradientList > XGradientListRef; @@ -245,6 +247,8 @@ public: rtl::Reference<XPropertyList> const & plist); static inline XBitmapListRef AsBitmapList( rtl::Reference<XPropertyList> const & plist); + static inline XPatternListRef AsPatternList( + rtl::Reference<XPropertyList> const & plist); static inline XLineEndListRef AsLineEndList( rtl::Reference<XPropertyList> const & plist); static inline XGradientListRef AsGradientList( @@ -381,6 +385,25 @@ public: virtual bool Create() override; }; +class SVX_DLLPUBLIC XPatternList : public XPropertyList +{ +protected: + virtual Bitmap CreateBitmapForUI(long nIndex) override; + +public: + XPatternList(const OUString& rPath, const OUString& rReferer) + : XPropertyList(XPATTERN_LIST, rPath, rReferer) {} + + using XPropertyList::Replace; + using XPropertyList::Remove; + + XBitmapEntry* Remove(long nIndex); + XBitmapEntry* GetBitmap(long nIndex) const; + + virtual css::uno::Reference< css::container::XNameContainer > createInstance() override; + virtual bool Create() override; +}; + // FIXME: could add type checking too ... inline XDashListRef XPropertyList::AsDashList( rtl::Reference<XPropertyList> const & plist) @@ -394,6 +417,9 @@ inline XColorListRef XPropertyList::AsColorList( inline XBitmapListRef XPropertyList::AsBitmapList( rtl::Reference<XPropertyList> const & plist) { return XBitmapListRef( static_cast<XBitmapList *> (plist.get()) ); } +inline XPatternListRef XPropertyList::AsPatternList( + rtl::Reference<XPropertyList> const & plist) +{ return XPatternListRef( static_cast<XPatternList *> (plist.get()) ); } inline XLineEndListRef XPropertyList::AsLineEndList( rtl::Reference<XPropertyList> const & plist) { return XLineEndListRef( static_cast<XLineEndList *> (plist.get()) ); } diff --git a/sc/sdi/drawsh.sdi b/sc/sdi/drawsh.sdi index 0aa9964..91af554 100644 --- a/sc/sdi/drawsh.sdi +++ b/sc/sdi/drawsh.sdi @@ -57,6 +57,7 @@ interface TableDraw SID_GRADIENT_LIST [ StateMethod = GetDrawAttrState; Export = FALSE; ] SID_HATCH_LIST [ StateMethod = GetDrawAttrState; Export = FALSE; ] SID_BITMAP_LIST [ StateMethod = GetDrawAttrState; Export = FALSE; ] + SID_PATTERN_LIST [ StateMethod = GetDrawAttrState; Export = FALSE; ] SID_DASH_LIST [ StateMethod = GetDrawAttrState; Export = FALSE; ] SID_LINEEND_LIST [ StateMethod = GetDrawAttrState; Export = FALSE; ] diff --git a/sc/source/ui/docshell/docsh2.cxx b/sc/source/ui/docshell/docsh2.cxx index 429a3f5..d4b2cdf 100644 --- a/sc/source/ui/docshell/docsh2.cxx +++ b/sc/source/ui/docshell/docsh2.cxx @@ -78,6 +78,7 @@ void ScDocShell::InitItems() PutItem( SvxGradientListItem( pDrawLayer->GetGradientList(), SID_GRADIENT_LIST ) ); PutItem( SvxHatchListItem ( pDrawLayer->GetHatchList(), SID_HATCH_LIST ) ); PutItem( SvxBitmapListItem ( pDrawLayer->GetBitmapList(), SID_BITMAP_LIST ) ); + PutItem( SvxPatternListItem ( pDrawLayer->GetPatternList(), SID_PATTERN_LIST ) ); PutItem( SvxDashListItem ( pDrawLayer->GetDashList(), SID_DASH_LIST ) ); PutItem( SvxLineEndListItem ( pDrawLayer->GetLineEndList(), SID_LINEEND_LIST ) ); diff --git a/scp2/source/ooo/registryitem_ooo.scp b/scp2/source/ooo/registryitem_ooo.scp index 0640400..f3f0064 100644 --- a/scp2/source/ooo/registryitem_ooo.scp +++ b/scp2/source/ooo/registryitem_ooo.scp @@ -110,6 +110,13 @@ RegistryItem gid_Regitem_Sob Value = "soffice.StarConfigFile.6"; End +RegistryItem gid_Regitem_Sop + ParentID = PREDEFINED_HKEY_CLASSES_ROOT; + Subkey = ".sop" + ModuleID = gid_Module_Root; + Value = "soffice.StarConfigFile.6"; +End + RegistryItem gid_Regitem_Soc ParentID = PREDEFINED_HKEY_CLASSES_ROOT; Subkey = ".soc"; diff --git a/sd/sdi/_drvwsh.sdi b/sd/sdi/_drvwsh.sdi index 94f1a1a..7214f3f 100644 --- a/sd/sdi/_drvwsh.sdi +++ b/sd/sdi/_drvwsh.sdi @@ -1406,6 +1406,10 @@ interface DrawView [ StateMethod = GetAttrState ; ] + SID_PATTERN_LIST + [ + StateMethod = GetAttrState ; + ] SID_ATTR_LINE_WIDTH // ole : no, status : ? [ ExecMethod = FuTemporary ; diff --git a/sd/source/ui/dlg/dlgpage.cxx b/sd/source/ui/dlg/dlgpage.cxx index d2cbe39..bba44fd 100644 --- a/sd/source/ui/dlg/dlgpage.cxx +++ b/sd/source/ui/dlg/dlgpage.cxx @@ -46,6 +46,8 @@ SdPageDlg::SdPageDlg( SfxObjectShell* pDocSh, vcl::Window* pParent, const SfxIte ( mpDocShell->GetItem( SID_GRADIENT_LIST ) ) ) ); SvxBitmapListItem aBitmapListItem(*static_cast<const SvxBitmapListItem*>( ( mpDocShell->GetItem( SID_BITMAP_LIST ) ) ) ); + SvxPatternListItem aPatternListItem(*static_cast<const SvxPatternListItem*>( + ( mpDocShell->GetItem( SID_PATTERN_LIST ) ) ) ); SvxHatchListItem aHatchListItem(*static_cast<const SvxHatchListItem*>( ( mpDocShell->GetItem( SID_HATCH_LIST ) ) ) ); @@ -53,6 +55,7 @@ SdPageDlg::SdPageDlg( SfxObjectShell* pDocSh, vcl::Window* pParent, const SfxIte mpGradientList = aGradientListItem.GetGradientList(); mpHatchingList = aHatchListItem.GetHatchList(); mpBitmapList = aBitmapListItem.GetBitmapList(); + mpPatternList = aPatternListItem.GetPatternList(); SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); OSL_ENSURE(pFact, "Dialog creation failed!"); @@ -80,6 +83,7 @@ void SdPageDlg::PageCreated(sal_uInt16 nId, SfxTabPage& rPage) aSet.Put (SvxGradientListItem(mpGradientList,SID_GRADIENT_LIST)); aSet.Put (SvxHatchListItem(mpHatchingList,SID_HATCH_LIST)); aSet.Put (SvxBitmapListItem(mpBitmapList,SID_BITMAP_LIST)); + aSet.Put (SvxPatternListItem(mpPatternList,SID_PATTERN_LIST)); aSet.Put (SfxUInt16Item(SID_PAGE_TYPE,0)); aSet.Put (SfxUInt16Item(SID_DLG_TYPE,1)); aSet.Put (SfxUInt16Item(SID_TABPAGE_POS,0)); diff --git a/sd/source/ui/dlg/prltempl.cxx b/sd/source/ui/dlg/prltempl.cxx index 1363cbd..7c25490 100644 --- a/sd/source/ui/dlg/prltempl.cxx +++ b/sd/source/ui/dlg/prltempl.cxx @@ -118,6 +118,7 @@ SdPresLayoutTemplateDlg::SdPresLayoutTemplateDlg( SfxObjectShell* pDocSh, SvxColorListItem aColorListItem(*static_cast<const SvxColorListItem*>( mpDocShell->GetItem( SID_COLOR_TABLE ) ) ); SvxGradientListItem aGradientListItem(*static_cast<const SvxGradientListItem*>( mpDocShell->GetItem( SID_GRADIENT_LIST ) ) ); SvxBitmapListItem aBitmapListItem(*static_cast<const SvxBitmapListItem*>( mpDocShell->GetItem( SID_BITMAP_LIST ) ) ); + SvxPatternListItem aPatternListItem(*static_cast<const SvxPatternListItem*>( mpDocShell->GetItem( SID_PATTERN_LIST ) ) ); SvxHatchListItem aHatchListItem(*static_cast<const SvxHatchListItem*>( mpDocShell->GetItem( SID_HATCH_LIST ) ) ); SvxDashListItem aDashListItem(*static_cast<const SvxDashListItem*>( mpDocShell->GetItem( SID_DASH_LIST ) ) ); SvxLineEndListItem aLineEndListItem(*static_cast<const SvxLineEndListItem*>( mpDocShell->GetItem( SID_LINEEND_LIST ) ) ); @@ -128,6 +129,7 @@ SdPresLayoutTemplateDlg::SdPresLayoutTemplateDlg( SfxObjectShell* pDocSh, pGradientList = aGradientListItem.GetGradientList(); pHatchingList = aHatchListItem.GetHatchList(); pBitmapList = aBitmapListItem.GetBitmapList(); + pPatternList = aPatternListItem.GetPatternList(); SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); OSL_ENSURE(pFact, "Dialog creation failed!"); diff --git a/sd/source/ui/dlg/tabtempl.cxx b/sd/source/ui/dlg/tabtempl.cxx index b7e119b..17e962b 100644 --- a/sd/source/ui/dlg/tabtempl.cxx +++ b/sd/source/ui/dlg/tabtempl.cxx @@ -61,6 +61,7 @@ SdTabTemplateDlg::SdTabTemplateDlg( vcl::Window* pParent, , pGradientList(pModel->GetGradientList()) , pHatchingList(pModel->GetHatchList()) , pBitmapList(pModel->GetBitmapList()) + , pPatternList(pModel->GetPatternList()) , pDashList(pModel->GetDashList()) , pLineEndList(pModel->GetLineEndList()) , m_nLineId(0) @@ -120,6 +121,7 @@ void SdTabTemplateDlg::PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) aSet.Put (SfxUInt16Item(SID_PAGE_TYPE,0)); aSet.Put (SfxUInt16Item(SID_DLG_TYPE,1)); aSet.Put (SfxUInt16Item(SID_TABPAGE_POS,0)); + aSet.Put (SvxPatternListItem(pPatternList,SID_PATTERN_LIST)); rPage.PageCreated(aSet); } else if (nId == m_nShadowId) diff --git a/sd/source/ui/docshell/docshell.cxx b/sd/source/ui/docshell/docshell.cxx index ccf257c..9a06982 100644 --- a/sd/source/ui/docshell/docshell.cxx +++ b/sd/source/ui/docshell/docshell.cxx @@ -369,6 +369,7 @@ void DrawDocShell::UpdateTablePointers() PutItem( SvxGradientListItem( mpDoc->GetGradientList(), SID_GRADIENT_LIST ) ); PutItem( SvxHatchListItem( mpDoc->GetHatchList(), SID_HATCH_LIST ) ); PutItem( SvxBitmapListItem( mpDoc->GetBitmapList(), SID_BITMAP_LIST ) ); + PutItem( SvxPatternListItem( mpDoc->GetPatternList(), SID_PATTERN_LIST ) ); PutItem( SvxDashListItem( mpDoc->GetDashList(), SID_DASH_LIST ) ); PutItem( SvxLineEndListItem( mpDoc->GetLineEndList(), SID_LINEEND_LIST ) ); diff --git a/sd/source/ui/inc/dlgpage.hxx b/sd/source/ui/inc/dlgpage.hxx index 3b56dc6..c624ecb 100644 --- a/sd/source/ui/inc/dlgpage.hxx +++ b/sd/source/ui/inc/dlgpage.hxx @@ -37,6 +37,7 @@ private: XGradientListRef mpGradientList; XHatchListRef mpHatchingList; XBitmapListRef mpBitmapList; + XPatternListRef mpPatternList; sal_uInt16 mnArea; sal_uInt16 mnPage; diff --git a/sd/source/ui/inc/prltempl.hxx b/sd/source/ui/inc/prltempl.hxx index 105b465..75d4d28 100644 --- a/sd/source/ui/inc/prltempl.hxx +++ b/sd/source/ui/inc/prltempl.hxx @@ -42,6 +42,7 @@ private: XGradientListRef pGradientList; XHatchListRef pHatchingList; XBitmapListRef pBitmapList; + XPatternListRef pPatternList; XDashListRef pDashList; XLineEndListRef pLineEndList; diff --git a/sd/source/ui/inc/tabtempl.hxx b/sd/source/ui/inc/tabtempl.hxx index 88b84cb..d5c2f5e 100644 --- a/sd/source/ui/inc/tabtempl.hxx +++ b/sd/source/ui/inc/tabtempl.hxx @@ -39,6 +39,7 @@ private: XGradientListRef pGradientList; XHatchListRef pHatchingList; XBitmapListRef pBitmapList; + XPatternListRef pPatternList; XDashListRef pDashList; XLineEndListRef pLineEndList; diff --git a/sd/source/ui/sidebar/SlideBackground.cxx b/sd/source/ui/sidebar/SlideBackground.cxx index 26f1dfd..a3c6ec9 100644 --- a/sd/source/ui/sidebar/SlideBackground.cxx +++ b/sd/source/ui/sidebar/SlideBackground.cxx @@ -64,6 +64,7 @@ #include <algorithm> #include "EventMultiplexer.hxx" #include "glob.hrc" +#include <vcl/salbtype.hxx> using namespace ::com::sun::star; @@ -71,6 +72,16 @@ using ::com::sun::star::uno::Reference; namespace sd { namespace sidebar { +enum eFillStyle +{ + NONE, + SOLID, + GRADIENT, + HATCH, + BITMAP, + PATTERN +}; + SlideBackground::SlideBackground( Window * pParent, ViewShellBase& rBase, @@ -151,7 +162,7 @@ void SlideBackground::Initialize() } } - mpFillStyle->SelectEntryPos(0); + mpFillStyle->SelectEntryPos(static_cast< sal_Int32 >(NONE)); mpDspMasterBackground->SetClickHdl(LINK(this, SlideBackground, DspBackground)); mpDspMasterObjects->SetClickHdl(LINK(this,SlideBackground, DspObjects)); @@ -169,21 +180,22 @@ void SlideBackground::HandleContextChange( void SlideBackground::Update() { - const drawing::FillStyle eXFS = (drawing::FillStyle)mpFillStyle->GetSelectEntryPos(); + const eFillStyle nPos = (eFillStyle)mpFillStyle->GetSelectEntryPos(); + SfxObjectShell* pSh = SfxObjectShell::Current(); if (!pSh) return; - switch(eXFS) + switch(nPos) { - case drawing::FillStyle_NONE: + case NONE: { mpFillLB->Hide(); mpFillAttr->Hide(); mpFillGrad->Hide(); } break; - case drawing::FillStyle_SOLID: + case SOLID: { mpFillAttr->Hide(); mpFillGrad->Hide(); @@ -202,7 +214,7 @@ void SlideBackground::Update() } } break; - case drawing::FillStyle_GRADIENT: + case GRADIENT: { mpFillLB->Show(); const SvxColorListItem aItem(*static_cast<const SvxColorListItem*>(pSh->GetItem(SID_COLOR_TABLE))); @@ -233,7 +245,7 @@ void SlideBackground::Update() } break; - case drawing::FillStyle_HATCH: + case HATCH: { mpFillLB->Hide(); const SvxHatchListItem aItem(*static_cast<const SvxHatchListItem*>(pSh->GetItem(SID_HATCH_LIST))); @@ -247,20 +259,29 @@ void SlideBackground::Update() } break; - case drawing::FillStyle_BITMAP: + case BITMAP: + case PATTERN: { mpFillLB->Hide(); - const SvxBitmapListItem aItem(*static_cast<const SvxBitmapListItem*>(pSh->GetItem(SID_BITMAP_LIST))); mpFillAttr->Show(); mpFillAttr->Clear(); - mpFillAttr->Fill(aItem.GetBitmapList()); mpFillGrad->Hide(); - - const OUString aBitmapName = GetBitmapSetOrDefault(); - mpFillAttr->SelectEntry( aBitmapName ); + OUString aName; + if(nPos == BITMAP) + { + const SvxBitmapListItem aItem(*static_cast<const SvxBitmapListItem*>(pSh->GetItem(SID_BITMAP_LIST))); + mpFillAttr->Fill(aItem.GetBitmapList()); + aName = GetBitmapSetOrDefault(); + } + else if(nPos == PATTERN) + { + const SvxPatternListItem aItem(*static_cast<const SvxPatternListItem*>(pSh->GetItem(SID_PATTERN_LIST))); + mpFillAttr->Fill(aItem.GetPatternList()); + aName = GetPatternSetOrDefault(); + } + mpFillAttr->SelectEntry( aName ); } break; - default: break; } @@ -494,7 +515,7 @@ const OUString SlideBackground::GetHatchingSetOrDefault() const OUString SlideBackground::GetBitmapSetOrDefault() { - if( !mpBitmapItem ) + if( !mpBitmapItem || mpBitmapItem->isPattern()) { SfxObjectShell* pSh = SfxObjectShell::Current(); const SvxBitmapListItem aBmpListItem(*static_cast<const SvxBitmapListItem*>(pSh->GetItem(SID_BITMAP_LIST))); @@ -507,6 +528,21 @@ const OUString SlideBackground::GetBitmapSetOrDefault() return mpBitmapItem->GetName(); } +const OUString SlideBackground::GetPatternSetOrDefault() +{ + if( !mpBitmapItem || !(mpBitmapItem->isPattern())) + { + SfxObjectShell* pSh = SfxObjectShell::Current(); + const SvxPatternListItem aPtrnListItem(*static_cast<const SvxPatternListItem*>(pSh->GetItem(SID_PATTERN_LIST))); + const GraphicObject aGraphObj = aPtrnListItem.GetPatternList()->GetBitmap(0)->GetGraphicObject(); + const OUString aPtrnName = aPtrnListItem.GetPatternList()->GetBitmap(0)->GetName(); + + mpBitmapItem.reset( new XFillBitmapItem( aPtrnName, aGraphObj ) ); + } + + return mpBitmapItem->GetName(); +} + void SlideBackground::DataChanged (const DataChangedEvent& /*rEvent*/) { @@ -527,7 +563,7 @@ void SlideBackground::NotifyItemUpdate( { if(eState >= SfxItemState::DEFAULT) { - mpFillStyle->SelectEntryPos(1); + mpFillStyle->SelectEntryPos(static_cast< sal_Int32 >(SOLID)); mpColorItem.reset(pState ? static_cast< XFillColorItem* >(pState->Clone()) : nullptr); Update(); } @@ -538,7 +574,7 @@ void SlideBackground::NotifyItemUpdate( { if(eState >= SfxItemState::DEFAULT) { - mpFillStyle->SelectEntryPos(3); + mpFillStyle->SelectEntryPos(static_cast< sal_Int32 >(HATCH)); mpHatchItem.reset(pState ? static_cast < XFillHatchItem* >(pState->Clone()) : nullptr); Update(); } @@ -549,7 +585,7 @@ void SlideBackground::NotifyItemUpdate( { if(eState >= SfxItemState::DEFAULT) { - mpFillStyle->SelectEntryPos(2); + mpFillStyle->SelectEntryPos(static_cast< sal_Int32>(GRADIENT)); mpGradientItem.reset(pState ? static_cast< XFillGradientItem* >(pState->Clone()) : nullptr); Update(); } @@ -559,8 +595,16 @@ void SlideBackground::NotifyItemUpdate( { if(eState >= SfxItemState::DEFAULT) { - mpFillStyle->SelectEntryPos(4); mpBitmapItem.reset(pState ? static_cast< XFillBitmapItem* >(pState->Clone()) : nullptr); + if(mpBitmapItem) + { + if(mpBitmapItem->isPattern()) + mpFillStyle->SelectEntryPos(static_cast< sal_Int32 >(PATTERN)); + else + mpFillStyle->SelectEntryPos(static_cast< sal_Int32 >(BITMAP)); + } + else + mpFillStyle->SelectEntryPos(static_cast< sal_Int32 >(BITMAP)); Update(); } } @@ -577,20 +621,25 @@ void SlideBackground::NotifyItemUpdate( switch(eXFS) { case drawing::FillStyle_NONE: - mpFillStyle->SelectEntryPos(0); + mpFillStyle->SelectEntryPos(static_cast< sal_Int32 >(NONE)); break; case drawing::FillStyle_SOLID: - mpFillStyle->SelectEntryPos(1); + mpFillStyle->SelectEntryPos(static_cast< sal_Int32 >(SOLID)); break; case drawing::FillStyle_GRADIENT: - mpFillStyle->SelectEntryPos(2); + mpFillStyle->SelectEntryPos(static_cast< sal_Int32 >(GRADIENT)); break; case drawing::FillStyle_HATCH: - mpFillStyle->SelectEntryPos(3); + mpFillStyle->SelectEntryPos(static_cast< sal_Int32 >(HATCH)); break; case drawing::FillStyle_BITMAP: - mpFillStyle->SelectEntryPos(4); - break; + { + if(mpBitmapItem->isPattern()) + mpFillStyle->SelectEntryPos(static_cast< sal_Int32 >(PATTERN)); + else + mpFillStyle->SelectEntryPos(static_cast< sal_Int32 >(BITMAP)); + } + break; default: break; } @@ -653,7 +702,7 @@ void SlideBackground::NotifyItemUpdate( { if(eState >= SfxItemState::DEFAULT) { - mpFillStyle->SelectEntryPos(4); + mpFillStyle->SelectEntryPos(static_cast< sal_Int32 >(BITMAP)); Update(); } } @@ -665,42 +714,43 @@ void SlideBackground::NotifyItemUpdate( IMPL_LINK_NOARG_TYPED(SlideBackground, FillStyleModifyHdl, ListBox&, void) { - const drawing::FillStyle eXFS = (drawing::FillStyle)mpFillStyle->GetSelectEntryPos(); - const XFillStyleItem aXFillStyleItem(eXFS); + const eFillStyle nPos = (eFillStyle)mpFillStyle->GetSelectEntryPos(); Update(); - switch (eXFS) + switch (nPos) { - case drawing::FillStyle_NONE: + case NONE: { + const XFillStyleItem aXFillStyleItem(drawing::FillStyle_NONE); GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_FILLSTYLE, SfxCallMode::RECORD, { &aXFillStyleItem }); } break; - case drawing::FillStyle_SOLID: + case SOLID: { - XFillColorItem aItem( OUString(), mpColorItem->GetColorValue() ); + const XFillColorItem aItem( OUString(), mpColorItem->GetColorValue() ); GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_COLOR, SfxCallMode::RECORD, { &aItem }); } break; - case drawing::FillStyle_GRADIENT: + case GRADIENT: { - XFillGradientItem aItem( mpGradientItem->GetName(), mpGradientItem->GetGradientValue() ); + const XFillGradientItem aItem( mpGradientItem->GetName(), mpGradientItem->GetGradientValue() ); GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_GRADIENT, SfxCallMode::RECORD, { &aItem }); } break; - case drawing::FillStyle_HATCH: + case HATCH: { - XFillHatchItem aItem( mpHatchItem->GetName(), mpHatchItem->GetHatchValue() ); + const XFillHatchItem aItem( mpHatchItem->GetName(), mpHatchItem->GetHatchValue() ); GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_HATCH, SfxCallMode::RECORD, { &aItem }); } break; - case drawing::FillStyle_BITMAP: + case BITMAP: + case PATTERN: { - XFillBitmapItem aItem( mpBitmapItem->GetName(), mpBitmapItem->GetGraphicObject() ); + const XFillBitmapItem aItem( mpBitmapItem->GetName(), mpBitmapItem->GetGraphicObject() ); GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_BITMAP, SfxCallMode::RECORD, { &aItem }); } break; @@ -751,12 +801,12 @@ IMPL_LINK_NOARG_TYPED(SlideBackground, FillColorHdl, ListBox&, void) IMPL_LINK_NOARG_TYPED(SlideBackground, FillBackgroundHdl, ListBox&, void) { - const drawing::FillStyle eXFS = (drawing::FillStyle)mpFillStyle->GetSelectEntryPos(); + const eFillStyle nFillPos = (eFillStyle)mpFillStyle->GetSelectEntryPos(); SfxObjectShell* pSh = SfxObjectShell::Current(); - switch(eXFS) + switch(nFillPos) { - case drawing::FillStyle_HATCH: + case HATCH: { const SvxHatchListItem aHatchListItem(*static_cast<const SvxHatchListItem*>(pSh->GetItem(SID_HATCH_LIST))); sal_uInt16 nPos = mpFillAttr->GetSelectEntryPos(); @@ -768,17 +818,29 @@ IMPL_LINK_NOARG_TYPED(SlideBackground, FillBackgroundHdl, ListBox&, void) } break; - case drawing::FillStyle_BITMAP: + case BITMAP: + case PATTERN: { - SvxBitmapListItem aBitmapListItem(*static_cast<const SvxBitmapListItem*>(pSh->GetItem(SID_BITMAP_LIST))); sal_Int16 nPos = mpFillAttr->GetSelectEntryPos(); - GraphicObject aBitmap = aBitmapListItem.GetBitmapList()->GetBitmap(nPos)->GetGraphicObject(); - OUString aBitmapName = aBitmapListItem.GetBitmapList()->GetBitmap(nPos)->GetName(); - - XFillBitmapItem aItem(aBitmapName, aBitmap); + GraphicObject aBitmap; + OUString aName; + if(nPos == static_cast< sal_Int32 >(BITMAP)) + { + SvxBitmapListItem aBitmapListItem(*static_cast<const SvxBitmapListItem*>(pSh->GetItem(SID_BITMAP_LIST))); + aBitmap = aBitmapListItem.GetBitmapList()->GetBitmap(nPos)->GetGraphicObject(); + aName = aBitmapListItem.GetBitmapList()->GetBitmap(nPos)->GetName(); + } + else if(nPos == static_cast< sal_Int32 >(PATTERN)) + { + SvxPatternListItem aPatternListItem(*static_cast<const SvxPatternListItem*>(pSh->GetItem(SID_PATTERN_LIST))); + aBitmap = aPatternListItem.GetPatternList()->GetBitmap(nPos)->GetGraphicObject(); + aName = aPatternListItem.GetPatternList()->GetBitmap(nPos)->GetName(); + } + XFillBitmapItem aItem(aName, aBitmap); GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_BITMAP, SfxCallMode::RECORD, { &aItem }); } break; + default: break; } diff --git a/sd/source/ui/sidebar/SlideBackground.hxx b/sd/source/ui/sidebar/SlideBackground.hxx index 0848e56..8080205 100644 --- a/sd/source/ui/sidebar/SlideBackground.hxx +++ b/sd/source/ui/sidebar/SlideBackground.hxx @@ -128,6 +128,7 @@ private: XGradient GetGradientSetOrDefault(); const OUString GetHatchingSetOrDefault(); const OUString GetBitmapSetOrDefault(); + const OUString GetPatternSetOrDefault(); void addListener(); void removeListener(); void populateMasterSlideDropdown(); diff --git a/svx/Library_svxcore.mk b/svx/Library_svxcore.mk index f5c38f3..362cdae 100644 --- a/svx/Library_svxcore.mk +++ b/svx/Library_svxcore.mk @@ -416,6 +416,7 @@ $(eval $(call gb_Library_add_exception_objects,svxcore,\ svx/source/xoutdev/xtabgrdt \ svx/source/xoutdev/xtabhtch \ svx/source/xoutdev/xtable \ + svx/source/xoutdev/xtabptrn \ svx/source/xoutdev/XPropertyEntry \ svx/source/xoutdev/xtablend \ )) diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi index ddab822..916ecc4 100644 --- a/svx/sdi/svx.sdi +++ b/svx/sdi/svx.sdi @@ -10414,6 +10414,22 @@ SvxBitmapListItem BitmapListState SID_BITMAP_LIST GroupId = GID_EDIT; ] +SvxPatternListItem PatternListState SID_PATTERN_LIST +[ + AutoUpdate = FALSE, + FastCall = FALSE, + ReadOnlyDoc = TRUE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + + AccelConfig = FALSE, + MenuConfig = FALSE, + ToolBoxConfig = FALSE, + GroupId = GID_EDIT; +] + SvxEmphasisMarkItem EmphasisMark SID_ATTR_CHAR_EMPHASISMARK [ diff --git a/svx/sdi/svxitems.sdi b/svx/sdi/svxitems.sdi index e44ae28..1e73fc1 100644 --- a/svx/sdi/svxitems.sdi +++ b/svx/sdi/svxitems.sdi @@ -244,6 +244,7 @@ item String SvxColorListItem; item String SvxGradientListItem; item String SvxHatchListItem; item String SvxBitmapListItem; +item String SvxPatternListItem; item String SfxLockBytesItem; item String SvxFontListItem; item String avmedia_MediaItem; diff --git a/svx/source/dialog/dlgctrl.cxx b/svx/source/dialog/dlgctrl.cxx index 9ac13bb..0d3b626 100644 --- a/svx/source/dialog/dlgctrl.cxx +++ b/svx/source/dialog/dlgctrl.cxx @@ -1511,6 +1511,139 @@ void BitmapLB::Modify(const Size& rSize, const XBitmapEntry& rEntry, sal_Int32 n } } +// BitmapLB Constructor + +PatternLB::PatternLB( vcl::Window* pParent, WinBits aWB) +: ListBox( pParent, aWB ), + maBitmapEx(), + mpList(nullptr) +{ + SetEdgeBlending(true); +} + +VCL_BUILDER_DECL_FACTORY(PatternLB) +{ + WinBits nWinStyle = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_SIMPLEMODE; + OString sBorder = VclBuilder::extractCustomProperty(rMap); + if (!sBorder.isEmpty()) + nWinStyle |= WB_BORDER; + VclPtrInstance<BitmapLB> pListBox(pParent, nWinStyle); + pListBox->EnableAutoSize(true); + rRet = pListBox; +} + +namespace +{ + void formatPatternExToSize(BitmapEx& rBitmapEx, const Size& rSize) + { + if(!rBitmapEx.IsEmpty() && rSize.Width() > 0 && rSize.Height() > 0) + { + ScopedVclPtrInstance< VirtualDevice > pVirtualDevice; + pVirtualDevice->SetOutputSizePixel(rSize); + + if(rBitmapEx.IsTransparent()) + { + const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); + + if(rStyleSettings.GetPreviewUsesCheckeredBackground()) + { + const Point aNull(0, 0); + static const sal_uInt32 nLen(8); + static const Color aW(COL_WHITE); + static const Color aG(0xef, 0xef, 0xef); + + pVirtualDevice->DrawCheckered(aNull, rSize, nLen, aW, aG); + } + else + { + pVirtualDevice->SetBackground(rStyleSettings.GetFieldColor()); + pVirtualDevice->Erase(); + } + } + + if(rBitmapEx.GetSizePixel().Width() >= rSize.Width() && rBitmapEx.GetSizePixel().Height() >= rSize.Height()) + { + rBitmapEx.Scale(rSize); + pVirtualDevice->DrawBitmapEx(Point(0, 0), rBitmapEx); + } + else + { + const Size aBitmapSize(rBitmapEx.GetSizePixel()); + + for(long y(0); y < rSize.Height(); y += aBitmapSize.Height()) + { + for(long x(0); x < rSize.Width(); x += aBitmapSize.Width()) + { + pVirtualDevice->DrawBitmapEx( + Point(x, y), + rBitmapEx); + } + } + } + + rBitmapEx = pVirtualDevice->GetBitmap(Point(0, 0), rSize); + } + } +} // end of anonymous namespace + +void PatternLB::Fill( const XPatternListRef &pList ) +{ + if( !pList.is() ) + return; + + mpList = pList; + XBitmapEntry* pEntry; + const long nCount(pList->Count()); + const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); + const Size aSize(rStyleSettings.GetListBoxPreviewDefaultPixelSize()); + + SetUpdateMode(false); + + for(long i(0); i < nCount; i++) + { + pEntry = pList->GetBitmap(i); + maBitmapEx = pEntry->GetGraphicObject().GetGraphic().GetBitmapEx(); + formatPatternExToSize(maBitmapEx, aSize); + InsertEntry(pEntry->GetName(), Image(maBitmapEx)); + } + + AdaptDropDownLineCountToMaximum(); + SetUpdateMode(true); +} + +void PatternLB::Append(const Size& rSize, const XBitmapEntry& rEntry) +{ + maBitmapEx = rEntry.GetGraphicObject().GetGraphic().GetBitmapEx(); + + if(!maBitmapEx.IsEmpty()) + { + formatPatternExToSize(maBitmapEx, rSize); + InsertEntry(rEntry.GetName(), Image(maBitmapEx)); + } + else + { + InsertEntry(rEntry.GetName()); + } + + AdaptDropDownLineCountToMaximum(); +} + +void PatternLB::Modify(const Size& rSize, const XBitmapEntry& rEntry, sal_Int32 nPos) +{ + RemoveEntry(nPos); + maBitmapEx = rEntry.GetGraphicObject().GetGraphic().GetBitmapEx(); + + if(!maBitmapEx.IsEmpty()) + { + formatPatternExToSize(maBitmapEx, rSize); + InsertEntry(rEntry.GetName(), Image(maBitmapEx), nPos); + } + else + { + InsertEntry(rEntry.GetName()); + } +} + FillAttrLB::FillAttrLB(vcl::Window* pParent, WinBits aWB) : ColorListBox(pParent, aWB) { @@ -1537,6 +1670,27 @@ void FillAttrLB::Fill( const XBitmapListRef &pList ) ListBox::SetUpdateMode(true); } +void FillAttrLB::Fill( const XPatternListRef &pList ) +{ + const long nCount(pList->Count()); + XBitmapEntry* pEntry; + const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); + const Size aSize(rStyleSettings.GetListBoxPreviewDefaultPixelSize()); + + ListBox::SetUpdateMode(false); + + for(long i(0); i < nCount; i++) + { + pEntry = pList->GetBitmap( i ); + maBitmapEx = pEntry->GetGraphicObject().GetGraphic().GetBitmapEx(); + formatBitmapExToSize(maBitmapEx, aSize); + ListBox::InsertEntry(pEntry->GetName(), Image(maBitmapEx)); + } + + AdaptDropDownLineCountToMaximum(); + ListBox::SetUpdateMode(true); +} + void FillTypeLB::Fill() { SetUpdateMode( false ); @@ -1546,6 +1700,7 @@ void FillTypeLB::Fill() InsertEntry( SVX_RESSTR(RID_SVXSTR_GRADIENT) ); InsertEntry( SVX_RESSTR(RID_SVXSTR_HATCH) ); InsertEntry( SVX_RESSTR(RID_SVXSTR_BITMAP) ); + InsertEntry( SVX_RESSTR(RID_SVXSTR_PATTERN) ); AdaptDropDownLineCountToMaximum(); SetUpdateMode( true ); diff --git a/svx/source/dialog/hdft.cxx b/svx/source/dialog/hdft.cxx index 182c6a1..8386822 100644 --- a/svx/source/dialog/hdft.cxx +++ b/svx/source/dialog/hdft.cxx @@ -589,7 +589,7 @@ IMPL_LINK_NOARG_TYPED(SvxHFPage, BackgroundHdl, Button*, void) pBBSet = new SfxItemSet( *GetItemSet().GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST, // DrawingLayer FillStyle definitions - SID_COLOR_TABLE, SID_BITMAP_LIST, // XPropertyLists for Color, Gradient, Hatch and Graphic fills + SID_COLOR_TABLE, SID_PATTERN_LIST, // XPropertyLists for Color, Gradient, Hatch and Graphic fills nOuter, nOuter, nInner, nInner, nShadow, nShadow, @@ -602,6 +602,7 @@ IMPL_LINK_NOARG_TYPED(SvxHFPage, BackgroundHdl, Button*, void) SID_GRADIENT_LIST, SID_HATCH_LIST, SID_BITMAP_LIST, + SID_PATTERN_LIST, 0 }; diff --git a/svx/source/dialog/sdstring.src b/svx/source/dialog/sdstring.src index b43fbc1..b703485 100644 --- a/svx/source/dialog/sdstring.src +++ b/svx/source/dialog/sdstring.src @@ -32,6 +32,14 @@ String RID_SVXSTR_BITMAP { Text [ en-US ] = "Bitmap" ; }; +String RID_SVXSTR_PATTERN +{ + Text [ en-US ] = "Pattern"; +}; +String RID_SVXSTR_PATTERN_UNTITLED +{ + Text [ en-US ] = "Untitled Pattern"; +}; String RID_SVXSTR_LINESTYLE { Text [ en-US ] = "Line Style" ; @@ -1659,7 +1667,7 @@ String RID_SVXSTR_BMP21_DEF String RID_SVXSTR_BMP0 { - Text [ en-US ] = "Blank"; + Text [ en-US ] = "Empty"; }; String RID_SVXSTR_BMP1 { diff --git a/svx/source/items/drawitem.cxx b/svx/source/items/drawitem.cxx index a0aec77..1771e54 100644 --- a/svx/source/items/drawitem.cxx +++ b/svx/source/items/drawitem.cxx @@ -28,6 +28,7 @@ SfxPoolItem* SvxColorListItem::CreateDefault() { return new SvxColorListItem ;} SfxPoolItem* SvxGradientListItem::CreateDefault() { return new SvxGradientListItem ;} SfxPoolItem* SvxHatchListItem::CreateDefault() { return new SvxHatchListItem ;} SfxPoolItem* SvxBitmapListItem::CreateDefault() { return new SvxBitmapListItem ;} +SfxPoolItem* SvxPatternListItem::CreateDefault() { return new SvxPatternListItem ;} SfxPoolItem* SvxDashListItem::CreateDefault() { return new SvxDashListItem ;} SfxPoolItem* SvxLineEndListItem::CreateDefault() { return new SvxLineEndListItem ;} @@ -226,6 +227,47 @@ SfxPoolItem* SvxBitmapListItem::Clone( SfxItemPool * ) const QUERY_PUT_IMPL( SvxBitmapListItem, BitmapList ) +SvxPatternListItem::SvxPatternListItem() +{ +} + +SvxPatternListItem::SvxPatternListItem( XPatternListRef pList, sal_uInt16 nW ) : + SfxPoolItem( nW ), + pPatternList( pList ) +{ +} + +SvxPatternListItem::SvxPatternListItem( const SvxPatternListItem& rItem ) : + SfxPoolItem( rItem ), + pPatternList( rItem.pPatternList ) +{ +} + +bool SvxPatternListItem::GetPresentation +( + SfxItemPresentation /*ePres*/, + SfxMapUnit /*eCoreUnit*/, + SfxMapUnit /*ePresUnit*/, + OUString& rText, const IntlWrapper * +) const +{ + rText.clear(); + return false; +} + +bool SvxPatternListItem::operator==( const SfxPoolItem& rItem ) const +{ + DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal type" ); + return static_cast<const SvxPatternListItem&>(rItem).pPatternList == pPatternList; +} + +SfxPoolItem* SvxPatternListItem::Clone( SfxItemPool * ) const +{ + return new SvxPatternListItem( *this ); +} + +QUERY_PUT_IMPL( SvxPatternListItem, PatternList ) + SvxDashListItem::SvxDashListItem() : pDashList( nullptr ) { diff --git a/svx/source/sidebar/area/AreaPropertyPanel.cxx b/svx/source/sidebar/area/AreaPropertyPanel.cxx index c0092c2..1afba46 100644 --- a/svx/source/sidebar/area/AreaPropertyPanel.cxx +++ b/svx/source/sidebar/area/AreaPropertyPanel.cxx @@ -57,6 +57,7 @@ AreaPropertyPanel::AreaPropertyPanel( maGradientListControl(SID_GRADIENT_LIST, *pBindings, *this), maHatchListControl(SID_HATCH_LIST, *pBindings, *this), maBitmapListControl(SID_BITMAP_LIST, *pBindings, *this), + maPatternListControl(SID_PATTERN_LIST, *pBindings, *this), maFillTransparenceController(SID_ATTR_FILL_TRANSPARENCE, *pBindings, *this), maFillFloatTransparenceController(SID_ATTR_FILL_FLOATTRANSPARENCE, *pBindings, *this), mpBindings(pBindings) @@ -79,6 +80,7 @@ void AreaPropertyPanel::dispose() maGradientListControl.dispose(); maHatchListControl.dispose(); maBitmapListControl.dispose(); + maPatternListControl.dispose(); maFillTransparenceController.dispose(); maFillFloatTransparenceController.dispose(); diff --git a/svx/source/sidebar/area/AreaPropertyPanel.hxx b/svx/source/sidebar/area/AreaPropertyPanel.hxx index 5d2878f..f8fc55f 100644 --- a/svx/source/sidebar/area/AreaPropertyPanel.hxx +++ b/svx/source/sidebar/area/AreaPropertyPanel.hxx @@ -85,6 +85,7 @@ private: ::sfx2::sidebar::ControllerItem maGradientListControl; ::sfx2::sidebar::ControllerItem maHatchListControl; ::sfx2::sidebar::ControllerItem maBitmapListControl; + ::sfx2::sidebar::ControllerItem maPatternListControl; ::sfx2::sidebar::ControllerItem maFillTransparenceController; ::sfx2::sidebar::ControllerItem maFillFloatTransparenceController; diff --git a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx index 65be70b..52a2deb 100644 --- a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx +++ b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx @@ -37,6 +37,7 @@ #include <unotools/pathoptions.hxx> #include <svx/svxitems.hrc> ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits