blob: a7d091c6a11df748bace4008f6efa2f0a7a80dd4 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_cui.hxx"
// include ---------------------------------------------------------------
#include <tools/shl.hxx>
#include <vcl/msgbox.hxx>
#include <unotools/pathoptions.hxx>
#include <sfx2/app.hxx>
#include <sfx2/objsh.hxx>
#include <svx/dialogs.hrc>
#define _SVX_TABLINE_CXX
#include <cuires.hrc>
#include "tabline.hrc"
//#include "dlgname.hrc"
#include "cuitabarea.hxx"
#include "cuitabline.hxx"
#include "dlgname.hxx"
#include <dialmgr.hxx>
#include <svx/svdmodel.hxx>
#include <svx/xtable.hxx>
#include "svx/drawitem.hxx"
#define DLGWIN this->GetParent()->GetParent()
#define BITMAP_WIDTH 32
#define BITMAP_HEIGHT 12
#define XOUT_WIDTH 150
/*************************************************************************
|*
|* Konstruktor des Tab-Dialogs: Fuegt die Seiten zum Dialog hinzu
|*
\************************************************************************/
SvxLineTabDialog::SvxLineTabDialog
(
Window* pParent,
const SfxItemSet* pAttr,
SdrModel* pModel,
const SdrObject* pSdrObj,
sal_Bool bHasObj
) :
SfxTabDialog ( pParent, CUI_RES( RID_SVXDLG_LINE ), pAttr ),
pDrawModel ( pModel ),
pObj ( pSdrObj ),
rOutAttrs ( *pAttr ),
maColorTab ( pModel->GetColorTableFromSdrModel() ),
maNewColorTab ( pModel->GetColorTableFromSdrModel() ),
maDashList ( pModel->GetDashListFromSdrModel() ),
maNewDashList ( pModel->GetDashListFromSdrModel() ),
maLineEndList ( pModel->GetLineEndListFromSdrModel() ),
maNewLineEndList( pModel->GetLineEndListFromSdrModel() ),
bObjSelected ( bHasObj ),
nLineEndListState( CT_NONE ),
nDashListState( CT_NONE ),
mnColorTableState( CT_NONE ),
nPageType( 0 ), // wird hier in erster Linie benutzt, um mit FillItemSet
// die richtigen Attribute zu erhalten ( noch Fragen? )
nDlgType( 0 ),
nPosDashLb( 0 ),
nPosLineEndLb( 0 ),
mnPos( 0 ),
mbAreaTP( sal_False )
{
FreeResource();
bool bLineOnly = false;
if( pObj && pObj->GetObjInventor() == SdrInventor )
{
switch( pObj->GetObjIdentifier() )
{
case OBJ_LINE:
case OBJ_PLIN:
case OBJ_PATHLINE:
case OBJ_FREELINE:
case OBJ_MEASURE:
case OBJ_EDGE:
bLineOnly = true;
default:
break;
}
}
AddTabPage( RID_SVXPAGE_LINE, SvxLineTabPage::Create, 0);
if( bLineOnly )
AddTabPage( RID_SVXPAGE_SHADOW, SvxShadowTabPage::Create, 0 );
else
RemoveTabPage( RID_SVXPAGE_SHADOW );
AddTabPage( RID_SVXPAGE_LINE_DEF, SvxLineDefTabPage::Create, 0);
AddTabPage( RID_SVXPAGE_LINEEND_DEF, SvxLineEndDefTabPage::Create, 0);
// AddTabPage( RID_SVXPAGE_COLOR, SvxColorTabPage::Create, 0 );
SetCurPageId( RID_SVXPAGE_LINE );
CancelButton& rBtnCancel = GetCancelButton();
rBtnCancel.SetClickHdl( LINK( this, SvxLineTabDialog, CancelHdlImpl ) );
//! rBtnCancel.SetText( CUI_RESSTR( RID_SVXSTR_CLOSE ) );
}
// -----------------------------------------------------------------------
SvxLineTabDialog::~SvxLineTabDialog()
{
}
// -----------------------------------------------------------------------
void SvxLineTabDialog::SavePalettes()
{
SfxObjectShell* pShell = SfxObjectShell::Current();
if( maNewColorTab != pDrawModel->GetColorTableFromSdrModel() )
{
pDrawModel->SetColorTableAtSdrModel( maNewColorTab );
if ( pShell )
pShell->PutItem( SvxColorTableItem( maNewColorTab, SID_COLOR_TABLE ) );
maColorTab = pDrawModel->GetColorTableFromSdrModel();
}
if( maNewDashList != pDrawModel->GetDashListFromSdrModel() )
{
pDrawModel->SetDashListAtSdrModel( maNewDashList );
if ( pShell )
pShell->PutItem( SvxDashListItem( maNewDashList, SID_DASH_LIST ) );
maDashList = pDrawModel->GetDashListFromSdrModel();
}
if( maNewLineEndList != pDrawModel->GetLineEndListFromSdrModel() )
{
pDrawModel->SetLineEndListAtSdrModel( maNewLineEndList );
if ( pShell )
pShell->PutItem( SvxLineEndListItem( maNewLineEndList, SID_LINEEND_LIST ) );
maLineEndList = pDrawModel->GetLineEndListFromSdrModel();
}
// Speichern der Tabellen, wenn sie geaendert wurden.
const String aPath( SvtPathOptions().GetPalettePath() );
if( nDashListState & CT_MODIFIED )
{
maDashList->SetPath( aPath );
maDashList->Save();
// ToolBoxControls werden benachrichtigt:
if ( pShell )
pShell->PutItem( SvxDashListItem( maDashList, SID_DASH_LIST ) );
}
if( nLineEndListState & CT_MODIFIED )
{
maLineEndList->SetPath( aPath );
maLineEndList->Save();
// ToolBoxControls werden benachrichtigt:
if ( pShell )
pShell->PutItem( SvxLineEndListItem( maLineEndList, SID_LINEEND_LIST ) );
}
if( mnColorTableState & CT_MODIFIED )
{
maColorTab->SetPath( aPath );
maColorTab->Save();
// ToolBoxControls werden benachrichtigt:
if ( pShell )
pShell->PutItem( SvxColorTableItem( maColorTab, SID_COLOR_TABLE ) );
}
}
// -----------------------------------------------------------------------
short SvxLineTabDialog::Ok()
{
SavePalettes();
// Es wird RET_OK zurueckgeliefert, wenn wenigstens eine
// TabPage in FillItemSet() sal_True zurueckliefert. Dieses
// geschieht z.Z. standardmaessig.
return( SfxTabDialog::Ok() );
}
// -----------------------------------------------------------------------
IMPL_LINK_INLINE_START( SvxLineTabDialog, CancelHdlImpl, void *, EMPTYARG )
{
SavePalettes();
EndDialog( RET_CANCEL );
return 0;
}
IMPL_LINK_INLINE_END( SvxLineTabDialog, CancelHdlImpl, void *, EMPTYARG )
// -----------------------------------------------------------------------
void SvxLineTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
{
switch( nId )
{
case RID_SVXPAGE_LINE:
( (SvxLineTabPage&) rPage ).SetColorTable( maColorTab );
( (SvxLineTabPage&) rPage ).SetDashList( maDashList );
( (SvxLineTabPage&) rPage ).SetLineEndList( maLineEndList );
( (SvxLineTabPage&) rPage ).SetDlgType( nDlgType );//CHINA001 ( (SvxLineTabPage&) rPage ).SetDlgType( &nDlgType );
( (SvxLineTabPage&) rPage ).SetPageType( nPageType );//CHINA001 ( (SvxLineTabPage&) rPage ).SetPageType( &nPageType );
( (SvxLineTabPage&) rPage ).SetPosDashLb( &nPosDashLb );
( (SvxLineTabPage&) rPage ).SetPosLineEndLb( &nPosLineEndLb );
( (SvxLineTabPage&) rPage ).SetDashChgd( &nDashListState );
( (SvxLineTabPage&) rPage ).SetLineEndChgd( &nLineEndListState );
( (SvxLineTabPage&) rPage ).SetObjSelected( bObjSelected );
( (SvxLineTabPage&) rPage ).Construct();
( (SvxLineTabPage&) rPage ).SetColorChgd( &mnColorTableState );
// ActivatePage() wird das erste mal nicht gerufen
( (SvxLineTabPage&) rPage ).ActivatePage( rOutAttrs );
break;
case RID_SVXPAGE_LINE_DEF:
( (SvxLineDefTabPage&) rPage ).SetDashList( maDashList );
( (SvxLineDefTabPage&) rPage ).SetDlgType( &nDlgType );
( (SvxLineDefTabPage&) rPage ).SetPageType( &nPageType );
( (SvxLineDefTabPage&) rPage ).SetPosDashLb( &nPosDashLb );
( (SvxLineDefTabPage&) rPage ).SetDashChgd( &nDashListState );
( (SvxLineDefTabPage&) rPage ).SetObjSelected( bObjSelected );
( (SvxLineDefTabPage&) rPage ).Construct();
break;
case RID_SVXPAGE_LINEEND_DEF:
( (SvxLineEndDefTabPage&) rPage ).SetLineEndList( maLineEndList );
( (SvxLineEndDefTabPage&) rPage ).SetPolyObj( pObj );
( (SvxLineEndDefTabPage&) rPage ).SetDlgType( &nDlgType );
( (SvxLineEndDefTabPage&) rPage ).SetPageType( &nPageType );
( (SvxLineEndDefTabPage&) rPage ).SetPosLineEndLb( &nPosLineEndLb );
( (SvxLineEndDefTabPage&) rPage ).SetLineEndChgd( &nLineEndListState );
( (SvxLineEndDefTabPage&) rPage ).SetObjSelected( bObjSelected );
( (SvxLineEndDefTabPage&) rPage ).Construct();
break;
case RID_SVXPAGE_SHADOW:
{
( (SvxShadowTabPage&) rPage ).SetColorTable( maColorTab );
( (SvxShadowTabPage&) rPage ).SetPageType( nPageType );
( (SvxShadowTabPage&) rPage ).SetDlgType( nDlgType );
( (SvxShadowTabPage&) rPage ).SetAreaTP( &mbAreaTP );
( (SvxShadowTabPage&) rPage ).SetColorChgd( &mnColorTableState );
( (SvxShadowTabPage&) rPage ).Construct();
}
break;
/*
case RID_SVXPAGE_COLOR:
( (SvxColorTabPage&) rPage ).SetColorTable( maColorTab );
( (SvxColorTabPage&) rPage ).SetPageType( &nPageType );
( (SvxColorTabPage&) rPage ).SetDlgType( &nDlgType );
( (SvxColorTabPage&) rPage ).SetPos( &mnPos );
( (SvxColorTabPage&) rPage ).SetAreaTP( &mbAreaTP );
( (SvxColorTabPage&) rPage ).SetColorChgd( &mnColorTableState );
( (SvxColorTabPage&) rPage ).Construct();
break;
*/
}
}