Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
254a2d6c
Kaydet (Commit)
254a2d6c
authored
Haz 07, 2013
tarafından
Noel Power
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
add missing PageSetup.PageSize api
Change-Id: If52fb46f61962827acc08025617d9d61a6ab6d40
üst
6005dd53
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
150 additions
and
2 deletions
+150
-2
XPageSetup.idl
oovbaapi/ooo/vba/excel/XPageSetup.idl
+1
-0
pagesetup.xls
sc/qa/extras/testdocuments/pagesetup.xls
+0
-0
xlpage.hxx
sc/source/filter/inc/xlpage.hxx
+2
-1
vbapagesetup.cxx
sc/source/ui/vba/vbapagesetup.cxx
+143
-1
vbapagesetup.hxx
sc/source/ui/vba/vbapagesetup.hxx
+4
-0
No files found.
oovbaapi/ooo/vba/excel/XPageSetup.idl
Dosyayı görüntüle @
254a2d6c
...
...
@@ -53,6 +53,7 @@ interface XPageSetup : com::sun::star::uno::XInterface
[
attribute
]
boolean
PrintGridlines
;
[
attribute
]
string
PrintTitleRows
;
[
attribute
]
string
PrintTitleColumns
;
[
attribute
]
long
PaperSize
;
}
;
...
...
sc/qa/extras/testdocuments/pagesetup.xls
Dosyayı görüntüle @
254a2d6c
No preview for this file type
sc/source/filter/inc/xlpage.hxx
Dosyayı görüntüle @
254a2d6c
...
...
@@ -23,6 +23,7 @@
#include <tools/gen.hxx>
#include <boost/noncopyable.hpp>
#include "xltools.hxx"
#include "scdllapi.h"
// Constants and Enumerations =================================================
...
...
@@ -91,7 +92,7 @@ const sal_uInt16 EXC_PAPERSIZE_USER = 0xFFFF;
class
SvxBrushItem
;
/** Contains all page (print) settings for a single sheet. */
struct
XclPageData
:
private
boost
::
noncopyable
struct
SC_DLLPUBLIC
XclPageData
:
private
boost
::
noncopyable
{
typedef
::
std
::
auto_ptr
<
SvxBrushItem
>
SvxBrushItemPtr
;
...
...
sc/source/ui/vba/vbapagesetup.cxx
Dosyayı görüntüle @
254a2d6c
...
...
@@ -31,6 +31,7 @@
#include <ooo/vba/excel/Constants.hpp>
#include <i18nutil/paper.hxx>
#include <sal/macros.h>
#include <algorithm>
using
namespace
::
com
::
sun
::
star
;
using
namespace
::
ooo
::
vba
;
...
...
@@ -44,7 +45,7 @@ ScVbaPageSetup::ScVbaPageSetup(const uno::Reference< XHelperInterface >& xParent
const
uno
::
Reference
<
uno
::
XComponentContext
>&
xContext
,
const
uno
::
Reference
<
sheet
::
XSpreadsheet
>&
xSheet
,
const
uno
::
Reference
<
frame
::
XModel
>&
xModel
)
throw
(
uno
::
RuntimeException
)
:
ScVbaPageSetup_BASE
(
xParent
,
xContext
),
mxSheet
(
xSheet
)
ScVbaPageSetup_BASE
(
xParent
,
xContext
),
mxSheet
(
xSheet
)
,
mbIsLandscape
(
false
)
{
// query for current page style
mxModel
.
set
(
xModel
,
uno
::
UNO_QUERY_THROW
);
...
...
@@ -59,6 +60,7 @@ ScVbaPageSetup::ScVbaPageSetup(const uno::Reference< XHelperInterface >& xParent
mxPageProps
.
set
(
xPageStyle
->
getByName
(
aStyleName
),
uno
::
UNO_QUERY_THROW
);
mnOrientLandscape
=
excel
::
XlPageOrientation
::
xlLandscape
;
mnOrientPortrait
=
excel
::
XlPageOrientation
::
xlPortrait
;
mxPageProps
->
getPropertyValue
(
"IsLandscape"
)
>>=
mbIsLandscape
;
}
OUString
SAL_CALL
ScVbaPageSetup
::
getPrintArea
()
throw
(
css
::
uno
::
RuntimeException
)
...
...
@@ -624,6 +626,146 @@ OUString SAL_CALL ScVbaPageSetup::getPrintTitleColumns() throw (uno::RuntimeExce
void
SAL_CALL
ScVbaPageSetup
::
setPrintTitleColumns
(
const
OUString
&
/*_printtitlecolumns*/
)
throw
(
uno
::
RuntimeException
)
{
}
/** Paper size in 1/100 millimeters. */
struct
ApiPaperSize
{
sal_Int32
mnWidth
;
sal_Int32
mnHeight
;
};
// #FIXME ( this is cut'n'pasted from oox, we need to share it somewhere, msfilter ? )
#define IN2MM100( v ) static_cast< sal_Int32 >( (v) * 2540.0 + 0.5 )
#define MM2MM100( v ) static_cast< sal_Int32 >( (v) * 100.0 + 0.5 )
static
const
ApiPaperSize
spPaperSizeTable
[]
=
{
{
0
,
0
},
// 0 - (undefined)
{
IN2MM100
(
8.5
),
IN2MM100
(
11
)
},
// 1 - Letter paper
{
IN2MM100
(
8.5
),
IN2MM100
(
11
)
},
// 2 - Letter small paper
{
IN2MM100
(
11
),
IN2MM100
(
17
)
},
// 3 - Tabloid paper
{
IN2MM100
(
17
),
IN2MM100
(
11
)
},
// 4 - Ledger paper
{
IN2MM100
(
8.5
),
IN2MM100
(
14
)
},
// 5 - Legal paper
{
IN2MM100
(
5.5
),
IN2MM100
(
8.5
)
},
// 6 - Statement paper
{
IN2MM100
(
7.25
),
IN2MM100
(
10.5
)
},
// 7 - Executive paper
{
MM2MM100
(
297
),
MM2MM100
(
420
)
},
// 8 - A3 paper
{
MM2MM100
(
210
),
MM2MM100
(
297
)
},
// 9 - A4 paper
{
MM2MM100
(
210
),
MM2MM100
(
297
)
},
// 10 - A4 small paper
{
MM2MM100
(
148
),
MM2MM100
(
210
)
},
// 11 - A5 paper
{
MM2MM100
(
250
),
MM2MM100
(
353
)
},
// 12 - B4 paper
{
MM2MM100
(
176
),
MM2MM100
(
250
)
},
// 13 - B5 paper
{
IN2MM100
(
8.5
),
IN2MM100
(
13
)
},
// 14 - Folio paper
{
MM2MM100
(
215
),
MM2MM100
(
275
)
},
// 15 - Quarto paper
{
IN2MM100
(
10
),
IN2MM100
(
14
)
},
// 16 - Standard paper
{
IN2MM100
(
11
),
IN2MM100
(
17
)
},
// 17 - Standard paper
{
IN2MM100
(
8.5
),
IN2MM100
(
11
)
},
// 18 - Note paper
{
IN2MM100
(
3.875
),
IN2MM100
(
8.875
)
},
// 19 - #9 envelope
{
IN2MM100
(
4.125
),
IN2MM100
(
9.5
)
},
// 20 - #10 envelope
{
IN2MM100
(
4.5
),
IN2MM100
(
10.375
)
},
// 21 - #11 envelope
{
IN2MM100
(
4.75
),
IN2MM100
(
11
)
},
// 22 - #12 envelope
{
IN2MM100
(
5
),
IN2MM100
(
11.5
)
},
// 23 - #14 envelope
{
IN2MM100
(
17
),
IN2MM100
(
22
)
},
// 24 - C paper
{
IN2MM100
(
22
),
IN2MM100
(
34
)
},
// 25 - D paper
{
IN2MM100
(
34
),
IN2MM100
(
44
)
},
// 26 - E paper
{
MM2MM100
(
110
),
MM2MM100
(
220
)
},
// 27 - DL envelope
{
MM2MM100
(
162
),
MM2MM100
(
229
)
},
// 28 - C5 envelope
{
MM2MM100
(
324
),
MM2MM100
(
458
)
},
// 29 - C3 envelope
{
MM2MM100
(
229
),
MM2MM100
(
324
)
},
// 30 - C4 envelope
{
MM2MM100
(
114
),
MM2MM100
(
162
)
},
// 31 - C6 envelope
{
MM2MM100
(
114
),
MM2MM100
(
229
)
},
// 32 - C65 envelope
{
MM2MM100
(
250
),
MM2MM100
(
353
)
},
// 33 - B4 envelope
{
MM2MM100
(
176
),
MM2MM100
(
250
)
},
// 34 - B5 envelope
{
MM2MM100
(
176
),
MM2MM100
(
125
)
},
// 35 - B6 envelope
{
MM2MM100
(
110
),
MM2MM100
(
230
)
},
// 36 - Italy envelope
{
IN2MM100
(
3.875
),
IN2MM100
(
7.5
)
},
// 37 - Monarch envelope
{
IN2MM100
(
3.625
),
IN2MM100
(
6.5
)
},
// 38 - 6 3/4 envelope
{
IN2MM100
(
14.875
),
IN2MM100
(
11
)
},
// 39 - US standard fanfold
{
IN2MM100
(
8.5
),
IN2MM100
(
12
)
},
// 40 - German standard fanfold
{
IN2MM100
(
8.5
),
IN2MM100
(
13
)
},
// 41 - German legal fanfold
{
MM2MM100
(
250
),
MM2MM100
(
353
)
},
// 42 - ISO B4
{
MM2MM100
(
200
),
MM2MM100
(
148
)
},
// 43 - Japanese double postcard
{
IN2MM100
(
9
),
IN2MM100
(
11
)
},
// 44 - Standard paper
{
IN2MM100
(
10
),
IN2MM100
(
11
)
},
// 45 - Standard paper
{
IN2MM100
(
15
),
IN2MM100
(
11
)
},
// 46 - Standard paper
{
MM2MM100
(
220
),
MM2MM100
(
220
)
},
// 47 - Invite envelope
{
0
,
0
},
// 48 - (undefined)
{
0
,
0
},
// 49 - (undefined)
{
IN2MM100
(
9.275
),
IN2MM100
(
12
)
},
// 50 - Letter extra paper
{
IN2MM100
(
9.275
),
IN2MM100
(
15
)
},
// 51 - Legal extra paper
{
IN2MM100
(
11.69
),
IN2MM100
(
18
)
},
// 52 - Tabloid extra paper
{
MM2MM100
(
236
),
MM2MM100
(
322
)
},
// 53 - A4 extra paper
{
IN2MM100
(
8.275
),
IN2MM100
(
11
)
},
// 54 - Letter transverse paper
{
MM2MM100
(
210
),
MM2MM100
(
297
)
},
// 55 - A4 transverse paper
{
IN2MM100
(
9.275
),
IN2MM100
(
12
)
},
// 56 - Letter extra transverse paper
{
MM2MM100
(
227
),
MM2MM100
(
356
)
},
// 57 - SuperA/SuperA/A4 paper
{
MM2MM100
(
305
),
MM2MM100
(
487
)
},
// 58 - SuperB/SuperB/A3 paper
{
IN2MM100
(
8.5
),
IN2MM100
(
12.69
)
},
// 59 - Letter plus paper
{
MM2MM100
(
210
),
MM2MM100
(
330
)
},
// 60 - A4 plus paper
{
MM2MM100
(
148
),
MM2MM100
(
210
)
},
// 61 - A5 transverse paper
{
MM2MM100
(
182
),
MM2MM100
(
257
)
},
// 62 - JIS B5 transverse paper
{
MM2MM100
(
322
),
MM2MM100
(
445
)
},
// 63 - A3 extra paper
{
MM2MM100
(
174
),
MM2MM100
(
235
)
},
// 64 - A5 extra paper
{
MM2MM100
(
201
),
MM2MM100
(
276
)
},
// 65 - ISO B5 extra paper
{
MM2MM100
(
420
),
MM2MM100
(
594
)
},
// 66 - A2 paper
{
MM2MM100
(
297
),
MM2MM100
(
420
)
},
// 67 - A3 transverse paper
{
MM2MM100
(
322
),
MM2MM100
(
445
)
}
// 68 - A3 extra transverse paper
};
sal_Int32
SAL_CALL
ScVbaPageSetup
::
getPaperSize
()
throw
(
uno
::
RuntimeException
)
{
sal_Int32
nElems
=
SAL_N_ELEMENTS
(
spPaperSizeTable
);
// Need to find the best match for current size
sal_Int32
nDeltaWidth
=
0
;
sal_Int32
nDeltaHeight
=
0
;
awt
::
Size
aSize
;
// current papersize
mxPageProps
->
getPropertyValue
(
"Size"
)
>>=
aSize
;
if
(
mbIsLandscape
)
::
std
::
swap
(
aSize
.
Width
,
aSize
.
Height
);
sal_Int32
nPaperSizeIndex
=
0
;
// Undefined
const
ApiPaperSize
*
pItem
=
spPaperSizeTable
;
const
ApiPaperSize
*
pEnd
=
spPaperSizeTable
+
nElems
;
for
(
;
pItem
!=
pEnd
;
++
pItem
)
{
const
ApiPaperSize
&
rSize
=
*
pItem
;
sal_Int32
nCurDeltaHeight
=
std
::
abs
(
rSize
.
mnHeight
-
aSize
.
Height
);
sal_Int32
nCurDeltaWidth
=
std
::
abs
(
rSize
.
mnWidth
-
aSize
.
Width
);
if
(
pItem
==
spPaperSizeTable
)
// initialise delta with first item
{
nDeltaWidth
=
nCurDeltaWidth
;
nDeltaHeight
=
nCurDeltaHeight
;
}
else
{
if
(
nCurDeltaWidth
<
nDeltaWidth
&&
nCurDeltaHeight
<
nDeltaHeight
)
{
nDeltaWidth
=
nCurDeltaWidth
;
nDeltaHeight
=
nCurDeltaHeight
;
nPaperSizeIndex
=
(
pItem
-
spPaperSizeTable
);
}
}
}
sal_Int32
nTol
=
10
;
// hmm not sure is this the best way
if
(
nDeltaWidth
<=
nTol
&&
nDeltaHeight
<=
nTol
)
return
nPaperSizeIndex
;
return
excel
::
XlPaperSize
::
xlPaperUser
;
}
void
SAL_CALL
ScVbaPageSetup
::
setPaperSize
(
sal_Int32
papersize
)
throw
(
uno
::
RuntimeException
)
{
sal_Int32
nElems
=
SAL_N_ELEMENTS
(
spPaperSizeTable
);
if
(
papersize
!=
excel
::
XlPaperSize
::
xlPaperUser
)
{
if
(
papersize
<
0
||
papersize
>
nElems
-
1
)
throw
uno
::
RuntimeException
();
awt
::
Size
aPaperSize
;
aPaperSize
.
Height
=
spPaperSizeTable
[
papersize
].
mnHeight
;
aPaperSize
.
Width
=
spPaperSizeTable
[
papersize
].
mnWidth
;
if
(
mbIsLandscape
)
::
std
::
swap
(
aPaperSize
.
Width
,
aPaperSize
.
Height
);
mxPageProps
->
setPropertyValue
(
"Size"
,
uno
::
makeAny
(
aPaperSize
)
);
}
}
OUString
ScVbaPageSetup
::
getServiceImplName
()
...
...
sc/source/ui/vba/vbapagesetup.hxx
Dosyayı görüntüle @
254a2d6c
...
...
@@ -26,12 +26,14 @@
#include <com/sun/star/beans/XPropertySet.hpp>
#include <vbahelper/vbahelperinterface.hxx>
#include <vbahelper/vbapagesetupbase.hxx>
#include <ooo/vba/excel/XlPaperSize.hpp>
typedef
cppu
::
ImplInheritanceHelper1
<
VbaPageSetupBase
,
ov
::
excel
::
XPageSetup
>
ScVbaPageSetup_BASE
;
class
ScVbaPageSetup
:
public
ScVbaPageSetup_BASE
{
css
::
uno
::
Reference
<
css
::
sheet
::
XSpreadsheet
>
mxSheet
;
bool
mbIsLandscape
;
public
:
ScVbaPageSetup
(
const
css
::
uno
::
Reference
<
ov
::
XHelperInterface
>&
xParent
,
const
css
::
uno
::
Reference
<
css
::
uno
::
XComponentContext
>&
xContext
,
...
...
@@ -81,6 +83,8 @@ public:
virtual
void
SAL_CALL
setPrintTitleRows
(
const
::
rtl
::
OUString
&
_printtitlerows
)
throw
(
css
::
uno
::
RuntimeException
);
virtual
::
rtl
::
OUString
SAL_CALL
getPrintTitleColumns
()
throw
(
css
::
uno
::
RuntimeException
);
virtual
void
SAL_CALL
setPrintTitleColumns
(
const
::
rtl
::
OUString
&
_printtitlecolumns
)
throw
(
css
::
uno
::
RuntimeException
);
virtual
sal_Int32
SAL_CALL
getPaperSize
()
throw
(
css
::
uno
::
RuntimeException
);
virtual
void
SAL_CALL
setPaperSize
(
sal_Int32
papersize
)
throw
(
css
::
uno
::
RuntimeException
);
// XHelperInterface
virtual
OUString
getServiceImplName
();
virtual
css
::
uno
::
Sequence
<
OUString
>
getServiceNames
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment