1*ff0525f2SOliver-Rainer Wittmann /************************************************************************ 2*ff0525f2SOliver-Rainer Wittmann * 3*ff0525f2SOliver-Rainer Wittmann * Licensed Materials - Property of IBM. 4*ff0525f2SOliver-Rainer Wittmann * (C) Copyright IBM Corporation 2003, 2012. All Rights Reserved. 5*ff0525f2SOliver-Rainer Wittmann * U.S. Government Users Restricted Rights: 6*ff0525f2SOliver-Rainer Wittmann * Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 7*ff0525f2SOliver-Rainer Wittmann * 8*ff0525f2SOliver-Rainer Wittmann ************************************************************************/ 9*ff0525f2SOliver-Rainer Wittmann 10*ff0525f2SOliver-Rainer Wittmann #include "precompiled_sw.hxx" 11*ff0525f2SOliver-Rainer Wittmann 12*ff0525f2SOliver-Rainer Wittmann #include "PagePropertyPanel.hxx" 13*ff0525f2SOliver-Rainer Wittmann #include "PagePropertyPanel.hrc" 14*ff0525f2SOliver-Rainer Wittmann 15*ff0525f2SOliver-Rainer Wittmann #include "PropertyPanel.hrc" 16*ff0525f2SOliver-Rainer Wittmann 17*ff0525f2SOliver-Rainer Wittmann #include <svx/sidebar/PopupContainer.hxx> 18*ff0525f2SOliver-Rainer Wittmann #include "PageOrientationControl.hxx" 19*ff0525f2SOliver-Rainer Wittmann #include "PageMarginControl.hxx" 20*ff0525f2SOliver-Rainer Wittmann #include "PageSizeControl.hxx" 21*ff0525f2SOliver-Rainer Wittmann #include "PageColumnControl.hxx" 22*ff0525f2SOliver-Rainer Wittmann 23*ff0525f2SOliver-Rainer Wittmann #include <swtypes.hxx> 24*ff0525f2SOliver-Rainer Wittmann #include <cmdid.h> 25*ff0525f2SOliver-Rainer Wittmann #include <errhdl.hxx> 26*ff0525f2SOliver-Rainer Wittmann 27*ff0525f2SOliver-Rainer Wittmann #include <svl/intitem.hxx> 28*ff0525f2SOliver-Rainer Wittmann #include <editeng/sizeitem.hxx> 29*ff0525f2SOliver-Rainer Wittmann #include <editeng/paperinf.hxx> 30*ff0525f2SOliver-Rainer Wittmann #include <svx/svxids.hrc> 31*ff0525f2SOliver-Rainer Wittmann #include <svx/dlgutil.hxx> 32*ff0525f2SOliver-Rainer Wittmann #include <svx/rulritem.hxx> 33*ff0525f2SOliver-Rainer Wittmann 34*ff0525f2SOliver-Rainer Wittmann #include <sfx2/sidebar/ControlFactory.hxx> 35*ff0525f2SOliver-Rainer Wittmann #include <sfx2/dispatch.hxx> 36*ff0525f2SOliver-Rainer Wittmann #include <sfx2/bindings.hxx> 37*ff0525f2SOliver-Rainer Wittmann #include <sfx2/viewsh.hxx> 38*ff0525f2SOliver-Rainer Wittmann #include <sfx2/objsh.hxx> 39*ff0525f2SOliver-Rainer Wittmann 40*ff0525f2SOliver-Rainer Wittmann #include <boost/bind.hpp> 41*ff0525f2SOliver-Rainer Wittmann 42*ff0525f2SOliver-Rainer Wittmann #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString))) 43*ff0525f2SOliver-Rainer Wittmann 44*ff0525f2SOliver-Rainer Wittmann #define SetFldVal(rField, lValue) (rField).SetValue((rField).Normalize(lValue), FUNIT_TWIP) 45*ff0525f2SOliver-Rainer Wittmann 46*ff0525f2SOliver-Rainer Wittmann 47*ff0525f2SOliver-Rainer Wittmann namespace sw { namespace sidebar { 48*ff0525f2SOliver-Rainer Wittmann 49*ff0525f2SOliver-Rainer Wittmann PagePropertyPanel* PagePropertyPanel::Create ( 50*ff0525f2SOliver-Rainer Wittmann Window* pParent, 51*ff0525f2SOliver-Rainer Wittmann const cssu::Reference<css::frame::XFrame>& rxFrame, 52*ff0525f2SOliver-Rainer Wittmann SfxBindings* pBindings) 53*ff0525f2SOliver-Rainer Wittmann { 54*ff0525f2SOliver-Rainer Wittmann if (pParent == NULL) 55*ff0525f2SOliver-Rainer Wittmann throw ::com::sun::star::lang::IllegalArgumentException(A2S("no parent Window given to PagePropertyPanel::Create"), NULL, 0); 56*ff0525f2SOliver-Rainer Wittmann if ( ! rxFrame.is()) 57*ff0525f2SOliver-Rainer Wittmann throw ::com::sun::star::lang::IllegalArgumentException(A2S("no XFrame given to PagePropertyPanel::Create"), NULL, 1); 58*ff0525f2SOliver-Rainer Wittmann if (pBindings == NULL) 59*ff0525f2SOliver-Rainer Wittmann throw ::com::sun::star::lang::IllegalArgumentException(A2S("no SfxBindings given to PagePropertyPanel::Create"), NULL, 2); 60*ff0525f2SOliver-Rainer Wittmann 61*ff0525f2SOliver-Rainer Wittmann return new PagePropertyPanel( 62*ff0525f2SOliver-Rainer Wittmann pParent, 63*ff0525f2SOliver-Rainer Wittmann rxFrame, 64*ff0525f2SOliver-Rainer Wittmann pBindings); 65*ff0525f2SOliver-Rainer Wittmann } 66*ff0525f2SOliver-Rainer Wittmann 67*ff0525f2SOliver-Rainer Wittmann PagePropertyPanel::PagePropertyPanel( 68*ff0525f2SOliver-Rainer Wittmann Window* pParent, 69*ff0525f2SOliver-Rainer Wittmann const cssu::Reference<css::frame::XFrame>& rxFrame, 70*ff0525f2SOliver-Rainer Wittmann SfxBindings* pBindings) 71*ff0525f2SOliver-Rainer Wittmann : Control(pParent, SW_RES(RID_PROPERTYPANEL_SWPAGE)) 72*ff0525f2SOliver-Rainer Wittmann , mxFrame(rxFrame) 73*ff0525f2SOliver-Rainer Wittmann , maContext() 74*ff0525f2SOliver-Rainer Wittmann , mpBindings(pBindings) 75*ff0525f2SOliver-Rainer Wittmann // visible controls 76*ff0525f2SOliver-Rainer Wittmann , maFtOrientation( this, SW_RES(FT_ORIENTATION) ) 77*ff0525f2SOliver-Rainer Wittmann , mpToolBoxOrientationBackground( ::sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this) ) 78*ff0525f2SOliver-Rainer Wittmann , mpToolBoxOrientation( ::sfx2::sidebar::ControlFactory::CreateToolBox( mpToolBoxOrientationBackground.get(), SW_RES(TB_ORIENTATION)) ) 79*ff0525f2SOliver-Rainer Wittmann , maFtMargin( this, SW_RES(FT_MARGIN) ) 80*ff0525f2SOliver-Rainer Wittmann , mpToolBoxMarginBackground( ::sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this) ) 81*ff0525f2SOliver-Rainer Wittmann , mpToolBoxMargin( ::sfx2::sidebar::ControlFactory::CreateToolBox( mpToolBoxMarginBackground.get(), SW_RES(TB_MARGIN)) ) 82*ff0525f2SOliver-Rainer Wittmann , maFtSize( this, SW_RES(FT_SIZE) ) 83*ff0525f2SOliver-Rainer Wittmann , mpToolBoxSizeBackground( ::sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this) ) 84*ff0525f2SOliver-Rainer Wittmann , mpToolBoxSize( ::sfx2::sidebar::ControlFactory::CreateToolBox( mpToolBoxSizeBackground.get(), SW_RES(TB_SIZE)) ) 85*ff0525f2SOliver-Rainer Wittmann , maFtColumn( this, SW_RES(FT_COLUMN) ) 86*ff0525f2SOliver-Rainer Wittmann , mpToolBoxColumnBackground( ::sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this) ) 87*ff0525f2SOliver-Rainer Wittmann , mpToolBoxColumn( ::sfx2::sidebar::ControlFactory::CreateToolBox( mpToolBoxColumnBackground.get(), SW_RES(TB_COLUMN)) ) 88*ff0525f2SOliver-Rainer Wittmann // image resources 89*ff0525f2SOliver-Rainer Wittmann , maImgSize (NULL) 90*ff0525f2SOliver-Rainer Wittmann , maImgSize_L (NULL) 91*ff0525f2SOliver-Rainer Wittmann , mImgPortrait (SW_RES(IMG_PAGE_PORTRAIT)) 92*ff0525f2SOliver-Rainer Wittmann , mImgLandscape (SW_RES(IMG_PAGE_LANDSCAPE)) 93*ff0525f2SOliver-Rainer Wittmann , mImgNarrow (SW_RES(IMG_PAGE_NARROW)) 94*ff0525f2SOliver-Rainer Wittmann , mImgNormal (SW_RES(IMG_PAGE_NORMAL)) 95*ff0525f2SOliver-Rainer Wittmann , mImgWide (SW_RES(IMG_PAGE_WIDE)) 96*ff0525f2SOliver-Rainer Wittmann , mImgMirrored (SW_RES(IMG_PAGE_MIRRORED)) 97*ff0525f2SOliver-Rainer Wittmann , mImgMarginCustom (SW_RES(IMG_PAGE_MARGIN_CUSTOM)) 98*ff0525f2SOliver-Rainer Wittmann , mImgNarrow_L (SW_RES(IMG_PAGE_NARROW_L)) 99*ff0525f2SOliver-Rainer Wittmann , mImgNormal_L (SW_RES(IMG_PAGE_NORMAL_L)) 100*ff0525f2SOliver-Rainer Wittmann , mImgWide_L (SW_RES(IMG_PAGE_WIDE_L)) 101*ff0525f2SOliver-Rainer Wittmann , mImgMirrored_L (SW_RES(IMG_PAGE_MIRRORED_L)) 102*ff0525f2SOliver-Rainer Wittmann , mImgMarginCustom_L (SW_RES(IMG_PAGE_MARGIN_CUSTOM_L)) 103*ff0525f2SOliver-Rainer Wittmann , mImgA3 (SW_RES(IMG_PAGE_A3)) 104*ff0525f2SOliver-Rainer Wittmann , mImgA4 (SW_RES(IMG_PAGE_A4)) 105*ff0525f2SOliver-Rainer Wittmann , mImgA5 (SW_RES(IMG_PAGE_A5)) 106*ff0525f2SOliver-Rainer Wittmann , mImgB4 (SW_RES(IMG_PAGE_B4)) 107*ff0525f2SOliver-Rainer Wittmann , mImgB5 (SW_RES(IMG_PAGE_B5)) 108*ff0525f2SOliver-Rainer Wittmann , mImgC5 (SW_RES(IMG_PAGE_C5)) 109*ff0525f2SOliver-Rainer Wittmann , mImgLetter (SW_RES(IMG_PAGE_LETTER)) 110*ff0525f2SOliver-Rainer Wittmann , mImgLegal (SW_RES(IMG_PAGE_LEGAL)) 111*ff0525f2SOliver-Rainer Wittmann , mImgSizeNone (SW_RES(IMG_PAGE_SIZE_NONE)) 112*ff0525f2SOliver-Rainer Wittmann , mImgA3_L (SW_RES(IMG_PAGE_A3_L)) 113*ff0525f2SOliver-Rainer Wittmann , mImgA4_L (SW_RES(IMG_PAGE_A4_L)) 114*ff0525f2SOliver-Rainer Wittmann , mImgA5_L (SW_RES(IMG_PAGE_A5_L)) 115*ff0525f2SOliver-Rainer Wittmann , mImgB4_L (SW_RES(IMG_PAGE_B4_L)) 116*ff0525f2SOliver-Rainer Wittmann , mImgB5_L (SW_RES(IMG_PAGE_B5_L)) 117*ff0525f2SOliver-Rainer Wittmann , mImgC5_L (SW_RES(IMG_PAGE_C5_L)) 118*ff0525f2SOliver-Rainer Wittmann , mImgLetter_L (SW_RES(IMG_PAGE_LETTER_L)) 119*ff0525f2SOliver-Rainer Wittmann , mImgLegal_L (SW_RES(IMG_PAGE_LEGAL_L)) 120*ff0525f2SOliver-Rainer Wittmann , mImgSizeNone_L (SW_RES(IMG_PAGE_SIZE_NONE_L)) 121*ff0525f2SOliver-Rainer Wittmann , mImgColumn1 (SW_RES(IMG_PAGE_COLUMN_1)) 122*ff0525f2SOliver-Rainer Wittmann , mImgColumn2 (SW_RES(IMG_PAGE_COLUMN_2)) 123*ff0525f2SOliver-Rainer Wittmann , mImgColumn3 (SW_RES(IMG_PAGE_COLUMN_3)) 124*ff0525f2SOliver-Rainer Wittmann , mImgLeft (SW_RES(IMG_PAGE_COLUMN_LEFT)) 125*ff0525f2SOliver-Rainer Wittmann , mImgRight (SW_RES(IMG_PAGE_COLUMN_RIGHT)) 126*ff0525f2SOliver-Rainer Wittmann , mImgColumnNone (SW_RES(IMG_PAGE_COLUMN_NONE)) 127*ff0525f2SOliver-Rainer Wittmann , mImgColumn1_L (SW_RES(IMG_PAGE_COLUMN_1_L)) 128*ff0525f2SOliver-Rainer Wittmann , mImgColumn2_L (SW_RES(IMG_PAGE_COLUMN_2_L)) 129*ff0525f2SOliver-Rainer Wittmann , mImgColumn3_L (SW_RES(IMG_PAGE_COLUMN_3_L)) 130*ff0525f2SOliver-Rainer Wittmann , mImgLeft_L (SW_RES(IMG_PAGE_COLUMN_LEFT_L)) 131*ff0525f2SOliver-Rainer Wittmann , mImgRight_L (SW_RES(IMG_PAGE_COLUMN_RIGHT_L)) 132*ff0525f2SOliver-Rainer Wittmann , mImgColumnNone_L (SW_RES(IMG_PAGE_COLUMN_NONE_L)) 133*ff0525f2SOliver-Rainer Wittmann 134*ff0525f2SOliver-Rainer Wittmann , mpPageItem( new SvxPageItem(SID_ATTR_PAGE) ) 135*ff0525f2SOliver-Rainer Wittmann , mpPageLRMarginItem( new SvxLongLRSpaceItem( 0, 0, SID_ATTR_LONG_LRSPACE ) ) 136*ff0525f2SOliver-Rainer Wittmann , mpPageULMarginItem( new SvxLongULSpaceItem( 0, 0, SID_ATTR_LONG_ULSPACE ) ) 137*ff0525f2SOliver-Rainer Wittmann , mpPageSizeItem( new SvxSizeItem(SID_ATTR_PAGE_SIZE) ) 138*ff0525f2SOliver-Rainer Wittmann , mePaper( PAPER_USER ) 139*ff0525f2SOliver-Rainer Wittmann , mpPageColumnTypeItem( new SfxInt16Item(SID_ATTR_SWPAGE_COLUMN) ) 140*ff0525f2SOliver-Rainer Wittmann 141*ff0525f2SOliver-Rainer Wittmann , meFUnit() 142*ff0525f2SOliver-Rainer Wittmann , meUnit() 143*ff0525f2SOliver-Rainer Wittmann 144*ff0525f2SOliver-Rainer Wittmann , m_aSwPagePgULControl (SID_ATTR_LONG_ULSPACE, *pBindings, *this) 145*ff0525f2SOliver-Rainer Wittmann , m_aSwPagePgLRControl (SID_ATTR_LONG_LRSPACE, *pBindings, *this) 146*ff0525f2SOliver-Rainer Wittmann , m_aSwPagePgSizeControl (SID_ATTR_PAGE_SIZE, *pBindings, *this) 147*ff0525f2SOliver-Rainer Wittmann , m_aSwPagePgControl (SID_ATTR_PAGE, *pBindings, *this) 148*ff0525f2SOliver-Rainer Wittmann , m_aSwPageColControl (SID_ATTR_SWPAGE_COLUMN, *pBindings, *this) 149*ff0525f2SOliver-Rainer Wittmann , m_aSwPagePgMetricControl (SID_ATTR_METRIC, *pBindings, *this) 150*ff0525f2SOliver-Rainer Wittmann 151*ff0525f2SOliver-Rainer Wittmann , mpOrientationPopup() 152*ff0525f2SOliver-Rainer Wittmann , mpMarginPopup() 153*ff0525f2SOliver-Rainer Wittmann , mpSizePopup() 154*ff0525f2SOliver-Rainer Wittmann , mpColumnPopup() 155*ff0525f2SOliver-Rainer Wittmann { 156*ff0525f2SOliver-Rainer Wittmann Initialize(); 157*ff0525f2SOliver-Rainer Wittmann FreeResource(); 158*ff0525f2SOliver-Rainer Wittmann } 159*ff0525f2SOliver-Rainer Wittmann 160*ff0525f2SOliver-Rainer Wittmann PagePropertyPanel::~PagePropertyPanel() 161*ff0525f2SOliver-Rainer Wittmann { 162*ff0525f2SOliver-Rainer Wittmann delete[] maImgSize; 163*ff0525f2SOliver-Rainer Wittmann delete[] maImgSize_L; 164*ff0525f2SOliver-Rainer Wittmann 165*ff0525f2SOliver-Rainer Wittmann // destroy the toolbox windows. 166*ff0525f2SOliver-Rainer Wittmann mpToolBoxOrientation.reset(); 167*ff0525f2SOliver-Rainer Wittmann mpToolBoxMargin.reset(); 168*ff0525f2SOliver-Rainer Wittmann mpToolBoxSize.reset(); 169*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn.reset(); 170*ff0525f2SOliver-Rainer Wittmann 171*ff0525f2SOliver-Rainer Wittmann // destroy the background windows of the toolboxes. 172*ff0525f2SOliver-Rainer Wittmann mpToolBoxOrientationBackground.reset(); 173*ff0525f2SOliver-Rainer Wittmann mpToolBoxMarginBackground.reset(); 174*ff0525f2SOliver-Rainer Wittmann mpToolBoxSizeBackground.reset(); 175*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumnBackground.reset(); 176*ff0525f2SOliver-Rainer Wittmann } 177*ff0525f2SOliver-Rainer Wittmann 178*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::Initialize() 179*ff0525f2SOliver-Rainer Wittmann { 180*ff0525f2SOliver-Rainer Wittmann // popup for page orientation 181*ff0525f2SOliver-Rainer Wittmann Link aLink = LINK( this, PagePropertyPanel, ClickOrientationHdl ); 182*ff0525f2SOliver-Rainer Wittmann mpToolBoxOrientation->SetDropdownClickHdl( aLink ); 183*ff0525f2SOliver-Rainer Wittmann mpToolBoxOrientation->SetSelectHdl( aLink ); 184*ff0525f2SOliver-Rainer Wittmann mpToolBoxOrientation->SetItemImage( TBI_ORIENTATION, mImgPortrait); 185*ff0525f2SOliver-Rainer Wittmann mpToolBoxOrientation->SetItemBits( TBI_ORIENTATION, mpToolBoxOrientation->GetItemBits( TBI_ORIENTATION ) | TIB_DROPDOWNONLY ); 186*ff0525f2SOliver-Rainer Wittmann mpToolBoxOrientation->SetQuickHelpText(TBI_ORIENTATION,String(SW_RES(STR_QHELP_TB_ORIENTATION))); 187*ff0525f2SOliver-Rainer Wittmann mpToolBoxOrientation->SetOutputSizePixel( mpToolBoxOrientation->CalcWindowSizePixel() ); 188*ff0525f2SOliver-Rainer Wittmann mpToolBoxOrientation->SetBackground( Wallpaper() ); 189*ff0525f2SOliver-Rainer Wittmann mpToolBoxOrientation->SetPaintTransparent( sal_True ); 190*ff0525f2SOliver-Rainer Wittmann 191*ff0525f2SOliver-Rainer Wittmann // popup for page margins 192*ff0525f2SOliver-Rainer Wittmann aLink = LINK( this, PagePropertyPanel, ClickMarginHdl ); 193*ff0525f2SOliver-Rainer Wittmann mpToolBoxMargin->SetDropdownClickHdl( aLink ); 194*ff0525f2SOliver-Rainer Wittmann mpToolBoxMargin->SetSelectHdl( aLink ); 195*ff0525f2SOliver-Rainer Wittmann mpToolBoxMargin->SetItemImage(TBI_MARGIN, mImgNormal); 196*ff0525f2SOliver-Rainer Wittmann mpToolBoxMargin->SetItemBits( TBI_MARGIN, mpToolBoxMargin->GetItemBits( TBI_MARGIN ) | TIB_DROPDOWNONLY ); 197*ff0525f2SOliver-Rainer Wittmann mpToolBoxMargin->SetQuickHelpText(TBI_MARGIN,String(SW_RES(STR_QHELP_TB_MARGIN))); 198*ff0525f2SOliver-Rainer Wittmann mpToolBoxMargin->SetOutputSizePixel( mpToolBoxMargin->CalcWindowSizePixel() ); 199*ff0525f2SOliver-Rainer Wittmann mpToolBoxMargin->SetBackground(Wallpaper()); 200*ff0525f2SOliver-Rainer Wittmann mpToolBoxMargin->SetPaintTransparent( sal_True ); 201*ff0525f2SOliver-Rainer Wittmann 202*ff0525f2SOliver-Rainer Wittmann // popup for page size 203*ff0525f2SOliver-Rainer Wittmann aLink = LINK( this, PagePropertyPanel, ClickSizeHdl ); 204*ff0525f2SOliver-Rainer Wittmann mpToolBoxSize->SetDropdownClickHdl( aLink ); 205*ff0525f2SOliver-Rainer Wittmann mpToolBoxSize->SetSelectHdl( aLink ); 206*ff0525f2SOliver-Rainer Wittmann mpToolBoxSize->SetItemImage(TBI_SIZE, mImgLetter); 207*ff0525f2SOliver-Rainer Wittmann mpToolBoxSize->SetItemBits( TBI_SIZE, mpToolBoxSize->GetItemBits( TBI_SIZE ) | TIB_DROPDOWNONLY ); 208*ff0525f2SOliver-Rainer Wittmann mpToolBoxSize->SetQuickHelpText(TBI_SIZE,String(SW_RES(STR_QHELP_TB_SIZE))); 209*ff0525f2SOliver-Rainer Wittmann mpToolBoxSize->SetOutputSizePixel( mpToolBoxSize->CalcWindowSizePixel() ); 210*ff0525f2SOliver-Rainer Wittmann mpToolBoxSize->SetBackground(Wallpaper()); 211*ff0525f2SOliver-Rainer Wittmann mpToolBoxSize->SetPaintTransparent( sal_True ); 212*ff0525f2SOliver-Rainer Wittmann maImgSize = new Image[8]; 213*ff0525f2SOliver-Rainer Wittmann maImgSize[0] = mImgA3; 214*ff0525f2SOliver-Rainer Wittmann maImgSize[1] = mImgA4; 215*ff0525f2SOliver-Rainer Wittmann maImgSize[2] = mImgA5; 216*ff0525f2SOliver-Rainer Wittmann maImgSize[3] = mImgB4; 217*ff0525f2SOliver-Rainer Wittmann maImgSize[4] = mImgB5; 218*ff0525f2SOliver-Rainer Wittmann maImgSize[5] = mImgC5; 219*ff0525f2SOliver-Rainer Wittmann maImgSize[6] = mImgLetter; 220*ff0525f2SOliver-Rainer Wittmann maImgSize[7] = mImgLegal; 221*ff0525f2SOliver-Rainer Wittmann maImgSize_L = new Image[8]; 222*ff0525f2SOliver-Rainer Wittmann maImgSize_L[0] = mImgA3_L; 223*ff0525f2SOliver-Rainer Wittmann maImgSize_L[1] = mImgA4_L; 224*ff0525f2SOliver-Rainer Wittmann maImgSize_L[2] = mImgA5_L; 225*ff0525f2SOliver-Rainer Wittmann maImgSize_L[3] = mImgB4_L; 226*ff0525f2SOliver-Rainer Wittmann maImgSize_L[4] = mImgB5_L; 227*ff0525f2SOliver-Rainer Wittmann maImgSize_L[5] = mImgC5_L; 228*ff0525f2SOliver-Rainer Wittmann maImgSize_L[6] = mImgLetter_L; 229*ff0525f2SOliver-Rainer Wittmann maImgSize_L[7] = mImgLegal_L; 230*ff0525f2SOliver-Rainer Wittmann 231*ff0525f2SOliver-Rainer Wittmann // popup for page column property 232*ff0525f2SOliver-Rainer Wittmann aLink = LINK( this, PagePropertyPanel, ClickColumnHdl ); 233*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetDropdownClickHdl( aLink ); 234*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetSelectHdl( aLink ); 235*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumn1); 236*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetItemBits( TBI_COLUMN, mpToolBoxColumn->GetItemBits( TBI_COLUMN ) | TIB_DROPDOWNONLY ); 237*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetQuickHelpText(TBI_COLUMN,String(SW_RES(STR_QHELP_TB_COLUMN))); 238*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetOutputSizePixel( mpToolBoxColumn->CalcWindowSizePixel() ); 239*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetBackground(Wallpaper()); 240*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetPaintTransparent( sal_True ); 241*ff0525f2SOliver-Rainer Wittmann 242*ff0525f2SOliver-Rainer Wittmann meFUnit = GetModuleFieldUnit(); 243*ff0525f2SOliver-Rainer Wittmann meUnit = m_aSwPagePgSizeControl.GetCoreMetric(); 244*ff0525f2SOliver-Rainer Wittmann 245*ff0525f2SOliver-Rainer Wittmann // 'pull' for page style's attribute values 246*ff0525f2SOliver-Rainer Wittmann mpBindings->Update( SID_ATTR_LONG_LRSPACE ); 247*ff0525f2SOliver-Rainer Wittmann mpBindings->Update( SID_ATTR_LONG_ULSPACE ); 248*ff0525f2SOliver-Rainer Wittmann mpBindings->Update( SID_ATTR_PAGE ); 249*ff0525f2SOliver-Rainer Wittmann mpBindings->Update( SID_ATTR_PAGE_SIZE ); 250*ff0525f2SOliver-Rainer Wittmann } 251*ff0525f2SOliver-Rainer Wittmann 252*ff0525f2SOliver-Rainer Wittmann 253*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::DataChanged( const DataChangedEvent& rEvent ) 254*ff0525f2SOliver-Rainer Wittmann { 255*ff0525f2SOliver-Rainer Wittmann // currently nothing special to do 256*ff0525f2SOliver-Rainer Wittmann 257*ff0525f2SOliver-Rainer Wittmann // forward to base class 258*ff0525f2SOliver-Rainer Wittmann Control::DataChanged( rEvent ); 259*ff0525f2SOliver-Rainer Wittmann } 260*ff0525f2SOliver-Rainer Wittmann 261*ff0525f2SOliver-Rainer Wittmann 262*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::HandleContextChange( const ::sfx2::sidebar::EnumContext aContext) 263*ff0525f2SOliver-Rainer Wittmann { 264*ff0525f2SOliver-Rainer Wittmann if (maContext == aContext) 265*ff0525f2SOliver-Rainer Wittmann { 266*ff0525f2SOliver-Rainer Wittmann // nothing to do. 267*ff0525f2SOliver-Rainer Wittmann return; 268*ff0525f2SOliver-Rainer Wittmann } 269*ff0525f2SOliver-Rainer Wittmann 270*ff0525f2SOliver-Rainer Wittmann maContext = aContext; 271*ff0525f2SOliver-Rainer Wittmann 272*ff0525f2SOliver-Rainer Wittmann // TODO: reactions on certain context switches 273*ff0525f2SOliver-Rainer Wittmann } 274*ff0525f2SOliver-Rainer Wittmann 275*ff0525f2SOliver-Rainer Wittmann 276*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ShowPageStyleFormatDialog( void ) 277*ff0525f2SOliver-Rainer Wittmann { 278*ff0525f2SOliver-Rainer Wittmann mpBindings->GetDispatcher()->Execute( FN_FORMAT_PAGE_DLG, SFX_CALLMODE_ASYNCHRON ); 279*ff0525f2SOliver-Rainer Wittmann } 280*ff0525f2SOliver-Rainer Wittmann 281*ff0525f2SOliver-Rainer Wittmann 282*ff0525f2SOliver-Rainer Wittmann 283*ff0525f2SOliver-Rainer Wittmann 284*ff0525f2SOliver-Rainer Wittmann ::svx::sidebar::PopupControl* PagePropertyPanel::CreatePageOrientationControl( ::svx::sidebar::PopupContainer* pParent ) 285*ff0525f2SOliver-Rainer Wittmann { 286*ff0525f2SOliver-Rainer Wittmann return new PageOrientationControl( pParent, *this , mpPageItem->IsLandscape() ); 287*ff0525f2SOliver-Rainer Wittmann } 288*ff0525f2SOliver-Rainer Wittmann 289*ff0525f2SOliver-Rainer Wittmann 290*ff0525f2SOliver-Rainer Wittmann IMPL_LINK( PagePropertyPanel, ClickOrientationHdl, ToolBox*, pToolBox ) 291*ff0525f2SOliver-Rainer Wittmann { 292*ff0525f2SOliver-Rainer Wittmann mpOrientationPopup.reset( 293*ff0525f2SOliver-Rainer Wittmann new ::svx::sidebar::Popup( 294*ff0525f2SOliver-Rainer Wittmann this, 295*ff0525f2SOliver-Rainer Wittmann ::boost::bind(&PagePropertyPanel::CreatePageOrientationControl, this, _1), 296*ff0525f2SOliver-Rainer Wittmann ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Page orientation")) ) ); 297*ff0525f2SOliver-Rainer Wittmann mpOrientationPopup->Show( *pToolBox ); 298*ff0525f2SOliver-Rainer Wittmann 299*ff0525f2SOliver-Rainer Wittmann return 0L; 300*ff0525f2SOliver-Rainer Wittmann } 301*ff0525f2SOliver-Rainer Wittmann 302*ff0525f2SOliver-Rainer Wittmann 303*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ExecuteOrientationChange( const sal_Bool bLandscape ) 304*ff0525f2SOliver-Rainer Wittmann { 305*ff0525f2SOliver-Rainer Wittmann { 306*ff0525f2SOliver-Rainer Wittmann // set new page orientation 307*ff0525f2SOliver-Rainer Wittmann mpPageItem->SetLandscape( bLandscape ); 308*ff0525f2SOliver-Rainer Wittmann 309*ff0525f2SOliver-Rainer Wittmann // swap the width and height of the page size 310*ff0525f2SOliver-Rainer Wittmann mpPageSizeItem->SetSize( Size( mpPageSizeItem->GetSize().Height(), mpPageSizeItem->GetSize().Width() ) ); 311*ff0525f2SOliver-Rainer Wittmann 312*ff0525f2SOliver-Rainer Wittmann // apply changed attributes 313*ff0525f2SOliver-Rainer Wittmann GetBindings()->GetDispatcher()->Execute( SID_ATTR_PAGE_SIZE, SFX_CALLMODE_RECORD, mpPageSizeItem.get(), mpPageItem.get(), 0L ); 314*ff0525f2SOliver-Rainer Wittmann } 315*ff0525f2SOliver-Rainer Wittmann 316*ff0525f2SOliver-Rainer Wittmann // check, if margin values still fit to the changed page size. 317*ff0525f2SOliver-Rainer Wittmann // if not, adjust margin values 318*ff0525f2SOliver-Rainer Wittmann { 319*ff0525f2SOliver-Rainer Wittmann const long nML = mpPageLRMarginItem->GetLeft(); 320*ff0525f2SOliver-Rainer Wittmann const long nMR = mpPageLRMarginItem->GetRight(); 321*ff0525f2SOliver-Rainer Wittmann const long nTmpPW = nML + nMR + MINBODY; 322*ff0525f2SOliver-Rainer Wittmann 323*ff0525f2SOliver-Rainer Wittmann const long nPW = mpPageSizeItem->GetSize().Width(); 324*ff0525f2SOliver-Rainer Wittmann 325*ff0525f2SOliver-Rainer Wittmann if ( nTmpPW > nPW ) 326*ff0525f2SOliver-Rainer Wittmann { 327*ff0525f2SOliver-Rainer Wittmann if ( nML <= nMR ) 328*ff0525f2SOliver-Rainer Wittmann { 329*ff0525f2SOliver-Rainer Wittmann ExecuteMarginLRChange( mpPageLRMarginItem->GetLeft(), nMR - (nTmpPW - nPW ) ); 330*ff0525f2SOliver-Rainer Wittmann } 331*ff0525f2SOliver-Rainer Wittmann else 332*ff0525f2SOliver-Rainer Wittmann { 333*ff0525f2SOliver-Rainer Wittmann ExecuteMarginLRChange( nML - (nTmpPW - nPW ), mpPageLRMarginItem->GetRight() ); 334*ff0525f2SOliver-Rainer Wittmann } 335*ff0525f2SOliver-Rainer Wittmann } 336*ff0525f2SOliver-Rainer Wittmann 337*ff0525f2SOliver-Rainer Wittmann const long nMT = mpPageULMarginItem->GetUpper(); 338*ff0525f2SOliver-Rainer Wittmann const long nMB = mpPageULMarginItem->GetLower(); 339*ff0525f2SOliver-Rainer Wittmann const long nTmpPH = nMT + nMB + MINBODY; 340*ff0525f2SOliver-Rainer Wittmann 341*ff0525f2SOliver-Rainer Wittmann const long nPH = mpPageSizeItem->GetSize().Height(); 342*ff0525f2SOliver-Rainer Wittmann 343*ff0525f2SOliver-Rainer Wittmann if ( nTmpPH > nPH ) 344*ff0525f2SOliver-Rainer Wittmann { 345*ff0525f2SOliver-Rainer Wittmann if ( nMT <= nMB ) 346*ff0525f2SOliver-Rainer Wittmann { 347*ff0525f2SOliver-Rainer Wittmann ExecuteMarginULChange( mpPageULMarginItem->GetUpper(), nMB - ( nTmpPH - nPH ) ); 348*ff0525f2SOliver-Rainer Wittmann } 349*ff0525f2SOliver-Rainer Wittmann else 350*ff0525f2SOliver-Rainer Wittmann { 351*ff0525f2SOliver-Rainer Wittmann ExecuteMarginULChange( nMT - ( nTmpPH - nPH ), mpPageULMarginItem->GetLower() ); 352*ff0525f2SOliver-Rainer Wittmann } 353*ff0525f2SOliver-Rainer Wittmann } 354*ff0525f2SOliver-Rainer Wittmann } 355*ff0525f2SOliver-Rainer Wittmann } 356*ff0525f2SOliver-Rainer Wittmann 357*ff0525f2SOliver-Rainer Wittmann 358*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ClosePageOrientationPopup() 359*ff0525f2SOliver-Rainer Wittmann { 360*ff0525f2SOliver-Rainer Wittmann mpOrientationPopup->Hide(); 361*ff0525f2SOliver-Rainer Wittmann mpOrientationPopup.reset( 0 ); 362*ff0525f2SOliver-Rainer Wittmann } 363*ff0525f2SOliver-Rainer Wittmann 364*ff0525f2SOliver-Rainer Wittmann 365*ff0525f2SOliver-Rainer Wittmann 366*ff0525f2SOliver-Rainer Wittmann 367*ff0525f2SOliver-Rainer Wittmann ::svx::sidebar::PopupControl* PagePropertyPanel::CreatePageMarginControl( ::svx::sidebar::PopupContainer* pParent ) 368*ff0525f2SOliver-Rainer Wittmann { 369*ff0525f2SOliver-Rainer Wittmann return new PageMarginControl( 370*ff0525f2SOliver-Rainer Wittmann pParent, 371*ff0525f2SOliver-Rainer Wittmann *this, 372*ff0525f2SOliver-Rainer Wittmann *mpPageLRMarginItem.get(), 373*ff0525f2SOliver-Rainer Wittmann *mpPageULMarginItem.get(), 374*ff0525f2SOliver-Rainer Wittmann mpPageItem->GetPageUsage() == SVX_PAGE_MIRROR, 375*ff0525f2SOliver-Rainer Wittmann mpPageSizeItem->GetSize(), 376*ff0525f2SOliver-Rainer Wittmann mpPageItem->IsLandscape(), 377*ff0525f2SOliver-Rainer Wittmann meFUnit, 378*ff0525f2SOliver-Rainer Wittmann meUnit ); 379*ff0525f2SOliver-Rainer Wittmann } 380*ff0525f2SOliver-Rainer Wittmann 381*ff0525f2SOliver-Rainer Wittmann 382*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ExecuteMarginLRChange( 383*ff0525f2SOliver-Rainer Wittmann const long nPageLeftMargin, 384*ff0525f2SOliver-Rainer Wittmann const long nPageRightMargin ) 385*ff0525f2SOliver-Rainer Wittmann { 386*ff0525f2SOliver-Rainer Wittmann mpPageLRMarginItem->SetLeft( nPageLeftMargin ); 387*ff0525f2SOliver-Rainer Wittmann mpPageLRMarginItem->SetRight( nPageRightMargin ); 388*ff0525f2SOliver-Rainer Wittmann GetBindings()->GetDispatcher()->Execute( SID_ATTR_LONG_LRSPACE, SFX_CALLMODE_RECORD, mpPageLRMarginItem.get(), 0L ); 389*ff0525f2SOliver-Rainer Wittmann } 390*ff0525f2SOliver-Rainer Wittmann 391*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ExecuteMarginULChange( 392*ff0525f2SOliver-Rainer Wittmann const long nPageTopMargin, 393*ff0525f2SOliver-Rainer Wittmann const long nPageBottomMargin ) 394*ff0525f2SOliver-Rainer Wittmann { 395*ff0525f2SOliver-Rainer Wittmann mpPageULMarginItem->SetUpper( nPageTopMargin ); 396*ff0525f2SOliver-Rainer Wittmann mpPageULMarginItem->SetLower( nPageBottomMargin ); 397*ff0525f2SOliver-Rainer Wittmann GetBindings()->GetDispatcher()->Execute( SID_ATTR_LONG_ULSPACE, SFX_CALLMODE_RECORD, mpPageULMarginItem.get(), 0L ); 398*ff0525f2SOliver-Rainer Wittmann } 399*ff0525f2SOliver-Rainer Wittmann 400*ff0525f2SOliver-Rainer Wittmann 401*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ExecutePageLayoutChange( const bool bMirrored ) 402*ff0525f2SOliver-Rainer Wittmann { 403*ff0525f2SOliver-Rainer Wittmann mpPageItem->SetPageUsage( bMirrored ? SVX_PAGE_MIRROR : SVX_PAGE_ALL ); 404*ff0525f2SOliver-Rainer Wittmann GetBindings()->GetDispatcher()->Execute( SID_ATTR_PAGE, SFX_CALLMODE_RECORD, mpPageItem.get(), 0L ); 405*ff0525f2SOliver-Rainer Wittmann } 406*ff0525f2SOliver-Rainer Wittmann 407*ff0525f2SOliver-Rainer Wittmann 408*ff0525f2SOliver-Rainer Wittmann IMPL_LINK( PagePropertyPanel, ClickMarginHdl, ToolBox*, pToolBox ) 409*ff0525f2SOliver-Rainer Wittmann { 410*ff0525f2SOliver-Rainer Wittmann mpMarginPopup.reset( 411*ff0525f2SOliver-Rainer Wittmann new ::svx::sidebar::Popup( 412*ff0525f2SOliver-Rainer Wittmann this, 413*ff0525f2SOliver-Rainer Wittmann ::boost::bind(&PagePropertyPanel::CreatePageMarginControl, this, _1), 414*ff0525f2SOliver-Rainer Wittmann ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Page margins")) ) ); 415*ff0525f2SOliver-Rainer Wittmann mpMarginPopup->Show( *pToolBox ); 416*ff0525f2SOliver-Rainer Wittmann 417*ff0525f2SOliver-Rainer Wittmann return 0L; 418*ff0525f2SOliver-Rainer Wittmann } 419*ff0525f2SOliver-Rainer Wittmann 420*ff0525f2SOliver-Rainer Wittmann 421*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ClosePageMarginPopup() 422*ff0525f2SOliver-Rainer Wittmann { 423*ff0525f2SOliver-Rainer Wittmann mpMarginPopup->Hide(); 424*ff0525f2SOliver-Rainer Wittmann mpMarginPopup.reset( 0 ); 425*ff0525f2SOliver-Rainer Wittmann } 426*ff0525f2SOliver-Rainer Wittmann 427*ff0525f2SOliver-Rainer Wittmann 428*ff0525f2SOliver-Rainer Wittmann 429*ff0525f2SOliver-Rainer Wittmann 430*ff0525f2SOliver-Rainer Wittmann ::svx::sidebar::PopupControl* PagePropertyPanel::CreatePageSizeControl( ::svx::sidebar::PopupContainer* pParent ) 431*ff0525f2SOliver-Rainer Wittmann { 432*ff0525f2SOliver-Rainer Wittmann return new PageSizeControl( 433*ff0525f2SOliver-Rainer Wittmann pParent, 434*ff0525f2SOliver-Rainer Wittmann *this, 435*ff0525f2SOliver-Rainer Wittmann mePaper, 436*ff0525f2SOliver-Rainer Wittmann mpPageItem->IsLandscape(), 437*ff0525f2SOliver-Rainer Wittmann meFUnit ); 438*ff0525f2SOliver-Rainer Wittmann } 439*ff0525f2SOliver-Rainer Wittmann 440*ff0525f2SOliver-Rainer Wittmann 441*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ExecuteSizeChange( const Paper ePaper ) 442*ff0525f2SOliver-Rainer Wittmann { 443*ff0525f2SOliver-Rainer Wittmann Size aPageSize = SvxPaperInfo::GetPaperSize( ePaper, (MapUnit)(meUnit) ); 444*ff0525f2SOliver-Rainer Wittmann if ( mpPageItem->IsLandscape() ) 445*ff0525f2SOliver-Rainer Wittmann { 446*ff0525f2SOliver-Rainer Wittmann Swap( aPageSize ); 447*ff0525f2SOliver-Rainer Wittmann } 448*ff0525f2SOliver-Rainer Wittmann mpPageSizeItem->SetSize( aPageSize ); 449*ff0525f2SOliver-Rainer Wittmann 450*ff0525f2SOliver-Rainer Wittmann mpBindings->GetDispatcher()->Execute(SID_ATTR_PAGE_SIZE, SFX_CALLMODE_RECORD, mpPageSizeItem.get(), 0L ); 451*ff0525f2SOliver-Rainer Wittmann } 452*ff0525f2SOliver-Rainer Wittmann 453*ff0525f2SOliver-Rainer Wittmann 454*ff0525f2SOliver-Rainer Wittmann IMPL_LINK( PagePropertyPanel, ClickSizeHdl, ToolBox*, pToolBox ) 455*ff0525f2SOliver-Rainer Wittmann { 456*ff0525f2SOliver-Rainer Wittmann mpSizePopup.reset( 457*ff0525f2SOliver-Rainer Wittmann new ::svx::sidebar::Popup( 458*ff0525f2SOliver-Rainer Wittmann this, 459*ff0525f2SOliver-Rainer Wittmann ::boost::bind(&PagePropertyPanel::CreatePageSizeControl, this, _1), 460*ff0525f2SOliver-Rainer Wittmann ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Page size")) ) ); 461*ff0525f2SOliver-Rainer Wittmann mpSizePopup->Show( *pToolBox ); 462*ff0525f2SOliver-Rainer Wittmann 463*ff0525f2SOliver-Rainer Wittmann return 0L; 464*ff0525f2SOliver-Rainer Wittmann } 465*ff0525f2SOliver-Rainer Wittmann 466*ff0525f2SOliver-Rainer Wittmann 467*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ClosePageSizePopup() 468*ff0525f2SOliver-Rainer Wittmann { 469*ff0525f2SOliver-Rainer Wittmann mpSizePopup->Hide(); 470*ff0525f2SOliver-Rainer Wittmann mpSizePopup.reset( 0 ); 471*ff0525f2SOliver-Rainer Wittmann } 472*ff0525f2SOliver-Rainer Wittmann 473*ff0525f2SOliver-Rainer Wittmann 474*ff0525f2SOliver-Rainer Wittmann 475*ff0525f2SOliver-Rainer Wittmann 476*ff0525f2SOliver-Rainer Wittmann ::svx::sidebar::PopupControl* PagePropertyPanel::CreatePageColumnControl( ::svx::sidebar::PopupContainer* pParent ) 477*ff0525f2SOliver-Rainer Wittmann { 478*ff0525f2SOliver-Rainer Wittmann return new PageColumnControl( 479*ff0525f2SOliver-Rainer Wittmann pParent, 480*ff0525f2SOliver-Rainer Wittmann *this, 481*ff0525f2SOliver-Rainer Wittmann mpPageColumnTypeItem->GetValue(), 482*ff0525f2SOliver-Rainer Wittmann mpPageItem->IsLandscape() ); 483*ff0525f2SOliver-Rainer Wittmann } 484*ff0525f2SOliver-Rainer Wittmann 485*ff0525f2SOliver-Rainer Wittmann 486*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ExecuteColumnChange( const sal_uInt16 nColumnType ) 487*ff0525f2SOliver-Rainer Wittmann { 488*ff0525f2SOliver-Rainer Wittmann mpPageColumnTypeItem->SetValue( nColumnType ); 489*ff0525f2SOliver-Rainer Wittmann mpBindings->GetDispatcher()->Execute(SID_ATTR_SWPAGE_COLUMN, SFX_CALLMODE_RECORD, mpPageColumnTypeItem.get(), 0L ); 490*ff0525f2SOliver-Rainer Wittmann } 491*ff0525f2SOliver-Rainer Wittmann 492*ff0525f2SOliver-Rainer Wittmann 493*ff0525f2SOliver-Rainer Wittmann IMPL_LINK( PagePropertyPanel, ClickColumnHdl, ToolBox*, pToolBox ) 494*ff0525f2SOliver-Rainer Wittmann { 495*ff0525f2SOliver-Rainer Wittmann mpColumnPopup.reset( 496*ff0525f2SOliver-Rainer Wittmann new ::svx::sidebar::Popup( 497*ff0525f2SOliver-Rainer Wittmann this, 498*ff0525f2SOliver-Rainer Wittmann ::boost::bind(&PagePropertyPanel::CreatePageColumnControl, this, _1), 499*ff0525f2SOliver-Rainer Wittmann ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Page columns")) ) ); 500*ff0525f2SOliver-Rainer Wittmann mpColumnPopup->Show( *pToolBox ); 501*ff0525f2SOliver-Rainer Wittmann 502*ff0525f2SOliver-Rainer Wittmann return 0L; 503*ff0525f2SOliver-Rainer Wittmann } 504*ff0525f2SOliver-Rainer Wittmann 505*ff0525f2SOliver-Rainer Wittmann 506*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ClosePageColumnPopup() 507*ff0525f2SOliver-Rainer Wittmann { 508*ff0525f2SOliver-Rainer Wittmann mpColumnPopup->Hide(); 509*ff0525f2SOliver-Rainer Wittmann mpColumnPopup.reset( 0 ); 510*ff0525f2SOliver-Rainer Wittmann } 511*ff0525f2SOliver-Rainer Wittmann 512*ff0525f2SOliver-Rainer Wittmann 513*ff0525f2SOliver-Rainer Wittmann 514*ff0525f2SOliver-Rainer Wittmann 515*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::NotifyItemUpdate( 516*ff0525f2SOliver-Rainer Wittmann const sal_uInt16 nSId, 517*ff0525f2SOliver-Rainer Wittmann const SfxItemState eState, 518*ff0525f2SOliver-Rainer Wittmann const SfxPoolItem* pState) 519*ff0525f2SOliver-Rainer Wittmann { 520*ff0525f2SOliver-Rainer Wittmann switch( nSId ) 521*ff0525f2SOliver-Rainer Wittmann { 522*ff0525f2SOliver-Rainer Wittmann case SID_ATTR_SWPAGE_COLUMN: 523*ff0525f2SOliver-Rainer Wittmann { 524*ff0525f2SOliver-Rainer Wittmann if ( eState >= SFX_ITEM_AVAILABLE && 525*ff0525f2SOliver-Rainer Wittmann pState && pState->ISA(SfxInt16Item) ) 526*ff0525f2SOliver-Rainer Wittmann { 527*ff0525f2SOliver-Rainer Wittmann mpPageColumnTypeItem.reset( static_cast<SfxInt16Item*>(pState->Clone()) ); 528*ff0525f2SOliver-Rainer Wittmann ChangeColumnImage( mpPageColumnTypeItem->GetValue() ); 529*ff0525f2SOliver-Rainer Wittmann } 530*ff0525f2SOliver-Rainer Wittmann } 531*ff0525f2SOliver-Rainer Wittmann break; 532*ff0525f2SOliver-Rainer Wittmann case SID_ATTR_LONG_LRSPACE: 533*ff0525f2SOliver-Rainer Wittmann if ( eState >= SFX_ITEM_AVAILABLE && 534*ff0525f2SOliver-Rainer Wittmann pState && pState->ISA(SvxLongLRSpaceItem) ) 535*ff0525f2SOliver-Rainer Wittmann { 536*ff0525f2SOliver-Rainer Wittmann mpPageLRMarginItem.reset( static_cast<SvxLongLRSpaceItem*>(pState->Clone()) ); 537*ff0525f2SOliver-Rainer Wittmann ChangeMarginImage(); 538*ff0525f2SOliver-Rainer Wittmann } 539*ff0525f2SOliver-Rainer Wittmann break; 540*ff0525f2SOliver-Rainer Wittmann 541*ff0525f2SOliver-Rainer Wittmann case SID_ATTR_LONG_ULSPACE: 542*ff0525f2SOliver-Rainer Wittmann if ( eState >= SFX_ITEM_AVAILABLE && 543*ff0525f2SOliver-Rainer Wittmann pState && pState->ISA(SvxLongULSpaceItem) ) 544*ff0525f2SOliver-Rainer Wittmann { 545*ff0525f2SOliver-Rainer Wittmann mpPageULMarginItem.reset( static_cast<SvxLongULSpaceItem*>(pState->Clone()) ); 546*ff0525f2SOliver-Rainer Wittmann ChangeMarginImage(); 547*ff0525f2SOliver-Rainer Wittmann } 548*ff0525f2SOliver-Rainer Wittmann break; 549*ff0525f2SOliver-Rainer Wittmann 550*ff0525f2SOliver-Rainer Wittmann case SID_ATTR_PAGE: 551*ff0525f2SOliver-Rainer Wittmann if ( eState >= SFX_ITEM_AVAILABLE && 552*ff0525f2SOliver-Rainer Wittmann pState && pState->ISA(SvxPageItem) ) 553*ff0525f2SOliver-Rainer Wittmann { 554*ff0525f2SOliver-Rainer Wittmann mpPageItem.reset( static_cast<SvxPageItem*>(pState->Clone()) ); 555*ff0525f2SOliver-Rainer Wittmann if ( mpPageItem->IsLandscape() ) 556*ff0525f2SOliver-Rainer Wittmann { 557*ff0525f2SOliver-Rainer Wittmann mpToolBoxOrientation->SetItemImage(TBI_ORIENTATION, mImgLandscape); 558*ff0525f2SOliver-Rainer Wittmann } 559*ff0525f2SOliver-Rainer Wittmann else 560*ff0525f2SOliver-Rainer Wittmann { 561*ff0525f2SOliver-Rainer Wittmann mpToolBoxOrientation->SetItemImage(TBI_ORIENTATION, mImgPortrait); 562*ff0525f2SOliver-Rainer Wittmann } 563*ff0525f2SOliver-Rainer Wittmann ChangeMarginImage(); 564*ff0525f2SOliver-Rainer Wittmann ChangeSizeImage(); 565*ff0525f2SOliver-Rainer Wittmann ChangeColumnImage( mpPageColumnTypeItem->GetValue() ); 566*ff0525f2SOliver-Rainer Wittmann } 567*ff0525f2SOliver-Rainer Wittmann break; 568*ff0525f2SOliver-Rainer Wittmann 569*ff0525f2SOliver-Rainer Wittmann case SID_ATTR_PAGE_SIZE: 570*ff0525f2SOliver-Rainer Wittmann mpBindings->Invalidate( SID_ATTR_PAGE, sal_True, sal_False ); 571*ff0525f2SOliver-Rainer Wittmann if ( eState >= SFX_ITEM_AVAILABLE && 572*ff0525f2SOliver-Rainer Wittmann pState && pState->ISA(SvxSizeItem) ) 573*ff0525f2SOliver-Rainer Wittmann { 574*ff0525f2SOliver-Rainer Wittmann mpPageSizeItem.reset( static_cast<SvxSizeItem*>(pState->Clone()) ); 575*ff0525f2SOliver-Rainer Wittmann ChangeSizeImage(); 576*ff0525f2SOliver-Rainer Wittmann } 577*ff0525f2SOliver-Rainer Wittmann break; 578*ff0525f2SOliver-Rainer Wittmann case SID_ATTR_METRIC: 579*ff0525f2SOliver-Rainer Wittmann MetricState( eState, pState ); 580*ff0525f2SOliver-Rainer Wittmann break; 581*ff0525f2SOliver-Rainer Wittmann } 582*ff0525f2SOliver-Rainer Wittmann } 583*ff0525f2SOliver-Rainer Wittmann 584*ff0525f2SOliver-Rainer Wittmann 585*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::MetricState( SfxItemState eState, const SfxPoolItem* pState ) 586*ff0525f2SOliver-Rainer Wittmann { 587*ff0525f2SOliver-Rainer Wittmann meFUnit = FUNIT_NONE; 588*ff0525f2SOliver-Rainer Wittmann if ( pState && eState >= SFX_ITEM_DEFAULT ) 589*ff0525f2SOliver-Rainer Wittmann { 590*ff0525f2SOliver-Rainer Wittmann meFUnit = (FieldUnit)( (const SfxUInt16Item*)pState )->GetValue(); 591*ff0525f2SOliver-Rainer Wittmann } 592*ff0525f2SOliver-Rainer Wittmann else 593*ff0525f2SOliver-Rainer Wittmann { 594*ff0525f2SOliver-Rainer Wittmann SfxViewFrame* pFrame = SfxViewFrame::Current(); 595*ff0525f2SOliver-Rainer Wittmann SfxObjectShell* pSh = NULL; 596*ff0525f2SOliver-Rainer Wittmann if ( pFrame ) 597*ff0525f2SOliver-Rainer Wittmann pSh = pFrame->GetObjectShell(); 598*ff0525f2SOliver-Rainer Wittmann if ( pSh ) 599*ff0525f2SOliver-Rainer Wittmann { 600*ff0525f2SOliver-Rainer Wittmann SfxModule* pModule = pSh->GetModule(); 601*ff0525f2SOliver-Rainer Wittmann if ( pModule ) 602*ff0525f2SOliver-Rainer Wittmann { 603*ff0525f2SOliver-Rainer Wittmann const SfxPoolItem* pItem = pModule->GetItem( SID_ATTR_METRIC ); 604*ff0525f2SOliver-Rainer Wittmann if ( pItem ) 605*ff0525f2SOliver-Rainer Wittmann meFUnit = (FieldUnit)( (SfxUInt16Item*)pItem )->GetValue(); 606*ff0525f2SOliver-Rainer Wittmann } 607*ff0525f2SOliver-Rainer Wittmann else 608*ff0525f2SOliver-Rainer Wittmann { 609*ff0525f2SOliver-Rainer Wittmann DBG_ERRORFILE( "<PagePropertyPanel::MetricState(..)>: no module found" ); 610*ff0525f2SOliver-Rainer Wittmann } 611*ff0525f2SOliver-Rainer Wittmann } 612*ff0525f2SOliver-Rainer Wittmann } 613*ff0525f2SOliver-Rainer Wittmann } 614*ff0525f2SOliver-Rainer Wittmann 615*ff0525f2SOliver-Rainer Wittmann 616*ff0525f2SOliver-Rainer Wittmann 617*ff0525f2SOliver-Rainer Wittmann 618*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ChangeMarginImage() 619*ff0525f2SOliver-Rainer Wittmann { 620*ff0525f2SOliver-Rainer Wittmann if ( mpPageLRMarginItem.get() == 0 || 621*ff0525f2SOliver-Rainer Wittmann mpPageULMarginItem.get() == 0 || 622*ff0525f2SOliver-Rainer Wittmann mpPageItem.get() == 0 ) 623*ff0525f2SOliver-Rainer Wittmann { 624*ff0525f2SOliver-Rainer Wittmann return; 625*ff0525f2SOliver-Rainer Wittmann } 626*ff0525f2SOliver-Rainer Wittmann 627*ff0525f2SOliver-Rainer Wittmann const long cTolerance = 5; 628*ff0525f2SOliver-Rainer Wittmann 629*ff0525f2SOliver-Rainer Wittmann if( abs(mpPageLRMarginItem->GetLeft() - SWPAGE_NARROW_VALUE) <= cTolerance && 630*ff0525f2SOliver-Rainer Wittmann abs(mpPageLRMarginItem->GetRight() - SWPAGE_NARROW_VALUE) <= cTolerance && 631*ff0525f2SOliver-Rainer Wittmann abs(mpPageULMarginItem->GetUpper() - SWPAGE_NARROW_VALUE) <= cTolerance && 632*ff0525f2SOliver-Rainer Wittmann abs(mpPageULMarginItem->GetLower() - SWPAGE_NARROW_VALUE) <= cTolerance && 633*ff0525f2SOliver-Rainer Wittmann mpPageItem->GetPageUsage() != SVX_PAGE_MIRROR ) 634*ff0525f2SOliver-Rainer Wittmann mpToolBoxMargin->SetItemImage( TBI_MARGIN, mpPageItem->IsLandscape() ? mImgNarrow_L : mImgNarrow ); 635*ff0525f2SOliver-Rainer Wittmann 636*ff0525f2SOliver-Rainer Wittmann else if( abs(mpPageLRMarginItem->GetLeft() - SWPAGE_NORMAL_VALUE) <= cTolerance && 637*ff0525f2SOliver-Rainer Wittmann abs(mpPageLRMarginItem->GetRight() - SWPAGE_NORMAL_VALUE) <= cTolerance && 638*ff0525f2SOliver-Rainer Wittmann abs(mpPageULMarginItem->GetUpper() - SWPAGE_NORMAL_VALUE) <= cTolerance && 639*ff0525f2SOliver-Rainer Wittmann abs(mpPageULMarginItem->GetLower() - SWPAGE_NORMAL_VALUE) <= cTolerance && 640*ff0525f2SOliver-Rainer Wittmann mpPageItem->GetPageUsage() != SVX_PAGE_MIRROR ) 641*ff0525f2SOliver-Rainer Wittmann mpToolBoxMargin->SetItemImage(TBI_MARGIN, mpPageItem->IsLandscape() ? mImgNormal_L : mImgNormal ); 642*ff0525f2SOliver-Rainer Wittmann 643*ff0525f2SOliver-Rainer Wittmann else if( abs(mpPageLRMarginItem->GetLeft() - SWPAGE_WIDE_VALUE2) <= cTolerance && 644*ff0525f2SOliver-Rainer Wittmann abs(mpPageLRMarginItem->GetRight() - SWPAGE_WIDE_VALUE2) <= cTolerance && 645*ff0525f2SOliver-Rainer Wittmann abs(mpPageULMarginItem->GetUpper() - SWPAGE_WIDE_VALUE1) <= cTolerance && 646*ff0525f2SOliver-Rainer Wittmann abs(mpPageULMarginItem->GetLower() - SWPAGE_WIDE_VALUE1) <= cTolerance && 647*ff0525f2SOliver-Rainer Wittmann mpPageItem->GetPageUsage() != SVX_PAGE_MIRROR ) 648*ff0525f2SOliver-Rainer Wittmann mpToolBoxMargin->SetItemImage(TBI_MARGIN, mpPageItem->IsLandscape() ? mImgWide_L : mImgWide ); 649*ff0525f2SOliver-Rainer Wittmann 650*ff0525f2SOliver-Rainer Wittmann else if( abs(mpPageLRMarginItem->GetLeft() - SWPAGE_WIDE_VALUE3) <= cTolerance && 651*ff0525f2SOliver-Rainer Wittmann abs(mpPageLRMarginItem->GetRight() - SWPAGE_WIDE_VALUE1) <= cTolerance && 652*ff0525f2SOliver-Rainer Wittmann abs(mpPageULMarginItem->GetUpper() - SWPAGE_WIDE_VALUE1) <= cTolerance && 653*ff0525f2SOliver-Rainer Wittmann abs(mpPageULMarginItem->GetLower() - SWPAGE_WIDE_VALUE1) <= cTolerance && 654*ff0525f2SOliver-Rainer Wittmann mpPageItem->GetPageUsage() == SVX_PAGE_MIRROR ) 655*ff0525f2SOliver-Rainer Wittmann mpToolBoxMargin->SetItemImage(TBI_MARGIN, mpPageItem->IsLandscape() ? mImgMirrored_L : mImgMirrored ); 656*ff0525f2SOliver-Rainer Wittmann 657*ff0525f2SOliver-Rainer Wittmann else 658*ff0525f2SOliver-Rainer Wittmann mpToolBoxMargin->SetItemImage(TBI_MARGIN, mpPageItem->IsLandscape() ? mImgMarginCustom_L : mImgMarginCustom ); 659*ff0525f2SOliver-Rainer Wittmann } 660*ff0525f2SOliver-Rainer Wittmann 661*ff0525f2SOliver-Rainer Wittmann 662*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ChangeSizeImage() 663*ff0525f2SOliver-Rainer Wittmann { 664*ff0525f2SOliver-Rainer Wittmann if ( mpPageSizeItem.get() == 0 || 665*ff0525f2SOliver-Rainer Wittmann mpPageItem.get() == 0 ) 666*ff0525f2SOliver-Rainer Wittmann { 667*ff0525f2SOliver-Rainer Wittmann return; 668*ff0525f2SOliver-Rainer Wittmann } 669*ff0525f2SOliver-Rainer Wittmann 670*ff0525f2SOliver-Rainer Wittmann Size aTmpPaperSize = mpPageSizeItem->GetSize(); 671*ff0525f2SOliver-Rainer Wittmann if ( mpPageItem->IsLandscape() ) 672*ff0525f2SOliver-Rainer Wittmann { 673*ff0525f2SOliver-Rainer Wittmann Swap( aTmpPaperSize ); // Swap(..) defined in editeng/paperinf.hxx 674*ff0525f2SOliver-Rainer Wittmann } 675*ff0525f2SOliver-Rainer Wittmann 676*ff0525f2SOliver-Rainer Wittmann mePaper = SvxPaperInfo::GetSvxPaper( aTmpPaperSize, static_cast<MapUnit>(meUnit), sal_True ); 677*ff0525f2SOliver-Rainer Wittmann 678*ff0525f2SOliver-Rainer Wittmann sal_uInt16 nImageIdx = 0; 679*ff0525f2SOliver-Rainer Wittmann switch ( mePaper ) 680*ff0525f2SOliver-Rainer Wittmann { 681*ff0525f2SOliver-Rainer Wittmann case PAPER_A3: 682*ff0525f2SOliver-Rainer Wittmann nImageIdx = 1; 683*ff0525f2SOliver-Rainer Wittmann break; 684*ff0525f2SOliver-Rainer Wittmann case PAPER_A4: 685*ff0525f2SOliver-Rainer Wittmann nImageIdx = 2; 686*ff0525f2SOliver-Rainer Wittmann break; 687*ff0525f2SOliver-Rainer Wittmann case PAPER_A5: 688*ff0525f2SOliver-Rainer Wittmann nImageIdx = 3; 689*ff0525f2SOliver-Rainer Wittmann break; 690*ff0525f2SOliver-Rainer Wittmann case PAPER_B4_ISO: 691*ff0525f2SOliver-Rainer Wittmann nImageIdx = 4; 692*ff0525f2SOliver-Rainer Wittmann break; 693*ff0525f2SOliver-Rainer Wittmann case PAPER_B5_ISO: 694*ff0525f2SOliver-Rainer Wittmann nImageIdx = 5; 695*ff0525f2SOliver-Rainer Wittmann break; 696*ff0525f2SOliver-Rainer Wittmann case PAPER_ENV_C5: 697*ff0525f2SOliver-Rainer Wittmann nImageIdx = 6; 698*ff0525f2SOliver-Rainer Wittmann break; 699*ff0525f2SOliver-Rainer Wittmann case PAPER_LETTER: 700*ff0525f2SOliver-Rainer Wittmann nImageIdx = 7; 701*ff0525f2SOliver-Rainer Wittmann break; 702*ff0525f2SOliver-Rainer Wittmann case PAPER_LEGAL: 703*ff0525f2SOliver-Rainer Wittmann nImageIdx = 8; 704*ff0525f2SOliver-Rainer Wittmann break; 705*ff0525f2SOliver-Rainer Wittmann default: 706*ff0525f2SOliver-Rainer Wittmann nImageIdx = 0; 707*ff0525f2SOliver-Rainer Wittmann mePaper = PAPER_USER; 708*ff0525f2SOliver-Rainer Wittmann break; 709*ff0525f2SOliver-Rainer Wittmann } 710*ff0525f2SOliver-Rainer Wittmann 711*ff0525f2SOliver-Rainer Wittmann if ( nImageIdx == 0 ) 712*ff0525f2SOliver-Rainer Wittmann { 713*ff0525f2SOliver-Rainer Wittmann mpToolBoxSize->SetItemImage( TBI_SIZE, 714*ff0525f2SOliver-Rainer Wittmann ( mpPageItem->IsLandscape() ? mImgSizeNone_L : mImgSizeNone ) ); 715*ff0525f2SOliver-Rainer Wittmann } 716*ff0525f2SOliver-Rainer Wittmann else 717*ff0525f2SOliver-Rainer Wittmann { 718*ff0525f2SOliver-Rainer Wittmann mpToolBoxSize->SetItemImage( TBI_SIZE, 719*ff0525f2SOliver-Rainer Wittmann ( mpPageItem->IsLandscape() ? maImgSize_L[nImageIdx-1] : maImgSize[nImageIdx-1] ) ); 720*ff0525f2SOliver-Rainer Wittmann } 721*ff0525f2SOliver-Rainer Wittmann } 722*ff0525f2SOliver-Rainer Wittmann 723*ff0525f2SOliver-Rainer Wittmann 724*ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ChangeColumnImage( const sal_uInt16 nColumnType ) 725*ff0525f2SOliver-Rainer Wittmann { 726*ff0525f2SOliver-Rainer Wittmann if ( mpPageItem.get() == 0 ) 727*ff0525f2SOliver-Rainer Wittmann { 728*ff0525f2SOliver-Rainer Wittmann return; 729*ff0525f2SOliver-Rainer Wittmann } 730*ff0525f2SOliver-Rainer Wittmann 731*ff0525f2SOliver-Rainer Wittmann if ( !mpPageItem->IsLandscape() ) 732*ff0525f2SOliver-Rainer Wittmann { 733*ff0525f2SOliver-Rainer Wittmann switch( nColumnType ) 734*ff0525f2SOliver-Rainer Wittmann { 735*ff0525f2SOliver-Rainer Wittmann case 1: 736*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumn1); 737*ff0525f2SOliver-Rainer Wittmann break; 738*ff0525f2SOliver-Rainer Wittmann case 2: 739*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumn2); 740*ff0525f2SOliver-Rainer Wittmann break; 741*ff0525f2SOliver-Rainer Wittmann case 3: 742*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumn3); 743*ff0525f2SOliver-Rainer Wittmann break; 744*ff0525f2SOliver-Rainer Wittmann case 4: 745*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgLeft); 746*ff0525f2SOliver-Rainer Wittmann break; 747*ff0525f2SOliver-Rainer Wittmann case 5: 748*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgRight); 749*ff0525f2SOliver-Rainer Wittmann break; 750*ff0525f2SOliver-Rainer Wittmann default: 751*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumnNone); 752*ff0525f2SOliver-Rainer Wittmann } 753*ff0525f2SOliver-Rainer Wittmann } 754*ff0525f2SOliver-Rainer Wittmann else 755*ff0525f2SOliver-Rainer Wittmann { 756*ff0525f2SOliver-Rainer Wittmann switch( nColumnType ) 757*ff0525f2SOliver-Rainer Wittmann { 758*ff0525f2SOliver-Rainer Wittmann case 1: 759*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumn1_L); 760*ff0525f2SOliver-Rainer Wittmann break; 761*ff0525f2SOliver-Rainer Wittmann case 2: 762*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumn2_L); 763*ff0525f2SOliver-Rainer Wittmann break; 764*ff0525f2SOliver-Rainer Wittmann case 3: 765*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumn3_L); 766*ff0525f2SOliver-Rainer Wittmann break; 767*ff0525f2SOliver-Rainer Wittmann case 4: 768*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgLeft_L); 769*ff0525f2SOliver-Rainer Wittmann break; 770*ff0525f2SOliver-Rainer Wittmann case 5: 771*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgRight_L); 772*ff0525f2SOliver-Rainer Wittmann break; 773*ff0525f2SOliver-Rainer Wittmann default: 774*ff0525f2SOliver-Rainer Wittmann mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumnNone_L); 775*ff0525f2SOliver-Rainer Wittmann } 776*ff0525f2SOliver-Rainer Wittmann } 777*ff0525f2SOliver-Rainer Wittmann } 778*ff0525f2SOliver-Rainer Wittmann 779*ff0525f2SOliver-Rainer Wittmann } } // end of namespace ::sw::sidebar 780