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 #ifndef _SVX_NUMPAGES_HXX 24 #define _SVX_NUMPAGES_HXX 25 26 // include --------------------------------------------------------------- 27 28 #include <sfx2/tabdlg.hxx> 29 #include <vcl/group.hxx> 30 #include <vcl/fixed.hxx> 31 #include <vcl/menubtn.hxx> 32 #include <vcl/lstbox.hxx> 33 #include <vcl/edit.hxx> 34 #include <vcl/field.hxx> 35 #ifndef _SVX_NUMDEF_HXX 36 #include <editeng/numdef.hxx> 37 #endif 38 #include <svtools/ctrlbox.hxx> 39 #include <svl/svarray.hxx> 40 41 // ----------------------------------------------------------------------- 42 class SvxNumRule; 43 class SvxBmpNumValueSet; 44 class SvxNumValueSet; 45 class ValueSet; 46 class SvxNumberingPreview; 47 class SvxBrushItem; 48 49 /*-----------------13.02.97 14.02------------------- 50 51 --------------------------------------------------*/ 52 53 struct SvxNumSettings_Impl 54 { 55 short nNumberType; 56 short nParentNumbering; 57 rtl::OUString sPrefix; 58 rtl::OUString sSuffix; 59 rtl::OUString sBulletChar; 60 rtl::OUString sBulletFont; SvxNumSettings_ImplSvxNumSettings_Impl61 SvxNumSettings_Impl() : 62 nNumberType(0), 63 nParentNumbering(0) 64 {} 65 }; 66 67 typedef SvxNumSettings_Impl* SvxNumSettings_ImplPtr; 68 SV_DECL_PTRARR_DEL(SvxNumSettingsArr_Impl,SvxNumSettings_ImplPtr,8,4) 69 70 /*-----------------07.02.97 11.36------------------- 71 72 --------------------------------------------------*/ 73 class SvxSingleNumPickTabPage : public SfxTabPage 74 { 75 using TabPage::ActivatePage; 76 using TabPage::DeactivatePage; 77 78 FixedLine aValuesFL; 79 SvxNumValueSet* pExamplesVS; 80 SvxNumSettingsArr_Impl aNumSettingsArr; 81 SvxNumRule* pActNum; 82 SvxNumRule* pSaveNum; 83 sal_uInt16 nActNumLvl; 84 sal_Bool bModified : 1; 85 sal_Bool bPreset : 1; 86 87 String sNumCharFmtName; 88 sal_uInt16 nNumItemId; 89 90 protected: 91 DECL_LINK( NumSelectHdl_Impl, ValueSet*); 92 DECL_LINK( DoubleClickHdl_Impl, ValueSet* ); 93 94 public: 95 SvxSingleNumPickTabPage(Window* pParent, 96 const SfxItemSet& rSet); 97 ~SvxSingleNumPickTabPage(); 98 99 static SfxTabPage* Create( Window* pParent, 100 const SfxItemSet& rAttrSet); 101 102 virtual void ActivatePage(const SfxItemSet& rSet); 103 virtual int DeactivatePage(SfxItemSet *pSet); 104 virtual sal_Bool FillItemSet( SfxItemSet& rSet ); 105 virtual void Reset( const SfxItemSet& rSet ); 106 SetNumCharFmtName(const String & rName)107 void SetNumCharFmtName(const String& rName){sNumCharFmtName = rName;} 108 }; 109 110 /*-----------------07.02.97 11.36------------------- 111 112 --------------------------------------------------*/ 113 114 class SvxBulletPickTabPage : public SfxTabPage 115 { 116 using TabPage::ActivatePage; 117 using TabPage::DeactivatePage; 118 119 FixedLine aValuesFL; 120 SvxNumValueSet* pExamplesVS; 121 SvxNumRule* pActNum; 122 SvxNumRule* pSaveNum; 123 sal_uInt16 nActNumLvl; 124 sal_Bool bModified : 1; 125 sal_Bool bPreset : 1; 126 sal_uInt16 nNumItemId; 127 128 String sBulletCharFmtName; 129 protected: 130 DECL_LINK(NumSelectHdl_Impl, ValueSet*); 131 DECL_LINK( DoubleClickHdl_Impl, ValueSet* ); 132 public: 133 SvxBulletPickTabPage(Window* pParent, 134 const SfxItemSet& rSet); 135 ~SvxBulletPickTabPage(); 136 137 static SfxTabPage* Create( Window* pParent, 138 const SfxItemSet& rAttrSet); 139 140 virtual void ActivatePage(const SfxItemSet& rSet); 141 virtual int DeactivatePage(SfxItemSet *pSet); 142 virtual sal_Bool FillItemSet( SfxItemSet& rSet ); 143 virtual void Reset( const SfxItemSet& rSet ); 144 SetCharFmtName(const String & rName)145 void SetCharFmtName(const String& rName){sBulletCharFmtName = rName;} 146 virtual void PageCreated(SfxAllItemSet aSet); // add CHINA001 147 }; 148 149 /*-----------------07.02.97 11.36------------------- 150 TabPage fuer vollstaendig Numerierung 151 --------------------------------------------------*/ 152 #define NUMTYPE_MEMBER 4 // Anzahl der Elemente des FormatStrings je Ebene 153 #define NUM_VALUSET_COUNT 16 154 class SvxNumPickTabPage : public SfxTabPage 155 { 156 using TabPage::ActivatePage; 157 using TabPage::DeactivatePage; 158 159 FixedLine aValuesFL; 160 SvxNumValueSet* pExamplesVS; 161 String sNumCharFmtName; 162 String sBulletCharFmtName; 163 164 SvxNumSettingsArr_Impl aNumSettingsArrays[NUM_VALUSET_COUNT]; // wird mit den fuenf Formaten initialisiert 165 166 SvxNumRule* pActNum; 167 SvxNumRule* pSaveNum; 168 sal_uInt16 nActNumLvl; 169 sal_uInt16 nNumItemId; 170 sal_Bool bModified : 1; 171 sal_Bool bPreset : 1; 172 173 174 protected: 175 DECL_LINK(NumSelectHdl_Impl, ValueSet*); 176 DECL_LINK( DoubleClickHdl_Impl, ValueSet* ); 177 178 public: 179 SvxNumPickTabPage(Window* pParent, 180 const SfxItemSet& rSet); 181 ~SvxNumPickTabPage(); 182 183 static SfxTabPage* Create( Window* pParent, 184 const SfxItemSet& rAttrSet); 185 186 virtual void ActivatePage(const SfxItemSet& rSet); 187 virtual int DeactivatePage(SfxItemSet *pSet); 188 virtual sal_Bool FillItemSet( SfxItemSet& rSet ); 189 virtual void Reset( const SfxItemSet& rSet ); 190 SetCharFmtNames(const String & rCharName,const String & rBulName)191 void SetCharFmtNames(const String& rCharName, const String& rBulName) 192 { sNumCharFmtName = rCharName; 193 sBulletCharFmtName = rBulName;} 194 virtual void PageCreated(SfxAllItemSet aSet); // add CHINA001 195 }; 196 197 /*-----------------12.02.97 07.42------------------- 198 199 --------------------------------------------------*/ 200 class SvxBitmapPickTabPage : public SfxTabPage 201 { 202 using TabPage::ActivatePage; 203 using TabPage::DeactivatePage; 204 205 FixedLine aValuesFL; 206 SvxBmpNumValueSet* pExamplesVS; 207 FixedText aErrorText; 208 CheckBox aLinkedCB; 209 210 List aGrfNames; 211 String sNumCharFmtName; 212 213 SvxNumRule* pActNum; 214 SvxNumRule* pSaveNum; 215 sal_uInt16 nActNumLvl; 216 sal_uInt16 nNumItemId; 217 SfxMapUnit eCoreUnit; 218 sal_Bool bModified : 1; 219 sal_Bool bPreset : 1; 220 221 protected: 222 DECL_LINK( NumSelectHdl_Impl, ValueSet*); 223 DECL_LINK( DoubleClickHdl_Impl, ValueSet* ); 224 DECL_LINK( LinkBmpHdl_Impl, CheckBox* ); 225 226 public: 227 SvxBitmapPickTabPage(Window* pParent, 228 const SfxItemSet& rSet); 229 ~SvxBitmapPickTabPage(); 230 231 static SfxTabPage* Create( Window* pParent, 232 const SfxItemSet& rAttrSet); 233 234 virtual void ActivatePage(const SfxItemSet& rSet); 235 virtual int DeactivatePage(SfxItemSet *pSet); 236 virtual sal_Bool FillItemSet( SfxItemSet& rSet ); 237 virtual void Reset( const SfxItemSet& rSet ); 238 SetNumCharFmtName(const String & rName)239 void SetNumCharFmtName(const String& rName){sNumCharFmtName = rName;} 240 }; 241 242 /*-----------------01.12.97 16:13------------------- 243 244 --------------------------------------------------*/ 245 class SvxNumOptionsTabPage : public SfxTabPage 246 { 247 using TabPage::ActivatePage; 248 using TabPage::DeactivatePage; 249 250 FixedLine aFormatFL; 251 FixedText aLevelFT; 252 MultiListBox aLevelLB; 253 254 FixedText aFmtFT; 255 ListBox aFmtLB; 256 FixedText aPrefixFT; 257 Edit aPrefixED; 258 FixedText aSuffixFT; 259 Edit aSuffixED; 260 FixedText aCharFmtFT; 261 ListBox aCharFmtLB; 262 FixedText aBulColorFT; 263 ColorListBox aBulColLB; 264 FixedText aBulRelSizeFT; 265 MetricField aBulRelSizeMF; 266 FixedText aAllLevelFT; 267 NumericField aAllLevelNF; 268 FixedText aStartFT; 269 NumericField aStartED; 270 PushButton aBulletPB; 271 FixedText aAlignFT; 272 ListBox aAlignLB; 273 FixedText aBitmapFT; 274 MenuButton aBitmapMB; 275 FixedText aSizeFT; 276 MetricField aWidthMF; 277 FixedText aMultFT; 278 MetricField aHeightMF; 279 CheckBox aRatioCB; 280 FixedText aOrientFT; 281 ListBox aOrientLB; 282 283 FixedLine aSameLevelFL; 284 CheckBox aSameLevelCB; 285 286 String sNumCharFmtName; 287 String sBulletCharFmtName; 288 289 Timer aInvalidateTimer; 290 291 SvxNumberingPreview* pPreviewWIN; 292 293 SvxNumRule* pActNum; 294 SvxNumRule* pSaveNum; 295 296 Size aInitSize[SVX_MAX_NUM]; 297 298 sal_Bool bLastWidthModified : 1; 299 sal_Bool bModified : 1; 300 sal_Bool bPreset : 1; 301 sal_Bool bAutomaticCharStyles: 1; 302 sal_Bool bHTMLMode : 1; 303 sal_Bool bMenuButtonInitialized : 1; 304 305 List aGrfNames; 306 Font aActBulletFont; 307 String sBullet; 308 String sStartWith; 309 310 sal_uInt8 nBullet; 311 sal_uInt16 nActNumLvl; 312 sal_uInt16 nNumItemId; 313 SfxMapUnit eCoreUnit; 314 315 void InitControls(); 316 void SwitchNumberType( sal_uInt8 nType, sal_Bool bBmp = sal_False ); 317 void CheckForStartValue_Impl(sal_uInt16 nNumberingType); 318 319 DECL_LINK( NumberTypeSelectHdl_Impl, ListBox * ); 320 DECL_LINK( LevelHdl_Impl, ListBox * ); 321 DECL_LINK( PopupActivateHdl_Impl, Menu * ); 322 DECL_LINK( GraphicHdl_Impl, MenuButton * ); 323 DECL_LINK( BulletHdl_Impl, Button * ); 324 DECL_LINK( SizeHdl_Impl, MetricField * ); 325 DECL_LINK( RatioHdl_Impl, CheckBox * ); 326 DECL_LINK( CharFmtHdl_Impl, ListBox * ); 327 DECL_LINK( EditModifyHdl_Impl, Edit * ); 328 DECL_LINK( AllLevelHdl_Impl, NumericField * ); 329 DECL_LINK( OrientHdl_Impl, ListBox * ); 330 DECL_LINK( SameLevelHdl_Impl, CheckBox * ); 331 DECL_LINK( BulColorHdl_Impl, ColorListBox* ); 332 DECL_LINK( BulRelSizeHdl_Impl, MetricField *); 333 DECL_LINK( PreviewInvalidateHdl_Impl, Timer* ); 334 335 DECL_STATIC_LINK( SvxNumOptionsTabPage, GraphicArrivedHdl_Impl, SvxBrushItem* ); 336 337 public: 338 SvxNumOptionsTabPage(Window* pParent, 339 const SfxItemSet& rSet); 340 ~SvxNumOptionsTabPage(); 341 342 static SfxTabPage* Create( Window* pParent, 343 const SfxItemSet& rAttrSet); 344 345 virtual void ActivatePage(const SfxItemSet& rSet); 346 virtual int DeactivatePage(SfxItemSet *pSet); 347 virtual sal_Bool FillItemSet( SfxItemSet& rSet ); 348 virtual void Reset( const SfxItemSet& rSet ); 349 350 //??? void SetWrtShell(SwWrtShell* pSh); SetCharFmts(const String & rNumName,const String & rBulletName)351 void SetCharFmts(const String& rNumName, const String& rBulletName ) 352 { 353 sNumCharFmtName = rNumName; 354 sBulletCharFmtName = rBulletName; 355 } 356 void SetMetric(FieldUnit eSet); 357 GetCharFmtListBox()358 ListBox& GetCharFmtListBox() {return aCharFmtLB;} 359 void SetModified(sal_Bool bRepaint = sal_True); 360 virtual void PageCreated(SfxAllItemSet aSet); // add CHINA001 361 }; 362 363 /*-----------------03.12.97 10:18------------------- 364 365 --------------------------------------------------*/ 366 class SvxNumPositionTabPage : public SfxTabPage 367 { 368 using TabPage::ActivatePage; 369 using TabPage::DeactivatePage; 370 371 FixedLine aPositionFL; 372 FixedText aLevelFT; 373 MultiListBox aLevelLB; 374 375 // --> OD 2008-01-11 #newlistlevelattrs# 376 // former set of controls shown for numbering rules containing list level 377 // attributes in SvxNumberFormat::SvxNumPositionAndSpaceMode == LABEL_WIDTH_AND_POSITION 378 FixedText aDistBorderFT; 379 MetricField aDistBorderMF; 380 CheckBox aRelativeCB; 381 FixedText aIndentFT; 382 MetricField aIndentMF; 383 FixedText aDistNumFT; 384 MetricField aDistNumMF; 385 FixedText aAlignFT; 386 ListBox aAlignLB; 387 // <-- 388 389 // --> OD 2008-01-10 #newlistlevelattrs# 390 // new set of controls shown for numbering rules containing list level 391 // attributes in SvxNumberFormat::SvxNumPositionAndSpaceMode == LABEL_ALIGNMENT 392 FixedText aLabelFollowedByFT; 393 ListBox aLabelFollowedByLB; 394 FixedText aListtabFT; 395 MetricField aListtabMF; 396 FixedText aAlign2FT; 397 ListBox aAlign2LB; 398 FixedText aAlignedAtFT; 399 MetricField aAlignedAtMF; 400 FixedText aIndentAtFT; 401 MetricField aIndentAtMF; 402 // <-- 403 404 PushButton aStandardPB; 405 406 #if OSL_DEBUG_LEVEL > 1 407 FixedText* pDebugFixedText; 408 #endif 409 SvxNumberingPreview* pPreviewWIN; 410 411 SvxNumRule* pActNum; 412 SvxNumRule* pSaveNum; 413 414 sal_uInt16 nActNumLvl; 415 sal_uInt16 nNumItemId; 416 SfxMapUnit eCoreUnit; 417 418 sal_Bool bModified : 1; 419 sal_Bool bPreset : 1; 420 sal_Bool bInInintControl : 1; //Modify-Fehler umgehen, soll ab 391 behoben sein 421 // --> OD 2008-01-11 #newlistlevelattrs# 422 bool bLabelAlignmentPosAndSpaceModeActive; 423 // <-- 424 425 void InitControls(); 426 427 DECL_LINK( LevelHdl_Impl, ListBox * ); 428 DECL_LINK( EditModifyHdl_Impl, Edit*); 429 DECL_LINK( DistanceHdl_Impl, MetricField * ); 430 DECL_LINK( RelativeHdl_Impl, CheckBox * ); 431 DECL_LINK( StandardHdl_Impl, PushButton * ); 432 433 // --> OD 2008-01-11 #newlistlevelattrs# 434 void InitPosAndSpaceMode(); 435 void ShowControlsDependingOnPosAndSpaceMode(); 436 437 DECL_LINK( LabelFollowedByHdl_Impl, ListBox* ); 438 DECL_LINK( ListtabPosHdl_Impl, MetricField* ); 439 DECL_LINK( AlignAtHdl_Impl, MetricField* ); 440 DECL_LINK( IndentAtHdl_Impl, MetricField* ); 441 // <-- 442 443 public: 444 SvxNumPositionTabPage(Window* pParent, 445 const SfxItemSet& rSet); 446 ~SvxNumPositionTabPage(); 447 448 virtual void ActivatePage(const SfxItemSet& rSet); 449 virtual int DeactivatePage(SfxItemSet *pSet); 450 virtual sal_Bool FillItemSet( SfxItemSet& rSet ); 451 virtual void Reset( const SfxItemSet& rSet ); 452 453 static SfxTabPage* Create( Window* pParent, 454 const SfxItemSet& rAttrSet); 455 456 void SetMetric(FieldUnit eSet); 457 void SetModified(sal_Bool bRepaint = sal_True); 458 virtual void PageCreated(SfxAllItemSet aSet); // add CHINA001 459 }; 460 461 #endif 462 463 464 465 466