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