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