1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_cui.hxx" 30 31 // include --------------------------------------------------------------- 32 33 #include <tools/ref.hxx> 34 #include <sfx2/app.hxx> 35 #include <sfx2/objsh.hxx> 36 #include <vcl/msgbox.hxx> 37 #include <unotools/pathoptions.hxx> 38 #include <svx/svdmark.hxx> 39 #include <svx/svdobj.hxx> 40 #include <svx/svdview.hxx> 41 #include <svx/dialogs.hrc> 42 43 #define _SVX_TABAREA_CXX 44 45 #include <cuires.hrc> 46 #include <svx/xtable.hxx> 47 #include "svx/globl3d.hxx" 48 #include <svx/svdmodel.hxx> 49 #include "svx/drawitem.hxx" 50 #include "cuitabarea.hxx" 51 #include "tabarea.hrc" 52 #include "dlgname.hxx" 53 //#include "dlgname.hrc" 54 #include <dialmgr.hxx> 55 56 #define DLGWIN this->GetParent()->GetParent() 57 58 /************************************************************************* 59 |* 60 |* Konstruktor des Tab-Dialogs: Fuegt die Seiten zum Dialog hinzu 61 |* 62 |************************************************************************/ 63 64 SvxAreaTabDialog::SvxAreaTabDialog 65 ( 66 Window* pParent, 67 const SfxItemSet* pAttr, 68 SdrModel* pModel, 69 const SdrView* /* pSdrView */ 70 ) : 71 72 SfxTabDialog( pParent, CUI_RES( RID_SVXDLG_AREA ), pAttr ), 73 74 mpDrawModel ( pModel ), 75 // mpView ( pSdrView ), 76 mpColorTab ( pModel->GetColorTable() ), 77 mpNewColorTab ( pModel->GetColorTable() ), 78 mpGradientList ( pModel->GetGradientList() ), 79 mpNewGradientList ( pModel->GetGradientList() ), 80 mpHatchingList ( pModel->GetHatchList() ), 81 mpNewHatchingList ( pModel->GetHatchList() ), 82 mpBitmapList ( pModel->GetBitmapList() ), 83 mpNewBitmapList ( pModel->GetBitmapList() ), 84 mrOutAttrs ( *pAttr ), 85 mnColorTableState ( CT_NONE ), 86 mnBitmapListState ( CT_NONE ), 87 mnGradientListState ( CT_NONE ), 88 mnHatchingListState ( CT_NONE ), 89 mnPageType( PT_AREA ), 90 mnDlgType( 0 ), 91 mnPos( 0 ), 92 mbAreaTP( sal_False ), 93 mbDeleteColorTable( sal_True ) 94 { 95 FreeResource(); 96 97 AddTabPage( RID_SVXPAGE_AREA, SvxAreaTabPage::Create, 0 ); 98 AddTabPage( RID_SVXPAGE_SHADOW, SvxShadowTabPage::Create, 0 ); 99 AddTabPage( RID_SVXPAGE_TRANSPARENCE, SvxTransparenceTabPage::Create, 0); 100 AddTabPage( RID_SVXPAGE_COLOR, SvxColorTabPage::Create, 0 ); 101 AddTabPage( RID_SVXPAGE_GRADIENT, SvxGradientTabPage::Create, 0 ); 102 AddTabPage( RID_SVXPAGE_HATCH, SvxHatchTabPage::Create, 0 ); 103 AddTabPage( RID_SVXPAGE_BITMAP, SvxBitmapTabPage::Create, 0); 104 105 SetCurPageId( RID_SVXPAGE_AREA ); 106 107 CancelButton& rBtnCancel = GetCancelButton(); 108 rBtnCancel.SetClickHdl( LINK( this, SvxAreaTabDialog, CancelHdlImpl ) ); 109 //! rBtnCancel.SetText( CUI_RESSTR( RID_SVXSTR_CLOSE ) ); 110 } 111 112 // ----------------------------------------------------------------------- 113 114 SvxAreaTabDialog::~SvxAreaTabDialog() 115 { 116 } 117 118 119 // ----------------------------------------------------------------------- 120 121 void SvxAreaTabDialog::SavePalettes() 122 { 123 SfxObjectShell* pShell = SfxObjectShell::Current(); 124 /*uno::Reference< frame::XDispatchProvider > xDispatchProvider; 125 if ( !pShell ) 126 { 127 uno::Reference< frame::XModel> xModel = mpDrawModel->getUnoModel(); 128 if ( xModel.is() ) 129 xDispatchProvider.set(xModel->getCurrentController(),uno::UNO_QUERY); 130 }*/ 131 if( mpNewColorTab != mpDrawModel->GetColorTable() ) 132 { 133 if(mbDeleteColorTable) 134 delete mpDrawModel->GetColorTable(); 135 mpDrawModel->SetColorTable( mpNewColorTab ); 136 SvxColorTableItem aColorTableItem( mpNewColorTab, SID_COLOR_TABLE ); 137 if ( pShell ) 138 pShell->PutItem( aColorTableItem ); 139 else 140 { 141 mpDrawModel->GetItemPool().Put(aColorTableItem,SID_COLOR_TABLE); 142 } 143 mpColorTab = mpDrawModel->GetColorTable(); 144 } 145 if( mpNewGradientList != mpDrawModel->GetGradientList() ) 146 { 147 delete mpDrawModel->GetGradientList(); 148 mpDrawModel->SetGradientList( mpNewGradientList ); 149 SvxGradientListItem aItem( mpNewGradientList, SID_GRADIENT_LIST ); 150 if ( pShell ) 151 pShell->PutItem( aItem ); 152 else 153 { 154 mpDrawModel->GetItemPool().Put(aItem,SID_GRADIENT_LIST); 155 } 156 mpGradientList = mpDrawModel->GetGradientList(); 157 } 158 if( mpNewHatchingList != mpDrawModel->GetHatchList() ) 159 { 160 delete mpDrawModel->GetHatchList(); 161 mpDrawModel->SetHatchList( mpNewHatchingList ); 162 SvxHatchListItem aItem( mpNewHatchingList, SID_HATCH_LIST ); 163 if ( pShell ) 164 pShell->PutItem( aItem ); 165 else 166 { 167 mpDrawModel->GetItemPool().Put(aItem,SID_HATCH_LIST); 168 } 169 mpHatchingList = mpDrawModel->GetHatchList(); 170 } 171 if( mpNewBitmapList != mpDrawModel->GetBitmapList() ) 172 { 173 delete mpDrawModel->GetBitmapList(); 174 mpDrawModel->SetBitmapList( mpNewBitmapList ); 175 SvxBitmapListItem aItem( mpNewBitmapList, SID_BITMAP_LIST ); 176 if ( pShell ) 177 pShell->PutItem( aItem ); 178 else 179 { 180 mpDrawModel->GetItemPool().Put(aItem,SID_BITMAP_LIST); 181 } 182 mpBitmapList = mpDrawModel->GetBitmapList(); 183 } 184 185 // Speichern der Tabellen, wenn sie geaendert wurden. 186 187 const String aPath( SvtPathOptions().GetPalettePath() ); 188 189 if( mnHatchingListState & CT_MODIFIED ) 190 { 191 mpHatchingList->SetPath( aPath ); 192 mpHatchingList->Save(); 193 194 SvxHatchListItem aItem( mpHatchingList, SID_HATCH_LIST ); 195 // ToolBoxControls werden benachrichtigt: 196 if ( pShell ) 197 pShell->PutItem( aItem ); 198 else 199 { 200 mpDrawModel->GetItemPool().Put(aItem); 201 } 202 } 203 204 if( mnBitmapListState & CT_MODIFIED ) 205 { 206 mpBitmapList->SetPath( aPath ); 207 mpBitmapList->Save(); 208 209 SvxBitmapListItem aItem( mpBitmapList, SID_BITMAP_LIST ); 210 // ToolBoxControls werden benachrichtigt: 211 if ( pShell ) 212 pShell->PutItem( aItem ); 213 else 214 { 215 mpDrawModel->GetItemPool().Put(aItem); 216 } 217 } 218 219 if( mnGradientListState & CT_MODIFIED ) 220 { 221 mpGradientList->SetPath( aPath ); 222 mpGradientList->Save(); 223 224 SvxGradientListItem aItem( mpGradientList, SID_GRADIENT_LIST ); 225 // ToolBoxControls werden benachrichtigt: 226 if ( pShell ) 227 pShell->PutItem( aItem ); 228 else 229 { 230 mpDrawModel->GetItemPool().Put(aItem); 231 } 232 } 233 234 if( mnColorTableState & CT_MODIFIED ) 235 { 236 mpColorTab->SetPath( aPath ); 237 mpColorTab->Save(); 238 239 SvxColorTableItem aItem( mpColorTab, SID_COLOR_TABLE ); 240 // ToolBoxControls werden benachrichtigt: 241 if ( pShell ) 242 pShell->PutItem( aItem ); 243 else 244 { 245 mpDrawModel->GetItemPool().Put(aItem); 246 } 247 } 248 } 249 // ----------------------------------------------------------------------- 250 251 short SvxAreaTabDialog::Ok() 252 { 253 SavePalettes(); 254 255 // Es wird RET_OK zurueckgeliefert, wenn wenigstens eine 256 // TabPage in FillItemSet() sal_True zurueckliefert. Dieses 257 // geschieht z.Z. standardmaessig. 258 return( SfxTabDialog::Ok() ); 259 } 260 261 // ----------------------------------------------------------------------- 262 263 IMPL_LINK_INLINE_START( SvxAreaTabDialog, CancelHdlImpl, void *, EMPTYARG) 264 { 265 SavePalettes(); 266 267 EndDialog( RET_CANCEL ); 268 return 0; 269 } 270 IMPL_LINK_INLINE_END( SvxAreaTabDialog, CancelHdlImpl, void *, p ) 271 272 // ----------------------------------------------------------------------- 273 274 void SvxAreaTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) 275 { 276 switch( nId ) 277 { 278 case RID_SVXPAGE_AREA: 279 ( (SvxAreaTabPage&) rPage ).SetColorTable( mpColorTab ); 280 ( (SvxAreaTabPage&) rPage ).SetGradientList( mpGradientList ); 281 ( (SvxAreaTabPage&) rPage ).SetHatchingList( mpHatchingList ); 282 ( (SvxAreaTabPage&) rPage ).SetBitmapList( mpBitmapList ); 283 //CHINA001 ( (SvxAreaTabPage&) rPage ).SetPageType( &mnPageType ); 284 ( (SvxAreaTabPage&) rPage ).SetPageType( mnPageType ); //add CHINA001 285 //CHINA001 ( (SvxAreaTabPage&) rPage ).SetDlgType( &mnDlgType ); 286 ( (SvxAreaTabPage&) rPage ).SetDlgType( mnDlgType );//add CHINA001 287 //CHINA001 ( (SvxAreaTabPage&) rPage ).SetPos( &nPos ); 288 ( (SvxAreaTabPage&) rPage ).SetPos( mnPos );//add CHINA001 289 ( (SvxAreaTabPage&) rPage ).SetAreaTP( &mbAreaTP ); 290 ( (SvxAreaTabPage&) rPage ).SetGrdChgd( &mnGradientListState ); 291 ( (SvxAreaTabPage&) rPage ).SetHtchChgd( &mnHatchingListState ); 292 ( (SvxAreaTabPage&) rPage ).SetBmpChgd( &mnBitmapListState ); 293 ( (SvxAreaTabPage&) rPage ).SetColorChgd( &mnColorTableState ); 294 ( (SvxAreaTabPage&) rPage ).Construct(); 295 // ActivatePage() wird das erste mal nicht gerufen 296 ( (SvxAreaTabPage&) rPage ).ActivatePage( mrOutAttrs ); 297 298 break; 299 300 case RID_SVXPAGE_SHADOW: 301 { 302 ( (SvxShadowTabPage&) rPage ).SetColorTable( mpColorTab ); 303 ( (SvxShadowTabPage&) rPage ).SetPageType( mnPageType );//CHINA001 ( (SvxShadowTabPage&) rPage ).SetPageType( &mnPageType ); 304 ( (SvxShadowTabPage&) rPage ).SetDlgType( mnDlgType );//CHINA001 ( (SvxShadowTabPage&) rPage ).SetDlgType( &mnDlgType ); 305 //( (SvxShadowTabPage&) rPage ).SetPos( &nPos ); 306 ( (SvxShadowTabPage&) rPage ).SetAreaTP( &mbAreaTP ); 307 ( (SvxShadowTabPage&) rPage ).SetColorChgd( &mnColorTableState ); 308 ( (SvxShadowTabPage&) rPage ).Construct(); 309 } 310 break; 311 312 case RID_SVXPAGE_GRADIENT: 313 ( (SvxGradientTabPage&) rPage ).SetColorTable( mpColorTab ); 314 ( (SvxGradientTabPage&) rPage ).SetGradientList( mpGradientList ); 315 ( (SvxGradientTabPage&) rPage ).SetPageType( &mnPageType ); 316 ( (SvxGradientTabPage&) rPage ).SetDlgType( &mnDlgType ); 317 ( (SvxGradientTabPage&) rPage ).SetPos( &mnPos ); 318 ( (SvxGradientTabPage&) rPage ).SetAreaTP( &mbAreaTP ); 319 ( (SvxGradientTabPage&) rPage ).SetGrdChgd( &mnGradientListState ); 320 ( (SvxGradientTabPage&) rPage ).SetColorChgd( &mnColorTableState ); 321 ( (SvxGradientTabPage&) rPage ).Construct(); 322 break; 323 324 case RID_SVXPAGE_HATCH: 325 ( (SvxHatchTabPage&) rPage ).SetColorTable( mpColorTab ); 326 ( (SvxHatchTabPage&) rPage ).SetHatchingList( mpHatchingList ); 327 ( (SvxHatchTabPage&) rPage ).SetPageType( &mnPageType ); 328 ( (SvxHatchTabPage&) rPage ).SetDlgType( &mnDlgType ); 329 ( (SvxHatchTabPage&) rPage ).SetPos( &mnPos ); 330 ( (SvxHatchTabPage&) rPage ).SetAreaTP( &mbAreaTP ); 331 ( (SvxHatchTabPage&) rPage ).SetHtchChgd( &mnHatchingListState ); 332 ( (SvxHatchTabPage&) rPage ).SetColorChgd( &mnColorTableState ); 333 ( (SvxHatchTabPage&) rPage ).Construct(); 334 break; 335 336 case RID_SVXPAGE_BITMAP: 337 ( (SvxBitmapTabPage&) rPage ).SetColorTable( mpColorTab ); 338 ( (SvxBitmapTabPage&) rPage ).SetBitmapList( mpBitmapList ); 339 ( (SvxBitmapTabPage&) rPage ).SetPageType( &mnPageType ); 340 ( (SvxBitmapTabPage&) rPage ).SetDlgType( &mnDlgType ); 341 ( (SvxBitmapTabPage&) rPage ).SetPos( &mnPos ); 342 ( (SvxBitmapTabPage&) rPage ).SetAreaTP( &mbAreaTP ); 343 ( (SvxBitmapTabPage&) rPage ).SetBmpChgd( &mnBitmapListState ); 344 ( (SvxBitmapTabPage&) rPage ).SetColorChgd( &mnColorTableState ); 345 ( (SvxBitmapTabPage&) rPage ).Construct(); 346 break; 347 348 case RID_SVXPAGE_COLOR: 349 ( (SvxColorTabPage&) rPage ).SetColorTable( mpColorTab ); 350 ( (SvxColorTabPage&) rPage ).SetPageType( &mnPageType ); 351 ( (SvxColorTabPage&) rPage ).SetDlgType( &mnDlgType ); 352 ( (SvxColorTabPage&) rPage ).SetPos( &mnPos ); 353 ( (SvxColorTabPage&) rPage ).SetAreaTP( &mbAreaTP ); 354 ( (SvxColorTabPage&) rPage ).SetColorChgd( &mnColorTableState ); 355 ( (SvxColorTabPage&) rPage ).SetDeleteColorTable( mbDeleteColorTable ); 356 ( (SvxColorTabPage&) rPage ).Construct(); 357 break; 358 359 case RID_SVXPAGE_TRANSPARENCE: 360 ( (SvxTransparenceTabPage&) rPage ).SetPageType( mnPageType );//CHINA001 ( (SvxTransparenceTabPage&) rPage ).SetPageType( &mnPageType ); 361 ( (SvxTransparenceTabPage&) rPage ).SetDlgType( mnDlgType );//CHINA001 ( (SvxTransparenceTabPage&) rPage ).SetDlgType( &mnDlgType ); 362 ( (SvxTransparenceTabPage&) rPage ).Construct(); 363 break; 364 365 } 366 } 367 368 369