xref: /aoo41x/main/cui/source/tabpages/tabline.cxx (revision 2ee96f1c)
1*2ee96f1cSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*2ee96f1cSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*2ee96f1cSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*2ee96f1cSAndrew Rist  * distributed with this work for additional information
6*2ee96f1cSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*2ee96f1cSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*2ee96f1cSAndrew Rist  * "License"); you may not use this file except in compliance
9*2ee96f1cSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*2ee96f1cSAndrew Rist  *
11*2ee96f1cSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*2ee96f1cSAndrew Rist  *
13*2ee96f1cSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*2ee96f1cSAndrew Rist  * software distributed under the License is distributed on an
15*2ee96f1cSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*2ee96f1cSAndrew Rist  * KIND, either express or implied.  See the License for the
17*2ee96f1cSAndrew Rist  * specific language governing permissions and limitations
18*2ee96f1cSAndrew Rist  * under the License.
19*2ee96f1cSAndrew Rist  *
20*2ee96f1cSAndrew Rist  *************************************************************/
21*2ee96f1cSAndrew Rist 
22*2ee96f1cSAndrew 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 ),
73cdf0e10cSrcweir     pColorTab       ( pModel->GetColorTable() ),
74cdf0e10cSrcweir     mpNewColorTab   ( pModel->GetColorTable() ),
75cdf0e10cSrcweir 	pDashList       ( pModel->GetDashList() ),
76cdf0e10cSrcweir     pNewDashList    ( pModel->GetDashList() ),
77cdf0e10cSrcweir     pLineEndList    ( pModel->GetLineEndList() ),
78cdf0e10cSrcweir     pNewLineEndList ( pModel->GetLineEndList() ),
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 ),
89cdf0e10cSrcweir     mbAreaTP( sal_False ),
90cdf0e10cSrcweir     mbDeleteColorTable( sal_True )
91cdf0e10cSrcweir {
92cdf0e10cSrcweir 	FreeResource();
93cdf0e10cSrcweir 
94cdf0e10cSrcweir 	bool bLineOnly = false;
95cdf0e10cSrcweir 	if( pObj && pObj->GetObjInventor() == SdrInventor )
96cdf0e10cSrcweir 	{
97cdf0e10cSrcweir 		switch( pObj->GetObjIdentifier() )
98cdf0e10cSrcweir 		{
99cdf0e10cSrcweir 		case OBJ_LINE:
100cdf0e10cSrcweir 		case OBJ_PLIN:
101cdf0e10cSrcweir 		case OBJ_PATHLINE:
102cdf0e10cSrcweir 		case OBJ_FREELINE:
103cdf0e10cSrcweir 		case OBJ_MEASURE:
104cdf0e10cSrcweir 		case OBJ_EDGE:
105cdf0e10cSrcweir 			bLineOnly = true;
106cdf0e10cSrcweir 
107cdf0e10cSrcweir 		default:
108cdf0e10cSrcweir 			break;
109cdf0e10cSrcweir 		}
110cdf0e10cSrcweir 
111cdf0e10cSrcweir 	}
112cdf0e10cSrcweir 
113cdf0e10cSrcweir 	AddTabPage( RID_SVXPAGE_LINE, SvxLineTabPage::Create, 0);
114cdf0e10cSrcweir 	if( bLineOnly )
115cdf0e10cSrcweir 		AddTabPage( RID_SVXPAGE_SHADOW, SvxShadowTabPage::Create, 0 );
116cdf0e10cSrcweir 	else
117cdf0e10cSrcweir 		RemoveTabPage( RID_SVXPAGE_SHADOW );
118cdf0e10cSrcweir 
119cdf0e10cSrcweir 	AddTabPage( RID_SVXPAGE_LINE_DEF, SvxLineDefTabPage::Create, 0);
120cdf0e10cSrcweir 	AddTabPage( RID_SVXPAGE_LINEEND_DEF, SvxLineEndDefTabPage::Create, 0);
121cdf0e10cSrcweir //	AddTabPage( RID_SVXPAGE_COLOR, SvxColorTabPage::Create, 0 );
122cdf0e10cSrcweir 
123cdf0e10cSrcweir 	SetCurPageId( RID_SVXPAGE_LINE );
124cdf0e10cSrcweir 
125cdf0e10cSrcweir 	CancelButton& rBtnCancel = GetCancelButton();
126cdf0e10cSrcweir 	rBtnCancel.SetClickHdl( LINK( this, SvxLineTabDialog, CancelHdlImpl ) );
127cdf0e10cSrcweir //! rBtnCancel.SetText( CUI_RESSTR( RID_SVXSTR_CLOSE ) );
128cdf0e10cSrcweir }
129cdf0e10cSrcweir 
130cdf0e10cSrcweir // -----------------------------------------------------------------------
131cdf0e10cSrcweir 
132cdf0e10cSrcweir SvxLineTabDialog::~SvxLineTabDialog()
133cdf0e10cSrcweir {
134cdf0e10cSrcweir }
135cdf0e10cSrcweir 
136cdf0e10cSrcweir // -----------------------------------------------------------------------
137cdf0e10cSrcweir 
138cdf0e10cSrcweir void SvxLineTabDialog::SavePalettes()
139cdf0e10cSrcweir {
140cdf0e10cSrcweir     SfxObjectShell* pShell = SfxObjectShell::Current();
141cdf0e10cSrcweir 	if( mpNewColorTab != pDrawModel->GetColorTable() )
142cdf0e10cSrcweir 	{
143cdf0e10cSrcweir 		if(mbDeleteColorTable)
144cdf0e10cSrcweir 			delete pDrawModel->GetColorTable();
145cdf0e10cSrcweir 		pDrawModel->SetColorTable( mpNewColorTab );
146cdf0e10cSrcweir         if ( pShell )
147cdf0e10cSrcweir             pShell->PutItem( SvxColorTableItem( mpNewColorTab, SID_COLOR_TABLE ) );
148cdf0e10cSrcweir 		pColorTab = pDrawModel->GetColorTable();
149cdf0e10cSrcweir 	}
150cdf0e10cSrcweir 	if( pNewDashList != pDrawModel->GetDashList() )
151cdf0e10cSrcweir 	{
152cdf0e10cSrcweir 		delete pDrawModel->GetDashList();
153cdf0e10cSrcweir 		pDrawModel->SetDashList( pNewDashList );
154cdf0e10cSrcweir         if ( pShell )
155cdf0e10cSrcweir             pShell->PutItem( SvxDashListItem( pNewDashList, SID_DASH_LIST ) );
156cdf0e10cSrcweir 		pDashList = pDrawModel->GetDashList();
157cdf0e10cSrcweir 	}
158cdf0e10cSrcweir 	if( pNewLineEndList != pDrawModel->GetLineEndList() )
159cdf0e10cSrcweir 	{
160cdf0e10cSrcweir 		delete pDrawModel->GetLineEndList();
161cdf0e10cSrcweir 		pDrawModel->SetLineEndList( pNewLineEndList );
162cdf0e10cSrcweir         if ( pShell )
163cdf0e10cSrcweir             pShell->PutItem( SvxLineEndListItem( pNewLineEndList, SID_LINEEND_LIST ) );
164cdf0e10cSrcweir 		pLineEndList = pDrawModel->GetLineEndList();
165cdf0e10cSrcweir 	}
166cdf0e10cSrcweir 
167cdf0e10cSrcweir 	// Speichern der Tabellen, wenn sie geaendert wurden.
168cdf0e10cSrcweir 
169cdf0e10cSrcweir 	const String aPath( SvtPathOptions().GetPalettePath() );
170cdf0e10cSrcweir 
171cdf0e10cSrcweir 	if( nDashListState & CT_MODIFIED )
172cdf0e10cSrcweir 	{
173cdf0e10cSrcweir 		pDashList->SetPath( aPath );
174cdf0e10cSrcweir 		pDashList->Save();
175cdf0e10cSrcweir 
176cdf0e10cSrcweir 		// ToolBoxControls werden benachrichtigt:
177cdf0e10cSrcweir         if ( pShell )
178cdf0e10cSrcweir             pShell->PutItem( SvxDashListItem( pDashList, SID_DASH_LIST ) );
179cdf0e10cSrcweir 	}
180cdf0e10cSrcweir 
181cdf0e10cSrcweir 	if( nLineEndListState & CT_MODIFIED )
182cdf0e10cSrcweir 	{
183cdf0e10cSrcweir 		pLineEndList->SetPath( aPath );
184cdf0e10cSrcweir 		pLineEndList->Save();
185cdf0e10cSrcweir 
186cdf0e10cSrcweir 		// ToolBoxControls werden benachrichtigt:
187cdf0e10cSrcweir         if ( pShell )
188cdf0e10cSrcweir             pShell->PutItem( SvxLineEndListItem( pLineEndList, SID_LINEEND_LIST ) );
189cdf0e10cSrcweir 	}
190cdf0e10cSrcweir 
191cdf0e10cSrcweir 	if( mnColorTableState & CT_MODIFIED )
192cdf0e10cSrcweir 	{
193cdf0e10cSrcweir 		pColorTab->SetPath( aPath );
194cdf0e10cSrcweir 		pColorTab->Save();
195cdf0e10cSrcweir 
196cdf0e10cSrcweir 		// ToolBoxControls werden benachrichtigt:
197cdf0e10cSrcweir         if ( pShell )
198cdf0e10cSrcweir             pShell->PutItem( SvxColorTableItem( pColorTab, SID_COLOR_TABLE ) );
199cdf0e10cSrcweir 	}
200cdf0e10cSrcweir }
201cdf0e10cSrcweir 
202cdf0e10cSrcweir // -----------------------------------------------------------------------
203cdf0e10cSrcweir 
204cdf0e10cSrcweir short SvxLineTabDialog::Ok()
205cdf0e10cSrcweir {
206cdf0e10cSrcweir 	SavePalettes();
207cdf0e10cSrcweir 
208cdf0e10cSrcweir 	// Es wird RET_OK zurueckgeliefert, wenn wenigstens eine
209cdf0e10cSrcweir 	// TabPage in FillItemSet() sal_True zurueckliefert. Dieses
210cdf0e10cSrcweir 	// geschieht z.Z. standardmaessig.
211cdf0e10cSrcweir 	return( SfxTabDialog::Ok() );
212cdf0e10cSrcweir }
213cdf0e10cSrcweir 
214cdf0e10cSrcweir // -----------------------------------------------------------------------
215cdf0e10cSrcweir 
216cdf0e10cSrcweir IMPL_LINK_INLINE_START( SvxLineTabDialog, CancelHdlImpl, void *, EMPTYARG )
217cdf0e10cSrcweir {
218cdf0e10cSrcweir 	SavePalettes();
219cdf0e10cSrcweir 
220cdf0e10cSrcweir 	EndDialog( RET_CANCEL );
221cdf0e10cSrcweir 	return 0;
222cdf0e10cSrcweir }
223cdf0e10cSrcweir IMPL_LINK_INLINE_END( SvxLineTabDialog, CancelHdlImpl, void *, EMPTYARG )
224cdf0e10cSrcweir 
225cdf0e10cSrcweir // -----------------------------------------------------------------------
226cdf0e10cSrcweir 
227cdf0e10cSrcweir void SvxLineTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
228cdf0e10cSrcweir {
229cdf0e10cSrcweir 	switch( nId )
230cdf0e10cSrcweir 	{
231cdf0e10cSrcweir 		case RID_SVXPAGE_LINE:
232cdf0e10cSrcweir 			( (SvxLineTabPage&) rPage ).SetColorTable( pColorTab );
233cdf0e10cSrcweir 			( (SvxLineTabPage&) rPage ).SetDashList( pDashList );
234cdf0e10cSrcweir 			( (SvxLineTabPage&) rPage ).SetLineEndList( pLineEndList );
235cdf0e10cSrcweir 			( (SvxLineTabPage&) rPage ).SetDlgType( nDlgType );//CHINA001 ( (SvxLineTabPage&) rPage ).SetDlgType( &nDlgType );
236cdf0e10cSrcweir 			( (SvxLineTabPage&) rPage ).SetPageType( nPageType );//CHINA001 ( (SvxLineTabPage&) rPage ).SetPageType( &nPageType );
237cdf0e10cSrcweir 			( (SvxLineTabPage&) rPage ).SetPosDashLb( &nPosDashLb );
238cdf0e10cSrcweir 			( (SvxLineTabPage&) rPage ).SetPosLineEndLb( &nPosLineEndLb );
239cdf0e10cSrcweir 			( (SvxLineTabPage&) rPage ).SetDashChgd( &nDashListState );
240cdf0e10cSrcweir 			( (SvxLineTabPage&) rPage ).SetLineEndChgd( &nLineEndListState );
241cdf0e10cSrcweir 			( (SvxLineTabPage&) rPage ).SetObjSelected( bObjSelected );
242cdf0e10cSrcweir 			( (SvxLineTabPage&) rPage ).Construct();
243cdf0e10cSrcweir 			( (SvxLineTabPage&) rPage ).SetColorChgd( &mnColorTableState );
244cdf0e10cSrcweir 			// ActivatePage() wird das erste mal nicht gerufen
245cdf0e10cSrcweir 			( (SvxLineTabPage&) rPage ).ActivatePage( rOutAttrs );
246cdf0e10cSrcweir 		break;
247cdf0e10cSrcweir 
248cdf0e10cSrcweir 		case RID_SVXPAGE_LINE_DEF:
249cdf0e10cSrcweir 			( (SvxLineDefTabPage&) rPage ).SetDashList( pDashList );
250cdf0e10cSrcweir 			( (SvxLineDefTabPage&) rPage ).SetDlgType( &nDlgType );
251cdf0e10cSrcweir 			( (SvxLineDefTabPage&) rPage ).SetPageType( &nPageType );
252cdf0e10cSrcweir 			( (SvxLineDefTabPage&) rPage ).SetPosDashLb( &nPosDashLb );
253cdf0e10cSrcweir 			( (SvxLineDefTabPage&) rPage ).SetDashChgd( &nDashListState );
254cdf0e10cSrcweir 			( (SvxLineDefTabPage&) rPage ).SetObjSelected( bObjSelected );
255cdf0e10cSrcweir 			( (SvxLineDefTabPage&) rPage ).Construct();
256cdf0e10cSrcweir 		break;
257cdf0e10cSrcweir 
258cdf0e10cSrcweir 		case RID_SVXPAGE_LINEEND_DEF:
259cdf0e10cSrcweir 			( (SvxLineEndDefTabPage&) rPage ).SetLineEndList( pLineEndList );
260cdf0e10cSrcweir 			( (SvxLineEndDefTabPage&) rPage ).SetPolyObj( pObj );
261cdf0e10cSrcweir 			( (SvxLineEndDefTabPage&) rPage ).SetDlgType( &nDlgType );
262cdf0e10cSrcweir 			( (SvxLineEndDefTabPage&) rPage ).SetPageType( &nPageType );
263cdf0e10cSrcweir 			( (SvxLineEndDefTabPage&) rPage ).SetPosLineEndLb( &nPosLineEndLb );
264cdf0e10cSrcweir 			( (SvxLineEndDefTabPage&) rPage ).SetLineEndChgd( &nLineEndListState );
265cdf0e10cSrcweir 			( (SvxLineEndDefTabPage&) rPage ).SetObjSelected( bObjSelected );
266cdf0e10cSrcweir 			( (SvxLineEndDefTabPage&) rPage ).Construct();
267cdf0e10cSrcweir 		break;
268cdf0e10cSrcweir 
269cdf0e10cSrcweir 		case RID_SVXPAGE_SHADOW:
270cdf0e10cSrcweir 		{
271cdf0e10cSrcweir 			( (SvxShadowTabPage&) rPage ).SetColorTable( pColorTab );
272cdf0e10cSrcweir 			( (SvxShadowTabPage&) rPage ).SetPageType( nPageType );
273cdf0e10cSrcweir 			( (SvxShadowTabPage&) rPage ).SetDlgType( nDlgType );
274cdf0e10cSrcweir 			( (SvxShadowTabPage&) rPage ).SetAreaTP( &mbAreaTP );
275cdf0e10cSrcweir 			( (SvxShadowTabPage&) rPage ).SetColorChgd( &mnColorTableState );
276cdf0e10cSrcweir 			( (SvxShadowTabPage&) rPage ).Construct();
277cdf0e10cSrcweir 		}
278cdf0e10cSrcweir 		break;
279cdf0e10cSrcweir /*
280cdf0e10cSrcweir 		case RID_SVXPAGE_COLOR:
281cdf0e10cSrcweir 			( (SvxColorTabPage&) rPage ).SetColorTable( pColorTab );
282cdf0e10cSrcweir 			( (SvxColorTabPage&) rPage ).SetPageType( &nPageType );
283cdf0e10cSrcweir 			( (SvxColorTabPage&) rPage ).SetDlgType( &nDlgType );
284cdf0e10cSrcweir 			( (SvxColorTabPage&) rPage ).SetPos( &mnPos );
285cdf0e10cSrcweir 			( (SvxColorTabPage&) rPage ).SetAreaTP( &mbAreaTP );
286cdf0e10cSrcweir 			( (SvxColorTabPage&) rPage ).SetColorChgd( &mnColorTableState );
287cdf0e10cSrcweir 			( (SvxColorTabPage&) rPage ).SetDeleteColorTable( mbDeleteColorTable );
288cdf0e10cSrcweir 			( (SvxColorTabPage&) rPage ).Construct();
289cdf0e10cSrcweir 		break;
290cdf0e10cSrcweir */
291cdf0e10cSrcweir 	}
292cdf0e10cSrcweir }
293cdf0e10cSrcweir 
294cdf0e10cSrcweir 
295