xref: /aoo41x/main/cui/source/tabpages/tabline.cxx (revision c7be74b1)
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
102ee96f1cSAndrew Rist  *
112ee96f1cSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
122ee96f1cSAndrew Rist  *
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.
192ee96f1cSAndrew Rist  *
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 
SvxLineTabDialog(Window * pParent,const SfxItemSet * pAttr,SdrModel * pModel,const SdrObject * pSdrObj,sal_Bool bHasObj)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 
~SvxLineTabDialog()131cdf0e10cSrcweir SvxLineTabDialog::~SvxLineTabDialog()
132cdf0e10cSrcweir {
133cdf0e10cSrcweir }
134cdf0e10cSrcweir 
135cdf0e10cSrcweir // -----------------------------------------------------------------------
136cdf0e10cSrcweir 
SavePalettes()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 
Ok()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 
IMPL_LINK_INLINE_START(SvxLineTabDialog,CancelHdlImpl,void *,EMPTYARG)211cdf0e10cSrcweir IMPL_LINK_INLINE_START( SvxLineTabDialog, CancelHdlImpl, void *, EMPTYARG )
212cdf0e10cSrcweir {
213cdf0e10cSrcweir 	SavePalettes();
214cdf0e10cSrcweir 
215cdf0e10cSrcweir 	EndDialog( RET_CANCEL );
216cdf0e10cSrcweir 	return 0;
217cdf0e10cSrcweir }
IMPL_LINK_INLINE_END(SvxLineTabDialog,CancelHdlImpl,void *,EMPTYARG)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