summaryrefslogtreecommitdiff
path: root/svx/source/cui/tpgradnt.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source/cui/tpgradnt.cxx')
-rw-r--r--svx/source/cui/tpgradnt.cxx948
1 files changed, 0 insertions, 948 deletions
diff --git a/svx/source/cui/tpgradnt.cxx b/svx/source/cui/tpgradnt.cxx
deleted file mode 100644
index 99f8b357b8..0000000000
--- a/svx/source/cui/tpgradnt.cxx
+++ /dev/null
@@ -1,948 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: tpgradnt.cxx,v $
- * $Revision: 1.26 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-
-#ifdef SVX_DLLIMPLEMENTATION
-#undef SVX_DLLIMPLEMENTATION
-#endif
-
-// include ---------------------------------------------------------------
-#include <vcl/wrkwin.hxx>
-#include <tools/shl.hxx>
-#include <tools/urlobj.hxx>
-#include <vcl/msgbox.hxx>
-#include <svtools/pathoptions.hxx>
-#include <sfx2/app.hxx>
-#include <sfx2/filedlghelper.hxx>
-#include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
-
-#define _SVX_TPGRADNT_CXX
-
-#include <svx/dialogs.hrc>
-#include "helpid.hrc"
-
-#include "xattr.hxx"
-#include <svx/xtable.hxx>
-#include <svx/xpool.hxx>
-#include "drawitem.hxx"
-#include "cuitabarea.hxx"
-#include "tabarea.hrc"
-#include "defdlgname.hxx" //CHINA001 #include "dlgname.hxx"
-#include "dlgname.hrc"
-#include <svx/svxdlg.hxx> //CHINA001
-#include <svx/dialmgr.hxx>
-
-#define DLGWIN this->GetParent()->GetParent()
-
-#define BITMAP_WIDTH 32
-#define BITMAP_HEIGHT 12
-
-/*************************************************************************
-|*
-|* Dialog zum Aendern und Definieren der Farbverlaeufe
-|*
-\************************************************************************/
-
-SvxGradientTabPage::SvxGradientTabPage
-(
- Window* pParent,
- const SfxItemSet& rInAttrs
-) :
- SfxTabPage ( pParent, SVX_RES( RID_SVXPAGE_GRADIENT ), rInAttrs ),
-
- aFlProp ( this, SVX_RES( FL_PROP ) ),
- aFtType ( this, SVX_RES( FT_TYPE ) ),
- aLbGradientType ( this, SVX_RES( LB_GRADIENT_TYPES ) ),
- aFtCenterX ( this, SVX_RES( FT_CENTER_X ) ),
- aMtrCenterX ( this, SVX_RES( MTR_CENTER_X ) ),
- aFtCenterY ( this, SVX_RES( FT_CENTER_Y ) ),
- aMtrCenterY ( this, SVX_RES( MTR_CENTER_Y ) ),
- aFtAngle ( this, SVX_RES( FT_ANGLE ) ),
- aMtrAngle ( this, SVX_RES( MTR_ANGLE ) ),
- aFtBorder ( this, SVX_RES( FT_BORDER ) ),
- aMtrBorder ( this, SVX_RES( MTR_BORDER ) ),
- aFtColorFrom ( this, SVX_RES( FT_COLOR_FROM ) ),
- aLbColorFrom ( this, SVX_RES( LB_COLOR_FROM ) ),
- aMtrColorFrom ( this, SVX_RES( MTR_COLOR_FROM ) ),
- aFtColorTo ( this, SVX_RES( FT_COLOR_TO ) ),
- aLbColorTo ( this, SVX_RES( LB_COLOR_TO ) ),
- aMtrColorTo ( this, SVX_RES( MTR_COLOR_TO ) ),
- aLbGradients ( this, SVX_RES( LB_GRADIENTS ) ),
- aCtlPreview ( this, SVX_RES( CTL_PREVIEW ) ),
- aBtnAdd ( this, SVX_RES( BTN_ADD ) ),
- aBtnModify ( this, SVX_RES( BTN_MODIFY ) ),
- aBtnDelete ( this, SVX_RES( BTN_DELETE ) ),
- aBtnLoad ( this, SVX_RES( BTN_LOAD ) ),
- aBtnSave ( this, SVX_RES( BTN_SAVE ) ),
-
- rOutAttrs ( rInAttrs ),
-
- pColorTab( NULL ),
- pGradientList( NULL ),
-
- pXPool ( (XOutdevItemPool*) rInAttrs.GetPool() ),
- aXFStyleItem ( XFILL_GRADIENT ),
- aXGradientItem ( String(), XGradient( COL_BLACK, COL_WHITE ) ),
- aXFillAttr ( pXPool ),
- rXFSet ( aXFillAttr.GetItemSet() )
-{
- aBtnLoad.SetModeImage( Image( SVX_RES( RID_SVXIMG_LOAD_H ) ), BMP_COLOR_HIGHCONTRAST );
- aBtnSave.SetModeImage( Image( SVX_RES( RID_SVXIMG_SAVE_H ) ), BMP_COLOR_HIGHCONTRAST );
-
- FreeResource();
-
- // diese Page braucht ExchangeSupport
- SetExchangeSupport();
-
- // Solange NICHT vom Item unterstuetzt
-
- //aMtrColorTo.Disable();
- aMtrColorTo.SetValue( 100 );
- //aMtrColorFrom.Disable();
- aMtrColorFrom.SetValue( 100 );
-
- // Setzen des Output-Devices
- rXFSet.Put( aXFStyleItem );
- rXFSet.Put( aXGradientItem );
- aCtlPreview.SetAttributes( aXFillAttr.GetItemSet() );
-
- // Handler ueberladen
- aLbGradients.SetSelectHdl(
- LINK( this, SvxGradientTabPage, ChangeGradientHdl_Impl ) );
- aBtnAdd.SetClickHdl( LINK( this, SvxGradientTabPage, ClickAddHdl_Impl ) );
- aBtnModify.SetClickHdl(
- LINK( this, SvxGradientTabPage, ClickModifyHdl_Impl ) );
- aBtnDelete.SetClickHdl(
- LINK( this, SvxGradientTabPage, ClickDeleteHdl_Impl ) );
-
- Link aLink = LINK( this, SvxGradientTabPage, ModifiedHdl_Impl );
- aLbGradientType.SetSelectHdl( aLink );
- aMtrCenterX.SetModifyHdl( aLink );
- aMtrCenterY.SetModifyHdl( aLink );
- aMtrAngle.SetModifyHdl( aLink );
- aMtrBorder.SetModifyHdl( aLink );
- aMtrColorFrom.SetModifyHdl( aLink );
- aLbColorFrom.SetSelectHdl( aLink );
- aMtrColorTo.SetModifyHdl( aLink );
- aLbColorTo.SetSelectHdl( aLink );
-
- aBtnLoad.SetClickHdl(
- LINK( this, SvxGradientTabPage, ClickLoadHdl_Impl ) );
- aBtnSave.SetClickHdl(
- LINK( this, SvxGradientTabPage, ClickSaveHdl_Impl ) );
-
- // #i76307# always paint the preview in LTR, because this is what the document does
- aCtlPreview.EnableRTL( FALSE );
-}
-
-// -----------------------------------------------------------------------
-
-void SvxGradientTabPage::Construct()
-{
- // Farbtabelle
- aLbColorFrom.Fill( pColorTab );
- aLbColorTo.CopyEntries( aLbColorFrom );
-
- // Farbverlauftabelle
- aLbGradients.Fill( pGradientList );
-}
-
-// -----------------------------------------------------------------------
-
-void SvxGradientTabPage::ActivatePage( const SfxItemSet& )
-{
- USHORT nPos;
- USHORT nCount;
-
- if( *pDlgType == 0 ) // Flaechen-Dialog
- {
- *pbAreaTP = FALSE;
-
- if( pColorTab )
- {
- // ColorTable
- if( *pnColorTableState & CT_CHANGED ||
- *pnColorTableState & CT_MODIFIED )
- {
- if( *pnColorTableState & CT_CHANGED )
- pColorTab = ( (SvxAreaTabDialog*) DLGWIN )->GetNewColorTable();
-
- // LbColorFrom
- nPos = aLbColorFrom.GetSelectEntryPos();
- aLbColorFrom.Clear();
- aLbColorFrom.Fill( pColorTab );
- nCount = aLbColorFrom.GetEntryCount();
- if( nCount == 0 )
- ; // Dieser Fall sollte nicht auftreten
- else if( nCount <= nPos )
- aLbColorFrom.SelectEntryPos( 0 );
- else
- aLbColorFrom.SelectEntryPos( nPos );
-
- // LbColorTo
- nPos = aLbColorTo.GetSelectEntryPos();
- aLbColorTo.Clear();
- aLbColorTo.CopyEntries( aLbColorFrom );
- nCount = aLbColorTo.GetEntryCount();
- if( nCount == 0 )
- ; // Dieser Fall sollte nicht auftreten
- else if( nCount <= nPos )
- aLbColorTo.SelectEntryPos( 0 );
- else
- aLbColorTo.SelectEntryPos( nPos );
-
- ModifiedHdl_Impl( this );
- }
-
- // Ermitteln (evtl. abschneiden) des Namens und in
- // der GroupBox darstellen
- String aString( SVX_RES( RID_SVXSTR_TABLE ) ); aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) );
- INetURLObject aURL( pGradientList->GetPath() );
-
- aURL.Append( pGradientList->GetName() );
- DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
-
- if ( aURL.getBase().getLength() > 18 )
- {
- aString += String(aURL.getBase()).Copy( 0, 15 );
- aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) );
- }
- else
- aString += String(aURL.getBase());
-
- if ( *pPageType == PT_GRADIENT && *pPos != LISTBOX_ENTRY_NOTFOUND )
- {
- aLbGradients.SelectEntryPos( *pPos );
- }
- // Farben koennten geloescht worden sein
- ChangeGradientHdl_Impl( this );
-
- *pPageType = PT_GRADIENT;
- *pPos = LISTBOX_ENTRY_NOTFOUND;
- }
- }
-}
-
-// -----------------------------------------------------------------------
-
-int SvxGradientTabPage::DeactivatePage( SfxItemSet* _pSet )
-{
- if( CheckChanges_Impl() == -1L )
- return KEEP_PAGE;
-
- if( _pSet )
- FillItemSet( *_pSet );
-
- return LEAVE_PAGE;
-}
-
-// -----------------------------------------------------------------------
-
-long SvxGradientTabPage::CheckChanges_Impl()
-{
- // wird hier benutzt, um Aenderungen NICHT zu verlieren
- XGradient aTmpGradient( aLbColorFrom.GetSelectEntryColor(),
- aLbColorTo.GetSelectEntryColor(),
- (XGradientStyle) aLbGradientType.GetSelectEntryPos(),
- static_cast<long>(aMtrAngle.GetValue() * 10), // sollte in Resource geaendert werden
- (USHORT) aMtrCenterX.GetValue(),
- (USHORT) aMtrCenterY.GetValue(),
- (USHORT) aMtrBorder.GetValue(),
- (USHORT) aMtrColorFrom.GetValue(),
- (USHORT) aMtrColorTo.GetValue() );
-
- USHORT nPos = aLbGradients.GetSelectEntryPos();
- if( nPos != LISTBOX_ENTRY_NOTFOUND )
- {
- XGradient aGradient = pGradientList->GetGradient( nPos )->GetGradient();
- String aString = aLbGradients.GetSelectEntry();
-
- if( !( aTmpGradient == aGradient ) )
- {
- ResMgr& rMgr = DIALOG_MGR();
- Image aWarningBoxImage = WarningBox::GetStandardImage();
- //CHINA001 SvxMessDialog aMessDlg( DLGWIN,
- //CHINA001 String( ResId( RID_SVXSTR_GRADIENT, rMgr ) ),
- //CHINA001 String( ResId( RID_SVXSTR_ASK_CHANGE_GRADIENT, rMgr ) ),
- //CHINA001 &aWarningBoxImage );
- SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
- DBG_ASSERT(pFact, "Dialogdiet fail!");//CHINA001
- AbstractSvxMessDialog* aMessDlg = pFact->CreateSvxMessDialog( DLGWIN, RID_SVXDLG_MESSBOX,
- String( ResId( RID_SVXSTR_GRADIENT, rMgr ) ),
- String( ResId( RID_SVXSTR_ASK_CHANGE_GRADIENT, rMgr ) ),
- &aWarningBoxImage );
- DBG_ASSERT(aMessDlg, "Dialogdiet fail!");//CHINA001
- aMessDlg->SetButtonText( MESS_BTN_1, //CHINA001 aMessDlg.SetButtonText( MESS_BTN_1,
- String( ResId( RID_SVXSTR_CHANGE, rMgr ) ) );
- aMessDlg->SetButtonText( MESS_BTN_2, //CHINA001 aMessDlg.SetButtonText( MESS_BTN_2,
- String( ResId( RID_SVXSTR_ADD, rMgr ) ) );
-
- short nRet = aMessDlg->Execute(); //CHINA001 short nRet = aMessDlg.Execute();
-
- switch( nRet )
- {
- case RET_BTN_1: // Aendern
- {
- ClickModifyHdl_Impl( this );
- aGradient = pGradientList->GetGradient( nPos )->GetGradient();
- }
- break;
-
- case RET_BTN_2: // Hinzufuegen
- {
- ClickAddHdl_Impl( this );
- nPos = aLbGradients.GetSelectEntryPos();
- aGradient = pGradientList->GetGradient( nPos )->GetGradient();
- }
- break;
-
- case RET_CANCEL:
- // return( -1L ); <-- wuerde die Seite nicht verlassen
- break;
- // return( TRUE ); // Abbruch
- }
- delete aMessDlg; //add by CHINA001
- }
- }
- nPos = aLbGradients.GetSelectEntryPos();
- if( nPos != LISTBOX_ENTRY_NOTFOUND )
- {
- *pPos = nPos;
- }
- return 0L;
-}
-
-// -----------------------------------------------------------------------
-
-BOOL SvxGradientTabPage::FillItemSet( SfxItemSet& rSet )
-{
- if( *pDlgType == 0 && *pPageType == PT_GRADIENT && *pbAreaTP == FALSE )
- {
- // CheckChanges(); <-- doppelte Abfrage ?
-
- XGradient* pXGradient = NULL;
- String aString;
- USHORT nPos = aLbGradients.GetSelectEntryPos();
- if( nPos != LISTBOX_ENTRY_NOTFOUND )
- {
- pXGradient = new XGradient( pGradientList->GetGradient( nPos )->GetGradient() );
- aString = aLbGradients.GetSelectEntry();
-
- }
- else
- // Farbverlauf wurde (unbekannt) uebergeben
- {
- pXGradient = new XGradient( aLbColorFrom.GetSelectEntryColor(),
- aLbColorTo.GetSelectEntryColor(),
- (XGradientStyle) aLbGradientType.GetSelectEntryPos(),
- static_cast<long>(aMtrAngle.GetValue() * 10), // sollte in Resource geaendert werden
- (USHORT) aMtrCenterX.GetValue(),
- (USHORT) aMtrCenterY.GetValue(),
- (USHORT) aMtrBorder.GetValue(),
- (USHORT) aMtrColorFrom.GetValue(),
- (USHORT) aMtrColorTo.GetValue() );
- }
- DBG_ASSERT( pXGradient, "XGradient konnte nicht erzeugt werden" );
- rSet.Put( XFillStyleItem( XFILL_GRADIENT ) );
- rSet.Put( XFillGradientItem( aString, *pXGradient ) );
-
- delete pXGradient;
- }
- return TRUE;
-}
-
-// -----------------------------------------------------------------------
-
-void SvxGradientTabPage::Reset( const SfxItemSet& )
-{
- // aLbGradients.SelectEntryPos( 0 );
- ChangeGradientHdl_Impl( this );
-
- // Status der Buttons ermitteln
- if( pGradientList->Count() )
- {
- aBtnModify.Enable();
- aBtnDelete.Enable();
- aBtnSave.Enable();
- }
- else
- {
- aBtnModify.Disable();
- aBtnDelete.Disable();
- aBtnSave.Disable();
- }
-}
-
-// -----------------------------------------------------------------------
-
-SfxTabPage* SvxGradientTabPage::Create( Window* pWindow,
- const SfxItemSet& rOutAttrs )
-{
- return new SvxGradientTabPage( pWindow, rOutAttrs );
-}
-
-//------------------------------------------------------------------------
-
-IMPL_LINK( SvxGradientTabPage, ModifiedHdl_Impl, void *, pControl )
-{
- XGradientStyle eXGS = (XGradientStyle) aLbGradientType.GetSelectEntryPos();
-
- XGradient aXGradient( aLbColorFrom.GetSelectEntryColor(),
- aLbColorTo.GetSelectEntryColor(),
- eXGS,
- static_cast<long>(aMtrAngle.GetValue() * 10), // sollte in Resource geaendert werden
- (USHORT) aMtrCenterX.GetValue(),
- (USHORT) aMtrCenterY.GetValue(),
- (USHORT) aMtrBorder.GetValue(),
- (USHORT) aMtrColorFrom.GetValue(),
- (USHORT) aMtrColorTo.GetValue() );
-
- // Enablen/Disablen von Controls
- if( pControl == &aLbGradientType || pControl == this )
- SetControlState_Impl( eXGS );
-
- // Anzeigen im XOutDev
- rXFSet.Put( XFillGradientItem( String(), aXGradient ) );
- aCtlPreview.SetAttributes( aXFillAttr.GetItemSet() );
-
- aCtlPreview.Invalidate();
-
- return 0L;
-}
-
-//------------------------------------------------------------------------
-
-IMPL_LINK( SvxGradientTabPage, ClickAddHdl_Impl, void *, EMPTYARG )
-{
- ResMgr& rMgr = DIALOG_MGR();
- String aNewName( ResId( RID_SVXSTR_GRADIENT, rMgr ) );
- String aDesc( ResId( RID_SVXSTR_DESC_GRADIENT, rMgr ) );
- String aName;
-
- long nCount = pGradientList->Count();
- long j = 1;
- BOOL bDifferent = FALSE;
-
- while( !bDifferent )
- {
- aName = aNewName;
- aName += sal_Unicode(' ');
- aName += UniString::CreateFromInt32( j++ );
- bDifferent = TRUE;
-
- for( long i = 0; i < nCount && bDifferent; i++ )
- if( aName == pGradientList->GetGradient( i )->GetName() )
- bDifferent = FALSE;
- }
-
- //CHINA001 SvxNameDialog* pDlg = new SvxNameDialog( DLGWIN, aName, aDesc );
- SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
- DBG_ASSERT(pFact, "Dialogdiet fail!");//CHINA001
- AbstractSvxNameDialog* pDlg = pFact->CreateSvxNameDialog( DLGWIN, aName, aDesc, RID_SVXDLG_NAME );
- DBG_ASSERT(pDlg, "Dialogdiet fail!");//CHINA001
- WarningBox* pWarnBox = NULL;
- USHORT nError = RID_SVXSTR_WARN_NAME_DUPLICATE;
-
- while( pDlg->Execute() == RET_OK )
- {
- pDlg->GetName( aName );
-
- bDifferent = TRUE;
-
- for( long i = 0; i < nCount && bDifferent; i++ )
- if( aName == pGradientList->GetGradient( i )->GetName() )
- bDifferent = FALSE;
-
- if( bDifferent )
- {
- nError = 0;
- break;
- }
-
- if( !pWarnBox )
- {
- pWarnBox = new WarningBox( DLGWIN,
- WinBits( WB_OK_CANCEL ),
- String( ResId( nError, rMgr ) ) );
- pWarnBox->SetHelpId( HID_WARN_NAME_DUPLICATE );
- }
-
- if( pWarnBox->Execute() != RET_OK )
- break;
- }
- //Rectangle aDlgRect( pDlg->GetPosPixel(), pDlg->GetSizePixel() );
- delete pDlg;
- delete pWarnBox;
-
- if( !nError )
- {
- XGradient aXGradient( aLbColorFrom.GetSelectEntryColor(),
- aLbColorTo.GetSelectEntryColor(),
- (XGradientStyle) aLbGradientType.GetSelectEntryPos(),
- static_cast<long>(aMtrAngle.GetValue() * 10), // sollte in Resource geaendert werden
- (USHORT) aMtrCenterX.GetValue(),
- (USHORT) aMtrCenterY.GetValue(),
- (USHORT) aMtrBorder.GetValue(),
- (USHORT) aMtrColorFrom.GetValue(),
- (USHORT) aMtrColorTo.GetValue() );
- XGradientEntry* pEntry = new XGradientEntry( aXGradient, aName );
-
- pGradientList->Insert( pEntry, nCount );
-
- aLbGradients.Append( pEntry );
-
- aLbGradients.SelectEntryPos( aLbGradients.GetEntryCount() - 1 );
-
-#ifdef WNT
- // hack: #31355# W.P.
- Rectangle aRect( aLbGradients.GetPosPixel(), aLbGradients.GetSizePixel() );
- if( TRUE ) { // ??? overlapped with pDlg
- // and srolling
- Invalidate( aRect );
- //aLbGradients.Invalidate();
- }
-#endif
-
- // Flag fuer modifiziert setzen
- *pnGradientListState |= CT_MODIFIED;
-
- ChangeGradientHdl_Impl( this );
- }
-
- // Status der Buttons ermitteln
- if( pGradientList->Count() )
- {
- aBtnModify.Enable();
- aBtnDelete.Enable();
- aBtnSave.Enable();
- }
- return 0L;
-}
-
-//------------------------------------------------------------------------
-
-IMPL_LINK( SvxGradientTabPage, ClickModifyHdl_Impl, void *, EMPTYARG )
-{
- USHORT nPos = aLbGradients.GetSelectEntryPos();
-
- if ( nPos != LISTBOX_ENTRY_NOTFOUND )
- {
- ResMgr& rMgr = DIALOG_MGR();
- String aNewName( ResId( RID_SVXSTR_GRADIENT, rMgr ) );
- String aDesc( ResId( RID_SVXSTR_DESC_GRADIENT, rMgr ) );
- String aName( pGradientList->GetGradient( nPos )->GetName() );
- String aOldName = aName;
-
- //CHINA001 SvxNameDialog* pDlg = new SvxNameDialog( DLGWIN, aName, aDesc );
- SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
- DBG_ASSERT(pFact, "Dialogdiet fail!");//CHINA001
- AbstractSvxNameDialog* pDlg = pFact->CreateSvxNameDialog( DLGWIN, aName, aDesc, RID_SVXDLG_NAME );
- DBG_ASSERT(pDlg, "Dialogdiet fail!");//CHINA001
-
- long nCount = pGradientList->Count();
- BOOL bDifferent = FALSE;
- BOOL bLoop = TRUE;
-
- while( bLoop && pDlg->Execute() == RET_OK )
- {
- pDlg->GetName( aName );
- bDifferent = TRUE;
-
- for( long i = 0; i < nCount && bDifferent; i++ )
- {
- if( aName == pGradientList->GetGradient( i )->GetName() &&
- aName != aOldName )
- bDifferent = FALSE;
- }
-
- if( bDifferent )
- {
- bLoop = FALSE;
- XGradient aXGradient( aLbColorFrom.GetSelectEntryColor(),
- aLbColorTo.GetSelectEntryColor(),
- (XGradientStyle) aLbGradientType.GetSelectEntryPos(),
- static_cast<long>(aMtrAngle.GetValue() * 10), // sollte in Resource geaendert werden
- (USHORT) aMtrCenterX.GetValue(),
- (USHORT) aMtrCenterY.GetValue(),
- (USHORT) aMtrBorder.GetValue(),
- (USHORT) aMtrColorFrom.GetValue(),
- (USHORT) aMtrColorTo.GetValue() );
-
- XGradientEntry* pEntry = new XGradientEntry( aXGradient, aName );
-
- delete pGradientList->Replace( pEntry, nPos );
-
- aLbGradients.Modify( pEntry, nPos );
-
- aLbGradients.SelectEntryPos( nPos );
-
- // Flag fuer modifiziert setzen
- *pnGradientListState |= CT_MODIFIED;
- }
- else
- {
- WarningBox aBox( DLGWIN, WinBits( WB_OK ),String( ResId( RID_SVXSTR_WARN_NAME_DUPLICATE, rMgr ) ) );
- aBox.SetHelpId( HID_WARN_NAME_DUPLICATE );
- aBox.Execute();
- }
-
- }
- delete pDlg;
- }
- return 0L;
-}
-
-//------------------------------------------------------------------------
-
-IMPL_LINK( SvxGradientTabPage, ClickDeleteHdl_Impl, void *, EMPTYARG )
-{
- USHORT nPos = aLbGradients.GetSelectEntryPos();
-
- if( nPos != LISTBOX_ENTRY_NOTFOUND )
- {
- QueryBox aQueryBox( DLGWIN, WinBits( WB_YES_NO | WB_DEF_NO ),
-//! SVX_RES( RID_SVXSTR_DEL_GRADIENT ),
- String( SVX_RES( RID_SVXSTR_ASK_DEL_GRADIENT ) ) );
-
- if ( aQueryBox.Execute() == RET_YES )
- {
- delete pGradientList->Remove( nPos );
- aLbGradients.RemoveEntry( nPos );
- aLbGradients.SelectEntryPos( 0 );
-
- aCtlPreview.Invalidate();
-
- ChangeGradientHdl_Impl( this );
-
- // Flag fuer modifiziert setzen
- *pnGradientListState |= CT_MODIFIED;
- }
- }
- // Status der Buttons ermitteln
- if( !pGradientList->Count() )
- {
- aBtnModify.Disable();
- aBtnDelete.Disable();
- aBtnSave.Disable();
- }
- return 0L;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxGradientTabPage, ClickLoadHdl_Impl, void *, EMPTYARG )
-{
- ResMgr& rMgr = DIALOG_MGR();
- USHORT nReturn = RET_YES;
-
- if ( *pnGradientListState & CT_MODIFIED )
- {
- nReturn = WarningBox( DLGWIN, WinBits( WB_YES_NO_CANCEL ),
- String( ResId( RID_SVXSTR_WARN_TABLE_OVERWRITE, rMgr ) ) ).Execute();
-
- if ( nReturn == RET_YES )
- pGradientList->Save();
- }
-
- if ( nReturn != RET_CANCEL )
- {
- ::sfx2::FileDialogHelper aDlg(
- com::sun::star::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE,
- 0 );
- String aStrFilterType( RTL_CONSTASCII_USTRINGPARAM( "*.sog" ) );
- aDlg.AddFilter( aStrFilterType, aStrFilterType );
- INetURLObject aFile( SvtPathOptions().GetPalettePath() );
- aDlg.SetDisplayDirectory( aFile.GetMainURL( INetURLObject::NO_DECODE ) );
-
- if( aDlg.Execute() == ERRCODE_NONE )
- {
- EnterWait();
-
- INetURLObject aURL( aDlg.GetPath() );
- INetURLObject aPathURL( aURL );
-
- aPathURL.removeSegment();
- aPathURL.removeFinalSlash();
-
- // Liste speichern
- XGradientList* pGrdList = new XGradientList( aPathURL.GetMainURL( INetURLObject::NO_DECODE ), pXPool );
- pGrdList->SetName( aURL.getName() );
-
- if ( pGrdList->Load() )
- {
- if ( pGrdList )
- {
- // Pruefen, ob Tabelle geloescht werden darf:
- if ( pGradientList !=
- ( (SvxAreaTabDialog*) DLGWIN )->GetGradientList() )
- delete pGradientList;
-
- pGradientList = pGrdList;
- ( (SvxAreaTabDialog*) DLGWIN )->
- SetNewGradientList( pGradientList );
-
- aLbGradients.Clear();
- aLbGradients.Fill( pGradientList );
- Reset( rOutAttrs );
-
- pGradientList->SetName( aURL.getName() );
-
- // Ermitteln (evtl. abschneiden) des Namens und in
- // der GroupBox darstellen
- String aString( ResId( RID_SVXSTR_TABLE, rMgr ) );
- aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) );
-
- if ( aURL.getBase().getLength() > 18 )
- {
- aString += String(aURL.getBase()).Copy( 0, 15 );
- aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) );
- }
- else
- aString += String(aURL.getBase());
-
- // Flag fuer gewechselt setzen
- *pnGradientListState |= CT_CHANGED;
- // Flag fuer modifiziert entfernen
- *pnGradientListState &= ~CT_MODIFIED;
- }
- LeaveWait();
- }
- else
- {
- LeaveWait();
- //aIStream.Close();
- ErrorBox( DLGWIN, WinBits( WB_OK ),
- String( ResId( RID_SVXSTR_READ_DATA_ERROR, rMgr ) ) ).Execute();
- }
- }
- }
-
- // Status der Buttons ermitteln
- if( pGradientList->Count() )
- {
- aBtnModify.Enable();
- aBtnDelete.Enable();
- aBtnSave.Enable();
- }
- else
- {
- aBtnModify.Disable();
- aBtnDelete.Disable();
- aBtnSave.Disable();
- }
- return 0L;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxGradientTabPage, ClickSaveHdl_Impl, void *, EMPTYARG )
-{
- ::sfx2::FileDialogHelper aDlg(
- com::sun::star::ui::dialogs::TemplateDescription::FILESAVE_SIMPLE, 0 );
- String aStrFilterType( RTL_CONSTASCII_USTRINGPARAM( "*.sog" ) );
- aDlg.AddFilter( aStrFilterType, aStrFilterType );
-
- INetURLObject aFile( SvtPathOptions().GetPalettePath() );
- DBG_ASSERT( aFile.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
-
- if( pGradientList->GetName().Len() )
- {
- aFile.Append( pGradientList->GetName() );
-
- if( !aFile.getExtension().getLength() )
- aFile.SetExtension( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "sog" ) ) );
- }
-
- aDlg.SetDisplayDirectory( aFile.GetMainURL( INetURLObject::NO_DECODE ) );
- if ( aDlg.Execute() == ERRCODE_NONE )
- {
- INetURLObject aURL( aDlg.GetPath() );
- INetURLObject aPathURL( aURL );
-
- aPathURL.removeSegment();
- aPathURL.removeFinalSlash();
-
- pGradientList->SetName( aURL.getName() );
- pGradientList->SetPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) );
-
- if( pGradientList->Save() )
- {
- // Ermitteln (evtl. abschneiden) des Namens und in
- // der GroupBox darstellen
- String aString( SVX_RES( RID_SVXSTR_TABLE ) );
- aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) );
-
- if ( aURL.getBase().getLength() > 18 )
- {
- aString += String(aURL.getBase()).Copy( 0, 15 );
- aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) );
- }
- else
- aString += String(aURL.getBase());
-
- // Flag fuer gespeichert setzen
- *pnGradientListState |= CT_SAVED;
- // Flag fuer modifiziert entfernen
- *pnGradientListState &= ~CT_MODIFIED;
- }
- else
- {
- ErrorBox( DLGWIN, WinBits( WB_OK ),
- String( SVX_RES( RID_SVXSTR_WRITE_DATA_ERROR ) ) ).Execute();
- }
- }
-
- return 0L;
-}
-
-//------------------------------------------------------------------------
-
-IMPL_LINK( SvxGradientTabPage, ChangeGradientHdl_Impl, void *, EMPTYARG )
-{
- XGradient* pGradient = NULL;
- int nPos = aLbGradients.GetSelectEntryPos();
-
- if( nPos != LISTBOX_ENTRY_NOTFOUND )
- pGradient = new XGradient( ( (XGradientEntry*) pGradientList->GetGradient( nPos ) )->GetGradient() );
- else
- {
- const SfxPoolItem* pPoolItem = NULL;
- if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLSTYLE ), TRUE, &pPoolItem ) )
- {
- if( ( XFILL_GRADIENT == (XFillStyle) ( ( const XFillStyleItem* ) pPoolItem )->GetValue() ) &&
- ( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLGRADIENT ), TRUE, &pPoolItem ) ) )
- {
- pGradient = new XGradient( ( ( const XFillGradientItem* ) pPoolItem )->GetGradientValue() );
- }
- }
- if( !pGradient )
- {
- aLbGradients.SelectEntryPos( 0 );
- nPos = aLbGradients.GetSelectEntryPos();
- if( nPos != LISTBOX_ENTRY_NOTFOUND )
- pGradient = new XGradient( ( (XGradientEntry*) pGradientList->GetGradient( nPos ) )->GetGradient() );
- }
- }
-
- if( pGradient )
- {
- XGradientStyle eXGS = pGradient->GetGradientStyle();
-
- aLbGradientType.SelectEntryPos(
- sal::static_int_cast< USHORT >( eXGS ) );
- // Wenn der EIntrag nicht in der Listbox ist, werden die Farben
- // temporaer hinzugenommen
- aLbColorFrom.SetNoSelection();
- aLbColorFrom.SelectEntry( pGradient->GetStartColor() );
-
- if ( aLbColorFrom.GetSelectEntryCount() == 0 )
- {
- aLbColorFrom.InsertEntry( pGradient->GetStartColor(),
- String() );
- aLbColorFrom.SelectEntry( pGradient->GetStartColor() );
- }
- aLbColorTo.SetNoSelection();
- aLbColorTo.SelectEntry( pGradient->GetEndColor() );
-
- if ( aLbColorTo.GetSelectEntryCount() == 0 )
- {
- aLbColorTo.InsertEntry( pGradient->GetEndColor(), String() );
- aLbColorTo.SelectEntry( pGradient->GetEndColor() );
- }
-
- aMtrAngle.SetValue( pGradient->GetAngle() / 10 ); // sollte in Resource geaendert werden
- aMtrBorder.SetValue( pGradient->GetBorder() );
- aMtrCenterX.SetValue( pGradient->GetXOffset() );
- aMtrCenterY.SetValue( pGradient->GetYOffset() );
- aMtrColorFrom.SetValue( pGradient->GetStartIntens() );
- aMtrColorTo.SetValue( pGradient->GetEndIntens() );
-
- // Controls Disablen/Enablen
- SetControlState_Impl( eXGS );
-
- // ItemSet fuellen und an aCtlPreview weiterleiten
- rXFSet.Put( XFillGradientItem( String(), *pGradient ) );
- aCtlPreview.SetAttributes( aXFillAttr.GetItemSet() );
-
- aCtlPreview.Invalidate();
- delete pGradient;
- }
- return 0L;
-}
-
-//------------------------------------------------------------------------
-
-void SvxGradientTabPage::SetControlState_Impl( XGradientStyle eXGS )
-{
- switch( eXGS )
- {
- case XGRAD_LINEAR:
- case XGRAD_AXIAL:
- aFtCenterX.Disable();
- aMtrCenterX.Disable();
- aFtCenterY.Disable();
- aMtrCenterY.Disable();
- aFtAngle.Enable();
- aMtrAngle.Enable();
- break;
-
- case XGRAD_RADIAL:
- aFtCenterX.Enable();
- aMtrCenterX.Enable();
- aFtCenterY.Enable();
- aMtrCenterY.Enable();
- aFtAngle.Disable();
- aMtrAngle.Disable();
- break;
-
- case XGRAD_ELLIPTICAL:
- aFtCenterX.Enable();
- aMtrCenterX.Enable();
- aFtCenterY.Enable();
- aMtrCenterY.Enable();
- aFtAngle.Enable();
- aMtrAngle.Enable();
- break;
-
- case XGRAD_SQUARE:
- case XGRAD_RECT:
- aFtCenterX.Enable();
- aMtrCenterX.Enable();
- aFtCenterY.Enable();
- aMtrCenterY.Enable();
- aFtAngle.Enable();
- aMtrAngle.Enable();
- break;
- }
-}
-
-