Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <view.hxx>
21 : #include <wrtsh.hxx>
22 : #include <cption.hxx>
23 : #include <fldmgr.hxx>
24 : #include <expfld.hxx>
25 : #include <numrule.hxx>
26 : #include <poolfmt.hxx>
27 : #include <docsh.hxx>
28 : #include <frmfmt.hxx>
29 : #include <calc.hxx>
30 : #include <uitool.hxx>
31 : #include <doc.hxx>
32 : #include <modcfg.hxx>
33 : #include <swmodule.hxx>
34 : #include <com/sun/star/frame/XStorable.hpp>
35 : #include <com/sun/star/text/GraphicCrop.hpp>
36 : #include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp>
37 : #include <com/sun/star/text/XTextTableCursor.hpp>
38 : #include <com/sun/star/text/XTextTablesSupplier.hpp>
39 : #include <com/sun/star/text/TableColumnSeparator.hpp>
40 : #include <com/sun/star/text/XTextTable.hpp>
41 : #include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
42 : #include <com/sun/star/text/XTextFramesSupplier.hpp>
43 : #include <com/sun/star/text/XTextFrame.hpp>
44 : #include <comphelper/string.hxx>
45 : #include "initui.hxx"
46 : #include <frmui.hrc>
47 : #include <globals.hrc>
48 : #include <SwStyleNameMapper.hxx>
49 :
50 : using namespace ::com::sun::star;
51 :
52 : class SwSequenceOptionDialog : public SvxStandardDialog
53 : {
54 : ListBox* m_pLbLevel;
55 : Edit* m_pEdDelim;
56 :
57 : ListBox* m_pLbCharStyle;
58 : CheckBox* m_pApplyBorderAndShadowCB;
59 :
60 : //#i61007# order of captions
61 : ListBox* m_pLbCaptionOrder;
62 :
63 : SwView& rView;
64 : OUString aFldTypeName;
65 :
66 : public:
67 : SwSequenceOptionDialog( Window *pParent, SwView &rV,
68 : const OUString& rSeqFldType );
69 : virtual ~SwSequenceOptionDialog();
70 : virtual void Apply() SAL_OVERRIDE;
71 :
72 0 : bool IsApplyBorderAndShadow( void ) { return m_pApplyBorderAndShadowCB->IsChecked(); }
73 0 : void SetApplyBorderAndShadow( bool bSet ) { m_pApplyBorderAndShadowCB->Check(bSet); }
74 :
75 : //#i61007# order of captions
76 0 : bool IsOrderNumberingFirst() const {return m_pLbCaptionOrder->GetSelectEntryPos() == 1;}
77 0 : void SetOrderNumberingFirst(bool bSet) { m_pLbCaptionOrder->SelectEntryPos( bSet ? 1 : 0 ); }
78 :
79 : void SetCharacterStyle(const OUString& rStyle);
80 : OUString GetCharacterStyle() const;
81 : };
82 :
83 0 : OUString SwCaptionDialog::our_aSepTextSave(": "); // Caption separator text
84 :
85 0 : SwCaptionDialog::SwCaptionDialog( Window *pParent, SwView &rV ) :
86 : SvxStandardDialog( pParent, "InsertCaptionDialog", "modules/swriter/ui/insertcaption.ui" ),
87 : m_sNone( SW_RESSTR(SW_STR_NONE) ),
88 : rView( rV ),
89 0 : pMgr( new SwFldMgr(rView.GetWrtShellPtr()) ),
90 : bCopyAttributes( false ),
91 0 : bOrderNumberingFirst( SW_MOD()->GetModuleConfig()->IsCaptionOrderNumberingFirst() )
92 : {
93 0 : get(m_pTextEdit, "caption_edit");
94 0 : get(m_pCategoryBox, "category");
95 0 : get(m_pFormatText, "numbering_label");
96 0 : get(m_pFormatBox, "numbering");
97 0 : get(m_pNumberingSeparatorFT, "num_separator");
98 0 : get(m_pNumberingSeparatorED, "num_separator_edit");
99 0 : get(m_pSepText, "separator_label");
100 0 : get(m_pSepEdit, "separator_edit");
101 0 : get(m_pPosText, "position_label");
102 0 : get(m_pPosBox, "position");
103 0 : get(m_pPreview, "preview");
104 0 : get(m_pOKButton, "ok");
105 0 : get(m_pAutoCaptionButton, "auto");
106 0 : get(m_pOptionButton, "options");
107 :
108 : //#i61007# order of captions
109 0 : ApplyCaptionOrder();
110 0 : SwWrtShell &rSh = rView.GetWrtShell();
111 0 : uno::Reference< frame::XModel > xModel = rView.GetDocShell()->GetBaseModel();
112 :
113 0 : eType = rSh.GetSelectionType();
114 0 : if ( eType & nsSelectionType::SEL_OLE )
115 : {
116 0 : eType = nsSelectionType::SEL_GRF;
117 0 : uno::Reference< text::XTextEmbeddedObjectsSupplier > xObjs(xModel, uno::UNO_QUERY);
118 0 : xNameAccess = xObjs->getEmbeddedObjects();
119 : }
120 :
121 0 : Link aLk = LINK( this, SwCaptionDialog, ModifyHdl );
122 0 : m_pCategoryBox->SetModifyHdl( aLk );
123 0 : m_pTextEdit->SetModifyHdl( aLk );
124 0 : m_pNumberingSeparatorED->SetModifyHdl ( aLk );
125 0 : m_pSepEdit->SetModifyHdl( aLk );
126 :
127 0 : aLk = LINK(this, SwCaptionDialog, SelectHdl);
128 0 : m_pCategoryBox->SetSelectHdl( aLk );
129 0 : m_pFormatBox->SetSelectHdl( aLk );
130 0 : m_pOptionButton->SetClickHdl( LINK( this, SwCaptionDialog, OptionHdl ) );
131 0 : m_pAutoCaptionButton->SetClickHdl(LINK(this, SwCaptionDialog, CaptionHdl));
132 :
133 0 : m_pCategoryBox->InsertEntry( m_sNone );
134 0 : sal_uInt16 nCount = pMgr->GetFldTypeCount();
135 0 : for (sal_uInt16 i = 0; i < nCount; i++)
136 : {
137 0 : SwFieldType *pType = pMgr->GetFldType( USHRT_MAX, i );
138 0 : if( pType->Which() == RES_SETEXPFLD &&
139 0 : ((SwSetExpFieldType *) pType)->GetType() & nsSwGetSetExpType::GSE_SEQ )
140 0 : m_pCategoryBox->InsertEntry(pType->GetName());
141 : }
142 :
143 0 : OUString sString;
144 0 : sal_uInt16 nPoolId = 0;
145 0 : if (eType & nsSelectionType::SEL_GRF)
146 : {
147 0 : nPoolId = RES_POOLCOLL_LABEL_ABB;
148 0 : sString = ::GetOldGrfCat();
149 0 : bCopyAttributes = true;
150 0 : sObjectName = rSh.GetFlyName();
151 : //if not OLE
152 0 : if(!xNameAccess.is())
153 : {
154 0 : uno::Reference< text::XTextGraphicObjectsSupplier > xGraphics(xModel, uno::UNO_QUERY);
155 0 : xNameAccess = xGraphics->getGraphicObjects();
156 : }
157 :
158 : }
159 0 : else if( eType & nsSelectionType::SEL_TBL )
160 : {
161 0 : nPoolId = RES_POOLCOLL_LABEL_TABLE;
162 0 : sString = ::GetOldTabCat();
163 0 : uno::Reference< text::XTextTablesSupplier > xTables(xModel, uno::UNO_QUERY);
164 0 : xNameAccess = xTables->getTextTables();
165 0 : sObjectName = rSh.GetTableFmt()->GetName();
166 : }
167 0 : else if( eType & nsSelectionType::SEL_FRM )
168 : {
169 0 : nPoolId = RES_POOLCOLL_LABEL_FRAME;
170 0 : sString = ::GetOldFrmCat();
171 0 : uno::Reference< text::XTextFramesSupplier > xFrms(xModel, uno::UNO_QUERY);
172 0 : xNameAccess = xFrms->getTextFrames();
173 0 : sObjectName = rSh.GetFlyName();
174 : }
175 0 : else if( eType == nsSelectionType::SEL_TXT )
176 : {
177 0 : nPoolId = RES_POOLCOLL_LABEL_FRAME;
178 0 : sString = ::GetOldFrmCat();
179 : }
180 0 : else if( eType & nsSelectionType::SEL_DRW )
181 : {
182 0 : nPoolId = RES_POOLCOLL_LABEL_DRAWING;
183 0 : sString = ::GetOldDrwCat();
184 : }
185 0 : if( nPoolId )
186 : {
187 0 : if (!sString.isEmpty())
188 0 : m_pCategoryBox->SetText( sString );
189 : else
190 : m_pCategoryBox->SetText(
191 0 : SwStyleNameMapper::GetUIName( nPoolId, OUString() ));
192 : }
193 :
194 : // aFormatBox
195 0 : sal_uInt16 nSelFmt = SVX_NUM_ARABIC;
196 0 : nCount = pMgr->GetFldTypeCount();
197 : SwFieldType* pFldType;
198 0 : for ( sal_uInt16 i = nCount; i; )
199 : {
200 0 : pFldType = pMgr->GetFldType(USHRT_MAX, --i);
201 0 : if( pFldType->GetName().equals(m_pCategoryBox->GetText()) )
202 : {
203 0 : nSelFmt = (sal_uInt16)((SwSetExpFieldType*)pFldType)->GetSeqFormat();
204 0 : break;
205 : }
206 : }
207 :
208 0 : nCount = pMgr->GetFormatCount(TYP_SEQFLD, false);
209 0 : for ( sal_uInt16 i = 0; i < nCount; ++i )
210 : {
211 0 : m_pFormatBox->InsertEntry( pMgr->GetFormatStr(TYP_SEQFLD, i) );
212 0 : const sal_uInt16 nFmtId = pMgr->GetFormatId(TYP_SEQFLD, i);
213 0 : m_pFormatBox->SetEntryData( i, reinterpret_cast<void*>( nFmtId ) );
214 0 : if( nFmtId == nSelFmt )
215 0 : m_pFormatBox->SelectEntryPos( i );
216 : }
217 :
218 : // aPosBox
219 0 : switch (eType)
220 : {
221 : case nsSelectionType::SEL_GRF:
222 : case nsSelectionType::SEL_TBL:
223 : case nsSelectionType::SEL_TBL | nsSelectionType::SEL_NUM:
224 : case nsSelectionType::SEL_TBL | nsSelectionType::SEL_TXT:
225 : case nsSelectionType::SEL_TBL | nsSelectionType::SEL_NUM | nsSelectionType::SEL_TXT:
226 : case nsSelectionType::SEL_DRW:
227 : case nsSelectionType::SEL_DRW | nsSelectionType::SEL_BEZ:
228 0 : m_pPosBox->InsertEntry(SW_RESSTR(STR_CAPTION_ABOVE));
229 0 : m_pPosBox->InsertEntry(SW_RESSTR(STR_CAPTION_BELOW));
230 0 : break;
231 : case nsSelectionType::SEL_FRM:
232 : case nsSelectionType::SEL_TXT:
233 0 : m_pPosBox->InsertEntry(SW_RESSTR(STR_CAPTION_BEGINNING));
234 0 : m_pPosBox->InsertEntry(SW_RESSTR(STR_CAPTION_END ));
235 0 : break;
236 : }
237 0 : m_pPosBox->SelectEntryPos(1);
238 :
239 0 : m_pCategoryBox->GetModifyHdl().Call(m_pCategoryBox);
240 :
241 0 : m_pSepEdit->SetText(our_aSepTextSave);
242 0 : m_pTextEdit->GrabFocus();
243 0 : DrawSample();
244 0 : }
245 :
246 0 : void SwCaptionDialog::Apply()
247 : {
248 0 : InsCaptionOpt aOpt;
249 0 : aOpt.UseCaption() = sal_True;
250 0 : OUString aName( m_pCategoryBox->GetText() );
251 0 : if ( aName == m_sNone )
252 : {
253 0 : aOpt.SetCategory( OUString() );
254 0 : aOpt.SetNumSeparator( OUString() );
255 : }
256 : else
257 : {
258 0 : aOpt.SetCategory(comphelper::string::strip(aName, ' '));
259 0 : aOpt.SetNumSeparator( m_pNumberingSeparatorED->GetText() );
260 : }
261 0 : aOpt.SetNumType( (sal_uInt16)(sal_uIntPtr)m_pFormatBox->GetEntryData( m_pFormatBox->GetSelectEntryPos() ) );
262 0 : aOpt.SetSeparator( m_pSepEdit->IsEnabled() ? m_pSepEdit->GetText() : OUString() );
263 0 : aOpt.SetCaption( m_pTextEdit->GetText() );
264 0 : aOpt.SetPos( m_pPosBox->GetSelectEntryPos() );
265 0 : aOpt.IgnoreSeqOpts() = true;
266 0 : aOpt.CopyAttributes() = bCopyAttributes;
267 0 : aOpt.SetCharacterStyle( sCharacterStyle );
268 0 : rView.InsertCaption( &aOpt );
269 0 : our_aSepTextSave = m_pSepEdit->GetText();
270 0 : }
271 :
272 0 : IMPL_LINK_INLINE_START( SwCaptionDialog, OptionHdl, Button*, pButton )
273 : {
274 0 : OUString sFldTypeName = m_pCategoryBox->GetText();
275 0 : if(sFldTypeName == m_sNone)
276 0 : sFldTypeName = OUString();
277 0 : SwSequenceOptionDialog aDlg( pButton, rView, sFldTypeName );
278 0 : aDlg.SetApplyBorderAndShadow(bCopyAttributes);
279 0 : aDlg.SetCharacterStyle( sCharacterStyle );
280 0 : aDlg.SetOrderNumberingFirst( bOrderNumberingFirst );
281 0 : aDlg.Execute();
282 0 : bCopyAttributes = aDlg.IsApplyBorderAndShadow();
283 0 : sCharacterStyle = aDlg.GetCharacterStyle();
284 : //#i61007# order of captions
285 0 : if( bOrderNumberingFirst != aDlg.IsOrderNumberingFirst() )
286 : {
287 0 : bOrderNumberingFirst = aDlg.IsOrderNumberingFirst();
288 0 : SW_MOD()->GetModuleConfig()->SetCaptionOrderNumberingFirst(bOrderNumberingFirst);
289 0 : ApplyCaptionOrder();
290 : }
291 0 : DrawSample();
292 0 : return 0;
293 : }
294 0 : IMPL_LINK_INLINE_END( SwCaptionDialog, OptionHdl, Button*, pButton )
295 :
296 0 : IMPL_LINK_NOARG_INLINE_START(SwCaptionDialog, SelectHdl)
297 : {
298 0 : DrawSample();
299 0 : return 0;
300 : }
301 0 : IMPL_LINK_NOARG_INLINE_END(SwCaptionDialog, SelectHdl)
302 :
303 0 : IMPL_LINK_NOARG(SwCaptionDialog, ModifyHdl)
304 : {
305 0 : SwWrtShell &rSh = rView.GetWrtShell();
306 0 : OUString sFldTypeName = m_pCategoryBox->GetText();
307 0 : bool bCorrectFldName = !sFldTypeName.isEmpty();
308 0 : bool bNone = sFldTypeName == m_sNone;
309 0 : SwFieldType* pType = (bCorrectFldName && !bNone)
310 0 : ? rSh.GetFldType( RES_SETEXPFLD, sFldTypeName )
311 0 : : 0;
312 0 : m_pOKButton->Enable( bCorrectFldName &&
313 0 : (!pType ||
314 0 : ((SwSetExpFieldType*)pType)->GetType() == nsSwGetSetExpType::GSE_SEQ) );
315 0 : m_pOptionButton->Enable( m_pOKButton->IsEnabled() && !bNone );
316 0 : m_pNumberingSeparatorFT->Enable( bOrderNumberingFirst && !bNone );
317 0 : m_pNumberingSeparatorED->Enable( bOrderNumberingFirst && !bNone );
318 0 : m_pFormatText->Enable( !bNone );
319 0 : m_pFormatBox->Enable( !bNone );
320 0 : m_pSepText->Enable( !bNone );
321 0 : m_pSepEdit->Enable( !bNone );
322 0 : DrawSample();
323 0 : return 0;
324 : }
325 :
326 0 : IMPL_LINK_NOARG(SwCaptionDialog, CaptionHdl)
327 : {
328 0 : SfxItemSet aSet( rView.GetDocShell()->GetDoc()->GetAttrPool() );
329 0 : SwCaptionOptDlg aDlg( this, aSet );
330 0 : aDlg.Execute();
331 :
332 0 : return 0;
333 : }
334 :
335 0 : void SwCaptionDialog::DrawSample()
336 : {
337 0 : OUString aStr;
338 0 : OUString sCaption = m_pTextEdit->GetText();
339 :
340 : // number
341 0 : OUString sFldTypeName = m_pCategoryBox->GetText();
342 0 : bool bNone = sFldTypeName == m_sNone;
343 0 : if( !bNone )
344 : {
345 : const sal_uInt16 nNumFmt = (sal_uInt16)(sal_uIntPtr)m_pFormatBox->GetEntryData(
346 0 : m_pFormatBox->GetSelectEntryPos() );
347 0 : if( SVX_NUM_NUMBER_NONE != nNumFmt )
348 : {
349 : // category
350 : //#i61007# order of captions
351 0 : if( !bOrderNumberingFirst )
352 : {
353 0 : aStr = sFldTypeName;
354 0 : if ( !aStr.isEmpty() )
355 0 : aStr += " ";
356 : }
357 :
358 0 : SwWrtShell &rSh = rView.GetWrtShell();
359 : SwSetExpFieldType* pFldType = (SwSetExpFieldType*)rSh.GetFldType(
360 0 : RES_SETEXPFLD, sFldTypeName );
361 0 : if( pFldType && pFldType->GetOutlineLvl() < MAXLEVEL )
362 : {
363 0 : sal_Int8 nLvl = pFldType->GetOutlineLvl();
364 0 : SwNumberTree::tNumberVector aNumVector;
365 0 : for( sal_Int8 i = 0; i <= nLvl; ++i )
366 0 : aNumVector.push_back(1);
367 :
368 : OUString sNumber( rSh.GetOutlineNumRule()->
369 0 : MakeNumString(aNumVector, sal_False ));
370 0 : if( !sNumber.isEmpty() )
371 0 : aStr += sNumber + pFldType->GetDelimiter();
372 : }
373 :
374 0 : switch( nNumFmt )
375 : {
376 0 : case SVX_NUM_CHARS_UPPER_LETTER: aStr += "A"; break;
377 0 : case SVX_NUM_CHARS_UPPER_LETTER_N: aStr += "A"; break;
378 0 : case SVX_NUM_CHARS_LOWER_LETTER: aStr += "a"; break;
379 0 : case SVX_NUM_CHARS_LOWER_LETTER_N: aStr += "a"; break;
380 0 : case SVX_NUM_ROMAN_UPPER: aStr += "I"; break;
381 0 : case SVX_NUM_ROMAN_LOWER: aStr += "i"; break;
382 0 : default: aStr += "1"; break;
383 : }
384 : //#i61007# order of captions
385 0 : if( bOrderNumberingFirst )
386 : {
387 0 : aStr += m_pNumberingSeparatorED->GetText() + sFldTypeName;
388 : }
389 :
390 : }
391 0 : if( !sCaption.isEmpty() )
392 : {
393 0 : aStr += m_pSepEdit->GetText();
394 : }
395 : }
396 0 : aStr += sCaption;
397 : // do preview!
398 0 : m_pPreview->SetPreviewText( aStr );
399 0 : }
400 :
401 0 : SwCaptionDialog::~SwCaptionDialog()
402 : {
403 0 : delete pMgr;
404 0 : }
405 :
406 0 : SwSequenceOptionDialog::SwSequenceOptionDialog( Window *pParent, SwView &rV,
407 : const OUString& rSeqFldType )
408 : : SvxStandardDialog( pParent, "CaptionOptionsDialog", "modules/swriter/ui/captionoptions.ui" ),
409 : rView( rV ),
410 0 : aFldTypeName( rSeqFldType )
411 : {
412 0 : get(m_pLbLevel, "level");
413 0 : get(m_pEdDelim, "separator");
414 0 : get(m_pLbCharStyle, "style");
415 0 : get(m_pApplyBorderAndShadowCB, "border_and_shadow");
416 0 : get(m_pLbCaptionOrder, "caption_order");
417 :
418 0 : SwWrtShell &rSh = rView.GetWrtShell();
419 :
420 0 : const OUString sNone(SW_RESSTR(SW_STR_NONE));
421 :
422 0 : m_pLbLevel->InsertEntry(sNone);
423 0 : for( sal_uInt16 n = 0; n < MAXLEVEL; ++n )
424 0 : m_pLbLevel->InsertEntry( OUString::number(n+1) );
425 :
426 : SwSetExpFieldType* pFldType = (SwSetExpFieldType*)rSh.GetFldType(
427 0 : RES_SETEXPFLD, aFldTypeName );
428 :
429 0 : sal_Unicode nLvl = MAXLEVEL;
430 0 : OUString sDelim(": ");
431 0 : if( pFldType )
432 : {
433 0 : sDelim = pFldType->GetDelimiter();
434 0 : nLvl = pFldType->GetOutlineLvl();
435 : }
436 :
437 0 : m_pLbLevel->SelectEntryPos( nLvl < MAXLEVEL ? nLvl + 1 : 0 );
438 0 : m_pEdDelim->SetText(sDelim);
439 :
440 0 : m_pLbCharStyle->InsertEntry(sNone);
441 0 : ::FillCharStyleListBox( *m_pLbCharStyle, rView.GetDocShell(), true, true );
442 0 : m_pLbCharStyle->SelectEntryPos( 0 );
443 0 : }
444 :
445 0 : SwSequenceOptionDialog::~SwSequenceOptionDialog()
446 : {
447 0 : }
448 :
449 0 : void SwSequenceOptionDialog::Apply()
450 : {
451 0 : SwWrtShell &rSh = rView.GetWrtShell();
452 : SwSetExpFieldType* pFldType = (SwSetExpFieldType*)rSh.GetFldType(
453 0 : RES_SETEXPFLD, aFldTypeName );
454 :
455 0 : sal_Int8 nLvl = (sal_Int8)( m_pLbLevel->GetSelectEntryPos() - 1);
456 0 : sal_Unicode cDelim = m_pEdDelim->GetText()[0];
457 :
458 0 : bool bUpdate = true;
459 0 : if( pFldType )
460 : {
461 0 : pFldType->SetDelimiter( OUString(cDelim) );
462 0 : pFldType->SetOutlineLvl( nLvl );
463 : }
464 0 : else if( !aFldTypeName.isEmpty() && nLvl < MAXLEVEL )
465 : {
466 : // then we have to insert that
467 0 : SwSetExpFieldType aFldType( rSh.GetDoc(), aFldTypeName, nsSwGetSetExpType::GSE_SEQ );
468 0 : aFldType.SetDelimiter( OUString(cDelim) );
469 0 : aFldType.SetOutlineLvl( nLvl );
470 0 : rSh.InsertFldType( aFldType );
471 : }
472 : else
473 0 : bUpdate = false;
474 :
475 0 : if( bUpdate )
476 0 : rSh.UpdateExpFlds();
477 0 : }
478 :
479 0 : OUString SwSequenceOptionDialog::GetCharacterStyle() const
480 : {
481 0 : if(m_pLbCharStyle->GetSelectEntryPos())
482 0 : return m_pLbCharStyle->GetSelectEntry();
483 0 : return OUString();
484 : }
485 :
486 0 : void SwSequenceOptionDialog::SetCharacterStyle(const OUString& rStyle)
487 : {
488 0 : m_pLbCharStyle->SelectEntryPos(0);
489 0 : m_pLbCharStyle->SelectEntry(rStyle);
490 0 : }
491 :
492 0 : bool CategoryBox::PreNotify( NotifyEvent& rNEvt )
493 : {
494 0 : bool nHandled = false;
495 0 : if( rNEvt.GetType() == EVENT_KEYINPUT &&
496 0 : rNEvt.GetKeyEvent()->GetCharCode() )
497 : {
498 0 : const KeyEvent* pEvent = rNEvt.GetKeyEvent();
499 0 : const KeyCode& rKeyCode = pEvent->GetKeyCode();
500 0 : const sal_uInt16 nTmpCode = rKeyCode.GetFullCode() & ~KEY_ALLMODTYPE;
501 :
502 0 : if(nTmpCode != KEY_BACKSPACE && nTmpCode != KEY_RETURN
503 0 : && nTmpCode != KEY_TAB && nTmpCode != KEY_ESCAPE)
504 : {
505 0 : const OUString sText( GetText() );
506 0 : Selection aSel( GetSelection() );
507 0 : aSel.Justify();
508 :
509 0 : const OUString sName = sText.copy(0, aSel.Min())
510 0 : + OUString( pEvent->GetCharCode() )
511 0 : + sText.copy(aSel.Max());
512 :
513 0 : if( !SwCalc::IsValidVarName( sName ))
514 0 : nHandled = true;
515 : }
516 : }
517 0 : if(!nHandled)
518 0 : nHandled = ComboBox::PreNotify( rNEvt );
519 0 : return nHandled;
520 : }
521 :
522 0 : extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeCategoryBox(Window* pParent, VclBuilder::stringmap &)
523 : {
524 0 : CategoryBox* pCategoryBox = new CategoryBox(pParent, WB_LEFT | WB_DROPDOWN | WB_VCENTER | WB_3DLOOK | WB_SORT);
525 0 : pCategoryBox->EnableAutoSize(true);
526 0 : return pCategoryBox;
527 : }
528 :
529 : /*-------------------------------------------------------------------------
530 : //#i61007# order of captions
531 : -----------------------------------------------------------------------*/
532 0 : void SwCaptionDialog::ApplyCaptionOrder()
533 : {
534 0 : m_pNumberingSeparatorFT->Enable(bOrderNumberingFirst);
535 0 : m_pNumberingSeparatorED->Enable(bOrderNumberingFirst);
536 0 : }
537 :
538 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|