12ee96f1cSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 32ee96f1cSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 42ee96f1cSAndrew Rist * or more contributor license agreements. See the NOTICE file 52ee96f1cSAndrew Rist * distributed with this work for additional information 62ee96f1cSAndrew Rist * regarding copyright ownership. The ASF licenses this file 72ee96f1cSAndrew Rist * to you under the Apache License, Version 2.0 (the 82ee96f1cSAndrew Rist * "License"); you may not use this file except in compliance 92ee96f1cSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 112ee96f1cSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 132ee96f1cSAndrew Rist * Unless required by applicable law or agreed to in writing, 142ee96f1cSAndrew Rist * software distributed under the License is distributed on an 152ee96f1cSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 162ee96f1cSAndrew Rist * KIND, either express or implied. See the License for the 172ee96f1cSAndrew Rist * specific language governing permissions and limitations 182ee96f1cSAndrew Rist * under the License. 19cdf0e10cSrcweir * 202ee96f1cSAndrew Rist *************************************************************/ 212ee96f1cSAndrew Rist 222ee96f1cSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_cui.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir // include --------------------------------------------------------------- 28cdf0e10cSrcweir #include <tools/shl.hxx> 29cdf0e10cSrcweir #include <vcl/msgbox.hxx> 30cdf0e10cSrcweir #include <unotools/pathoptions.hxx> 31cdf0e10cSrcweir #include <sfx2/app.hxx> 32cdf0e10cSrcweir #include <sfx2/objsh.hxx> 33cdf0e10cSrcweir #include <svx/dialogs.hrc> 34cdf0e10cSrcweir 35cdf0e10cSrcweir #define _SVX_TABLINE_CXX 36cdf0e10cSrcweir #include <cuires.hrc> 37cdf0e10cSrcweir #include "tabline.hrc" 38cdf0e10cSrcweir //#include "dlgname.hrc" 39cdf0e10cSrcweir 40cdf0e10cSrcweir #include "cuitabarea.hxx" 41cdf0e10cSrcweir #include "cuitabline.hxx" 42cdf0e10cSrcweir #include "dlgname.hxx" 43cdf0e10cSrcweir #include <dialmgr.hxx> 44cdf0e10cSrcweir #include <svx/svdmodel.hxx> 45cdf0e10cSrcweir #include <svx/xtable.hxx> 46cdf0e10cSrcweir #include "svx/drawitem.hxx" 47cdf0e10cSrcweir 48cdf0e10cSrcweir #define DLGWIN this->GetParent()->GetParent() 49cdf0e10cSrcweir 50cdf0e10cSrcweir #define BITMAP_WIDTH 32 51cdf0e10cSrcweir #define BITMAP_HEIGHT 12 52cdf0e10cSrcweir #define XOUT_WIDTH 150 53cdf0e10cSrcweir 54cdf0e10cSrcweir /************************************************************************* 55cdf0e10cSrcweir |* 56cdf0e10cSrcweir |* Konstruktor des Tab-Dialogs: Fuegt die Seiten zum Dialog hinzu 57cdf0e10cSrcweir |* 58cdf0e10cSrcweir \************************************************************************/ 59cdf0e10cSrcweir 60cdf0e10cSrcweir SvxLineTabDialog::SvxLineTabDialog 61cdf0e10cSrcweir ( 62cdf0e10cSrcweir Window* pParent, 63cdf0e10cSrcweir const SfxItemSet* pAttr, 64cdf0e10cSrcweir SdrModel* pModel, 65cdf0e10cSrcweir const SdrObject* pSdrObj, 66cdf0e10cSrcweir sal_Bool bHasObj 67cdf0e10cSrcweir ) : 68cdf0e10cSrcweir 69cdf0e10cSrcweir SfxTabDialog ( pParent, CUI_RES( RID_SVXDLG_LINE ), pAttr ), 70cdf0e10cSrcweir pDrawModel ( pModel ), 71cdf0e10cSrcweir pObj ( pSdrObj ), 72cdf0e10cSrcweir rOutAttrs ( *pAttr ), 73*c7be74b1SArmin Le Grand maColorTab ( pModel->GetColorTableFromSdrModel() ), 74*c7be74b1SArmin Le Grand maNewColorTab ( pModel->GetColorTableFromSdrModel() ), 75*c7be74b1SArmin Le Grand maDashList ( pModel->GetDashListFromSdrModel() ), 76*c7be74b1SArmin Le Grand maNewDashList ( pModel->GetDashListFromSdrModel() ), 77*c7be74b1SArmin Le Grand maLineEndList ( pModel->GetLineEndListFromSdrModel() ), 78*c7be74b1SArmin Le Grand maNewLineEndList( pModel->GetLineEndListFromSdrModel() ), 79cdf0e10cSrcweir bObjSelected ( bHasObj ), 80cdf0e10cSrcweir nLineEndListState( CT_NONE ), 81cdf0e10cSrcweir nDashListState( CT_NONE ), 82cdf0e10cSrcweir mnColorTableState( CT_NONE ), 83cdf0e10cSrcweir nPageType( 0 ), // wird hier in erster Linie benutzt, um mit FillItemSet 84cdf0e10cSrcweir // die richtigen Attribute zu erhalten ( noch Fragen? ) 85cdf0e10cSrcweir nDlgType( 0 ), 86cdf0e10cSrcweir nPosDashLb( 0 ), 87cdf0e10cSrcweir nPosLineEndLb( 0 ), 88cdf0e10cSrcweir mnPos( 0 ), 89*c7be74b1SArmin Le Grand mbAreaTP( sal_False ) 90cdf0e10cSrcweir { 91cdf0e10cSrcweir FreeResource(); 92cdf0e10cSrcweir 93cdf0e10cSrcweir bool bLineOnly = false; 94cdf0e10cSrcweir if( pObj && pObj->GetObjInventor() == SdrInventor ) 95cdf0e10cSrcweir { 96cdf0e10cSrcweir switch( pObj->GetObjIdentifier() ) 97cdf0e10cSrcweir { 98cdf0e10cSrcweir case OBJ_LINE: 99cdf0e10cSrcweir case OBJ_PLIN: 100cdf0e10cSrcweir case OBJ_PATHLINE: 101cdf0e10cSrcweir case OBJ_FREELINE: 102cdf0e10cSrcweir case OBJ_MEASURE: 103cdf0e10cSrcweir case OBJ_EDGE: 104cdf0e10cSrcweir bLineOnly = true; 105cdf0e10cSrcweir 106cdf0e10cSrcweir default: 107cdf0e10cSrcweir break; 108cdf0e10cSrcweir } 109cdf0e10cSrcweir 110cdf0e10cSrcweir } 111cdf0e10cSrcweir 112cdf0e10cSrcweir AddTabPage( RID_SVXPAGE_LINE, SvxLineTabPage::Create, 0); 113cdf0e10cSrcweir if( bLineOnly ) 114cdf0e10cSrcweir AddTabPage( RID_SVXPAGE_SHADOW, SvxShadowTabPage::Create, 0 ); 115cdf0e10cSrcweir else 116cdf0e10cSrcweir RemoveTabPage( RID_SVXPAGE_SHADOW ); 117cdf0e10cSrcweir 118cdf0e10cSrcweir AddTabPage( RID_SVXPAGE_LINE_DEF, SvxLineDefTabPage::Create, 0); 119cdf0e10cSrcweir AddTabPage( RID_SVXPAGE_LINEEND_DEF, SvxLineEndDefTabPage::Create, 0); 120cdf0e10cSrcweir // AddTabPage( RID_SVXPAGE_COLOR, SvxColorTabPage::Create, 0 ); 121cdf0e10cSrcweir 122cdf0e10cSrcweir SetCurPageId( RID_SVXPAGE_LINE ); 123cdf0e10cSrcweir 124cdf0e10cSrcweir CancelButton& rBtnCancel = GetCancelButton(); 125cdf0e10cSrcweir rBtnCancel.SetClickHdl( LINK( this, SvxLineTabDialog, CancelHdlImpl ) ); 126cdf0e10cSrcweir //! rBtnCancel.SetText( CUI_RESSTR( RID_SVXSTR_CLOSE ) ); 127cdf0e10cSrcweir } 128cdf0e10cSrcweir 129cdf0e10cSrcweir // ----------------------------------------------------------------------- 130cdf0e10cSrcweir 131cdf0e10cSrcweir SvxLineTabDialog::~SvxLineTabDialog() 132cdf0e10cSrcweir { 133cdf0e10cSrcweir } 134cdf0e10cSrcweir 135cdf0e10cSrcweir // ----------------------------------------------------------------------- 136cdf0e10cSrcweir 137cdf0e10cSrcweir void SvxLineTabDialog::SavePalettes() 138cdf0e10cSrcweir { 139cdf0e10cSrcweir SfxObjectShell* pShell = SfxObjectShell::Current(); 140*c7be74b1SArmin Le Grand if( maNewColorTab != pDrawModel->GetColorTableFromSdrModel() ) 141cdf0e10cSrcweir { 142*c7be74b1SArmin Le Grand pDrawModel->SetColorTableAtSdrModel( maNewColorTab ); 143cdf0e10cSrcweir if ( pShell ) 144*c7be74b1SArmin Le Grand pShell->PutItem( SvxColorTableItem( maNewColorTab, SID_COLOR_TABLE ) ); 145*c7be74b1SArmin Le Grand maColorTab = pDrawModel->GetColorTableFromSdrModel(); 146cdf0e10cSrcweir } 147*c7be74b1SArmin Le Grand if( maNewDashList != pDrawModel->GetDashListFromSdrModel() ) 148cdf0e10cSrcweir { 149*c7be74b1SArmin Le Grand pDrawModel->SetDashListAtSdrModel( maNewDashList ); 150cdf0e10cSrcweir if ( pShell ) 151*c7be74b1SArmin Le Grand pShell->PutItem( SvxDashListItem( maNewDashList, SID_DASH_LIST ) ); 152*c7be74b1SArmin Le Grand maDashList = pDrawModel->GetDashListFromSdrModel(); 153cdf0e10cSrcweir } 154*c7be74b1SArmin Le Grand if( maNewLineEndList != pDrawModel->GetLineEndListFromSdrModel() ) 155cdf0e10cSrcweir { 156*c7be74b1SArmin Le Grand pDrawModel->SetLineEndListAtSdrModel( maNewLineEndList ); 157cdf0e10cSrcweir if ( pShell ) 158*c7be74b1SArmin Le Grand pShell->PutItem( SvxLineEndListItem( maNewLineEndList, SID_LINEEND_LIST ) ); 159*c7be74b1SArmin Le Grand maLineEndList = pDrawModel->GetLineEndListFromSdrModel(); 160cdf0e10cSrcweir } 161cdf0e10cSrcweir 162cdf0e10cSrcweir // Speichern der Tabellen, wenn sie geaendert wurden. 163cdf0e10cSrcweir 164cdf0e10cSrcweir const String aPath( SvtPathOptions().GetPalettePath() ); 165cdf0e10cSrcweir 166cdf0e10cSrcweir if( nDashListState & CT_MODIFIED ) 167cdf0e10cSrcweir { 168*c7be74b1SArmin Le Grand maDashList->SetPath( aPath ); 169*c7be74b1SArmin Le Grand maDashList->Save(); 170cdf0e10cSrcweir 171cdf0e10cSrcweir // ToolBoxControls werden benachrichtigt: 172cdf0e10cSrcweir if ( pShell ) 173*c7be74b1SArmin Le Grand pShell->PutItem( SvxDashListItem( maDashList, SID_DASH_LIST ) ); 174cdf0e10cSrcweir } 175cdf0e10cSrcweir 176cdf0e10cSrcweir if( nLineEndListState & CT_MODIFIED ) 177cdf0e10cSrcweir { 178*c7be74b1SArmin Le Grand maLineEndList->SetPath( aPath ); 179*c7be74b1SArmin Le Grand maLineEndList->Save(); 180cdf0e10cSrcweir 181cdf0e10cSrcweir // ToolBoxControls werden benachrichtigt: 182cdf0e10cSrcweir if ( pShell ) 183*c7be74b1SArmin Le Grand pShell->PutItem( SvxLineEndListItem( maLineEndList, SID_LINEEND_LIST ) ); 184cdf0e10cSrcweir } 185cdf0e10cSrcweir 186cdf0e10cSrcweir if( mnColorTableState & CT_MODIFIED ) 187cdf0e10cSrcweir { 188*c7be74b1SArmin Le Grand maColorTab->SetPath( aPath ); 189*c7be74b1SArmin Le Grand maColorTab->Save(); 190cdf0e10cSrcweir 191cdf0e10cSrcweir // ToolBoxControls werden benachrichtigt: 192cdf0e10cSrcweir if ( pShell ) 193*c7be74b1SArmin Le Grand pShell->PutItem( SvxColorTableItem( maColorTab, SID_COLOR_TABLE ) ); 194cdf0e10cSrcweir } 195cdf0e10cSrcweir } 196cdf0e10cSrcweir 197cdf0e10cSrcweir // ----------------------------------------------------------------------- 198cdf0e10cSrcweir 199cdf0e10cSrcweir short SvxLineTabDialog::Ok() 200cdf0e10cSrcweir { 201cdf0e10cSrcweir SavePalettes(); 202cdf0e10cSrcweir 203cdf0e10cSrcweir // Es wird RET_OK zurueckgeliefert, wenn wenigstens eine 204cdf0e10cSrcweir // TabPage in FillItemSet() sal_True zurueckliefert. Dieses 205cdf0e10cSrcweir // geschieht z.Z. standardmaessig. 206cdf0e10cSrcweir return( SfxTabDialog::Ok() ); 207cdf0e10cSrcweir } 208cdf0e10cSrcweir 209cdf0e10cSrcweir // ----------------------------------------------------------------------- 210cdf0e10cSrcweir 211cdf0e10cSrcweir IMPL_LINK_INLINE_START( SvxLineTabDialog, CancelHdlImpl, void *, EMPTYARG ) 212cdf0e10cSrcweir { 213cdf0e10cSrcweir SavePalettes(); 214cdf0e10cSrcweir 215cdf0e10cSrcweir EndDialog( RET_CANCEL ); 216cdf0e10cSrcweir return 0; 217cdf0e10cSrcweir } 218cdf0e10cSrcweir IMPL_LINK_INLINE_END( SvxLineTabDialog, CancelHdlImpl, void *, EMPTYARG ) 219cdf0e10cSrcweir 220cdf0e10cSrcweir // ----------------------------------------------------------------------- 221cdf0e10cSrcweir 222cdf0e10cSrcweir void SvxLineTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) 223cdf0e10cSrcweir { 224cdf0e10cSrcweir switch( nId ) 225cdf0e10cSrcweir { 226cdf0e10cSrcweir case RID_SVXPAGE_LINE: 227*c7be74b1SArmin Le Grand ( (SvxLineTabPage&) rPage ).SetColorTable( maColorTab ); 228*c7be74b1SArmin Le Grand ( (SvxLineTabPage&) rPage ).SetDashList( maDashList ); 229*c7be74b1SArmin Le Grand ( (SvxLineTabPage&) rPage ).SetLineEndList( maLineEndList ); 230cdf0e10cSrcweir ( (SvxLineTabPage&) rPage ).SetDlgType( nDlgType );//CHINA001 ( (SvxLineTabPage&) rPage ).SetDlgType( &nDlgType ); 231cdf0e10cSrcweir ( (SvxLineTabPage&) rPage ).SetPageType( nPageType );//CHINA001 ( (SvxLineTabPage&) rPage ).SetPageType( &nPageType ); 232cdf0e10cSrcweir ( (SvxLineTabPage&) rPage ).SetPosDashLb( &nPosDashLb ); 233cdf0e10cSrcweir ( (SvxLineTabPage&) rPage ).SetPosLineEndLb( &nPosLineEndLb ); 234cdf0e10cSrcweir ( (SvxLineTabPage&) rPage ).SetDashChgd( &nDashListState ); 235cdf0e10cSrcweir ( (SvxLineTabPage&) rPage ).SetLineEndChgd( &nLineEndListState ); 236cdf0e10cSrcweir ( (SvxLineTabPage&) rPage ).SetObjSelected( bObjSelected ); 237cdf0e10cSrcweir ( (SvxLineTabPage&) rPage ).Construct(); 238cdf0e10cSrcweir ( (SvxLineTabPage&) rPage ).SetColorChgd( &mnColorTableState ); 239cdf0e10cSrcweir // ActivatePage() wird das erste mal nicht gerufen 240cdf0e10cSrcweir ( (SvxLineTabPage&) rPage ).ActivatePage( rOutAttrs ); 241cdf0e10cSrcweir break; 242cdf0e10cSrcweir 243cdf0e10cSrcweir case RID_SVXPAGE_LINE_DEF: 244*c7be74b1SArmin Le Grand ( (SvxLineDefTabPage&) rPage ).SetDashList( maDashList ); 245cdf0e10cSrcweir ( (SvxLineDefTabPage&) rPage ).SetDlgType( &nDlgType ); 246cdf0e10cSrcweir ( (SvxLineDefTabPage&) rPage ).SetPageType( &nPageType ); 247cdf0e10cSrcweir ( (SvxLineDefTabPage&) rPage ).SetPosDashLb( &nPosDashLb ); 248cdf0e10cSrcweir ( (SvxLineDefTabPage&) rPage ).SetDashChgd( &nDashListState ); 249cdf0e10cSrcweir ( (SvxLineDefTabPage&) rPage ).SetObjSelected( bObjSelected ); 250cdf0e10cSrcweir ( (SvxLineDefTabPage&) rPage ).Construct(); 251cdf0e10cSrcweir break; 252cdf0e10cSrcweir 253cdf0e10cSrcweir case RID_SVXPAGE_LINEEND_DEF: 254*c7be74b1SArmin Le Grand ( (SvxLineEndDefTabPage&) rPage ).SetLineEndList( maLineEndList ); 255cdf0e10cSrcweir ( (SvxLineEndDefTabPage&) rPage ).SetPolyObj( pObj ); 256cdf0e10cSrcweir ( (SvxLineEndDefTabPage&) rPage ).SetDlgType( &nDlgType ); 257cdf0e10cSrcweir ( (SvxLineEndDefTabPage&) rPage ).SetPageType( &nPageType ); 258cdf0e10cSrcweir ( (SvxLineEndDefTabPage&) rPage ).SetPosLineEndLb( &nPosLineEndLb ); 259cdf0e10cSrcweir ( (SvxLineEndDefTabPage&) rPage ).SetLineEndChgd( &nLineEndListState ); 260cdf0e10cSrcweir ( (SvxLineEndDefTabPage&) rPage ).SetObjSelected( bObjSelected ); 261cdf0e10cSrcweir ( (SvxLineEndDefTabPage&) rPage ).Construct(); 262cdf0e10cSrcweir break; 263cdf0e10cSrcweir 264cdf0e10cSrcweir case RID_SVXPAGE_SHADOW: 265cdf0e10cSrcweir { 266*c7be74b1SArmin Le Grand ( (SvxShadowTabPage&) rPage ).SetColorTable( maColorTab ); 267cdf0e10cSrcweir ( (SvxShadowTabPage&) rPage ).SetPageType( nPageType ); 268cdf0e10cSrcweir ( (SvxShadowTabPage&) rPage ).SetDlgType( nDlgType ); 269cdf0e10cSrcweir ( (SvxShadowTabPage&) rPage ).SetAreaTP( &mbAreaTP ); 270cdf0e10cSrcweir ( (SvxShadowTabPage&) rPage ).SetColorChgd( &mnColorTableState ); 271cdf0e10cSrcweir ( (SvxShadowTabPage&) rPage ).Construct(); 272cdf0e10cSrcweir } 273cdf0e10cSrcweir break; 274cdf0e10cSrcweir /* 275cdf0e10cSrcweir case RID_SVXPAGE_COLOR: 276*c7be74b1SArmin Le Grand ( (SvxColorTabPage&) rPage ).SetColorTable( maColorTab ); 277cdf0e10cSrcweir ( (SvxColorTabPage&) rPage ).SetPageType( &nPageType ); 278cdf0e10cSrcweir ( (SvxColorTabPage&) rPage ).SetDlgType( &nDlgType ); 279cdf0e10cSrcweir ( (SvxColorTabPage&) rPage ).SetPos( &mnPos ); 280cdf0e10cSrcweir ( (SvxColorTabPage&) rPage ).SetAreaTP( &mbAreaTP ); 281cdf0e10cSrcweir ( (SvxColorTabPage&) rPage ).SetColorChgd( &mnColorTableState ); 282cdf0e10cSrcweir ( (SvxColorTabPage&) rPage ).Construct(); 283cdf0e10cSrcweir break; 284cdf0e10cSrcweir */ 285cdf0e10cSrcweir } 286cdf0e10cSrcweir } 287cdf0e10cSrcweir 288cdf0e10cSrcweir 289