1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_cui.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir // include --------------------------------------------------------------- 32*cdf0e10cSrcweir #include <tools/shl.hxx> 33*cdf0e10cSrcweir #include <tools/urlobj.hxx> 34*cdf0e10cSrcweir #include <vcl/msgbox.hxx> 35*cdf0e10cSrcweir #include <unotools/pathoptions.hxx> 36*cdf0e10cSrcweir #include <sfx2/app.hxx> 37*cdf0e10cSrcweir #include <sfx2/module.hxx> 38*cdf0e10cSrcweir #include <sfx2/filedlghelper.hxx> 39*cdf0e10cSrcweir #include "com/sun/star/ui/dialogs/TemplateDescription.hpp" 40*cdf0e10cSrcweir 41*cdf0e10cSrcweir #define _SVX_TPHATCH_CXX 42*cdf0e10cSrcweir 43*cdf0e10cSrcweir #include <cuires.hrc> 44*cdf0e10cSrcweir #include "tabarea.hrc" 45*cdf0e10cSrcweir //#include "dlgname.hrc" 46*cdf0e10cSrcweir #include "helpid.hrc" 47*cdf0e10cSrcweir #include "svx/xattr.hxx" 48*cdf0e10cSrcweir #include <svx/xpool.hxx> 49*cdf0e10cSrcweir #include <svx/xtable.hxx> 50*cdf0e10cSrcweir #include "svx/drawitem.hxx" 51*cdf0e10cSrcweir #include "cuitabarea.hxx" 52*cdf0e10cSrcweir #include "defdlgname.hxx" //CHINA001 #include "dlgname.hxx" 53*cdf0e10cSrcweir #include <svx/svxdlg.hxx> //CHINA001 54*cdf0e10cSrcweir #include <dialmgr.hxx> 55*cdf0e10cSrcweir #include "svx/dlgutil.hxx" 56*cdf0e10cSrcweir #include <svx/dialmgr.hxx> 57*cdf0e10cSrcweir #include "paragrph.hrc" 58*cdf0e10cSrcweir #include <svx/dialogs.hrc> 59*cdf0e10cSrcweir 60*cdf0e10cSrcweir #define DLGWIN this->GetParent()->GetParent() 61*cdf0e10cSrcweir 62*cdf0e10cSrcweir #define BITMAP_WIDTH 32 63*cdf0e10cSrcweir #define BITMAP_HEIGHT 12 64*cdf0e10cSrcweir 65*cdf0e10cSrcweir /************************************************************************* 66*cdf0e10cSrcweir |* 67*cdf0e10cSrcweir |* Dialog zum Aendern und Definieren der Schraffuren 68*cdf0e10cSrcweir |* 69*cdf0e10cSrcweir \************************************************************************/ 70*cdf0e10cSrcweir 71*cdf0e10cSrcweir SvxHatchTabPage::SvxHatchTabPage 72*cdf0e10cSrcweir ( 73*cdf0e10cSrcweir Window* pParent, 74*cdf0e10cSrcweir const SfxItemSet& rInAttrs 75*cdf0e10cSrcweir ) : 76*cdf0e10cSrcweir 77*cdf0e10cSrcweir SvxTabPage ( pParent, CUI_RES( RID_SVXPAGE_HATCH ), rInAttrs ), 78*cdf0e10cSrcweir 79*cdf0e10cSrcweir aFtDistance ( this, CUI_RES( FT_LINE_DISTANCE ) ), 80*cdf0e10cSrcweir aMtrDistance ( this, CUI_RES( MTR_FLD_DISTANCE ) ), 81*cdf0e10cSrcweir aFtAngle ( this, CUI_RES( FT_LINE_ANGLE ) ), 82*cdf0e10cSrcweir aMtrAngle ( this, CUI_RES( MTR_FLD_ANGLE ) ), 83*cdf0e10cSrcweir aCtlAngle ( this, CUI_RES( CTL_ANGLE ), 84*cdf0e10cSrcweir RP_RB, 200, 80, CS_ANGLE ), 85*cdf0e10cSrcweir aFlProp ( this, CUI_RES( FL_PROP ) ), 86*cdf0e10cSrcweir aFtLineType ( this, CUI_RES( FT_LINE_TYPE ) ), 87*cdf0e10cSrcweir aLbLineType ( this, CUI_RES( LB_LINE_TYPE ) ), 88*cdf0e10cSrcweir aFtLineColor ( this, CUI_RES( FT_LINE_COLOR ) ), 89*cdf0e10cSrcweir aLbLineColor ( this, CUI_RES( LB_LINE_COLOR ) ), 90*cdf0e10cSrcweir aLbHatchings ( this, CUI_RES( LB_HATCHINGS ) ), 91*cdf0e10cSrcweir aCtlPreview ( this, CUI_RES( CTL_PREVIEW ) ), 92*cdf0e10cSrcweir aBtnAdd ( this, CUI_RES( BTN_ADD ) ), 93*cdf0e10cSrcweir aBtnModify ( this, CUI_RES( BTN_MODIFY ) ), 94*cdf0e10cSrcweir aBtnDelete ( this, CUI_RES( BTN_DELETE ) ), 95*cdf0e10cSrcweir aBtnLoad ( this, CUI_RES( BTN_LOAD ) ), 96*cdf0e10cSrcweir aBtnSave ( this, CUI_RES( BTN_SAVE ) ), 97*cdf0e10cSrcweir 98*cdf0e10cSrcweir rOutAttrs ( rInAttrs ), 99*cdf0e10cSrcweir pColorTab( NULL ), 100*cdf0e10cSrcweir pHatchingList( NULL ), 101*cdf0e10cSrcweir 102*cdf0e10cSrcweir pXPool ( (XOutdevItemPool*) rInAttrs.GetPool() ), 103*cdf0e10cSrcweir aXFStyleItem ( XFILL_HATCH ), 104*cdf0e10cSrcweir aXHatchItem ( String(), XHatch() ), 105*cdf0e10cSrcweir aXFillAttr ( pXPool ), 106*cdf0e10cSrcweir rXFSet ( aXFillAttr.GetItemSet() ) 107*cdf0e10cSrcweir 108*cdf0e10cSrcweir { 109*cdf0e10cSrcweir aBtnLoad.SetModeImage( Image( CUI_RES( RID_SVXIMG_LOAD_H ) ), BMP_COLOR_HIGHCONTRAST ); 110*cdf0e10cSrcweir aBtnSave.SetModeImage( Image( CUI_RES( RID_SVXIMG_SAVE_H ) ), BMP_COLOR_HIGHCONTRAST ); 111*cdf0e10cSrcweir 112*cdf0e10cSrcweir FreeResource(); 113*cdf0e10cSrcweir 114*cdf0e10cSrcweir // diese Page braucht ExchangeSupport 115*cdf0e10cSrcweir SetExchangeSupport(); 116*cdf0e10cSrcweir 117*cdf0e10cSrcweir // Metrik einstellen 118*cdf0e10cSrcweir FieldUnit eFUnit = GetModuleFieldUnit( rInAttrs ); 119*cdf0e10cSrcweir 120*cdf0e10cSrcweir switch ( eFUnit ) 121*cdf0e10cSrcweir { 122*cdf0e10cSrcweir case FUNIT_M: 123*cdf0e10cSrcweir case FUNIT_KM: 124*cdf0e10cSrcweir eFUnit = FUNIT_MM; 125*cdf0e10cSrcweir break; 126*cdf0e10cSrcweir default: ;//prevent warning 127*cdf0e10cSrcweir } 128*cdf0e10cSrcweir SetFieldUnit( aMtrDistance, eFUnit ); 129*cdf0e10cSrcweir 130*cdf0e10cSrcweir // PoolUnit ermitteln 131*cdf0e10cSrcweir SfxItemPool* pPool = rOutAttrs.GetPool(); 132*cdf0e10cSrcweir DBG_ASSERT( pPool, "Wo ist der Pool?" ); 133*cdf0e10cSrcweir ePoolUnit = pPool->GetMetric( SID_ATTR_FILL_HATCH ); 134*cdf0e10cSrcweir 135*cdf0e10cSrcweir // Setzen des Output-Devices 136*cdf0e10cSrcweir rXFSet.Put( aXFStyleItem ); 137*cdf0e10cSrcweir rXFSet.Put( aXHatchItem ); 138*cdf0e10cSrcweir aCtlPreview.SetAttributes( aXFillAttr.GetItemSet() ); 139*cdf0e10cSrcweir 140*cdf0e10cSrcweir aLbHatchings.SetSelectHdl( LINK( this, SvxHatchTabPage, ChangeHatchHdl_Impl ) ); 141*cdf0e10cSrcweir 142*cdf0e10cSrcweir Link aLink = LINK( this, SvxHatchTabPage, ModifiedHdl_Impl ); 143*cdf0e10cSrcweir aMtrDistance.SetModifyHdl( aLink ); 144*cdf0e10cSrcweir aMtrAngle.SetModifyHdl( aLink ); 145*cdf0e10cSrcweir aLbLineType.SetSelectHdl( aLink ); 146*cdf0e10cSrcweir aLbLineColor.SetSelectHdl( aLink ); 147*cdf0e10cSrcweir 148*cdf0e10cSrcweir aBtnAdd.SetClickHdl( LINK( this, SvxHatchTabPage, ClickAddHdl_Impl ) ); 149*cdf0e10cSrcweir aBtnModify.SetClickHdl( 150*cdf0e10cSrcweir LINK( this, SvxHatchTabPage, ClickModifyHdl_Impl ) ); 151*cdf0e10cSrcweir aBtnDelete.SetClickHdl( 152*cdf0e10cSrcweir LINK( this, SvxHatchTabPage, ClickDeleteHdl_Impl ) ); 153*cdf0e10cSrcweir aBtnLoad.SetClickHdl( LINK( this, SvxHatchTabPage, ClickLoadHdl_Impl ) ); 154*cdf0e10cSrcweir aBtnSave.SetClickHdl( LINK( this, SvxHatchTabPage, ClickSaveHdl_Impl ) ); 155*cdf0e10cSrcweir 156*cdf0e10cSrcweir aCtlPreview.SetDrawMode( GetSettings().GetStyleSettings().GetHighContrastMode() ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR ); 157*cdf0e10cSrcweir 158*cdf0e10cSrcweir aCtlPreview.SetAccessibleName(String(CUI_RES(STR_EXAMPLE))); 159*cdf0e10cSrcweir aLbHatchings.SetAccessibleName( String(CUI_RES(STR_LB_HATCHINGSTYLE)) ); 160*cdf0e10cSrcweir aCtlAngle.SetAccessibleRelationMemberOf( &aFlProp ); 161*cdf0e10cSrcweir aLbHatchings.SetAccessibleRelationMemberOf( &aFlProp ); 162*cdf0e10cSrcweir aBtnAdd.SetAccessibleRelationMemberOf( &aFlProp ); 163*cdf0e10cSrcweir aBtnModify.SetAccessibleRelationMemberOf( &aFlProp ); 164*cdf0e10cSrcweir aBtnDelete.SetAccessibleRelationMemberOf( &aFlProp ); 165*cdf0e10cSrcweir aLbHatchings.SetAccessibleRelationLabeledBy(&aLbHatchings); 166*cdf0e10cSrcweir } 167*cdf0e10cSrcweir 168*cdf0e10cSrcweir // ----------------------------------------------------------------------- 169*cdf0e10cSrcweir 170*cdf0e10cSrcweir void SvxHatchTabPage::Construct() 171*cdf0e10cSrcweir { 172*cdf0e10cSrcweir // Farbtabelle 173*cdf0e10cSrcweir aLbLineColor.Fill( pColorTab ); 174*cdf0e10cSrcweir 175*cdf0e10cSrcweir // Schraffurentabelle 176*cdf0e10cSrcweir aLbHatchings.Fill( pHatchingList ); 177*cdf0e10cSrcweir } 178*cdf0e10cSrcweir 179*cdf0e10cSrcweir // ----------------------------------------------------------------------- 180*cdf0e10cSrcweir 181*cdf0e10cSrcweir void SvxHatchTabPage::ActivatePage( const SfxItemSet& rSet ) 182*cdf0e10cSrcweir { 183*cdf0e10cSrcweir sal_uInt16 nPos; 184*cdf0e10cSrcweir sal_uInt16 nCount; 185*cdf0e10cSrcweir 186*cdf0e10cSrcweir if( *pDlgType == 0 ) // Flaechen-Dialog 187*cdf0e10cSrcweir { 188*cdf0e10cSrcweir *pbAreaTP = sal_False; 189*cdf0e10cSrcweir 190*cdf0e10cSrcweir if( pColorTab ) 191*cdf0e10cSrcweir { 192*cdf0e10cSrcweir // ColorTable 193*cdf0e10cSrcweir if( *pnColorTableState & CT_CHANGED || 194*cdf0e10cSrcweir *pnColorTableState & CT_MODIFIED ) 195*cdf0e10cSrcweir { 196*cdf0e10cSrcweir if( *pnColorTableState & CT_CHANGED ) 197*cdf0e10cSrcweir pColorTab = ( (SvxAreaTabDialog*) DLGWIN )->GetNewColorTable(); 198*cdf0e10cSrcweir 199*cdf0e10cSrcweir // LbLineColor 200*cdf0e10cSrcweir nPos = aLbLineColor.GetSelectEntryPos(); 201*cdf0e10cSrcweir aLbLineColor.Clear(); 202*cdf0e10cSrcweir aLbLineColor.Fill( pColorTab ); 203*cdf0e10cSrcweir nCount = aLbLineColor.GetEntryCount(); 204*cdf0e10cSrcweir if( nCount == 0 ) 205*cdf0e10cSrcweir ; // Dieser Fall sollte nicht auftreten 206*cdf0e10cSrcweir else if( nCount <= nPos ) 207*cdf0e10cSrcweir aLbLineColor.SelectEntryPos( 0 ); 208*cdf0e10cSrcweir else 209*cdf0e10cSrcweir aLbLineColor.SelectEntryPos( nPos ); 210*cdf0e10cSrcweir 211*cdf0e10cSrcweir ModifiedHdl_Impl( this ); 212*cdf0e10cSrcweir } 213*cdf0e10cSrcweir 214*cdf0e10cSrcweir // Ermitteln (evtl. abschneiden) des Namens und in 215*cdf0e10cSrcweir // der GroupBox darstellen 216*cdf0e10cSrcweir String aString( CUI_RES( RID_SVXSTR_TABLE ) ); aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) ); 217*cdf0e10cSrcweir INetURLObject aURL( pHatchingList->GetPath() ); 218*cdf0e10cSrcweir 219*cdf0e10cSrcweir aURL.Append( pHatchingList->GetName() ); 220*cdf0e10cSrcweir DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" ); 221*cdf0e10cSrcweir 222*cdf0e10cSrcweir if ( aURL.getBase().getLength() > 18 ) 223*cdf0e10cSrcweir { 224*cdf0e10cSrcweir aString += String(aURL.getBase()).Copy( 0, 15 ); 225*cdf0e10cSrcweir aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) ); 226*cdf0e10cSrcweir } 227*cdf0e10cSrcweir else 228*cdf0e10cSrcweir aString += String(aURL.getBase()); 229*cdf0e10cSrcweir 230*cdf0e10cSrcweir if( *pPageType == PT_HATCH && *pPos != LISTBOX_ENTRY_NOTFOUND ) 231*cdf0e10cSrcweir { 232*cdf0e10cSrcweir aLbHatchings.SelectEntryPos( *pPos ); 233*cdf0e10cSrcweir } 234*cdf0e10cSrcweir // Farben koennten geloescht worden sein 235*cdf0e10cSrcweir ChangeHatchHdl_Impl( this ); 236*cdf0e10cSrcweir 237*cdf0e10cSrcweir *pPageType = PT_HATCH; 238*cdf0e10cSrcweir *pPos = LISTBOX_ENTRY_NOTFOUND; 239*cdf0e10cSrcweir } 240*cdf0e10cSrcweir } 241*cdf0e10cSrcweir 242*cdf0e10cSrcweir rXFSet.Put ( ( XFillColorItem& ) rSet.Get(XATTR_FILLCOLOR) ); 243*cdf0e10cSrcweir rXFSet.Put ( ( XFillBackgroundItem&)rSet.Get(XATTR_FILLBACKGROUND) ); 244*cdf0e10cSrcweir aCtlPreview.SetAttributes( aXFillAttr.GetItemSet() ); 245*cdf0e10cSrcweir aCtlPreview.Invalidate(); 246*cdf0e10cSrcweir } 247*cdf0e10cSrcweir 248*cdf0e10cSrcweir // ----------------------------------------------------------------------- 249*cdf0e10cSrcweir 250*cdf0e10cSrcweir int SvxHatchTabPage::DeactivatePage( SfxItemSet* _pSet ) 251*cdf0e10cSrcweir { 252*cdf0e10cSrcweir if ( CheckChanges_Impl() == -1L ) 253*cdf0e10cSrcweir return KEEP_PAGE; 254*cdf0e10cSrcweir 255*cdf0e10cSrcweir if( _pSet ) 256*cdf0e10cSrcweir FillItemSet( *_pSet ); 257*cdf0e10cSrcweir 258*cdf0e10cSrcweir return LEAVE_PAGE; 259*cdf0e10cSrcweir } 260*cdf0e10cSrcweir 261*cdf0e10cSrcweir // ----------------------------------------------------------------------- 262*cdf0e10cSrcweir 263*cdf0e10cSrcweir long SvxHatchTabPage::CheckChanges_Impl() 264*cdf0e10cSrcweir { 265*cdf0e10cSrcweir if( aMtrDistance.GetText() != aMtrDistance.GetSavedValue() || 266*cdf0e10cSrcweir aMtrAngle.GetText() != aMtrAngle.GetSavedValue() || 267*cdf0e10cSrcweir aLbLineType.GetSelectEntryPos() != aLbLineType.GetSavedValue() || 268*cdf0e10cSrcweir aLbLineColor.GetSelectEntryPos() != aLbLineColor.GetSavedValue() || 269*cdf0e10cSrcweir aLbHatchings.GetSelectEntryPos() != aLbHatchings.GetSavedValue() ) 270*cdf0e10cSrcweir { 271*cdf0e10cSrcweir ResMgr& rMgr = CUI_MGR(); 272*cdf0e10cSrcweir Image aWarningBoxImage = WarningBox::GetStandardImage(); 273*cdf0e10cSrcweir SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); 274*cdf0e10cSrcweir DBG_ASSERT(pFact, "Dialogdiet fail!");//CHINA001 275*cdf0e10cSrcweir AbstractSvxMessDialog* aMessDlg = pFact->CreateSvxMessDialog( DLGWIN, RID_SVXDLG_MESSBOX, 276*cdf0e10cSrcweir SVX_RESSTR( RID_SVXSTR_HATCH ), 277*cdf0e10cSrcweir CUI_RESSTR( RID_SVXSTR_ASK_CHANGE_HATCH ), 278*cdf0e10cSrcweir &aWarningBoxImage ); 279*cdf0e10cSrcweir DBG_ASSERT(aMessDlg, "Dialogdiet fail!");//CHINA001 280*cdf0e10cSrcweir aMessDlg->SetButtonText( MESS_BTN_1, //CHINA001 aMessDlg.SetButtonText( MESS_BTN_1, 281*cdf0e10cSrcweir String( ResId( RID_SVXSTR_CHANGE, rMgr ) ) ); 282*cdf0e10cSrcweir aMessDlg->SetButtonText( MESS_BTN_2, //CHINA001 aMessDlg.SetButtonText( MESS_BTN_2, 283*cdf0e10cSrcweir String( ResId( RID_SVXSTR_ADD, rMgr ) ) ); 284*cdf0e10cSrcweir 285*cdf0e10cSrcweir short nRet = aMessDlg->Execute(); //CHINA001 short nRet = aMessDlg.Execute(); 286*cdf0e10cSrcweir 287*cdf0e10cSrcweir switch( nRet ) 288*cdf0e10cSrcweir { 289*cdf0e10cSrcweir case RET_BTN_1: // Aendern 290*cdf0e10cSrcweir { 291*cdf0e10cSrcweir ClickModifyHdl_Impl( this ); 292*cdf0e10cSrcweir } 293*cdf0e10cSrcweir break; 294*cdf0e10cSrcweir 295*cdf0e10cSrcweir case RET_BTN_2: // Hinzufuegen 296*cdf0e10cSrcweir { 297*cdf0e10cSrcweir ClickAddHdl_Impl( this ); 298*cdf0e10cSrcweir } 299*cdf0e10cSrcweir break; 300*cdf0e10cSrcweir 301*cdf0e10cSrcweir case RET_CANCEL: 302*cdf0e10cSrcweir // return( -1L ); <-- wuerde die Seite nicht verlassen 303*cdf0e10cSrcweir break; 304*cdf0e10cSrcweir // return( sal_True ); // Abbruch 305*cdf0e10cSrcweir } 306*cdf0e10cSrcweir delete aMessDlg; //add by CHINA001 307*cdf0e10cSrcweir } 308*cdf0e10cSrcweir 309*cdf0e10cSrcweir sal_uInt16 nPos = aLbHatchings.GetSelectEntryPos(); 310*cdf0e10cSrcweir if( nPos != LISTBOX_ENTRY_NOTFOUND ) 311*cdf0e10cSrcweir *pPos = nPos; 312*cdf0e10cSrcweir return 0L; 313*cdf0e10cSrcweir } 314*cdf0e10cSrcweir 315*cdf0e10cSrcweir // ----------------------------------------------------------------------- 316*cdf0e10cSrcweir 317*cdf0e10cSrcweir sal_Bool SvxHatchTabPage::FillItemSet( SfxItemSet& rSet ) 318*cdf0e10cSrcweir { 319*cdf0e10cSrcweir if( *pDlgType == 0 && *pbAreaTP == sal_False ) // Flaechen-Dialog 320*cdf0e10cSrcweir { 321*cdf0e10cSrcweir if( *pPageType == PT_HATCH ) 322*cdf0e10cSrcweir { 323*cdf0e10cSrcweir // CheckChanges(); <-- doppelte Abfrage ? 324*cdf0e10cSrcweir 325*cdf0e10cSrcweir XHatch* pXHatch = NULL; 326*cdf0e10cSrcweir String aString; 327*cdf0e10cSrcweir sal_uInt16 nPos = aLbHatchings.GetSelectEntryPos(); 328*cdf0e10cSrcweir if( nPos != LISTBOX_ENTRY_NOTFOUND ) 329*cdf0e10cSrcweir { 330*cdf0e10cSrcweir pXHatch = new XHatch( pHatchingList->GetHatch( nPos )->GetHatch() ); 331*cdf0e10cSrcweir aString = aLbHatchings.GetSelectEntry(); 332*cdf0e10cSrcweir } 333*cdf0e10cSrcweir // Farbverlauf wurde (unbekannt) uebergeben 334*cdf0e10cSrcweir else 335*cdf0e10cSrcweir { 336*cdf0e10cSrcweir pXHatch = new XHatch( aLbLineColor.GetSelectEntryColor(), 337*cdf0e10cSrcweir (XHatchStyle) aLbLineType.GetSelectEntryPos(), 338*cdf0e10cSrcweir GetCoreValue( aMtrDistance, ePoolUnit ), 339*cdf0e10cSrcweir static_cast<long>(aMtrAngle.GetValue() * 10) ); 340*cdf0e10cSrcweir } 341*cdf0e10cSrcweir DBG_ASSERT( pXHatch, "XHatch konnte nicht erzeugt werden" ); 342*cdf0e10cSrcweir rSet.Put( XFillStyleItem( XFILL_HATCH ) ); 343*cdf0e10cSrcweir rSet.Put( XFillHatchItem( aString, *pXHatch ) ); 344*cdf0e10cSrcweir 345*cdf0e10cSrcweir delete pXHatch; 346*cdf0e10cSrcweir } 347*cdf0e10cSrcweir } 348*cdf0e10cSrcweir return sal_True; 349*cdf0e10cSrcweir } 350*cdf0e10cSrcweir 351*cdf0e10cSrcweir // ----------------------------------------------------------------------- 352*cdf0e10cSrcweir 353*cdf0e10cSrcweir void SvxHatchTabPage::Reset( const SfxItemSet& rSet ) 354*cdf0e10cSrcweir { 355*cdf0e10cSrcweir // aLbHatchings.SelectEntryPos( 0 ); 356*cdf0e10cSrcweir ChangeHatchHdl_Impl( this ); 357*cdf0e10cSrcweir 358*cdf0e10cSrcweir // Status der Buttons ermitteln 359*cdf0e10cSrcweir if( pHatchingList->Count() ) 360*cdf0e10cSrcweir { 361*cdf0e10cSrcweir aBtnModify.Enable(); 362*cdf0e10cSrcweir aBtnDelete.Enable(); 363*cdf0e10cSrcweir aBtnSave.Enable(); 364*cdf0e10cSrcweir } 365*cdf0e10cSrcweir else 366*cdf0e10cSrcweir { 367*cdf0e10cSrcweir aBtnModify.Disable(); 368*cdf0e10cSrcweir aBtnDelete.Disable(); 369*cdf0e10cSrcweir aBtnSave.Disable(); 370*cdf0e10cSrcweir } 371*cdf0e10cSrcweir 372*cdf0e10cSrcweir rXFSet.Put ( ( XFillColorItem& ) rSet.Get(XATTR_FILLCOLOR) ); 373*cdf0e10cSrcweir rXFSet.Put ( ( XFillBackgroundItem&)rSet.Get(XATTR_FILLBACKGROUND) ); 374*cdf0e10cSrcweir aCtlPreview.SetAttributes( aXFillAttr.GetItemSet() ); 375*cdf0e10cSrcweir aCtlPreview.Invalidate(); 376*cdf0e10cSrcweir } 377*cdf0e10cSrcweir 378*cdf0e10cSrcweir // ----------------------------------------------------------------------- 379*cdf0e10cSrcweir 380*cdf0e10cSrcweir SfxTabPage* SvxHatchTabPage::Create( Window* pWindow, 381*cdf0e10cSrcweir const SfxItemSet& rSet ) 382*cdf0e10cSrcweir { 383*cdf0e10cSrcweir return new SvxHatchTabPage( pWindow, rSet ); 384*cdf0e10cSrcweir } 385*cdf0e10cSrcweir 386*cdf0e10cSrcweir //------------------------------------------------------------------------ 387*cdf0e10cSrcweir 388*cdf0e10cSrcweir IMPL_LINK( SvxHatchTabPage, ModifiedHdl_Impl, void *, p ) 389*cdf0e10cSrcweir { 390*cdf0e10cSrcweir if( p == &aMtrAngle ) 391*cdf0e10cSrcweir { 392*cdf0e10cSrcweir // Setzen des Winkels im AngleControl 393*cdf0e10cSrcweir switch( aMtrAngle.GetValue() ) 394*cdf0e10cSrcweir { 395*cdf0e10cSrcweir case 135: aCtlAngle.SetActualRP( RP_LT ); break; 396*cdf0e10cSrcweir case 90: aCtlAngle.SetActualRP( RP_MT ); break; 397*cdf0e10cSrcweir case 45: aCtlAngle.SetActualRP( RP_RT ); break; 398*cdf0e10cSrcweir case 180: aCtlAngle.SetActualRP( RP_LM ); break; 399*cdf0e10cSrcweir case 0: aCtlAngle.SetActualRP( RP_RM ); break; 400*cdf0e10cSrcweir case 225: aCtlAngle.SetActualRP( RP_LB ); break; 401*cdf0e10cSrcweir case 270: aCtlAngle.SetActualRP( RP_MB ); break; 402*cdf0e10cSrcweir case 315: aCtlAngle.SetActualRP( RP_RB ); break; 403*cdf0e10cSrcweir default: aCtlAngle.SetActualRP( RP_MM ); break; 404*cdf0e10cSrcweir } 405*cdf0e10cSrcweir } 406*cdf0e10cSrcweir 407*cdf0e10cSrcweir XHatch aXHatch( aLbLineColor.GetSelectEntryColor(), 408*cdf0e10cSrcweir (XHatchStyle) aLbLineType.GetSelectEntryPos(), 409*cdf0e10cSrcweir GetCoreValue( aMtrDistance, ePoolUnit ), 410*cdf0e10cSrcweir static_cast<long>(aMtrAngle.GetValue() * 10) ); 411*cdf0e10cSrcweir 412*cdf0e10cSrcweir rXFSet.Put( XFillHatchItem( String(), aXHatch ) ); 413*cdf0e10cSrcweir aCtlPreview.SetAttributes( aXFillAttr.GetItemSet() ); 414*cdf0e10cSrcweir 415*cdf0e10cSrcweir aCtlPreview.Invalidate(); 416*cdf0e10cSrcweir 417*cdf0e10cSrcweir return 0L; 418*cdf0e10cSrcweir } 419*cdf0e10cSrcweir 420*cdf0e10cSrcweir //------------------------------------------------------------------------ 421*cdf0e10cSrcweir 422*cdf0e10cSrcweir IMPL_LINK( SvxHatchTabPage, ChangeHatchHdl_Impl, void *, EMPTYARG ) 423*cdf0e10cSrcweir { 424*cdf0e10cSrcweir XHatch* pHatch = NULL; 425*cdf0e10cSrcweir int nPos = aLbHatchings.GetSelectEntryPos(); 426*cdf0e10cSrcweir 427*cdf0e10cSrcweir if( nPos != LISTBOX_ENTRY_NOTFOUND ) 428*cdf0e10cSrcweir pHatch = new XHatch( ( (XHatchEntry*) pHatchingList->GetHatch( nPos ) )->GetHatch() ); 429*cdf0e10cSrcweir else 430*cdf0e10cSrcweir { 431*cdf0e10cSrcweir const SfxPoolItem* pPoolItem = NULL; 432*cdf0e10cSrcweir if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLSTYLE ), sal_True, &pPoolItem ) ) 433*cdf0e10cSrcweir { 434*cdf0e10cSrcweir if( ( XFILL_HATCH == (XFillStyle) ( ( const XFillStyleItem* ) pPoolItem )->GetValue() ) && 435*cdf0e10cSrcweir ( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLHATCH ), sal_True, &pPoolItem ) ) ) 436*cdf0e10cSrcweir { 437*cdf0e10cSrcweir pHatch = new XHatch( ( ( const XFillHatchItem* ) pPoolItem )->GetHatchValue() ); 438*cdf0e10cSrcweir } 439*cdf0e10cSrcweir } 440*cdf0e10cSrcweir if( !pHatch ) 441*cdf0e10cSrcweir { 442*cdf0e10cSrcweir aLbHatchings.SelectEntryPos( 0 ); 443*cdf0e10cSrcweir nPos = aLbHatchings.GetSelectEntryPos(); 444*cdf0e10cSrcweir if( nPos != LISTBOX_ENTRY_NOTFOUND ) 445*cdf0e10cSrcweir pHatch = new XHatch( ( (XHatchEntry*) pHatchingList->GetHatch( nPos ) )->GetHatch() ); 446*cdf0e10cSrcweir } 447*cdf0e10cSrcweir } 448*cdf0e10cSrcweir if( pHatch ) 449*cdf0e10cSrcweir { 450*cdf0e10cSrcweir aLbLineType.SelectEntryPos( 451*cdf0e10cSrcweir sal::static_int_cast< sal_uInt16 >( pHatch->GetHatchStyle() ) ); 452*cdf0e10cSrcweir // Wenn der Eintrag nicht in der Listbox ist, wird die Farbe 453*cdf0e10cSrcweir // temporaer hinzugenommen 454*cdf0e10cSrcweir aLbLineColor.SetNoSelection(); 455*cdf0e10cSrcweir aLbLineColor.SelectEntry( pHatch->GetColor() ); 456*cdf0e10cSrcweir if( aLbLineColor.GetSelectEntryCount() == 0 ) 457*cdf0e10cSrcweir { 458*cdf0e10cSrcweir aLbLineColor.InsertEntry( pHatch->GetColor(), String() ); 459*cdf0e10cSrcweir aLbLineColor.SelectEntry( pHatch->GetColor() ); 460*cdf0e10cSrcweir } 461*cdf0e10cSrcweir SetMetricValue( aMtrDistance, pHatch->GetDistance(), ePoolUnit ); 462*cdf0e10cSrcweir aMtrAngle.SetValue( pHatch->GetAngle() / 10 ); 463*cdf0e10cSrcweir 464*cdf0e10cSrcweir // Setzen des Winkels im AngleControl 465*cdf0e10cSrcweir switch( aMtrAngle.GetValue() ) 466*cdf0e10cSrcweir { 467*cdf0e10cSrcweir case 135: aCtlAngle.SetActualRP( RP_LT ); break; 468*cdf0e10cSrcweir case 90: aCtlAngle.SetActualRP( RP_MT ); break; 469*cdf0e10cSrcweir case 45: aCtlAngle.SetActualRP( RP_RT ); break; 470*cdf0e10cSrcweir case 180: aCtlAngle.SetActualRP( RP_LM ); break; 471*cdf0e10cSrcweir case 0: aCtlAngle.SetActualRP( RP_RM ); break; 472*cdf0e10cSrcweir case 225: aCtlAngle.SetActualRP( RP_LB ); break; 473*cdf0e10cSrcweir case 270: aCtlAngle.SetActualRP( RP_MB ); break; 474*cdf0e10cSrcweir case 315: aCtlAngle.SetActualRP( RP_RB ); break; 475*cdf0e10cSrcweir default: aCtlAngle.SetActualRP( RP_MM ); break; 476*cdf0e10cSrcweir } 477*cdf0e10cSrcweir 478*cdf0e10cSrcweir // Backgroundcolor 479*cdf0e10cSrcweir /* 480*cdf0e10cSrcweir const SfxPoolItem* pPoolItem = NULL; 481*cdf0e10cSrcweir if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLBACKGROUND ), sal_True, &pPoolItem ) ) 482*cdf0e10cSrcweir { 483*cdf0e10cSrcweir rXFSet.Put ( XFillBackgroundItem( ( ( XFillBackgroundItem* )pPoolItem)->GetValue() ) ); 484*cdf0e10cSrcweir if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), sal_True, &pPoolItem ) ) 485*cdf0e10cSrcweir { 486*cdf0e10cSrcweir Color aColor( ( ( const XFillColorItem* ) pPoolItem )->GetValue() ); 487*cdf0e10cSrcweir rXFSet.Put( XFillColorItem( String(), aColor ) ); 488*cdf0e10cSrcweir } 489*cdf0e10cSrcweir } 490*cdf0e10cSrcweir */ 491*cdf0e10cSrcweir // ItemSet fuellen und an aCtlPreview weiterleiten 492*cdf0e10cSrcweir rXFSet.Put( XFillHatchItem( String(), *pHatch ) ); 493*cdf0e10cSrcweir aCtlPreview.SetAttributes( aXFillAttr.GetItemSet() ); 494*cdf0e10cSrcweir 495*cdf0e10cSrcweir aCtlPreview.Invalidate(); 496*cdf0e10cSrcweir delete pHatch; 497*cdf0e10cSrcweir } 498*cdf0e10cSrcweir aMtrDistance.SaveValue(); 499*cdf0e10cSrcweir aMtrAngle.SaveValue(); 500*cdf0e10cSrcweir aLbLineType.SaveValue(); 501*cdf0e10cSrcweir aLbLineColor.SaveValue(); 502*cdf0e10cSrcweir aLbHatchings.SaveValue(); 503*cdf0e10cSrcweir 504*cdf0e10cSrcweir return 0L; 505*cdf0e10cSrcweir } 506*cdf0e10cSrcweir 507*cdf0e10cSrcweir //------------------------------------------------------------------------ 508*cdf0e10cSrcweir 509*cdf0e10cSrcweir IMPL_LINK( SvxHatchTabPage, ClickAddHdl_Impl, void *, EMPTYARG ) 510*cdf0e10cSrcweir { 511*cdf0e10cSrcweir ResMgr& rMgr = CUI_MGR(); 512*cdf0e10cSrcweir String aNewName( SVX_RES( RID_SVXSTR_HATCH ) ); 513*cdf0e10cSrcweir String aDesc( CUI_RES( RID_SVXSTR_DESC_HATCH ) ); 514*cdf0e10cSrcweir String aName; 515*cdf0e10cSrcweir 516*cdf0e10cSrcweir long nCount = pHatchingList->Count(); 517*cdf0e10cSrcweir long j = 1; 518*cdf0e10cSrcweir sal_Bool bDifferent = sal_False; 519*cdf0e10cSrcweir 520*cdf0e10cSrcweir while( !bDifferent ) 521*cdf0e10cSrcweir { 522*cdf0e10cSrcweir aName = aNewName; 523*cdf0e10cSrcweir aName += sal_Unicode(' '); 524*cdf0e10cSrcweir aName += UniString::CreateFromInt32( j++ ); 525*cdf0e10cSrcweir bDifferent = sal_True; 526*cdf0e10cSrcweir 527*cdf0e10cSrcweir for( long i = 0; i < nCount && bDifferent; i++ ) 528*cdf0e10cSrcweir if( aName == pHatchingList->GetHatch( i )->GetName() ) 529*cdf0e10cSrcweir bDifferent = sal_False; 530*cdf0e10cSrcweir } 531*cdf0e10cSrcweir 532*cdf0e10cSrcweir SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); 533*cdf0e10cSrcweir DBG_ASSERT(pFact, "Dialogdiet fail!");//CHINA001 534*cdf0e10cSrcweir AbstractSvxNameDialog* pDlg = pFact->CreateSvxNameDialog( DLGWIN, aName, aDesc ); 535*cdf0e10cSrcweir DBG_ASSERT(pDlg, "Dialogdiet fail!");//CHINA001 536*cdf0e10cSrcweir WarningBox* pWarnBox = NULL; 537*cdf0e10cSrcweir sal_uInt16 nError = RID_SVXSTR_WARN_NAME_DUPLICATE; 538*cdf0e10cSrcweir 539*cdf0e10cSrcweir while( pDlg->Execute() == RET_OK ) 540*cdf0e10cSrcweir { 541*cdf0e10cSrcweir pDlg->GetName( aName ); 542*cdf0e10cSrcweir 543*cdf0e10cSrcweir bDifferent = sal_True; 544*cdf0e10cSrcweir 545*cdf0e10cSrcweir for( long i = 0; i < nCount && bDifferent; i++ ) 546*cdf0e10cSrcweir if( aName == pHatchingList->GetHatch( i )->GetName() ) 547*cdf0e10cSrcweir bDifferent = sal_False; 548*cdf0e10cSrcweir 549*cdf0e10cSrcweir if( bDifferent ) { 550*cdf0e10cSrcweir nError = 0; 551*cdf0e10cSrcweir break; 552*cdf0e10cSrcweir } 553*cdf0e10cSrcweir 554*cdf0e10cSrcweir if( !pWarnBox ) 555*cdf0e10cSrcweir { 556*cdf0e10cSrcweir pWarnBox = new WarningBox( DLGWIN, 557*cdf0e10cSrcweir WinBits( WB_OK_CANCEL ), 558*cdf0e10cSrcweir String( ResId( nError, rMgr ) ) ); 559*cdf0e10cSrcweir pWarnBox->SetHelpId( HID_WARN_NAME_DUPLICATE ); 560*cdf0e10cSrcweir } 561*cdf0e10cSrcweir 562*cdf0e10cSrcweir if( pWarnBox->Execute() != RET_OK ) 563*cdf0e10cSrcweir break; 564*cdf0e10cSrcweir } 565*cdf0e10cSrcweir //Rectangle aDlgRect( pDlg->GetPosPixel(), pDlg->GetSizePixel() ); 566*cdf0e10cSrcweir delete pDlg; 567*cdf0e10cSrcweir delete pWarnBox; 568*cdf0e10cSrcweir 569*cdf0e10cSrcweir if( !nError ) 570*cdf0e10cSrcweir { 571*cdf0e10cSrcweir XHatch aXHatch( aLbLineColor.GetSelectEntryColor(), 572*cdf0e10cSrcweir (XHatchStyle) aLbLineType.GetSelectEntryPos(), 573*cdf0e10cSrcweir GetCoreValue( aMtrDistance, ePoolUnit ), 574*cdf0e10cSrcweir static_cast<long>(aMtrAngle.GetValue() * 10) ); 575*cdf0e10cSrcweir XHatchEntry* pEntry = new XHatchEntry( aXHatch, aName ); 576*cdf0e10cSrcweir 577*cdf0e10cSrcweir pHatchingList->Insert( pEntry, nCount ); 578*cdf0e10cSrcweir 579*cdf0e10cSrcweir aLbHatchings.Append( pEntry ); 580*cdf0e10cSrcweir 581*cdf0e10cSrcweir aLbHatchings.SelectEntryPos( aLbHatchings.GetEntryCount() - 1 ); 582*cdf0e10cSrcweir 583*cdf0e10cSrcweir #ifdef WNT 584*cdf0e10cSrcweir // hack: #31355# W.P. 585*cdf0e10cSrcweir Rectangle aRect( aLbHatchings.GetPosPixel(), aLbHatchings.GetSizePixel() ); 586*cdf0e10cSrcweir if( sal_True ) { // ??? overlapped with pDlg 587*cdf0e10cSrcweir // and srolling 588*cdf0e10cSrcweir Invalidate( aRect ); 589*cdf0e10cSrcweir //aLbHatchings.Invalidate(); 590*cdf0e10cSrcweir } 591*cdf0e10cSrcweir #endif 592*cdf0e10cSrcweir 593*cdf0e10cSrcweir // Flag fuer modifiziert setzen 594*cdf0e10cSrcweir *pnHatchingListState |= CT_MODIFIED; 595*cdf0e10cSrcweir 596*cdf0e10cSrcweir ChangeHatchHdl_Impl( this ); 597*cdf0e10cSrcweir } 598*cdf0e10cSrcweir 599*cdf0e10cSrcweir // Status der Buttons ermitteln 600*cdf0e10cSrcweir if( pHatchingList->Count() ) 601*cdf0e10cSrcweir { 602*cdf0e10cSrcweir aBtnModify.Enable(); 603*cdf0e10cSrcweir aBtnDelete.Enable(); 604*cdf0e10cSrcweir aBtnSave.Enable(); 605*cdf0e10cSrcweir } 606*cdf0e10cSrcweir return 0L; 607*cdf0e10cSrcweir } 608*cdf0e10cSrcweir 609*cdf0e10cSrcweir //------------------------------------------------------------------------ 610*cdf0e10cSrcweir 611*cdf0e10cSrcweir IMPL_LINK( SvxHatchTabPage, ClickModifyHdl_Impl, void *, EMPTYARG ) 612*cdf0e10cSrcweir { 613*cdf0e10cSrcweir sal_uInt16 nPos = aLbHatchings.GetSelectEntryPos(); 614*cdf0e10cSrcweir 615*cdf0e10cSrcweir if ( nPos != LISTBOX_ENTRY_NOTFOUND ) 616*cdf0e10cSrcweir { 617*cdf0e10cSrcweir ResMgr& rMgr = CUI_MGR(); 618*cdf0e10cSrcweir String aNewName( SVX_RES( RID_SVXSTR_HATCH ) ); 619*cdf0e10cSrcweir String aDesc( CUI_RES( RID_SVXSTR_DESC_HATCH ) ); 620*cdf0e10cSrcweir String aName( pHatchingList->GetHatch( nPos )->GetName() ); 621*cdf0e10cSrcweir String aOldName = aName; 622*cdf0e10cSrcweir 623*cdf0e10cSrcweir SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); 624*cdf0e10cSrcweir DBG_ASSERT(pFact, "Dialogdiet fail!");//CHINA001 625*cdf0e10cSrcweir AbstractSvxNameDialog* pDlg = pFact->CreateSvxNameDialog( DLGWIN, aName, aDesc ); 626*cdf0e10cSrcweir DBG_ASSERT(pDlg, "Dialogdiet fail!");//CHINA001 627*cdf0e10cSrcweir 628*cdf0e10cSrcweir long nCount = pHatchingList->Count(); 629*cdf0e10cSrcweir sal_Bool bDifferent = sal_False; 630*cdf0e10cSrcweir sal_Bool bLoop = sal_True; 631*cdf0e10cSrcweir while( bLoop && pDlg->Execute() == RET_OK ) 632*cdf0e10cSrcweir { 633*cdf0e10cSrcweir pDlg->GetName( aName ); 634*cdf0e10cSrcweir bDifferent = sal_True; 635*cdf0e10cSrcweir 636*cdf0e10cSrcweir for( long i = 0; i < nCount && bDifferent; i++ ) 637*cdf0e10cSrcweir { 638*cdf0e10cSrcweir if( aName == pHatchingList->GetHatch( i )->GetName() && 639*cdf0e10cSrcweir aName != aOldName ) 640*cdf0e10cSrcweir bDifferent = sal_False; 641*cdf0e10cSrcweir } 642*cdf0e10cSrcweir 643*cdf0e10cSrcweir if( bDifferent ) 644*cdf0e10cSrcweir { 645*cdf0e10cSrcweir bLoop = sal_False; 646*cdf0e10cSrcweir XHatch aXHatch( aLbLineColor.GetSelectEntryColor(), 647*cdf0e10cSrcweir (XHatchStyle) aLbLineType.GetSelectEntryPos(), 648*cdf0e10cSrcweir GetCoreValue( aMtrDistance, ePoolUnit ), 649*cdf0e10cSrcweir static_cast<long>(aMtrAngle.GetValue() * 10) ); 650*cdf0e10cSrcweir 651*cdf0e10cSrcweir XHatchEntry* pEntry = new XHatchEntry( aXHatch, aName ); 652*cdf0e10cSrcweir 653*cdf0e10cSrcweir delete pHatchingList->Replace( pEntry, nPos ); 654*cdf0e10cSrcweir 655*cdf0e10cSrcweir aLbHatchings.Modify( pEntry, nPos ); 656*cdf0e10cSrcweir 657*cdf0e10cSrcweir aLbHatchings.SelectEntryPos( nPos ); 658*cdf0e10cSrcweir 659*cdf0e10cSrcweir // Werte sichern fuer Changes-Erkennung ( -> Methode ) 660*cdf0e10cSrcweir aMtrDistance.SaveValue(); 661*cdf0e10cSrcweir aMtrAngle.SaveValue(); 662*cdf0e10cSrcweir aLbLineType.SaveValue(); 663*cdf0e10cSrcweir aLbLineColor.SaveValue(); 664*cdf0e10cSrcweir aLbHatchings.SaveValue(); 665*cdf0e10cSrcweir 666*cdf0e10cSrcweir // Flag fuer modifiziert setzen 667*cdf0e10cSrcweir *pnHatchingListState |= CT_MODIFIED; 668*cdf0e10cSrcweir } 669*cdf0e10cSrcweir else 670*cdf0e10cSrcweir { 671*cdf0e10cSrcweir WarningBox aBox( DLGWIN, WinBits( WB_OK ),String( ResId( RID_SVXSTR_WARN_NAME_DUPLICATE, rMgr ) ) ); 672*cdf0e10cSrcweir aBox.SetHelpId( HID_WARN_NAME_DUPLICATE ); 673*cdf0e10cSrcweir aBox.Execute(); 674*cdf0e10cSrcweir } 675*cdf0e10cSrcweir } 676*cdf0e10cSrcweir delete( pDlg ); 677*cdf0e10cSrcweir } 678*cdf0e10cSrcweir return 0L; 679*cdf0e10cSrcweir } 680*cdf0e10cSrcweir 681*cdf0e10cSrcweir //------------------------------------------------------------------------ 682*cdf0e10cSrcweir 683*cdf0e10cSrcweir IMPL_LINK( SvxHatchTabPage, ClickDeleteHdl_Impl, void *, EMPTYARG ) 684*cdf0e10cSrcweir { 685*cdf0e10cSrcweir sal_uInt16 nPos = aLbHatchings.GetSelectEntryPos(); 686*cdf0e10cSrcweir 687*cdf0e10cSrcweir if( nPos != LISTBOX_ENTRY_NOTFOUND ) 688*cdf0e10cSrcweir { 689*cdf0e10cSrcweir QueryBox aQueryBox( DLGWIN, WinBits( WB_YES_NO | WB_DEF_NO ), 690*cdf0e10cSrcweir String( CUI_RES( RID_SVXSTR_ASK_DEL_HATCH ) ) ); 691*cdf0e10cSrcweir 692*cdf0e10cSrcweir if( aQueryBox.Execute() == RET_YES ) 693*cdf0e10cSrcweir { 694*cdf0e10cSrcweir delete pHatchingList->Remove( nPos ); 695*cdf0e10cSrcweir aLbHatchings.RemoveEntry( nPos ); 696*cdf0e10cSrcweir aLbHatchings.SelectEntryPos( 0 ); 697*cdf0e10cSrcweir 698*cdf0e10cSrcweir aCtlPreview.Invalidate(); 699*cdf0e10cSrcweir 700*cdf0e10cSrcweir ChangeHatchHdl_Impl( this ); 701*cdf0e10cSrcweir 702*cdf0e10cSrcweir // Flag fuer modifiziert setzen 703*cdf0e10cSrcweir *pnHatchingListState |= CT_MODIFIED; 704*cdf0e10cSrcweir } 705*cdf0e10cSrcweir } 706*cdf0e10cSrcweir // Status der Buttons ermitteln 707*cdf0e10cSrcweir if( !pHatchingList->Count() ) 708*cdf0e10cSrcweir { 709*cdf0e10cSrcweir aBtnModify.Disable(); 710*cdf0e10cSrcweir aBtnDelete.Disable(); 711*cdf0e10cSrcweir aBtnSave.Disable(); 712*cdf0e10cSrcweir } 713*cdf0e10cSrcweir return 0L; 714*cdf0e10cSrcweir } 715*cdf0e10cSrcweir 716*cdf0e10cSrcweir // ----------------------------------------------------------------------- 717*cdf0e10cSrcweir 718*cdf0e10cSrcweir IMPL_LINK( SvxHatchTabPage, ClickLoadHdl_Impl, void *, EMPTYARG ) 719*cdf0e10cSrcweir { 720*cdf0e10cSrcweir ResMgr& rMgr = CUI_MGR(); 721*cdf0e10cSrcweir sal_uInt16 nReturn = RET_YES; 722*cdf0e10cSrcweir 723*cdf0e10cSrcweir if ( *pnHatchingListState & CT_MODIFIED ) 724*cdf0e10cSrcweir { 725*cdf0e10cSrcweir nReturn = WarningBox( DLGWIN, WinBits( WB_YES_NO_CANCEL ), 726*cdf0e10cSrcweir String( ResId( RID_SVXSTR_WARN_TABLE_OVERWRITE, rMgr ) ) ).Execute(); 727*cdf0e10cSrcweir 728*cdf0e10cSrcweir if ( nReturn == RET_YES ) 729*cdf0e10cSrcweir pHatchingList->Save(); 730*cdf0e10cSrcweir } 731*cdf0e10cSrcweir 732*cdf0e10cSrcweir if ( nReturn != RET_CANCEL ) 733*cdf0e10cSrcweir { 734*cdf0e10cSrcweir ::sfx2::FileDialogHelper aDlg( 735*cdf0e10cSrcweir com::sun::star::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE, 736*cdf0e10cSrcweir 0 ); 737*cdf0e10cSrcweir String aStrFilterType( RTL_CONSTASCII_USTRINGPARAM( "*.soh" ) ); 738*cdf0e10cSrcweir aDlg.AddFilter( aStrFilterType, aStrFilterType ); 739*cdf0e10cSrcweir INetURLObject aFile( SvtPathOptions().GetPalettePath() ); 740*cdf0e10cSrcweir aDlg.SetDisplayDirectory( aFile.GetMainURL( INetURLObject::NO_DECODE ) ); 741*cdf0e10cSrcweir 742*cdf0e10cSrcweir if( aDlg.Execute() == ERRCODE_NONE ) 743*cdf0e10cSrcweir { 744*cdf0e10cSrcweir INetURLObject aURL( aDlg.GetPath() ); 745*cdf0e10cSrcweir INetURLObject aPathURL( aURL ); 746*cdf0e10cSrcweir 747*cdf0e10cSrcweir aPathURL.removeSegment(); 748*cdf0e10cSrcweir aPathURL.removeFinalSlash(); 749*cdf0e10cSrcweir 750*cdf0e10cSrcweir // Liste speichern 751*cdf0e10cSrcweir XHatchList* pHatchList = new XHatchList( aPathURL.GetMainURL( INetURLObject::NO_DECODE ), pXPool ); 752*cdf0e10cSrcweir pHatchList->SetName( aURL.getName() ); 753*cdf0e10cSrcweir if( pHatchList->Load() ) 754*cdf0e10cSrcweir { 755*cdf0e10cSrcweir if( pHatchList ) 756*cdf0e10cSrcweir { 757*cdf0e10cSrcweir // Pruefen, ob Tabelle geloescht werden darf: 758*cdf0e10cSrcweir if( pHatchingList != ( (SvxAreaTabDialog*) DLGWIN )->GetHatchingList() ) 759*cdf0e10cSrcweir delete pHatchingList; 760*cdf0e10cSrcweir 761*cdf0e10cSrcweir pHatchingList = pHatchList; 762*cdf0e10cSrcweir ( (SvxAreaTabDialog*) DLGWIN )->SetNewHatchingList( pHatchingList ); 763*cdf0e10cSrcweir 764*cdf0e10cSrcweir aLbHatchings.Clear(); 765*cdf0e10cSrcweir aLbHatchings.Fill( pHatchingList ); 766*cdf0e10cSrcweir Reset( rOutAttrs ); 767*cdf0e10cSrcweir 768*cdf0e10cSrcweir pHatchingList->SetName( aURL.getName() ); 769*cdf0e10cSrcweir 770*cdf0e10cSrcweir // Ermitteln (evtl. abschneiden) des Namens und in 771*cdf0e10cSrcweir // der GroupBox darstellen 772*cdf0e10cSrcweir String aString( ResId( RID_SVXSTR_TABLE, rMgr ) ); 773*cdf0e10cSrcweir aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) ); 774*cdf0e10cSrcweir 775*cdf0e10cSrcweir if ( aURL.getBase().getLength() > 18 ) 776*cdf0e10cSrcweir { 777*cdf0e10cSrcweir aString += String(aURL.getBase()).Copy( 0, 15 ); 778*cdf0e10cSrcweir aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) ); 779*cdf0e10cSrcweir } 780*cdf0e10cSrcweir else 781*cdf0e10cSrcweir aString += String(aURL.getBase()); 782*cdf0e10cSrcweir 783*cdf0e10cSrcweir // Flag fuer gewechselt setzen 784*cdf0e10cSrcweir *pnHatchingListState |= CT_CHANGED; 785*cdf0e10cSrcweir // Flag fuer modifiziert entfernen 786*cdf0e10cSrcweir *pnHatchingListState &= ~CT_MODIFIED; 787*cdf0e10cSrcweir } 788*cdf0e10cSrcweir } 789*cdf0e10cSrcweir else 790*cdf0e10cSrcweir ErrorBox( DLGWIN, WinBits( WB_OK ), 791*cdf0e10cSrcweir String( ResId( RID_SVXSTR_READ_DATA_ERROR, rMgr ) ) ).Execute(); 792*cdf0e10cSrcweir } 793*cdf0e10cSrcweir } 794*cdf0e10cSrcweir 795*cdf0e10cSrcweir // Status der Buttons ermitteln 796*cdf0e10cSrcweir if ( pHatchingList->Count() ) 797*cdf0e10cSrcweir { 798*cdf0e10cSrcweir aBtnModify.Enable(); 799*cdf0e10cSrcweir aBtnDelete.Enable(); 800*cdf0e10cSrcweir aBtnSave.Enable(); 801*cdf0e10cSrcweir } 802*cdf0e10cSrcweir else 803*cdf0e10cSrcweir { 804*cdf0e10cSrcweir aBtnModify.Disable(); 805*cdf0e10cSrcweir aBtnDelete.Disable(); 806*cdf0e10cSrcweir aBtnSave.Disable(); 807*cdf0e10cSrcweir } 808*cdf0e10cSrcweir return 0L; 809*cdf0e10cSrcweir } 810*cdf0e10cSrcweir 811*cdf0e10cSrcweir // ----------------------------------------------------------------------- 812*cdf0e10cSrcweir 813*cdf0e10cSrcweir IMPL_LINK( SvxHatchTabPage, ClickSaveHdl_Impl, void *, EMPTYARG ) 814*cdf0e10cSrcweir { 815*cdf0e10cSrcweir ::sfx2::FileDialogHelper aDlg( 816*cdf0e10cSrcweir com::sun::star::ui::dialogs::TemplateDescription::FILESAVE_SIMPLE, 0 ); 817*cdf0e10cSrcweir String aStrFilterType( RTL_CONSTASCII_USTRINGPARAM( "*.soh" ) ); 818*cdf0e10cSrcweir aDlg.AddFilter( aStrFilterType, aStrFilterType ); 819*cdf0e10cSrcweir 820*cdf0e10cSrcweir INetURLObject aFile( SvtPathOptions().GetPalettePath() ); 821*cdf0e10cSrcweir DBG_ASSERT( aFile.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" ); 822*cdf0e10cSrcweir 823*cdf0e10cSrcweir if( pHatchingList->GetName().Len() ) 824*cdf0e10cSrcweir { 825*cdf0e10cSrcweir aFile.Append( pHatchingList->GetName() ); 826*cdf0e10cSrcweir 827*cdf0e10cSrcweir if( !aFile.getExtension().getLength() ) 828*cdf0e10cSrcweir aFile.SetExtension( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "soh" ) ) ); 829*cdf0e10cSrcweir } 830*cdf0e10cSrcweir 831*cdf0e10cSrcweir aDlg.SetDisplayDirectory( aFile.GetMainURL( INetURLObject::NO_DECODE ) ); 832*cdf0e10cSrcweir if ( aDlg.Execute() == ERRCODE_NONE ) 833*cdf0e10cSrcweir { 834*cdf0e10cSrcweir INetURLObject aURL( aDlg.GetPath() ); 835*cdf0e10cSrcweir INetURLObject aPathURL( aURL ); 836*cdf0e10cSrcweir 837*cdf0e10cSrcweir aPathURL.removeSegment(); 838*cdf0e10cSrcweir aPathURL.removeFinalSlash(); 839*cdf0e10cSrcweir 840*cdf0e10cSrcweir pHatchingList->SetName( aURL.getName() ); 841*cdf0e10cSrcweir pHatchingList->SetPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) ); 842*cdf0e10cSrcweir 843*cdf0e10cSrcweir if( pHatchingList->Save() ) 844*cdf0e10cSrcweir { 845*cdf0e10cSrcweir // Ermitteln (evtl. abschneiden) des Namens und in 846*cdf0e10cSrcweir // der GroupBox darstellen 847*cdf0e10cSrcweir String aString( CUI_RES( RID_SVXSTR_TABLE ) ); 848*cdf0e10cSrcweir aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) ); 849*cdf0e10cSrcweir 850*cdf0e10cSrcweir if ( aURL.getBase().getLength() > 18 ) 851*cdf0e10cSrcweir { 852*cdf0e10cSrcweir aString += String(aURL.getBase()).Copy( 0, 15 ); 853*cdf0e10cSrcweir aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) ); 854*cdf0e10cSrcweir } 855*cdf0e10cSrcweir else 856*cdf0e10cSrcweir aString += String(aURL.getBase()); 857*cdf0e10cSrcweir 858*cdf0e10cSrcweir // Flag fuer gespeichert setzen 859*cdf0e10cSrcweir *pnHatchingListState |= CT_SAVED; 860*cdf0e10cSrcweir // Flag fuer modifiziert entfernen 861*cdf0e10cSrcweir *pnHatchingListState &= ~CT_MODIFIED; 862*cdf0e10cSrcweir } 863*cdf0e10cSrcweir else 864*cdf0e10cSrcweir { 865*cdf0e10cSrcweir ErrorBox( DLGWIN, WinBits( WB_OK ), 866*cdf0e10cSrcweir String( CUI_RES( RID_SVXSTR_WRITE_DATA_ERROR ) ) ).Execute(); 867*cdf0e10cSrcweir } 868*cdf0e10cSrcweir } 869*cdf0e10cSrcweir 870*cdf0e10cSrcweir return 0L; 871*cdf0e10cSrcweir } 872*cdf0e10cSrcweir 873*cdf0e10cSrcweir //------------------------------------------------------------------------ 874*cdf0e10cSrcweir 875*cdf0e10cSrcweir void SvxHatchTabPage::PointChanged( Window* pWindow, RECT_POINT eRcPt ) 876*cdf0e10cSrcweir { 877*cdf0e10cSrcweir if( pWindow == &aCtlAngle ) 878*cdf0e10cSrcweir { 879*cdf0e10cSrcweir switch( eRcPt ) 880*cdf0e10cSrcweir { 881*cdf0e10cSrcweir case RP_LT: aMtrAngle.SetValue( 135 ); break; 882*cdf0e10cSrcweir case RP_MT: aMtrAngle.SetValue( 90 ); break; 883*cdf0e10cSrcweir case RP_RT: aMtrAngle.SetValue( 45 ); break; 884*cdf0e10cSrcweir case RP_LM: aMtrAngle.SetValue( 180 ); break; 885*cdf0e10cSrcweir case RP_RM: aMtrAngle.SetValue( 0 ); break; 886*cdf0e10cSrcweir case RP_LB: aMtrAngle.SetValue( 225 ); break; 887*cdf0e10cSrcweir case RP_MB: aMtrAngle.SetValue( 270 ); break; 888*cdf0e10cSrcweir case RP_RB: aMtrAngle.SetValue( 315 ); break; 889*cdf0e10cSrcweir case RP_MM: break; 890*cdf0e10cSrcweir } 891*cdf0e10cSrcweir ModifiedHdl_Impl( this ); 892*cdf0e10cSrcweir } 893*cdf0e10cSrcweir } 894*cdf0e10cSrcweir 895*cdf0e10cSrcweir 896*cdf0e10cSrcweir void SvxHatchTabPage::DataChanged( const DataChangedEvent& rDCEvt ) 897*cdf0e10cSrcweir { 898*cdf0e10cSrcweir if ( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) ) 899*cdf0e10cSrcweir aCtlPreview.SetDrawMode( GetSettings().GetStyleSettings().GetHighContrastMode() ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR ); 900*cdf0e10cSrcweir 901*cdf0e10cSrcweir SvxTabPage::DataChanged( rDCEvt ); 902*cdf0e10cSrcweir } 903*cdf0e10cSrcweir 904