xref: /aoo4110/main/sw/source/ui/frmdlg/frmpage.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_sw.hxx"
26*b1cdbd2cSJim Jagielski #ifdef SW_DLLIMPLEMENTATION
27*b1cdbd2cSJim Jagielski #undef SW_DLLIMPLEMENTATION
28*b1cdbd2cSJim Jagielski #endif
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski #include <com/sun/star/embed/Aspects.hpp>
31*b1cdbd2cSJim Jagielski #include <com/sun/star/embed/EmbedMisc.hpp>
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski #include <cmdid.h>
34*b1cdbd2cSJim Jagielski #include <helpid.h>
35*b1cdbd2cSJim Jagielski #include <hintids.hxx>
36*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
37*b1cdbd2cSJim Jagielski #include <vcl/mnemonic.hxx>
38*b1cdbd2cSJim Jagielski #include <svl/urihelper.hxx>
39*b1cdbd2cSJim Jagielski #include <svl/stritem.hxx>
40*b1cdbd2cSJim Jagielski #include <svx/htmlmode.hxx>
41*b1cdbd2cSJim Jagielski #include <editeng/sizeitem.hxx>
42*b1cdbd2cSJim Jagielski #include <editeng/opaqitem.hxx>
43*b1cdbd2cSJim Jagielski #include <editeng/protitem.hxx>
44*b1cdbd2cSJim Jagielski #include <editeng/prntitem.hxx>
45*b1cdbd2cSJim Jagielski #include <editeng/brshitem.hxx>
46*b1cdbd2cSJim Jagielski #include <editeng/ulspitem.hxx>
47*b1cdbd2cSJim Jagielski #include <editeng/frmdiritem.hxx>
48*b1cdbd2cSJim Jagielski #include <svx/swframevalidation.hxx>
49*b1cdbd2cSJim Jagielski #include <sot/clsids.hxx>
50*b1cdbd2cSJim Jagielski 
51*b1cdbd2cSJim Jagielski #include <sfx2/viewfrm.hxx>
52*b1cdbd2cSJim Jagielski #include <fmturl.hxx>
53*b1cdbd2cSJim Jagielski #include <fmteiro.hxx>
54*b1cdbd2cSJim Jagielski #include <fmtcnct.hxx>
55*b1cdbd2cSJim Jagielski #include <view.hxx>
56*b1cdbd2cSJim Jagielski #include <wrtsh.hxx>
57*b1cdbd2cSJim Jagielski #include <swmodule.hxx>
58*b1cdbd2cSJim Jagielski #include <uitool.hxx>
59*b1cdbd2cSJim Jagielski #include <docsh.hxx>
60*b1cdbd2cSJim Jagielski #include <viewopt.hxx>
61*b1cdbd2cSJim Jagielski #include <frmatr.hxx>
62*b1cdbd2cSJim Jagielski #include <frmdlg.hxx>
63*b1cdbd2cSJim Jagielski #include <frmmgr.hxx>
64*b1cdbd2cSJim Jagielski #include <frmpage.hxx>
65*b1cdbd2cSJim Jagielski #include <wrap.hxx>
66*b1cdbd2cSJim Jagielski #include <colmgr.hxx>
67*b1cdbd2cSJim Jagielski #include <grfatr.hxx>
68*b1cdbd2cSJim Jagielski #include <uiitems.hxx>
69*b1cdbd2cSJim Jagielski // OD 19.09.2003 #i18732#
70*b1cdbd2cSJim Jagielski #include <fmtfollowtextflow.hxx>
71*b1cdbd2cSJim Jagielski 
72*b1cdbd2cSJim Jagielski #include <frmui.hrc>
73*b1cdbd2cSJim Jagielski #include <frmpage.hrc>
74*b1cdbd2cSJim Jagielski #include <sfx2/filedlghelper.hxx>
75*b1cdbd2cSJim Jagielski #include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
76*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/dialogs/XFilePicker.hpp>
77*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
78*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
79*b1cdbd2cSJim Jagielski #include <svtools/filter.hxx>
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
82*b1cdbd2cSJim Jagielski using ::rtl::OUString;
83*b1cdbd2cSJim Jagielski using namespace ::sfx2;
84*b1cdbd2cSJim Jagielski 
85*b1cdbd2cSJim Jagielski #define SwFPos SvxSwFramePosString
86*b1cdbd2cSJim Jagielski 
87*b1cdbd2cSJim Jagielski struct FrmMap
88*b1cdbd2cSJim Jagielski {
89*b1cdbd2cSJim Jagielski     SvxSwFramePosString::StringId eStrId;
90*b1cdbd2cSJim Jagielski     SvxSwFramePosString::StringId eMirrorStrId;
91*b1cdbd2cSJim Jagielski 	sal_uInt16 nAlign;
92*b1cdbd2cSJim Jagielski 	sal_uLong  nLBRelations;
93*b1cdbd2cSJim Jagielski };
94*b1cdbd2cSJim Jagielski 
95*b1cdbd2cSJim Jagielski struct RelationMap
96*b1cdbd2cSJim Jagielski {
97*b1cdbd2cSJim Jagielski     SvxSwFramePosString::StringId eStrId;
98*b1cdbd2cSJim Jagielski     SvxSwFramePosString::StringId eMirrorStrId;
99*b1cdbd2cSJim Jagielski 	sal_uLong  nLBRelation;
100*b1cdbd2cSJim Jagielski 	sal_uInt16 nRelation;
101*b1cdbd2cSJim Jagielski };
102*b1cdbd2cSJim Jagielski 
103*b1cdbd2cSJim Jagielski struct StringIdPair_Impl
104*b1cdbd2cSJim Jagielski {
105*b1cdbd2cSJim Jagielski     SvxSwFramePosString::StringId eHori;
106*b1cdbd2cSJim Jagielski     SvxSwFramePosString::StringId eVert;
107*b1cdbd2cSJim Jagielski };
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski #define MAX_PERCENT_WIDTH   254L
110*b1cdbd2cSJim Jagielski #define MAX_PERCENT_HEIGHT  254L
111*b1cdbd2cSJim Jagielski 
112*b1cdbd2cSJim Jagielski // OD 19.09.2003 #i18732# - change order of alignments
113*b1cdbd2cSJim Jagielski #define LB_FRAME                0x00000001L // Textbereich des Absatzes
114*b1cdbd2cSJim Jagielski #define LB_PRTAREA				0x00000002L	// Textbereich des Absatzes + Einzuege
115*b1cdbd2cSJim Jagielski #define LB_VERT_FRAME           0x00000004L // Vertikaler Textbereich des Absatzes
116*b1cdbd2cSJim Jagielski #define LB_VERT_PRTAREA         0x00000008L // Vertikaler Textbereich des Absatzes + Einzuege
117*b1cdbd2cSJim Jagielski #define LB_REL_FRM_LEFT         0x00000010L // Linker Absatzrand
118*b1cdbd2cSJim Jagielski #define LB_REL_FRM_RIGHT        0x00000020L // Rechter Absatzrand
119*b1cdbd2cSJim Jagielski 
120*b1cdbd2cSJim Jagielski #define LB_REL_PG_LEFT          0x00000040L // Linker Seitenrand
121*b1cdbd2cSJim Jagielski #define LB_REL_PG_RIGHT         0x00000080L    // Rechter Seitenrand
122*b1cdbd2cSJim Jagielski #define LB_REL_PG_FRAME         0x00000100L // Gesamte Seite
123*b1cdbd2cSJim Jagielski #define LB_REL_PG_PRTAREA       0x00000200L    // Textbereich der Seite
124*b1cdbd2cSJim Jagielski 
125*b1cdbd2cSJim Jagielski #define LB_FLY_REL_PG_LEFT      0x00000400L    // Linker Rahmenrand
126*b1cdbd2cSJim Jagielski #define LB_FLY_REL_PG_RIGHT     0x00000800L    // Rechter Rahmenrand
127*b1cdbd2cSJim Jagielski #define LB_FLY_REL_PG_FRAME     0x00001000L    // Gesamte Rahmen
128*b1cdbd2cSJim Jagielski #define LB_FLY_REL_PG_PRTAREA   0x00002000L    // Rahmeninneres
129*b1cdbd2cSJim Jagielski 
130*b1cdbd2cSJim Jagielski #define LB_REL_BASE				0x00010000L	// Zeichenausrichtung Basis
131*b1cdbd2cSJim Jagielski #define LB_REL_CHAR				0x00020000L	// Zeichenausrichtung Zeichen
132*b1cdbd2cSJim Jagielski #define LB_REL_ROW				0x00040000L	// Zeichenausrichtung Zeile
133*b1cdbd2cSJim Jagielski 
134*b1cdbd2cSJim Jagielski // OD 10.11.2003 #i22305#
135*b1cdbd2cSJim Jagielski #define LB_FLY_VERT_FRAME       0x00100000L // vertical entire frame
136*b1cdbd2cSJim Jagielski #define LB_FLY_VERT_PRTAREA     0x00200000L // vertical frame text area
137*b1cdbd2cSJim Jagielski 
138*b1cdbd2cSJim Jagielski // OD 11.11.2003 #i22341#
139*b1cdbd2cSJim Jagielski #define LB_VERT_LINE            0x00400000L // vertical text line
140*b1cdbd2cSJim Jagielski 
141*b1cdbd2cSJim Jagielski static RelationMap __FAR_DATA aRelationMap[] =
142*b1cdbd2cSJim Jagielski {
143*b1cdbd2cSJim Jagielski     {SwFPos::FRAME,  SwFPos::FRAME, LB_FRAME, text::RelOrientation::FRAME},
144*b1cdbd2cSJim Jagielski     {SwFPos::PRTAREA,           SwFPos::PRTAREA,                LB_PRTAREA,             text::RelOrientation::PRINT_AREA},
145*b1cdbd2cSJim Jagielski     {SwFPos::REL_PG_LEFT,       SwFPos::MIR_REL_PG_LEFT,        LB_REL_PG_LEFT,         text::RelOrientation::PAGE_LEFT},
146*b1cdbd2cSJim Jagielski     {SwFPos::REL_PG_RIGHT,      SwFPos::MIR_REL_PG_RIGHT,       LB_REL_PG_RIGHT,        text::RelOrientation::PAGE_RIGHT},
147*b1cdbd2cSJim Jagielski     {SwFPos::REL_FRM_LEFT,      SwFPos::MIR_REL_FRM_LEFT,       LB_REL_FRM_LEFT,        text::RelOrientation::FRAME_LEFT},
148*b1cdbd2cSJim Jagielski     {SwFPos::REL_FRM_RIGHT,     SwFPos::MIR_REL_FRM_RIGHT,      LB_REL_FRM_RIGHT,       text::RelOrientation::FRAME_RIGHT},
149*b1cdbd2cSJim Jagielski     {SwFPos::REL_PG_FRAME,      SwFPos::REL_PG_FRAME,           LB_REL_PG_FRAME,        text::RelOrientation::PAGE_FRAME},
150*b1cdbd2cSJim Jagielski     {SwFPos::REL_PG_PRTAREA,    SwFPos::REL_PG_PRTAREA,         LB_REL_PG_PRTAREA,      text::RelOrientation::PAGE_PRINT_AREA},
151*b1cdbd2cSJim Jagielski     {SwFPos::REL_CHAR,          SwFPos::REL_CHAR,               LB_REL_CHAR,            text::RelOrientation::CHAR},
152*b1cdbd2cSJim Jagielski 
153*b1cdbd2cSJim Jagielski     {SwFPos::FLY_REL_PG_LEFT,       SwFPos::FLY_MIR_REL_PG_LEFT,    LB_FLY_REL_PG_LEFT,     text::RelOrientation::PAGE_LEFT},
154*b1cdbd2cSJim Jagielski     {SwFPos::FLY_REL_PG_RIGHT,      SwFPos::FLY_MIR_REL_PG_RIGHT,   LB_FLY_REL_PG_RIGHT,    text::RelOrientation::PAGE_RIGHT},
155*b1cdbd2cSJim Jagielski     {SwFPos::FLY_REL_PG_FRAME,      SwFPos::FLY_REL_PG_FRAME,       LB_FLY_REL_PG_FRAME,    text::RelOrientation::PAGE_FRAME},
156*b1cdbd2cSJim Jagielski     {SwFPos::FLY_REL_PG_PRTAREA,    SwFPos::FLY_REL_PG_PRTAREA,     LB_FLY_REL_PG_PRTAREA,  text::RelOrientation::PAGE_PRINT_AREA},
157*b1cdbd2cSJim Jagielski 
158*b1cdbd2cSJim Jagielski     {SwFPos::REL_BORDER,        SwFPos::REL_BORDER,             LB_VERT_FRAME,          text::RelOrientation::FRAME},
159*b1cdbd2cSJim Jagielski     {SwFPos::REL_PRTAREA,       SwFPos::REL_PRTAREA,            LB_VERT_PRTAREA,        text::RelOrientation::PRINT_AREA},
160*b1cdbd2cSJim Jagielski 
161*b1cdbd2cSJim Jagielski     // OD 10.11.2003 #i22305#
162*b1cdbd2cSJim Jagielski     {SwFPos::FLY_REL_PG_FRAME,      SwFPos::FLY_REL_PG_FRAME,   LB_FLY_VERT_FRAME,      text::RelOrientation::FRAME},
163*b1cdbd2cSJim Jagielski     {SwFPos::FLY_REL_PG_PRTAREA,    SwFPos::FLY_REL_PG_PRTAREA,     LB_FLY_VERT_PRTAREA,    text::RelOrientation::PRINT_AREA},
164*b1cdbd2cSJim Jagielski 
165*b1cdbd2cSJim Jagielski     // OD 11.11.2003 #i22341#
166*b1cdbd2cSJim Jagielski     {SwFPos::REL_LINE,  SwFPos::REL_LINE,   LB_VERT_LINE,   text::RelOrientation::TEXT_LINE}
167*b1cdbd2cSJim Jagielski };
168*b1cdbd2cSJim Jagielski 
169*b1cdbd2cSJim Jagielski static RelationMap __FAR_DATA aAsCharRelationMap[] =
170*b1cdbd2cSJim Jagielski {
171*b1cdbd2cSJim Jagielski     {SwFPos::REL_BASE,  SwFPos::REL_BASE,   LB_REL_BASE,    text::RelOrientation::FRAME},
172*b1cdbd2cSJim Jagielski     {SwFPos::REL_CHAR,   SwFPos::REL_CHAR,   LB_REL_CHAR,   text::RelOrientation::FRAME},
173*b1cdbd2cSJim Jagielski     {SwFPos::REL_ROW,    SwFPos::REL_ROW,   LB_REL_ROW,     text::RelOrientation::FRAME}
174*b1cdbd2cSJim Jagielski };
175*b1cdbd2cSJim Jagielski 
176*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
177*b1cdbd2cSJim Jagielski 	Beschreibung: Seite verankert
178*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
179*b1cdbd2cSJim Jagielski 
180*b1cdbd2cSJim Jagielski #define HORI_PAGE_REL	(LB_REL_PG_FRAME|LB_REL_PG_PRTAREA|LB_REL_PG_LEFT| \
181*b1cdbd2cSJim Jagielski 						LB_REL_PG_RIGHT)
182*b1cdbd2cSJim Jagielski 
183*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aHPageMap[] =
184*b1cdbd2cSJim Jagielski {
185*b1cdbd2cSJim Jagielski     {SwFPos::LEFT,          SwFPos::MIR_LEFT,       text::HoriOrientation::LEFT,      HORI_PAGE_REL},
186*b1cdbd2cSJim Jagielski     {SwFPos::RIGHT,         SwFPos::MIR_RIGHT,      text::HoriOrientation::RIGHT,     HORI_PAGE_REL},
187*b1cdbd2cSJim Jagielski     {SwFPos::CENTER_HORI,   SwFPos::CENTER_HORI,    text::HoriOrientation::CENTER,    HORI_PAGE_REL},
188*b1cdbd2cSJim Jagielski     {SwFPos::FROMLEFT,      SwFPos::MIR_FROMLEFT,   text::HoriOrientation::NONE,      HORI_PAGE_REL}
189*b1cdbd2cSJim Jagielski };
190*b1cdbd2cSJim Jagielski 
191*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aHPageHtmlMap[] =
192*b1cdbd2cSJim Jagielski {
193*b1cdbd2cSJim Jagielski     {SwFPos::FROMLEFT,      SwFPos::MIR_FROMLEFT,   text::HoriOrientation::NONE,      LB_REL_PG_FRAME}
194*b1cdbd2cSJim Jagielski };
195*b1cdbd2cSJim Jagielski 
196*b1cdbd2cSJim Jagielski #define VERT_PAGE_REL	(LB_REL_PG_FRAME|LB_REL_PG_PRTAREA)
197*b1cdbd2cSJim Jagielski 
198*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aVPageMap[] =
199*b1cdbd2cSJim Jagielski {
200*b1cdbd2cSJim Jagielski     {SwFPos::TOP,           SwFPos::TOP,            text::VertOrientation::TOP,       VERT_PAGE_REL},
201*b1cdbd2cSJim Jagielski     {SwFPos::BOTTOM,        SwFPos::BOTTOM,         text::VertOrientation::BOTTOM,    VERT_PAGE_REL},
202*b1cdbd2cSJim Jagielski     {SwFPos::CENTER_VERT,   SwFPos::CENTER_VERT,    text::VertOrientation::CENTER,    VERT_PAGE_REL},
203*b1cdbd2cSJim Jagielski     {SwFPos::FROMTOP,       SwFPos::FROMTOP,        text::VertOrientation::NONE,      VERT_PAGE_REL}
204*b1cdbd2cSJim Jagielski };
205*b1cdbd2cSJim Jagielski 
206*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aVPageHtmlMap[] =
207*b1cdbd2cSJim Jagielski {
208*b1cdbd2cSJim Jagielski     {SwFPos::FROMTOP,       SwFPos::FROMTOP,        text::VertOrientation::NONE,      LB_REL_PG_FRAME}
209*b1cdbd2cSJim Jagielski };
210*b1cdbd2cSJim Jagielski 
211*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
212*b1cdbd2cSJim Jagielski 	Beschreibung: Rahmen verankert
213*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
214*b1cdbd2cSJim Jagielski 
215*b1cdbd2cSJim Jagielski #define HORI_FRAME_REL	(LB_FLY_REL_PG_FRAME|LB_FLY_REL_PG_PRTAREA| \
216*b1cdbd2cSJim Jagielski 						LB_FLY_REL_PG_LEFT|LB_FLY_REL_PG_RIGHT)
217*b1cdbd2cSJim Jagielski 
218*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aHFrameMap[] =
219*b1cdbd2cSJim Jagielski {
220*b1cdbd2cSJim Jagielski     {SwFPos::LEFT,          SwFPos::MIR_LEFT,       text::HoriOrientation::LEFT,  HORI_FRAME_REL},
221*b1cdbd2cSJim Jagielski     {SwFPos::RIGHT,         SwFPos::MIR_RIGHT,      text::HoriOrientation::RIGHT,     HORI_FRAME_REL},
222*b1cdbd2cSJim Jagielski     {SwFPos::CENTER_HORI,   SwFPos::CENTER_HORI,    text::HoriOrientation::CENTER,    HORI_FRAME_REL},
223*b1cdbd2cSJim Jagielski     {SwFPos::FROMLEFT,      SwFPos::MIR_FROMLEFT,   text::HoriOrientation::NONE,      HORI_FRAME_REL}
224*b1cdbd2cSJim Jagielski };
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aHFlyHtmlMap[] =
227*b1cdbd2cSJim Jagielski {
228*b1cdbd2cSJim Jagielski     {SwFPos::LEFT,          SwFPos::MIR_LEFT,       text::HoriOrientation::LEFT,      LB_FLY_REL_PG_FRAME},
229*b1cdbd2cSJim Jagielski     {SwFPos::FROMLEFT,      SwFPos::MIR_FROMLEFT,   text::HoriOrientation::NONE,      LB_FLY_REL_PG_FRAME}
230*b1cdbd2cSJim Jagielski };
231*b1cdbd2cSJim Jagielski 
232*b1cdbd2cSJim Jagielski // OD 19.09.2003 #i18732# - own vertical alignment map for to frame anchored objects
233*b1cdbd2cSJim Jagielski // OD 10.11.2003 #i22305#
234*b1cdbd2cSJim Jagielski #define VERT_FRAME_REL   (LB_FLY_VERT_FRAME|LB_FLY_VERT_PRTAREA)
235*b1cdbd2cSJim Jagielski 
236*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aVFrameMap[] =
237*b1cdbd2cSJim Jagielski {
238*b1cdbd2cSJim Jagielski     {SwFPos::TOP,           SwFPos::TOP,            text::VertOrientation::TOP,       VERT_FRAME_REL},
239*b1cdbd2cSJim Jagielski     {SwFPos::BOTTOM,        SwFPos::BOTTOM,         text::VertOrientation::BOTTOM,    VERT_FRAME_REL},
240*b1cdbd2cSJim Jagielski     {SwFPos::CENTER_VERT,   SwFPos::CENTER_VERT,    text::VertOrientation::CENTER,    VERT_FRAME_REL},
241*b1cdbd2cSJim Jagielski     {SwFPos::FROMTOP,       SwFPos::FROMTOP,        text::VertOrientation::NONE,      VERT_FRAME_REL}
242*b1cdbd2cSJim Jagielski };
243*b1cdbd2cSJim Jagielski 
244*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aVFlyHtmlMap[] =
245*b1cdbd2cSJim Jagielski {
246*b1cdbd2cSJim Jagielski     // OD 10.11.2003 #i22305#
247*b1cdbd2cSJim Jagielski     {SwFPos::TOP,           SwFPos::TOP,            text::VertOrientation::TOP,       LB_FLY_VERT_FRAME},
248*b1cdbd2cSJim Jagielski     {SwFPos::FROMTOP,       SwFPos::FROMTOP,        text::VertOrientation::NONE,      LB_FLY_VERT_FRAME}
249*b1cdbd2cSJim Jagielski };
250*b1cdbd2cSJim Jagielski 
251*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
252*b1cdbd2cSJim Jagielski 	Beschreibung: Absatz verankert
253*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
254*b1cdbd2cSJim Jagielski 
255*b1cdbd2cSJim Jagielski #define HORI_PARA_REL	(LB_FRAME|LB_PRTAREA|LB_REL_PG_LEFT|LB_REL_PG_RIGHT| \
256*b1cdbd2cSJim Jagielski 						LB_REL_PG_FRAME|LB_REL_PG_PRTAREA|LB_REL_FRM_LEFT| \
257*b1cdbd2cSJim Jagielski 						LB_REL_FRM_RIGHT)
258*b1cdbd2cSJim Jagielski 
259*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aHParaMap[] =
260*b1cdbd2cSJim Jagielski {
261*b1cdbd2cSJim Jagielski     {SwFPos::LEFT,          SwFPos::MIR_LEFT,       text::HoriOrientation::LEFT,      HORI_PARA_REL},
262*b1cdbd2cSJim Jagielski     {SwFPos::RIGHT,         SwFPos::MIR_RIGHT,      text::HoriOrientation::RIGHT,     HORI_PARA_REL},
263*b1cdbd2cSJim Jagielski     {SwFPos::CENTER_HORI,   SwFPos::CENTER_HORI,    text::HoriOrientation::CENTER,    HORI_PARA_REL},
264*b1cdbd2cSJim Jagielski     {SwFPos::FROMLEFT,      SwFPos::MIR_FROMLEFT,   text::HoriOrientation::NONE,      HORI_PARA_REL}
265*b1cdbd2cSJim Jagielski };
266*b1cdbd2cSJim Jagielski 
267*b1cdbd2cSJim Jagielski #define HTML_HORI_PARA_REL	(LB_FRAME|LB_PRTAREA)
268*b1cdbd2cSJim Jagielski 
269*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aHParaHtmlMap[] =
270*b1cdbd2cSJim Jagielski {
271*b1cdbd2cSJim Jagielski     {SwFPos::LEFT,  SwFPos::LEFT,   text::HoriOrientation::LEFT,      HTML_HORI_PARA_REL},
272*b1cdbd2cSJim Jagielski     {SwFPos::RIGHT, SwFPos::RIGHT,  text::HoriOrientation::RIGHT,     HTML_HORI_PARA_REL}
273*b1cdbd2cSJim Jagielski };
274*b1cdbd2cSJim Jagielski 
275*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aHParaHtmlAbsMap[] =
276*b1cdbd2cSJim Jagielski {
277*b1cdbd2cSJim Jagielski     {SwFPos::LEFT,          SwFPos::MIR_LEFT,       text::HoriOrientation::LEFT,      HTML_HORI_PARA_REL},
278*b1cdbd2cSJim Jagielski     {SwFPos::RIGHT,         SwFPos::MIR_RIGHT,      text::HoriOrientation::RIGHT,     HTML_HORI_PARA_REL}
279*b1cdbd2cSJim Jagielski };
280*b1cdbd2cSJim Jagielski 
281*b1cdbd2cSJim Jagielski // OD 19.09.2003 #i18732# - allow vertical alignment at page areas
282*b1cdbd2cSJim Jagielski #define VERT_PARA_REL   (LB_VERT_FRAME|LB_VERT_PRTAREA| \
283*b1cdbd2cSJim Jagielski                          LB_REL_PG_FRAME|LB_REL_PG_PRTAREA)
284*b1cdbd2cSJim Jagielski 
285*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aVParaMap[] =
286*b1cdbd2cSJim Jagielski {
287*b1cdbd2cSJim Jagielski     {SwFPos::TOP,           SwFPos::TOP,            text::VertOrientation::TOP,       VERT_PARA_REL},
288*b1cdbd2cSJim Jagielski     {SwFPos::BOTTOM,        SwFPos::BOTTOM,         text::VertOrientation::BOTTOM,    VERT_PARA_REL},
289*b1cdbd2cSJim Jagielski     {SwFPos::CENTER_VERT,   SwFPos::CENTER_VERT,    text::VertOrientation::CENTER,    VERT_PARA_REL},
290*b1cdbd2cSJim Jagielski     {SwFPos::FROMTOP,       SwFPos::FROMTOP,        text::VertOrientation::NONE,      VERT_PARA_REL}
291*b1cdbd2cSJim Jagielski };
292*b1cdbd2cSJim Jagielski 
293*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aVParaHtmlMap[] =
294*b1cdbd2cSJim Jagielski {
295*b1cdbd2cSJim Jagielski     {SwFPos::TOP,           SwFPos::TOP,            text::VertOrientation::TOP,       LB_VERT_PRTAREA}
296*b1cdbd2cSJim Jagielski };
297*b1cdbd2cSJim Jagielski 
298*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
299*b1cdbd2cSJim Jagielski 	Beschreibung: Relativ zum Zeichen verankert
300*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
301*b1cdbd2cSJim Jagielski 
302*b1cdbd2cSJim Jagielski #define HORI_CHAR_REL	(LB_FRAME|LB_PRTAREA|LB_REL_PG_LEFT|LB_REL_PG_RIGHT| \
303*b1cdbd2cSJim Jagielski 						LB_REL_PG_FRAME|LB_REL_PG_PRTAREA|LB_REL_FRM_LEFT| \
304*b1cdbd2cSJim Jagielski 						LB_REL_FRM_RIGHT|LB_REL_CHAR)
305*b1cdbd2cSJim Jagielski 
306*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aHCharMap[] =
307*b1cdbd2cSJim Jagielski {
308*b1cdbd2cSJim Jagielski     {SwFPos::LEFT,          SwFPos::MIR_LEFT,       text::HoriOrientation::LEFT,      HORI_CHAR_REL},
309*b1cdbd2cSJim Jagielski     {SwFPos::RIGHT,         SwFPos::MIR_RIGHT,      text::HoriOrientation::RIGHT,     HORI_CHAR_REL},
310*b1cdbd2cSJim Jagielski     {SwFPos::CENTER_HORI,   SwFPos::CENTER_HORI,    text::HoriOrientation::CENTER,    HORI_CHAR_REL},
311*b1cdbd2cSJim Jagielski     {SwFPos::FROMLEFT,      SwFPos::MIR_FROMLEFT,   text::HoriOrientation::NONE,      HORI_CHAR_REL}
312*b1cdbd2cSJim Jagielski };
313*b1cdbd2cSJim Jagielski 
314*b1cdbd2cSJim Jagielski #define HTML_HORI_CHAR_REL	(LB_FRAME|LB_PRTAREA|LB_REL_CHAR)
315*b1cdbd2cSJim Jagielski 
316*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aHCharHtmlMap[] =
317*b1cdbd2cSJim Jagielski {
318*b1cdbd2cSJim Jagielski     {SwFPos::LEFT,          SwFPos::LEFT,           text::HoriOrientation::LEFT,      HTML_HORI_CHAR_REL},
319*b1cdbd2cSJim Jagielski     {SwFPos::RIGHT,         SwFPos::RIGHT,          text::HoriOrientation::RIGHT,     HTML_HORI_CHAR_REL}
320*b1cdbd2cSJim Jagielski };
321*b1cdbd2cSJim Jagielski 
322*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aHCharHtmlAbsMap[] =
323*b1cdbd2cSJim Jagielski {
324*b1cdbd2cSJim Jagielski     {SwFPos::LEFT,          SwFPos::MIR_LEFT,       text::HoriOrientation::LEFT,      LB_PRTAREA|LB_REL_CHAR},
325*b1cdbd2cSJim Jagielski     {SwFPos::RIGHT,         SwFPos::MIR_RIGHT,      text::HoriOrientation::RIGHT,     LB_PRTAREA},
326*b1cdbd2cSJim Jagielski     {SwFPos::FROMLEFT,      SwFPos::MIR_FROMLEFT,   text::HoriOrientation::NONE,      LB_REL_PG_FRAME}
327*b1cdbd2cSJim Jagielski };
328*b1cdbd2cSJim Jagielski 
329*b1cdbd2cSJim Jagielski // OD 19.09.2003 #i18732# - allow vertical alignment at page areas
330*b1cdbd2cSJim Jagielski // OD 12.11.2003 #i22341# - handle <LB_REL_CHAR> on its own
331*b1cdbd2cSJim Jagielski #define VERT_CHAR_REL   (LB_VERT_FRAME|LB_VERT_PRTAREA| \
332*b1cdbd2cSJim Jagielski                          LB_REL_PG_FRAME|LB_REL_PG_PRTAREA)
333*b1cdbd2cSJim Jagielski 
334*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aVCharMap[] =
335*b1cdbd2cSJim Jagielski {
336*b1cdbd2cSJim Jagielski     // OD 11.11.2003 #i22341#
337*b1cdbd2cSJim Jagielski     // introduce mappings for new vertical alignment at top of line <LB_VERT_LINE>
338*b1cdbd2cSJim Jagielski     // and correct mapping for vertical alignment at character for position <FROM_BOTTOM>
339*b1cdbd2cSJim Jagielski     // Note: Because of these adjustments the map becomes ambigous in its values
340*b1cdbd2cSJim Jagielski     //       <eStrId>/<eMirrorStrId> and <nAlign>. These ambiguities are considered
341*b1cdbd2cSJim Jagielski     //       in the methods <SwFrmPage::FillRelLB(..)>, <SwFrmPage::GetAlignment(..)>
342*b1cdbd2cSJim Jagielski     //       and <SwFrmPage::FillPosLB(..)>
343*b1cdbd2cSJim Jagielski     {SwFPos::TOP,           SwFPos::TOP,            text::VertOrientation::TOP,           VERT_CHAR_REL|LB_REL_CHAR},
344*b1cdbd2cSJim Jagielski     {SwFPos::BOTTOM,        SwFPos::BOTTOM,         text::VertOrientation::BOTTOM,        VERT_CHAR_REL|LB_REL_CHAR},
345*b1cdbd2cSJim Jagielski     {SwFPos::BELOW,         SwFPos::BELOW,          text::VertOrientation::CHAR_BOTTOM,   LB_REL_CHAR},
346*b1cdbd2cSJim Jagielski     {SwFPos::CENTER_VERT,   SwFPos::CENTER_VERT,    text::VertOrientation::CENTER,        VERT_CHAR_REL|LB_REL_CHAR},
347*b1cdbd2cSJim Jagielski     {SwFPos::FROMTOP,       SwFPos::FROMTOP,        text::VertOrientation::NONE,          VERT_CHAR_REL},
348*b1cdbd2cSJim Jagielski     {SwFPos::FROMBOTTOM,    SwFPos::FROMBOTTOM,     text::VertOrientation::NONE,          LB_REL_CHAR|LB_VERT_LINE},
349*b1cdbd2cSJim Jagielski     {SwFPos::TOP,           SwFPos::TOP,            text::VertOrientation::LINE_TOP,      LB_VERT_LINE},
350*b1cdbd2cSJim Jagielski     {SwFPos::BOTTOM,        SwFPos::BOTTOM,         text::VertOrientation::LINE_BOTTOM,   LB_VERT_LINE},
351*b1cdbd2cSJim Jagielski     {SwFPos::CENTER_VERT,   SwFPos::CENTER_VERT,    text::VertOrientation::LINE_CENTER,   LB_VERT_LINE}
352*b1cdbd2cSJim Jagielski };
353*b1cdbd2cSJim Jagielski 
354*b1cdbd2cSJim Jagielski 
355*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aVCharHtmlMap[] =
356*b1cdbd2cSJim Jagielski {
357*b1cdbd2cSJim Jagielski     {SwFPos::BELOW,         SwFPos::BELOW,          text::VertOrientation::CHAR_BOTTOM,   LB_REL_CHAR}
358*b1cdbd2cSJim Jagielski };
359*b1cdbd2cSJim Jagielski 
360*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aVCharHtmlAbsMap[] =
361*b1cdbd2cSJim Jagielski {
362*b1cdbd2cSJim Jagielski     {SwFPos::TOP,           SwFPos::TOP,            text::VertOrientation::TOP,           LB_REL_CHAR},
363*b1cdbd2cSJim Jagielski     {SwFPos::BELOW,             SwFPos::BELOW,          text::VertOrientation::CHAR_BOTTOM,   LB_REL_CHAR}
364*b1cdbd2cSJim Jagielski };
365*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
366*b1cdbd2cSJim Jagielski 	Beschreibung: Als Zeichen verankert
367*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
368*b1cdbd2cSJim Jagielski 
369*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aVAsCharMap[] =
370*b1cdbd2cSJim Jagielski {
371*b1cdbd2cSJim Jagielski     {SwFPos::TOP,               SwFPos::TOP,            text::VertOrientation::TOP,           LB_REL_BASE},
372*b1cdbd2cSJim Jagielski     {SwFPos::BOTTOM,        SwFPos::BOTTOM,         text::VertOrientation::BOTTOM,        LB_REL_BASE},
373*b1cdbd2cSJim Jagielski     {SwFPos::CENTER_VERT,   SwFPos::CENTER_VERT,    text::VertOrientation::CENTER,        LB_REL_BASE},
374*b1cdbd2cSJim Jagielski 
375*b1cdbd2cSJim Jagielski     {SwFPos::TOP,               SwFPos::TOP,            text::VertOrientation::CHAR_TOP,      LB_REL_CHAR},
376*b1cdbd2cSJim Jagielski     {SwFPos::BOTTOM,        SwFPos::BOTTOM,         text::VertOrientation::CHAR_BOTTOM,   LB_REL_CHAR},
377*b1cdbd2cSJim Jagielski     {SwFPos::CENTER_VERT,   SwFPos::CENTER_VERT,    text::VertOrientation::CHAR_CENTER,   LB_REL_CHAR},
378*b1cdbd2cSJim Jagielski 
379*b1cdbd2cSJim Jagielski     {SwFPos::TOP,               SwFPos::TOP,            text::VertOrientation::LINE_TOP,      LB_REL_ROW},
380*b1cdbd2cSJim Jagielski     {SwFPos::BOTTOM,        SwFPos::BOTTOM,         text::VertOrientation::LINE_BOTTOM,   LB_REL_ROW},
381*b1cdbd2cSJim Jagielski     {SwFPos::CENTER_VERT,   SwFPos::CENTER_VERT,    text::VertOrientation::LINE_CENTER,   LB_REL_ROW},
382*b1cdbd2cSJim Jagielski 
383*b1cdbd2cSJim Jagielski     {SwFPos::FROMBOTTOM,    SwFPos::FROMBOTTOM,     text::VertOrientation::NONE,          LB_REL_BASE}
384*b1cdbd2cSJim Jagielski };
385*b1cdbd2cSJim Jagielski 
386*b1cdbd2cSJim Jagielski static FrmMap __FAR_DATA aVAsCharHtmlMap[] =
387*b1cdbd2cSJim Jagielski {
388*b1cdbd2cSJim Jagielski     {SwFPos::TOP,               SwFPos::TOP,            text::VertOrientation::TOP,           LB_REL_BASE},
389*b1cdbd2cSJim Jagielski     {SwFPos::CENTER_VERT,   SwFPos::CENTER_VERT,    text::VertOrientation::CENTER,        LB_REL_BASE},
390*b1cdbd2cSJim Jagielski 
391*b1cdbd2cSJim Jagielski     {SwFPos::TOP,               SwFPos::TOP,            text::VertOrientation::CHAR_TOP,      LB_REL_CHAR},
392*b1cdbd2cSJim Jagielski 
393*b1cdbd2cSJim Jagielski     {SwFPos::TOP,               SwFPos::TOP,            text::VertOrientation::LINE_TOP,      LB_REL_ROW},
394*b1cdbd2cSJim Jagielski     {SwFPos::BOTTOM,        SwFPos::BOTTOM,         text::VertOrientation::LINE_BOTTOM,   LB_REL_ROW},
395*b1cdbd2cSJim Jagielski     {SwFPos::CENTER_VERT,   SwFPos::CENTER_VERT,    text::VertOrientation::LINE_CENTER,   LB_REL_ROW}
396*b1cdbd2cSJim Jagielski };
397*b1cdbd2cSJim Jagielski 
398*b1cdbd2cSJim Jagielski static sal_uInt16 __FAR_DATA aPageRg[] = {
399*b1cdbd2cSJim Jagielski 	RES_FRM_SIZE, RES_FRM_SIZE,
400*b1cdbd2cSJim Jagielski 	RES_VERT_ORIENT, RES_ANCHOR,
401*b1cdbd2cSJim Jagielski 	RES_COL, RES_COL,
402*b1cdbd2cSJim Jagielski     RES_FOLLOW_TEXT_FLOW, RES_FOLLOW_TEXT_FLOW,
403*b1cdbd2cSJim Jagielski 	0
404*b1cdbd2cSJim Jagielski };
405*b1cdbd2cSJim Jagielski static sal_uInt16 __FAR_DATA aAddPgRg[] = {
406*b1cdbd2cSJim Jagielski 	RES_PROTECT, 			RES_PROTECT,
407*b1cdbd2cSJim Jagielski 	RES_PRINT, 				RES_PRINT,
408*b1cdbd2cSJim Jagielski 	FN_SET_FRM_NAME,		FN_SET_FRM_NAME,
409*b1cdbd2cSJim Jagielski 	FN_SET_FRM_ALT_NAME,	FN_SET_FRM_ALT_NAME,
410*b1cdbd2cSJim Jagielski 	0
411*b1cdbd2cSJim Jagielski };
412*b1cdbd2cSJim Jagielski 
413*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
414*b1cdbd2cSJim Jagielski 	Beschreibung:
415*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
416*b1cdbd2cSJim Jagielski 
lcl_GetFrmMapCount(const FrmMap * pMap)417*b1cdbd2cSJim Jagielski size_t lcl_GetFrmMapCount( const FrmMap* pMap)
418*b1cdbd2cSJim Jagielski {
419*b1cdbd2cSJim Jagielski 	if ( pMap )
420*b1cdbd2cSJim Jagielski 	{
421*b1cdbd2cSJim Jagielski 		int aSizeOf = sizeof(FrmMap);
422*b1cdbd2cSJim Jagielski 		if( pMap == aVParaHtmlMap)
423*b1cdbd2cSJim Jagielski 			return sizeof(aVParaHtmlMap) / aSizeOf;
424*b1cdbd2cSJim Jagielski 		if( pMap == aVAsCharHtmlMap)
425*b1cdbd2cSJim Jagielski 			return sizeof(aVAsCharHtmlMap) / aSizeOf;
426*b1cdbd2cSJim Jagielski 		if( pMap == aHParaHtmlMap)
427*b1cdbd2cSJim Jagielski 			return sizeof(aHParaHtmlMap) / aSizeOf;
428*b1cdbd2cSJim Jagielski 		if( pMap == aHParaHtmlAbsMap)
429*b1cdbd2cSJim Jagielski 			return sizeof(aHParaHtmlAbsMap) / aSizeOf;
430*b1cdbd2cSJim Jagielski 		if ( pMap == aVPageMap )
431*b1cdbd2cSJim Jagielski 			return sizeof(aVPageMap) / aSizeOf;
432*b1cdbd2cSJim Jagielski 		if ( pMap == aVPageHtmlMap )
433*b1cdbd2cSJim Jagielski 			return sizeof(aVPageHtmlMap) / aSizeOf;
434*b1cdbd2cSJim Jagielski 		if ( pMap == aVAsCharMap )
435*b1cdbd2cSJim Jagielski 			return sizeof(aVAsCharMap) / aSizeOf;
436*b1cdbd2cSJim Jagielski 		if ( pMap == aVParaMap )
437*b1cdbd2cSJim Jagielski 			return sizeof(aVParaMap) / aSizeOf;
438*b1cdbd2cSJim Jagielski 		if ( pMap == aHParaMap )
439*b1cdbd2cSJim Jagielski 			return sizeof(aHParaMap) / aSizeOf;
440*b1cdbd2cSJim Jagielski 		if ( pMap == aHFrameMap )
441*b1cdbd2cSJim Jagielski 			return sizeof(aHFrameMap) / aSizeOf;
442*b1cdbd2cSJim Jagielski         // OD 19.09.2003 #i18732# - own vertical alignment map for to frame anchored objects
443*b1cdbd2cSJim Jagielski         if ( pMap == aVFrameMap )
444*b1cdbd2cSJim Jagielski             return sizeof(aVFrameMap) / aSizeOf;
445*b1cdbd2cSJim Jagielski 		if ( pMap == aHCharMap )
446*b1cdbd2cSJim Jagielski 			return sizeof(aHCharMap) / aSizeOf;
447*b1cdbd2cSJim Jagielski 		if ( pMap == aHCharHtmlMap )
448*b1cdbd2cSJim Jagielski 			return sizeof(aHCharHtmlMap) / aSizeOf;
449*b1cdbd2cSJim Jagielski 		if ( pMap == aHCharHtmlAbsMap )
450*b1cdbd2cSJim Jagielski 			return sizeof(aHCharHtmlAbsMap) / aSizeOf;
451*b1cdbd2cSJim Jagielski 		if ( pMap == aVCharMap )
452*b1cdbd2cSJim Jagielski 			return sizeof(aVCharMap) / aSizeOf;
453*b1cdbd2cSJim Jagielski 		if ( pMap == aVCharHtmlMap )
454*b1cdbd2cSJim Jagielski 			return sizeof(aVCharHtmlMap) / aSizeOf;
455*b1cdbd2cSJim Jagielski 		if ( pMap == aVCharHtmlAbsMap )
456*b1cdbd2cSJim Jagielski 			return sizeof(aVCharHtmlAbsMap) / aSizeOf;
457*b1cdbd2cSJim Jagielski 		if ( pMap == aHPageHtmlMap )
458*b1cdbd2cSJim Jagielski 			return sizeof(aHPageHtmlMap) / aSizeOf;
459*b1cdbd2cSJim Jagielski 		if ( pMap == aHFlyHtmlMap )
460*b1cdbd2cSJim Jagielski 			return sizeof(aHFlyHtmlMap) / aSizeOf;
461*b1cdbd2cSJim Jagielski 		if ( pMap == aVFlyHtmlMap )
462*b1cdbd2cSJim Jagielski 			return sizeof(aVFlyHtmlMap) / aSizeOf;
463*b1cdbd2cSJim Jagielski 		return sizeof(aHPageMap) / aSizeOf;
464*b1cdbd2cSJim Jagielski 	}
465*b1cdbd2cSJim Jagielski 	return 0;
466*b1cdbd2cSJim Jagielski }
467*b1cdbd2cSJim Jagielski /* -----------------------------08.08.2002 14:45------------------------------
468*b1cdbd2cSJim Jagielski 
469*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
lcl_InsertVectors(ListBox & rBox,const::std::vector<String> & rPrev,const::std::vector<String> & rThis,const::std::vector<String> & rNext,const::std::vector<String> & rRemain)470*b1cdbd2cSJim Jagielski void lcl_InsertVectors(ListBox& rBox,
471*b1cdbd2cSJim Jagielski     const ::std::vector< String >& rPrev, const ::std::vector< String >& rThis,
472*b1cdbd2cSJim Jagielski     const ::std::vector< String >& rNext, const ::std::vector< String >& rRemain)
473*b1cdbd2cSJim Jagielski {
474*b1cdbd2cSJim Jagielski     ::std::vector< String >::const_iterator aIt;
475*b1cdbd2cSJim Jagielski     sal_uInt16 nEntry = 0;
476*b1cdbd2cSJim Jagielski     for(aIt = rPrev.begin(); aIt != rPrev.end(); aIt++)
477*b1cdbd2cSJim Jagielski         nEntry = rBox.InsertEntry(*aIt);
478*b1cdbd2cSJim Jagielski     for(aIt = rThis.begin(); aIt != rThis.end(); aIt++)
479*b1cdbd2cSJim Jagielski         nEntry = rBox.InsertEntry(*aIt);
480*b1cdbd2cSJim Jagielski     for(aIt = rNext.begin(); aIt != rNext.end(); aIt++)
481*b1cdbd2cSJim Jagielski         nEntry = rBox.InsertEntry(*aIt);
482*b1cdbd2cSJim Jagielski     rBox.SetSeparatorPos(nEntry);
483*b1cdbd2cSJim Jagielski 	//now insert all strings sorted
484*b1cdbd2cSJim Jagielski 	sal_uInt16 nStartPos = rBox.GetEntryCount();
485*b1cdbd2cSJim Jagielski 
486*b1cdbd2cSJim Jagielski     for(aIt = rPrev.begin(); aIt != rPrev.end(); aIt++)
487*b1cdbd2cSJim Jagielski 		::InsertStringSorted(*aIt, rBox, nStartPos );
488*b1cdbd2cSJim Jagielski     for(aIt = rThis.begin(); aIt != rThis.end(); aIt++)
489*b1cdbd2cSJim Jagielski 		::InsertStringSorted(*aIt, rBox, nStartPos );
490*b1cdbd2cSJim Jagielski     for(aIt = rNext.begin(); aIt != rNext.end(); aIt++)
491*b1cdbd2cSJim Jagielski 		::InsertStringSorted(*aIt, rBox, nStartPos );
492*b1cdbd2cSJim Jagielski     for(aIt = rRemain.begin(); aIt != rRemain.end(); aIt++)
493*b1cdbd2cSJim Jagielski 		::InsertStringSorted(*aIt, rBox, nStartPos );
494*b1cdbd2cSJim Jagielski }
495*b1cdbd2cSJim Jagielski 
496*b1cdbd2cSJim Jagielski /* -----------------------------20.08.2002 16:12------------------------------
497*b1cdbd2cSJim Jagielski 
498*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
499*b1cdbd2cSJim Jagielski // --> OD 2009-08-31 #mongolianlayout#
500*b1cdbd2cSJim Jagielski // add input parameter
lcl_ChangeResIdToVerticalOrRTL(SvxSwFramePosString::StringId eStringId,sal_Bool bVertical,sal_Bool bVerticalL2R,sal_Bool bRTL)501*b1cdbd2cSJim Jagielski SvxSwFramePosString::StringId lcl_ChangeResIdToVerticalOrRTL(SvxSwFramePosString::StringId eStringId, sal_Bool bVertical, sal_Bool bVerticalL2R, sal_Bool bRTL)
502*b1cdbd2cSJim Jagielski {
503*b1cdbd2cSJim Jagielski     //special handling of STR_FROMLEFT
504*b1cdbd2cSJim Jagielski     if ( SwFPos::FROMLEFT == eStringId )
505*b1cdbd2cSJim Jagielski     {
506*b1cdbd2cSJim Jagielski         eStringId = bVertical
507*b1cdbd2cSJim Jagielski                     ? ( bRTL
508*b1cdbd2cSJim Jagielski                         ? SwFPos::FROMBOTTOM
509*b1cdbd2cSJim Jagielski                         : SwFPos::FROMTOP )
510*b1cdbd2cSJim Jagielski                     : ( bRTL
511*b1cdbd2cSJim Jagielski                         ? SwFPos::FROMRIGHT
512*b1cdbd2cSJim Jagielski                         : SwFPos::FROMLEFT );
513*b1cdbd2cSJim Jagielski         return eStringId;
514*b1cdbd2cSJim Jagielski     }
515*b1cdbd2cSJim Jagielski     // --> OD 2009-08-31 #mongolianlayout#
516*b1cdbd2cSJim Jagielski     // special handling of STR_FROMTOP in case of mongolianlayout (vertical left-to-right)
517*b1cdbd2cSJim Jagielski     if ( SwFPos::FROMTOP == eStringId &&
518*b1cdbd2cSJim Jagielski          bVertical && bVerticalL2R )
519*b1cdbd2cSJim Jagielski     {
520*b1cdbd2cSJim Jagielski         eStringId = SwFPos::FROMLEFT;
521*b1cdbd2cSJim Jagielski         return eStringId;
522*b1cdbd2cSJim Jagielski     }
523*b1cdbd2cSJim Jagielski     // <--
524*b1cdbd2cSJim Jagielski     if ( bVertical )
525*b1cdbd2cSJim Jagielski     {
526*b1cdbd2cSJim Jagielski         //exchange horizontal strings with vertical strings and vice versa
527*b1cdbd2cSJim Jagielski         static const StringIdPair_Impl aHoriIds[] =
528*b1cdbd2cSJim Jagielski         {
529*b1cdbd2cSJim Jagielski             {SwFPos::LEFT,           SwFPos::TOP},
530*b1cdbd2cSJim Jagielski             {SwFPos::RIGHT,          SwFPos::BOTTOM},
531*b1cdbd2cSJim Jagielski             {SwFPos::CENTER_HORI,    SwFPos::CENTER_VERT},
532*b1cdbd2cSJim Jagielski             {SwFPos::FROMTOP,        SwFPos::FROMRIGHT},
533*b1cdbd2cSJim Jagielski             {SwFPos::REL_PG_LEFT,    SwFPos::REL_PG_TOP},
534*b1cdbd2cSJim Jagielski             {SwFPos::REL_PG_RIGHT,   SwFPos::REL_PG_BOTTOM} ,
535*b1cdbd2cSJim Jagielski             {SwFPos::REL_FRM_LEFT,   SwFPos::REL_FRM_TOP},
536*b1cdbd2cSJim Jagielski             {SwFPos::REL_FRM_RIGHT,  SwFPos::REL_FRM_BOTTOM}
537*b1cdbd2cSJim Jagielski         };
538*b1cdbd2cSJim Jagielski         static const StringIdPair_Impl aVertIds[] =
539*b1cdbd2cSJim Jagielski         {
540*b1cdbd2cSJim Jagielski             {SwFPos::TOP,            SwFPos::RIGHT},
541*b1cdbd2cSJim Jagielski             {SwFPos::BOTTOM,         SwFPos::LEFT },
542*b1cdbd2cSJim Jagielski             {SwFPos::CENTER_VERT,    SwFPos::CENTER_HORI},
543*b1cdbd2cSJim Jagielski             {SwFPos::FROMTOP,        SwFPos::FROMRIGHT },
544*b1cdbd2cSJim Jagielski             {SwFPos::REL_PG_TOP,     SwFPos::REL_PG_LEFT },
545*b1cdbd2cSJim Jagielski             {SwFPos::REL_PG_BOTTOM,  SwFPos::REL_PG_RIGHT } ,
546*b1cdbd2cSJim Jagielski             {SwFPos::REL_FRM_TOP,    SwFPos::REL_FRM_LEFT },
547*b1cdbd2cSJim Jagielski             {SwFPos::REL_FRM_BOTTOM, SwFPos::REL_FRM_RIGHT }
548*b1cdbd2cSJim Jagielski         };
549*b1cdbd2cSJim Jagielski         // --> OD 2009-08-31 #monglianlayout#
550*b1cdbd2cSJim Jagielski         static const StringIdPair_Impl aVertL2RIds[] =
551*b1cdbd2cSJim Jagielski         {
552*b1cdbd2cSJim Jagielski             {SwFPos::TOP,            SwFPos::LEFT },
553*b1cdbd2cSJim Jagielski             {SwFPos::BOTTOM,         SwFPos::RIGHT },
554*b1cdbd2cSJim Jagielski             {SwFPos::CENTER_VERT,    SwFPos::CENTER_HORI },
555*b1cdbd2cSJim Jagielski             {SwFPos::FROMTOP,        SwFPos::FROMLEFT },
556*b1cdbd2cSJim Jagielski             {SwFPos::REL_PG_TOP,     SwFPos::REL_PG_LEFT },
557*b1cdbd2cSJim Jagielski             {SwFPos::REL_PG_BOTTOM,  SwFPos::REL_PG_RIGHT } ,
558*b1cdbd2cSJim Jagielski             {SwFPos::REL_FRM_TOP,    SwFPos::REL_FRM_LEFT },
559*b1cdbd2cSJim Jagielski             {SwFPos::REL_FRM_BOTTOM, SwFPos::REL_FRM_RIGHT }
560*b1cdbd2cSJim Jagielski         };
561*b1cdbd2cSJim Jagielski         // <--
562*b1cdbd2cSJim Jagielski         sal_uInt16 nIndex;
563*b1cdbd2cSJim Jagielski         for(nIndex = 0; nIndex < sizeof(aHoriIds) / sizeof(StringIdPair_Impl); ++nIndex)
564*b1cdbd2cSJim Jagielski         {
565*b1cdbd2cSJim Jagielski             if(aHoriIds[nIndex].eHori == eStringId)
566*b1cdbd2cSJim Jagielski             {
567*b1cdbd2cSJim Jagielski                 eStringId = aHoriIds[nIndex].eVert;
568*b1cdbd2cSJim Jagielski                 return eStringId;
569*b1cdbd2cSJim Jagielski             }
570*b1cdbd2cSJim Jagielski         }
571*b1cdbd2cSJim Jagielski         nIndex = 0;
572*b1cdbd2cSJim Jagielski         for(nIndex = 0; nIndex < sizeof(aVertIds) / sizeof(StringIdPair_Impl); ++nIndex)
573*b1cdbd2cSJim Jagielski         {
574*b1cdbd2cSJim Jagielski             // --> OD 2009-08-31 #mongolianlayout#
575*b1cdbd2cSJim Jagielski             if ( !bVerticalL2R )
576*b1cdbd2cSJim Jagielski             {
577*b1cdbd2cSJim Jagielski                 if(aVertIds[nIndex].eHori == eStringId)
578*b1cdbd2cSJim Jagielski                 {
579*b1cdbd2cSJim Jagielski                     eStringId = aVertIds[nIndex].eVert;
580*b1cdbd2cSJim Jagielski                     break;
581*b1cdbd2cSJim Jagielski                 }
582*b1cdbd2cSJim Jagielski             }
583*b1cdbd2cSJim Jagielski             else
584*b1cdbd2cSJim Jagielski             {
585*b1cdbd2cSJim Jagielski                 if(aVertL2RIds[nIndex].eHori == eStringId)
586*b1cdbd2cSJim Jagielski                 {
587*b1cdbd2cSJim Jagielski                     eStringId = aVertL2RIds[nIndex].eVert;
588*b1cdbd2cSJim Jagielski                     break;
589*b1cdbd2cSJim Jagielski                 }
590*b1cdbd2cSJim Jagielski             }
591*b1cdbd2cSJim Jagielski             // <--
592*b1cdbd2cSJim Jagielski         }
593*b1cdbd2cSJim Jagielski     }
594*b1cdbd2cSJim Jagielski     return eStringId;
595*b1cdbd2cSJim Jagielski }
596*b1cdbd2cSJim Jagielski 
597*b1cdbd2cSJim Jagielski // OD 12.11.2003 #i22341# - helper method in order to determine all possible
598*b1cdbd2cSJim Jagielski // listbox relations in a relation map for a given relation
lcl_GetLBRelationsForRelations(const sal_uInt16 _nRel)599*b1cdbd2cSJim Jagielski sal_uLong lcl_GetLBRelationsForRelations( const sal_uInt16 _nRel )
600*b1cdbd2cSJim Jagielski {
601*b1cdbd2cSJim Jagielski     sal_uLong nLBRelations = 0L;
602*b1cdbd2cSJim Jagielski 
603*b1cdbd2cSJim Jagielski     sal_uInt16 nRelMapSize = sizeof(aRelationMap) / sizeof(RelationMap);
604*b1cdbd2cSJim Jagielski     for ( sal_uInt16 nRelMapPos = 0; nRelMapPos < nRelMapSize; ++nRelMapPos )
605*b1cdbd2cSJim Jagielski     {
606*b1cdbd2cSJim Jagielski         if ( aRelationMap[nRelMapPos].nRelation == _nRel )
607*b1cdbd2cSJim Jagielski         {
608*b1cdbd2cSJim Jagielski             nLBRelations |= aRelationMap[nRelMapPos].nLBRelation;
609*b1cdbd2cSJim Jagielski         }
610*b1cdbd2cSJim Jagielski     }
611*b1cdbd2cSJim Jagielski 
612*b1cdbd2cSJim Jagielski     return nLBRelations;
613*b1cdbd2cSJim Jagielski }
614*b1cdbd2cSJim Jagielski 
615*b1cdbd2cSJim Jagielski // OD 14.11.2003 #i22341# - helper method on order to determine all possible
616*b1cdbd2cSJim Jagielski // listbox relations in a relation map for a given string ID
lcl_GetLBRelationsForStrID(const FrmMap * _pMap,const SvxSwFramePosString::StringId _eStrId,const bool _bUseMirrorStr)617*b1cdbd2cSJim Jagielski sal_uLong lcl_GetLBRelationsForStrID( const FrmMap* _pMap,
618*b1cdbd2cSJim Jagielski                                   const SvxSwFramePosString::StringId _eStrId,
619*b1cdbd2cSJim Jagielski                                   const bool _bUseMirrorStr )
620*b1cdbd2cSJim Jagielski {
621*b1cdbd2cSJim Jagielski     sal_uLong nLBRelations = 0L;
622*b1cdbd2cSJim Jagielski 
623*b1cdbd2cSJim Jagielski     size_t nRelMapSize = lcl_GetFrmMapCount( _pMap );
624*b1cdbd2cSJim Jagielski     for ( size_t nRelMapPos = 0; nRelMapPos < nRelMapSize; ++nRelMapPos )
625*b1cdbd2cSJim Jagielski     {
626*b1cdbd2cSJim Jagielski         if ( ( !_bUseMirrorStr && _pMap[nRelMapPos].eStrId == _eStrId ) ||
627*b1cdbd2cSJim Jagielski              ( _bUseMirrorStr && _pMap[nRelMapPos].eMirrorStrId == _eStrId ) )
628*b1cdbd2cSJim Jagielski         {
629*b1cdbd2cSJim Jagielski             nLBRelations |= _pMap[nRelMapPos].nLBRelations;
630*b1cdbd2cSJim Jagielski         }
631*b1cdbd2cSJim Jagielski     }
632*b1cdbd2cSJim Jagielski 
633*b1cdbd2cSJim Jagielski     return nLBRelations;
634*b1cdbd2cSJim Jagielski }
635*b1cdbd2cSJim Jagielski 
636*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
637*b1cdbd2cSJim Jagielski 	Beschreibung:	StandardRahmenTabPage
638*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
639*b1cdbd2cSJim Jagielski 
640*b1cdbd2cSJim Jagielski namespace
641*b1cdbd2cSJim Jagielski {
HandleAutoCB(sal_Bool _bChecked,FixedText & _rFT_man,FixedText & _rFT_auto,PercentField & _rPF_Edit)642*b1cdbd2cSJim Jagielski 	void HandleAutoCB( sal_Bool _bChecked, FixedText& _rFT_man, FixedText& _rFT_auto, PercentField& _rPF_Edit)
643*b1cdbd2cSJim Jagielski 	{
644*b1cdbd2cSJim Jagielski 		_rFT_man.Show( !_bChecked );
645*b1cdbd2cSJim Jagielski 		_rFT_auto.Show( _bChecked );
646*b1cdbd2cSJim Jagielski 		String accName = _bChecked ? _rFT_auto.GetText() : _rFT_man.GetText();
647*b1cdbd2cSJim Jagielski 		_rPF_Edit.SetAccessibleName(accName);
648*b1cdbd2cSJim Jagielski 	}
649*b1cdbd2cSJim Jagielski }
650*b1cdbd2cSJim Jagielski 
651*b1cdbd2cSJim Jagielski 
SwFrmPage(Window * pParent,const SfxItemSet & rSet)652*b1cdbd2cSJim Jagielski SwFrmPage::SwFrmPage ( Window *pParent, const SfxItemSet &rSet ) :
653*b1cdbd2cSJim Jagielski 	SfxTabPage		(pParent, SW_RES(TP_FRM_STD), rSet),
654*b1cdbd2cSJim Jagielski 
655*b1cdbd2cSJim Jagielski     aSizeFL         (this, SW_RES(FL_SIZE)),
656*b1cdbd2cSJim Jagielski     aWidthFT        (this, SW_RES(FT_WIDTH)),
657*b1cdbd2cSJim Jagielski 	aWidthAutoFT	(this, SW_RES(FT_WIDTH_AUTO)),
658*b1cdbd2cSJim Jagielski 	aWidthED		(this, SW_RES(ED_WIDTH)),
659*b1cdbd2cSJim Jagielski 	aRelWidthCB		(this, SW_RES(CB_REL_WIDTH)),
660*b1cdbd2cSJim Jagielski 	aAutoWidthCB	(this, SW_RES(CB_AUTOWIDTH)),
661*b1cdbd2cSJim Jagielski 	aHeightFT		(this, SW_RES(FT_HEIGHT)),
662*b1cdbd2cSJim Jagielski 	aHeightAutoFT	(this, SW_RES(FT_HEIGHT_AUTO)),
663*b1cdbd2cSJim Jagielski 	aHeightED		(this, SW_RES(ED_HEIGHT)),
664*b1cdbd2cSJim Jagielski 	aRelHeightCB	(this, SW_RES(CB_REL_HEIGHT)),
665*b1cdbd2cSJim Jagielski 	aAutoHeightCB	(this, SW_RES(CB_AUTOHEIGHT)),
666*b1cdbd2cSJim Jagielski 	aFixedRatioCB	(this, SW_RES(CB_FIXEDRATIO)),
667*b1cdbd2cSJim Jagielski     aRealSizeBT     (this, SW_RES(BT_REALSIZE)),
668*b1cdbd2cSJim Jagielski 
669*b1cdbd2cSJim Jagielski     aTypeSepFL     (this, SW_RES(FL_TYPE_SEP)),
670*b1cdbd2cSJim Jagielski     aTypeFL        (this, SW_RES(FL_TYPE)),
671*b1cdbd2cSJim Jagielski     aAnchorAtPageRB (this, SW_RES(RB_ANCHOR_PAGE)),
672*b1cdbd2cSJim Jagielski 	aAnchorAtParaRB	(this, SW_RES(RB_ANCHOR_PARA)),
673*b1cdbd2cSJim Jagielski 	aAnchorAtCharRB	(this, SW_RES(RB_ANCHOR_AT_CHAR)),
674*b1cdbd2cSJim Jagielski 	aAnchorAsCharRB	(this, SW_RES(RB_ANCHOR_AS_CHAR)),
675*b1cdbd2cSJim Jagielski 	aAnchorAtFrameRB(this, SW_RES(RB_ANCHOR_FRAME)),
676*b1cdbd2cSJim Jagielski 
677*b1cdbd2cSJim Jagielski     aPositionFL     (this, SW_RES(FL_POSITION)),
678*b1cdbd2cSJim Jagielski 	aHorizontalFT	(this, SW_RES(FT_HORIZONTAL)),
679*b1cdbd2cSJim Jagielski 	aHorizontalDLB	(this, SW_RES(DLB_HORIZONTAL)),
680*b1cdbd2cSJim Jagielski 	aAtHorzPosFT	(this, SW_RES(FT_AT_HORZ_POS)),
681*b1cdbd2cSJim Jagielski 	aAtHorzPosED	(this, SW_RES(ED_AT_HORZ_POS)),
682*b1cdbd2cSJim Jagielski 	aHoriRelationFT (this, SW_RES(FT_HORI_RELATION)),
683*b1cdbd2cSJim Jagielski 	aHoriRelationLB (this, SW_RES(LB_HORI_RELATION)),
684*b1cdbd2cSJim Jagielski 	aMirrorPagesCB  (this, SW_RES(CB_MIRROR)),
685*b1cdbd2cSJim Jagielski 	aVerticalFT		(this, SW_RES(FT_VERTICAL)),
686*b1cdbd2cSJim Jagielski 	aVerticalDLB	(this, SW_RES(DLB_VERTICAL)),
687*b1cdbd2cSJim Jagielski 	aAtVertPosFT	(this, SW_RES(FT_AT_VERT_POS)),
688*b1cdbd2cSJim Jagielski 	aAtVertPosED	(this, SW_RES(ED_AT_VERT_POS)),
689*b1cdbd2cSJim Jagielski 	aVertRelationFT (this, SW_RES(FT_VERT_RELATION)),
690*b1cdbd2cSJim Jagielski 	aVertRelationLB (this, SW_RES(LB_VERT_RELATION)),
691*b1cdbd2cSJim Jagielski     // OD 19.09.2003 #i18732# - new checkbox
692*b1cdbd2cSJim Jagielski     aFollowTextFlowCB(this, SW_RES(CB_FOLLOWTEXTFLOW)),
693*b1cdbd2cSJim Jagielski 
694*b1cdbd2cSJim Jagielski     aExampleWN      (this, SW_RES(WN_BSP)),
695*b1cdbd2cSJim Jagielski 
696*b1cdbd2cSJim Jagielski     bAtHorzPosModified( sal_False ),
697*b1cdbd2cSJim Jagielski     bAtVertPosModified( sal_False ),
698*b1cdbd2cSJim Jagielski     bFormat(sal_False),
699*b1cdbd2cSJim Jagielski     bNew(sal_True),
700*b1cdbd2cSJim Jagielski     bNoModifyHdl(sal_True),
701*b1cdbd2cSJim Jagielski     // --> OD 2009-08-31 #mongolianlayout# - no used
702*b1cdbd2cSJim Jagielski //    bVerticalChanged(FALSE),
703*b1cdbd2cSJim Jagielski     // <--
704*b1cdbd2cSJim Jagielski     bIsVerticalFrame(sal_False),
705*b1cdbd2cSJim Jagielski     // --> OD 2009-08-31 #mongolianlayou#
706*b1cdbd2cSJim Jagielski     bIsVerticalL2R(sal_False),
707*b1cdbd2cSJim Jagielski     // <--
708*b1cdbd2cSJim Jagielski     bIsInRightToLeft(sal_False),
709*b1cdbd2cSJim Jagielski     bHtmlMode(sal_False),
710*b1cdbd2cSJim Jagielski     nHtmlMode(0),
711*b1cdbd2cSJim Jagielski     nDlgType(0),
712*b1cdbd2cSJim Jagielski     nUpperBorder(0),
713*b1cdbd2cSJim Jagielski 	nLowerBorder(0),
714*b1cdbd2cSJim Jagielski     fWidthHeightRatio(1.0),
715*b1cdbd2cSJim Jagielski     // OD 12.11.2003 #i22341#
716*b1cdbd2cSJim Jagielski     mpToCharCntntPos( NULL ),
717*b1cdbd2cSJim Jagielski 
718*b1cdbd2cSJim Jagielski     nOldH(text::HoriOrientation::CENTER),
719*b1cdbd2cSJim Jagielski     nOldHRel(text::RelOrientation::FRAME),
720*b1cdbd2cSJim Jagielski     nOldV(text::VertOrientation::TOP),
721*b1cdbd2cSJim Jagielski     nOldVRel(text::RelOrientation::PRINT_AREA),
722*b1cdbd2cSJim Jagielski     pVMap( 0 ),
723*b1cdbd2cSJim Jagielski     pHMap( 0 ),
724*b1cdbd2cSJim Jagielski     m_bAllowVertPositioning( true ),
725*b1cdbd2cSJim Jagielski     m_bIsMathOLE( false ),
726*b1cdbd2cSJim Jagielski     m_bIsMathBaselineAlignment( true )
727*b1cdbd2cSJim Jagielski {
728*b1cdbd2cSJim Jagielski 	FreeResource();
729*b1cdbd2cSJim Jagielski 	SetExchangeSupport();
730*b1cdbd2cSJim Jagielski 
731*b1cdbd2cSJim Jagielski 	aRealSizeBT.SetAccessibleRelationMemberOf(&aSizeFL);
732*b1cdbd2cSJim Jagielski 
733*b1cdbd2cSJim Jagielski 	Link aLk = LINK(this, SwFrmPage, RangeModifyHdl);
734*b1cdbd2cSJim Jagielski 	aWidthED.	 SetLoseFocusHdl( aLk );
735*b1cdbd2cSJim Jagielski 	aHeightED.	 SetLoseFocusHdl( aLk );
736*b1cdbd2cSJim Jagielski 	aAtHorzPosED.SetLoseFocusHdl( aLk );
737*b1cdbd2cSJim Jagielski 	aAtVertPosED.SetLoseFocusHdl( aLk );
738*b1cdbd2cSJim Jagielski     // OD 25.09.2003 #i18732# - click handler for new checkbox
739*b1cdbd2cSJim Jagielski     aFollowTextFlowCB.SetClickHdl( aLk );
740*b1cdbd2cSJim Jagielski 
741*b1cdbd2cSJim Jagielski 	aLk = LINK(this, SwFrmPage, ModifyHdl);
742*b1cdbd2cSJim Jagielski 	aWidthED.	 SetModifyHdl( aLk );
743*b1cdbd2cSJim Jagielski 	aHeightED.	 SetModifyHdl( aLk );
744*b1cdbd2cSJim Jagielski 	aAtHorzPosED.SetModifyHdl( aLk );
745*b1cdbd2cSJim Jagielski 	aAtVertPosED.SetModifyHdl( aLk );
746*b1cdbd2cSJim Jagielski 
747*b1cdbd2cSJim Jagielski 	aLk = LINK(this, SwFrmPage, AnchorTypeHdl);
748*b1cdbd2cSJim Jagielski 	aAnchorAtPageRB.SetClickHdl( aLk );
749*b1cdbd2cSJim Jagielski 	aAnchorAtParaRB.SetClickHdl( aLk );
750*b1cdbd2cSJim Jagielski 	aAnchorAtCharRB.SetClickHdl( aLk );
751*b1cdbd2cSJim Jagielski 	aAnchorAsCharRB.SetClickHdl( aLk );
752*b1cdbd2cSJim Jagielski 	aAnchorAtFrameRB.SetClickHdl( aLk );
753*b1cdbd2cSJim Jagielski 
754*b1cdbd2cSJim Jagielski 	aHorizontalDLB.SetSelectHdl(LINK(this, SwFrmPage, PosHdl));
755*b1cdbd2cSJim Jagielski 	aVerticalDLB.  SetSelectHdl(LINK(this, SwFrmPage, PosHdl));
756*b1cdbd2cSJim Jagielski 
757*b1cdbd2cSJim Jagielski 	aHoriRelationLB.SetSelectHdl(LINK(this, SwFrmPage, RelHdl));
758*b1cdbd2cSJim Jagielski 	aVertRelationLB.SetSelectHdl(LINK(this, SwFrmPage, RelHdl));
759*b1cdbd2cSJim Jagielski 
760*b1cdbd2cSJim Jagielski 	aMirrorPagesCB.SetClickHdl(LINK(this, SwFrmPage, MirrorHdl));
761*b1cdbd2cSJim Jagielski 
762*b1cdbd2cSJim Jagielski 	aLk = LINK(this, SwFrmPage, RelSizeClickHdl);
763*b1cdbd2cSJim Jagielski 	aRelWidthCB.SetClickHdl( aLk );
764*b1cdbd2cSJim Jagielski 	aRelHeightCB.SetClickHdl( aLk );
765*b1cdbd2cSJim Jagielski 
766*b1cdbd2cSJim Jagielski 	aAutoWidthCB.SetClickHdl( LINK( this, SwFrmPage, AutoWidthClickHdl ) );
767*b1cdbd2cSJim Jagielski 	aAutoHeightCB.SetClickHdl( LINK( this, SwFrmPage, AutoHeightClickHdl ) );
768*b1cdbd2cSJim Jagielski }
769*b1cdbd2cSJim Jagielski 
770*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
771*b1cdbd2cSJim Jagielski 	Beschreibung:	Dtor
772*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
773*b1cdbd2cSJim Jagielski 
~SwFrmPage()774*b1cdbd2cSJim Jagielski SwFrmPage::~SwFrmPage()
775*b1cdbd2cSJim Jagielski {
776*b1cdbd2cSJim Jagielski }
777*b1cdbd2cSJim Jagielski 
Create(Window * pParent,const SfxItemSet & rSet)778*b1cdbd2cSJim Jagielski SfxTabPage* SwFrmPage::Create(Window *pParent, const SfxItemSet &rSet)
779*b1cdbd2cSJim Jagielski {
780*b1cdbd2cSJim Jagielski 	return new SwFrmPage( pParent, rSet );
781*b1cdbd2cSJim Jagielski }
782*b1cdbd2cSJim Jagielski 
783*b1cdbd2cSJim Jagielski namespace
784*b1cdbd2cSJim Jagielski {
MoveControl(Control & _rCtrl,long _nOffsetY)785*b1cdbd2cSJim Jagielski 	void MoveControl( Control& _rCtrl, long _nOffsetY )
786*b1cdbd2cSJim Jagielski 	{
787*b1cdbd2cSJim Jagielski 		Point aPt( _rCtrl.GetPosPixel() );
788*b1cdbd2cSJim Jagielski 		aPt.Move( 0, _nOffsetY );
789*b1cdbd2cSJim Jagielski 		_rCtrl.SetPosPixel( aPt );
790*b1cdbd2cSJim Jagielski 	}
791*b1cdbd2cSJim Jagielski }
792*b1cdbd2cSJim Jagielski 
EnableGraficMode(void)793*b1cdbd2cSJim Jagielski void SwFrmPage::EnableGraficMode( void )
794*b1cdbd2cSJim Jagielski {
795*b1cdbd2cSJim Jagielski     // #i39692# mustn't be called more than once
796*b1cdbd2cSJim Jagielski     if(!aRealSizeBT.IsVisible())
797*b1cdbd2cSJim Jagielski     {
798*b1cdbd2cSJim Jagielski         long nOffset1 = aRelWidthCB.GetPosPixel().Y() - aAutoWidthCB.GetPosPixel().Y();
799*b1cdbd2cSJim Jagielski         long nOffset2 = nOffset1 + aRelHeightCB.GetPosPixel().Y() - aAutoHeightCB.GetPosPixel().Y();
800*b1cdbd2cSJim Jagielski 
801*b1cdbd2cSJim Jagielski         MoveControl( aHeightFT, nOffset1 );
802*b1cdbd2cSJim Jagielski         MoveControl( aHeightED, nOffset1 );
803*b1cdbd2cSJim Jagielski         MoveControl( aRelHeightCB, nOffset1 );
804*b1cdbd2cSJim Jagielski         MoveControl( aFixedRatioCB, nOffset2 );
805*b1cdbd2cSJim Jagielski 
806*b1cdbd2cSJim Jagielski         aWidthFT.Show();
807*b1cdbd2cSJim Jagielski         aWidthAutoFT.Hide();
808*b1cdbd2cSJim Jagielski         aAutoHeightCB.Hide();
809*b1cdbd2cSJim Jagielski 
810*b1cdbd2cSJim Jagielski         aHeightFT.Show();
811*b1cdbd2cSJim Jagielski         aHeightAutoFT.Hide();
812*b1cdbd2cSJim Jagielski         aAutoWidthCB.Hide();
813*b1cdbd2cSJim Jagielski 
814*b1cdbd2cSJim Jagielski         aRealSizeBT.Show();
815*b1cdbd2cSJim Jagielski     }
816*b1cdbd2cSJim Jagielski }
817*b1cdbd2cSJim Jagielski 
Reset(const SfxItemSet & rSet)818*b1cdbd2cSJim Jagielski void SwFrmPage::Reset( const SfxItemSet &rSet )
819*b1cdbd2cSJim Jagielski {
820*b1cdbd2cSJim Jagielski 
821*b1cdbd2cSJim Jagielski 	SwWrtShell* pSh = bFormat ? ::GetActiveWrtShell() :
822*b1cdbd2cSJim Jagielski 			((SwFrmDlg*)GetParent()->GetParent())->GetWrtShell();
823*b1cdbd2cSJim Jagielski 
824*b1cdbd2cSJim Jagielski 	nHtmlMode = ::GetHtmlMode(pSh->GetView().GetDocShell());
825*b1cdbd2cSJim Jagielski 	bHtmlMode = nHtmlMode & HTMLMODE_ON ? sal_True : sal_False;
826*b1cdbd2cSJim Jagielski 
827*b1cdbd2cSJim Jagielski 	FieldUnit aMetric = ::GetDfltMetric(bHtmlMode);
828*b1cdbd2cSJim Jagielski 	SetMetric( aWidthED, aMetric );
829*b1cdbd2cSJim Jagielski 	SetMetric( aHeightED, aMetric );
830*b1cdbd2cSJim Jagielski 	SetMetric( aAtHorzPosED, aMetric );
831*b1cdbd2cSJim Jagielski 	SetMetric( aAtVertPosED, aMetric );
832*b1cdbd2cSJim Jagielski 
833*b1cdbd2cSJim Jagielski 	const SfxPoolItem* pItem = NULL;
834*b1cdbd2cSJim Jagielski 
835*b1cdbd2cSJim Jagielski 	const SwFmtAnchor& rAnchor = (const SwFmtAnchor&)rSet.Get(RES_ANCHOR);
836*b1cdbd2cSJim Jagielski 
837*b1cdbd2cSJim Jagielski     if (SFX_ITEM_SET == rSet.GetItemState(FN_OLE_IS_MATH, sal_False, &pItem))
838*b1cdbd2cSJim Jagielski         m_bIsMathOLE = ((const SfxBoolItem*)pItem)->GetValue();
839*b1cdbd2cSJim Jagielski     if (SFX_ITEM_SET == rSet.GetItemState(FN_MATH_BASELINE_ALIGNMENT, sal_False, &pItem))
840*b1cdbd2cSJim Jagielski         m_bIsMathBaselineAlignment = ((const SfxBoolItem*)pItem)->GetValue();
841*b1cdbd2cSJim Jagielski     EnableVerticalPositioning( !(m_bIsMathOLE && m_bIsMathBaselineAlignment
842*b1cdbd2cSJim Jagielski             && FLY_AS_CHAR == rAnchor.GetAnchorId()) );
843*b1cdbd2cSJim Jagielski 
844*b1cdbd2cSJim Jagielski 	if (bFormat)
845*b1cdbd2cSJim Jagielski 	{
846*b1cdbd2cSJim Jagielski 		// Bei Formaten keine Ankerbearbeitung
847*b1cdbd2cSJim Jagielski 		aAnchorAtPageRB.Enable( sal_False );
848*b1cdbd2cSJim Jagielski 		aAnchorAtParaRB.Enable( sal_False );
849*b1cdbd2cSJim Jagielski 		aAnchorAtCharRB.Enable( sal_False );
850*b1cdbd2cSJim Jagielski 		aAnchorAsCharRB.Enable( sal_False );
851*b1cdbd2cSJim Jagielski 		aAnchorAtFrameRB.Enable( sal_False );
852*b1cdbd2cSJim Jagielski         aTypeFL.Enable( sal_False );
853*b1cdbd2cSJim Jagielski 		aFixedRatioCB.Enable(sal_False);
854*b1cdbd2cSJim Jagielski 	}
855*b1cdbd2cSJim Jagielski     else
856*b1cdbd2cSJim Jagielski     {
857*b1cdbd2cSJim Jagielski         if (rAnchor.GetAnchorId() != FLY_AT_FLY && !pSh->IsFlyInFly())
858*b1cdbd2cSJim Jagielski             aAnchorAtFrameRB.Hide();
859*b1cdbd2cSJim Jagielski         // --> OD 2009-08-31 #mongolianlayout#
860*b1cdbd2cSJim Jagielski //        if ( !bVerticalChanged && pSh->IsFrmVertical(sal_True, bIsInRightToLeft) )
861*b1cdbd2cSJim Jagielski         if ( pSh->IsFrmVertical( sal_True, bIsInRightToLeft, bIsVerticalL2R ) )
862*b1cdbd2cSJim Jagielski         // <--
863*b1cdbd2cSJim Jagielski         {
864*b1cdbd2cSJim Jagielski             String sHLabel = aHorizontalFT.GetText();
865*b1cdbd2cSJim Jagielski             aHorizontalFT.SetText(aVerticalFT.GetText());
866*b1cdbd2cSJim Jagielski             aVerticalFT.SetText(sHLabel);
867*b1cdbd2cSJim Jagielski             bIsVerticalFrame = sal_True;
868*b1cdbd2cSJim Jagielski         }
869*b1cdbd2cSJim Jagielski     }
870*b1cdbd2cSJim Jagielski 
871*b1cdbd2cSJim Jagielski     if ( nDlgType == DLG_FRM_GRF || nDlgType == DLG_FRM_OLE )
872*b1cdbd2cSJim Jagielski 	{
873*b1cdbd2cSJim Jagielski 		ASSERT(pSh , "shell not found");
874*b1cdbd2cSJim Jagielski 		//OS: nur fuer die Variante Einfuegen/Grafik/Eigenschaften
875*b1cdbd2cSJim Jagielski 		if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_GRF_REALSIZE, sal_False, &pItem))
876*b1cdbd2cSJim Jagielski 			aGrfSize = ((const SvxSizeItem*)pItem)->GetSize();
877*b1cdbd2cSJim Jagielski 		else
878*b1cdbd2cSJim Jagielski 			pSh->GetGrfSize( aGrfSize );
879*b1cdbd2cSJim Jagielski 
880*b1cdbd2cSJim Jagielski 		if ( !bNew )
881*b1cdbd2cSJim Jagielski 		{
882*b1cdbd2cSJim Jagielski 			aRealSizeBT.SetClickHdl(LINK(this, SwFrmPage, RealSizeHdl));
883*b1cdbd2cSJim Jagielski 			EnableGraficMode();
884*b1cdbd2cSJim Jagielski 		}
885*b1cdbd2cSJim Jagielski //		else
886*b1cdbd2cSJim Jagielski //          aTypeFL.SetSizePixel(Size(aTypeFL.GetSizePixel().Width(), aSizeFL.GetSizePixel().Height()));
887*b1cdbd2cSJim Jagielski 
888*b1cdbd2cSJim Jagielski 		if ( nDlgType == DLG_FRM_GRF )
889*b1cdbd2cSJim Jagielski 			aFixedRatioCB.Check( sal_False );
890*b1cdbd2cSJim Jagielski 		else
891*b1cdbd2cSJim Jagielski 		{
892*b1cdbd2cSJim Jagielski 			if ( bNew )
893*b1cdbd2cSJim Jagielski 				SetText( SW_RESSTR(STR_OLE_INSERT));
894*b1cdbd2cSJim Jagielski 			else
895*b1cdbd2cSJim Jagielski 				SetText( SW_RESSTR(STR_OLE_EDIT));
896*b1cdbd2cSJim Jagielski 		}
897*b1cdbd2cSJim Jagielski 	}
898*b1cdbd2cSJim Jagielski 	else
899*b1cdbd2cSJim Jagielski 	{
900*b1cdbd2cSJim Jagielski //      aTypeFL.SetSizePixel(Size(aTypeFL.GetSizePixel().Width(), aSizeFL.GetSizePixel().Height()));
901*b1cdbd2cSJim Jagielski 		aGrfSize = ((const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE)).GetSize();
902*b1cdbd2cSJim Jagielski 	}
903*b1cdbd2cSJim Jagielski 
904*b1cdbd2cSJim Jagielski 	//Prozenteingabe ermoeglichen.
905*b1cdbd2cSJim Jagielski 	aWidthED. SetBaseValue( aWidthED.Normalize(aGrfSize.Width()), FUNIT_TWIP );
906*b1cdbd2cSJim Jagielski 	aHeightED.SetBaseValue( aHeightED.Normalize(aGrfSize.Height()), FUNIT_TWIP );
907*b1cdbd2cSJim Jagielski 	//the available space is not yet known so the RefValue has to be calculated from size and relative size values
908*b1cdbd2cSJim Jagielski     //this is needed only if relative values are already set
909*b1cdbd2cSJim Jagielski 
910*b1cdbd2cSJim Jagielski     const SwFmtFrmSize& rFrmSize = (const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE);
911*b1cdbd2cSJim Jagielski 
912*b1cdbd2cSJim Jagielski     if (rFrmSize.GetWidthPercent() != 0xff && rFrmSize.GetWidthPercent() != 0)
913*b1cdbd2cSJim Jagielski     {
914*b1cdbd2cSJim Jagielski         //calculate the rerference value from the with and relative width values
915*b1cdbd2cSJim Jagielski         sal_Int32 nSpace = rFrmSize.GetWidth() * 100 / rFrmSize.GetWidthPercent();
916*b1cdbd2cSJim Jagielski         aWidthED. SetRefValue( nSpace );
917*b1cdbd2cSJim Jagielski     }
918*b1cdbd2cSJim Jagielski 
919*b1cdbd2cSJim Jagielski     if (rFrmSize.GetHeightPercent() != 0xff && rFrmSize.GetHeightPercent() != 0)
920*b1cdbd2cSJim Jagielski     {
921*b1cdbd2cSJim Jagielski         //calculate the rerference value from the with and relative width values
922*b1cdbd2cSJim Jagielski         sal_Int32 nSpace = rFrmSize.GetHeight() * 100 / rFrmSize.GetHeightPercent();
923*b1cdbd2cSJim Jagielski         aHeightED.SetRefValue( nSpace );
924*b1cdbd2cSJim Jagielski     }
925*b1cdbd2cSJim Jagielski 
926*b1cdbd2cSJim Jagielski 	// Allgemeiner Initialisierungteil
927*b1cdbd2cSJim Jagielski 	switch(rAnchor.GetAnchorId())
928*b1cdbd2cSJim Jagielski     {
929*b1cdbd2cSJim Jagielski         case FLY_AT_PAGE: aAnchorAtPageRB.Check(); break;
930*b1cdbd2cSJim Jagielski         case FLY_AT_PARA: aAnchorAtParaRB.Check(); break;
931*b1cdbd2cSJim Jagielski         case FLY_AT_CHAR: aAnchorAtCharRB.Check(); break;
932*b1cdbd2cSJim Jagielski         case FLY_AS_CHAR: aAnchorAsCharRB.Check(); break;
933*b1cdbd2cSJim Jagielski 		case FLY_AT_FLY: aAnchorAtFrameRB.Check();break;
934*b1cdbd2cSJim Jagielski         default:; //prevent warning
935*b1cdbd2cSJim Jagielski 	}
936*b1cdbd2cSJim Jagielski 
937*b1cdbd2cSJim Jagielski     // OD 12.11.2003 #i22341# - determine content position of character
938*b1cdbd2cSJim Jagielski     // Note: content position can be NULL
939*b1cdbd2cSJim Jagielski     mpToCharCntntPos = rAnchor.GetCntntAnchor();
940*b1cdbd2cSJim Jagielski 
941*b1cdbd2cSJim Jagielski     // OD 19.09.2003 #i18732# - init checkbox value
942*b1cdbd2cSJim Jagielski     {
943*b1cdbd2cSJim Jagielski         const bool bFollowTextFlow =
944*b1cdbd2cSJim Jagielski             static_cast<const SwFmtFollowTextFlow&>(rSet.Get(RES_FOLLOW_TEXT_FLOW)).GetValue();
945*b1cdbd2cSJim Jagielski         aFollowTextFlowCB.Check( bFollowTextFlow );
946*b1cdbd2cSJim Jagielski     }
947*b1cdbd2cSJim Jagielski 
948*b1cdbd2cSJim Jagielski     if(bHtmlMode)
949*b1cdbd2cSJim Jagielski 	{
950*b1cdbd2cSJim Jagielski 		if(nDlgType == DLG_FRM_STD &&
951*b1cdbd2cSJim Jagielski 				0 == (nHtmlMode & HTMLMODE_FULL_ABS_POS))
952*b1cdbd2cSJim Jagielski 		{
953*b1cdbd2cSJim Jagielski 			aHeightFT	.Enable( sal_False );
954*b1cdbd2cSJim Jagielski 			aHeightED	.Enable( sal_False );
955*b1cdbd2cSJim Jagielski 			aRelHeightCB.Enable( sal_False );
956*b1cdbd2cSJim Jagielski 		}
957*b1cdbd2cSJim Jagielski 		if( 0 == (nHtmlMode & HTMLMODE_SOME_ABS_POS))
958*b1cdbd2cSJim Jagielski         {
959*b1cdbd2cSJim Jagielski             if (GetAnchor() == FLY_AT_PAGE)
960*b1cdbd2cSJim Jagielski             {
961*b1cdbd2cSJim Jagielski 				aAnchorAtParaRB.Check();
962*b1cdbd2cSJim Jagielski 			}
963*b1cdbd2cSJim Jagielski 			aAnchorAtPageRB.Enable(sal_False);
964*b1cdbd2cSJim Jagielski 		}
965*b1cdbd2cSJim Jagielski 		aAutoHeightCB.Enable(sal_False);
966*b1cdbd2cSJim Jagielski 		aAutoWidthCB.Enable(sal_False);
967*b1cdbd2cSJim Jagielski 		aMirrorPagesCB.Show(sal_False);
968*b1cdbd2cSJim Jagielski 		if(nDlgType == DLG_FRM_STD)
969*b1cdbd2cSJim Jagielski 			aFixedRatioCB.Enable(sal_False);
970*b1cdbd2cSJim Jagielski         // OD 19.09.2003 #i18732# - hide checkbox in HTML mode
971*b1cdbd2cSJim Jagielski         aFollowTextFlowCB.Show(sal_False);
972*b1cdbd2cSJim Jagielski 	}
973*b1cdbd2cSJim Jagielski     else
974*b1cdbd2cSJim Jagielski     {
975*b1cdbd2cSJim Jagielski         // OD 06.11.2003 #i18732# correct enable/disable of check box 'Mirror on..'
976*b1cdbd2cSJim Jagielski         aMirrorPagesCB.Enable(!aAnchorAsCharRB.IsChecked());
977*b1cdbd2cSJim Jagielski 
978*b1cdbd2cSJim Jagielski         // OD 06.11.2003 #i18732# - enable/disable check box 'Follow text flow'.
979*b1cdbd2cSJim Jagielski         // OD 10.11.2003 #i22305# - enable check box 'Follow text
980*b1cdbd2cSJim Jagielski         // flow' also for anchor type to-frame.
981*b1cdbd2cSJim Jagielski         aFollowTextFlowCB.Enable( aAnchorAtParaRB.IsChecked() ||
982*b1cdbd2cSJim Jagielski                                   aAnchorAtCharRB.IsChecked() ||
983*b1cdbd2cSJim Jagielski                                   aAnchorAtFrameRB.IsChecked() );
984*b1cdbd2cSJim Jagielski     }
985*b1cdbd2cSJim Jagielski 
986*b1cdbd2cSJim Jagielski 	Init( rSet, sal_True );
987*b1cdbd2cSJim Jagielski     aAtVertPosED.SaveValue();
988*b1cdbd2cSJim Jagielski 	aAtHorzPosED.SaveValue();
989*b1cdbd2cSJim Jagielski     // OD 19.09.2003 #i18732#
990*b1cdbd2cSJim Jagielski     aFollowTextFlowCB.SaveValue();
991*b1cdbd2cSJim Jagielski 
992*b1cdbd2cSJim Jagielski 	bNoModifyHdl = sal_False;
993*b1cdbd2cSJim Jagielski     //lock PercentFields
994*b1cdbd2cSJim Jagielski     aWidthED.LockAutoCalculation(sal_True);
995*b1cdbd2cSJim Jagielski     aHeightED.LockAutoCalculation(sal_True);
996*b1cdbd2cSJim Jagielski     RangeModifyHdl(&aWidthED);  // Alle Maximalwerte initial setzen
997*b1cdbd2cSJim Jagielski     aHeightED.LockAutoCalculation(sal_False);
998*b1cdbd2cSJim Jagielski     aWidthED.LockAutoCalculation(sal_False);
999*b1cdbd2cSJim Jagielski 
1000*b1cdbd2cSJim Jagielski 	aAutoHeightCB.SaveValue();
1001*b1cdbd2cSJim Jagielski 	aAutoWidthCB.SaveValue();
1002*b1cdbd2cSJim Jagielski 
1003*b1cdbd2cSJim Jagielski     SwTwips nWidth  = static_cast< SwTwips >(aWidthED.DenormalizePercent(aWidthED.GetValue(FUNIT_TWIP)));
1004*b1cdbd2cSJim Jagielski     SwTwips nHeight = static_cast< SwTwips >(aHeightED.DenormalizePercent(aHeightED.GetValue(FUNIT_TWIP)));
1005*b1cdbd2cSJim Jagielski     fWidthHeightRatio = nHeight ? double(nWidth) / double(nHeight) : 1.0;
1006*b1cdbd2cSJim Jagielski }
1007*b1cdbd2cSJim Jagielski 
1008*b1cdbd2cSJim Jagielski 
1009*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
1010*b1cdbd2cSJim Jagielski 	Beschreibung:	Attribute in den Set stopfen bei OK
1011*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
1012*b1cdbd2cSJim Jagielski 
FillItemSet(SfxItemSet & rSet)1013*b1cdbd2cSJim Jagielski sal_Bool SwFrmPage::FillItemSet(SfxItemSet &rSet)
1014*b1cdbd2cSJim Jagielski {
1015*b1cdbd2cSJim Jagielski 	sal_Bool bRet = sal_False;
1016*b1cdbd2cSJim Jagielski 	SwWrtShell* pSh = bFormat ? ::GetActiveWrtShell()
1017*b1cdbd2cSJim Jagielski 						: ((SwFrmDlg*)GetParent()->GetParent())->GetWrtShell();
1018*b1cdbd2cSJim Jagielski 	ASSERT( pSh , "shell not found");
1019*b1cdbd2cSJim Jagielski 	const SfxItemSet& rOldSet = GetItemSet();
1020*b1cdbd2cSJim Jagielski 	const SfxPoolItem* pOldItem = 0;
1021*b1cdbd2cSJim Jagielski 
1022*b1cdbd2cSJim Jagielski 	RndStdIds eAnchorId = (RndStdIds)GetAnchor();
1023*b1cdbd2cSJim Jagielski 
1024*b1cdbd2cSJim Jagielski 	if ( !bFormat )
1025*b1cdbd2cSJim Jagielski 	{
1026*b1cdbd2cSJim Jagielski 		pOldItem = GetOldItem(rSet, RES_ANCHOR);
1027*b1cdbd2cSJim Jagielski 		if (bNew || !pOldItem || eAnchorId != ((const SwFmtAnchor*)pOldItem)->GetAnchorId())
1028*b1cdbd2cSJim Jagielski 		{
1029*b1cdbd2cSJim Jagielski 			SwFmtAnchor aAnc( eAnchorId, pSh->GetPhyPageNum() );
1030*b1cdbd2cSJim Jagielski 			bRet = 0 != rSet.Put( aAnc );
1031*b1cdbd2cSJim Jagielski 		}
1032*b1cdbd2cSJim Jagielski 	}
1033*b1cdbd2cSJim Jagielski 
1034*b1cdbd2cSJim Jagielski 	if ( pHMap )
1035*b1cdbd2cSJim Jagielski 	{
1036*b1cdbd2cSJim Jagielski 		SwFmtHoriOrient aHoriOrient( (const SwFmtHoriOrient&)
1037*b1cdbd2cSJim Jagielski 												rOldSet.Get(RES_HORI_ORIENT) );
1038*b1cdbd2cSJim Jagielski 
1039*b1cdbd2cSJim Jagielski 		sal_uInt16 nMapPos = GetMapPos(pHMap, aHorizontalDLB);
1040*b1cdbd2cSJim Jagielski         short nAlign = GetAlignment(pHMap, nMapPos, aHorizontalDLB, aHoriRelationLB);
1041*b1cdbd2cSJim Jagielski         short nRel = GetRelation(pHMap, aHoriRelationLB);
1042*b1cdbd2cSJim Jagielski 
1043*b1cdbd2cSJim Jagielski         const sal_Int16 eHOri = nAlign;
1044*b1cdbd2cSJim Jagielski         const sal_Int16 eRel  = nRel;
1045*b1cdbd2cSJim Jagielski 
1046*b1cdbd2cSJim Jagielski 		aHoriOrient.SetHoriOrient( eHOri );
1047*b1cdbd2cSJim Jagielski 		aHoriOrient.SetRelationOrient( eRel );
1048*b1cdbd2cSJim Jagielski 		aHoriOrient.SetPosToggle(aMirrorPagesCB.IsChecked());
1049*b1cdbd2cSJim Jagielski 
1050*b1cdbd2cSJim Jagielski 		sal_Bool bMod = aAtHorzPosED.GetText() != aAtHorzPosED.GetSavedValue();
1051*b1cdbd2cSJim Jagielski 		bMod |= aMirrorPagesCB.GetState() != aMirrorPagesCB.GetSavedValue();
1052*b1cdbd2cSJim Jagielski 
1053*b1cdbd2cSJim Jagielski         if ( eHOri == text::HoriOrientation::NONE &&
1054*b1cdbd2cSJim Jagielski 			 (bNew || (bAtHorzPosModified || bMod) || nOldH != eHOri ) )
1055*b1cdbd2cSJim Jagielski 		{
1056*b1cdbd2cSJim Jagielski             SwTwips nX = static_cast< SwTwips >(aAtHorzPosED.Denormalize(aAtHorzPosED.GetValue(FUNIT_TWIP)));
1057*b1cdbd2cSJim Jagielski 			aHoriOrient.SetPos( nX );
1058*b1cdbd2cSJim Jagielski 		}
1059*b1cdbd2cSJim Jagielski 
1060*b1cdbd2cSJim Jagielski 		pOldItem = GetOldItem(rSet, FN_HORI_ORIENT);
1061*b1cdbd2cSJim Jagielski 		sal_Bool bSame = sal_False;
1062*b1cdbd2cSJim Jagielski 		if ((bNew == bFormat) && pOldItem)
1063*b1cdbd2cSJim Jagielski 		{
1064*b1cdbd2cSJim Jagielski              bSame = static_cast< sal_Bool >(aHoriOrient == (SwFmtHoriOrient&)*pOldItem);
1065*b1cdbd2cSJim Jagielski 		}
1066*b1cdbd2cSJim Jagielski 		if ((bNew && !bFormat) || ((bAtHorzPosModified || bMod) && !bSame))
1067*b1cdbd2cSJim Jagielski 		{
1068*b1cdbd2cSJim Jagielski 			bRet |= 0 != rSet.Put( aHoriOrient );
1069*b1cdbd2cSJim Jagielski 		}
1070*b1cdbd2cSJim Jagielski 	}
1071*b1cdbd2cSJim Jagielski 
1072*b1cdbd2cSJim Jagielski 	if ( pVMap )
1073*b1cdbd2cSJim Jagielski 	{
1074*b1cdbd2cSJim Jagielski 		// Ausrichtung Vertikal
1075*b1cdbd2cSJim Jagielski 		SwFmtVertOrient aVertOrient( (const SwFmtVertOrient&)
1076*b1cdbd2cSJim Jagielski 												rOldSet.Get(RES_VERT_ORIENT) );
1077*b1cdbd2cSJim Jagielski 
1078*b1cdbd2cSJim Jagielski 		sal_uInt16 nMapPos = GetMapPos(pVMap, aVerticalDLB);
1079*b1cdbd2cSJim Jagielski         short nAlign = GetAlignment(pVMap, nMapPos, aVerticalDLB, aVertRelationLB);
1080*b1cdbd2cSJim Jagielski         short nRel = GetRelation(pVMap, aVertRelationLB);
1081*b1cdbd2cSJim Jagielski 
1082*b1cdbd2cSJim Jagielski         const sal_Int16     eVOri = nAlign;
1083*b1cdbd2cSJim Jagielski         const sal_Int16     eRel  = nRel;
1084*b1cdbd2cSJim Jagielski 
1085*b1cdbd2cSJim Jagielski         aVertOrient.SetVertOrient    ( eVOri);
1086*b1cdbd2cSJim Jagielski 		aVertOrient.SetRelationOrient( eRel );
1087*b1cdbd2cSJim Jagielski 
1088*b1cdbd2cSJim Jagielski 		sal_Bool bMod = aAtVertPosED.GetText() != aAtVertPosED.GetSavedValue();
1089*b1cdbd2cSJim Jagielski 
1090*b1cdbd2cSJim Jagielski         if ( eVOri == text::VertOrientation::NONE &&
1091*b1cdbd2cSJim Jagielski 			 ( bNew || (bAtVertPosModified || bMod) || nOldV != eVOri) )
1092*b1cdbd2cSJim Jagielski 		{
1093*b1cdbd2cSJim Jagielski 			// Vertikale Position
1094*b1cdbd2cSJim Jagielski 			// fuer zeichengebundene Rahmen Offset umrechenen
1095*b1cdbd2cSJim Jagielski             SwTwips nY = static_cast< SwTwips >(aAtVertPosED.Denormalize(aAtVertPosED.GetValue(FUNIT_TWIP)));
1096*b1cdbd2cSJim Jagielski             if (eAnchorId == FLY_AS_CHAR)
1097*b1cdbd2cSJim Jagielski             {
1098*b1cdbd2cSJim Jagielski 				nY *= -1;
1099*b1cdbd2cSJim Jagielski             }
1100*b1cdbd2cSJim Jagielski 			aVertOrient.SetPos( nY );
1101*b1cdbd2cSJim Jagielski 		}
1102*b1cdbd2cSJim Jagielski 		pOldItem = GetOldItem(rSet, FN_VERT_ORIENT);
1103*b1cdbd2cSJim Jagielski 		sal_Bool bSame = sal_False;
1104*b1cdbd2cSJim Jagielski 		if((bNew == bFormat) && pOldItem)
1105*b1cdbd2cSJim Jagielski 		{
1106*b1cdbd2cSJim Jagielski              bSame = static_cast< sal_Bool >( bFormat ?
1107*b1cdbd2cSJim Jagielski 				aVertOrient.GetVertOrient() == ((SwFmtVertOrient*)pOldItem)->GetVertOrient() &&
1108*b1cdbd2cSJim Jagielski 				aVertOrient.GetRelationOrient() == ((SwFmtVertOrient*)pOldItem)->GetRelationOrient() &&
1109*b1cdbd2cSJim Jagielski 				aVertOrient.GetPos() == ((SwFmtVertOrient*)pOldItem)->GetPos()
1110*b1cdbd2cSJim Jagielski 
1111*b1cdbd2cSJim Jagielski                     : aVertOrient == (SwFmtVertOrient&)*pOldItem );
1112*b1cdbd2cSJim Jagielski 		}
1113*b1cdbd2cSJim Jagielski 		if( ( bNew && !bFormat ) || ((bAtVertPosModified || bMod) && !bSame ))
1114*b1cdbd2cSJim Jagielski 		{
1115*b1cdbd2cSJim Jagielski 			bRet |= 0 != rSet.Put( aVertOrient );
1116*b1cdbd2cSJim Jagielski 		}
1117*b1cdbd2cSJim Jagielski 	}
1118*b1cdbd2cSJim Jagielski 
1119*b1cdbd2cSJim Jagielski 	//Size setzen
1120*b1cdbd2cSJim Jagielski 	//Neuer Sonderfall: Ist die Groesse von pMgr(0, 0), so werden die
1121*b1cdbd2cSJim Jagielski 	//Eigenschaften fuer eine Grafik festgelegt, die noch gar nicht geladen
1122*b1cdbd2cSJim Jagielski 	//ist. Dann wird hier kein SetSize() gemacht, wenn die
1123*b1cdbd2cSJim Jagielski 	//Groesseneinstellungen vom Anwender nicht veraendert wurden.
1124*b1cdbd2cSJim Jagielski 	const SwFmtFrmSize& rOldSize = (const SwFmtFrmSize& )rOldSet.Get(RES_FRM_SIZE);
1125*b1cdbd2cSJim Jagielski 	SwFmtFrmSize aSz( rOldSize );
1126*b1cdbd2cSJim Jagielski 
1127*b1cdbd2cSJim Jagielski /*	// Folgende Zeilen nur zum debuggen:
1128*b1cdbd2cSJim Jagielski 	sal_Bool bModified = aWidthED.IsValueModified();
1129*b1cdbd2cSJim Jagielski 	sal_uInt16 nOldWidth = rOldSize.GetWidth ();
1130*b1cdbd2cSJim Jagielski 	sal_uInt16 nWidth = aWidthED .GetValue();
1131*b1cdbd2cSJim Jagielski 	sal_uInt16 nMinWidth = aWidthED .GetMin();*/
1132*b1cdbd2cSJim Jagielski 
1133*b1cdbd2cSJim Jagielski 	sal_Bool bValueModified = (aWidthED.IsValueModified() || aHeightED.IsValueModified());
1134*b1cdbd2cSJim Jagielski 	sal_Bool bCheckChanged = (aRelWidthCB.GetSavedValue() != aRelWidthCB.IsChecked()
1135*b1cdbd2cSJim Jagielski 						|| aRelHeightCB.GetSavedValue() != aRelHeightCB.IsChecked());
1136*b1cdbd2cSJim Jagielski 
1137*b1cdbd2cSJim Jagielski 	sal_Bool bLegalValue = !(!rOldSize.GetWidth () && !rOldSize.GetHeight() &&
1138*b1cdbd2cSJim Jagielski 							aWidthED .GetValue() == aWidthED .GetMin() &&
1139*b1cdbd2cSJim Jagielski 							aHeightED.GetValue() == aHeightED.GetMin());
1140*b1cdbd2cSJim Jagielski 
1141*b1cdbd2cSJim Jagielski 	if ((bNew && !bFormat) || ((bValueModified || bCheckChanged) && bLegalValue))
1142*b1cdbd2cSJim Jagielski 	{
1143*b1cdbd2cSJim Jagielski         sal_Int64 nNewWidth  = aWidthED.DenormalizePercent(aWidthED.GetRealValue(FUNIT_TWIP));
1144*b1cdbd2cSJim Jagielski         sal_Int64 nNewHeight = aHeightED.DenormalizePercent(aHeightED.GetRealValue(FUNIT_TWIP));
1145*b1cdbd2cSJim Jagielski         aSz.SetWidth (static_cast< SwTwips >(nNewWidth));
1146*b1cdbd2cSJim Jagielski         aSz.SetHeight(static_cast< SwTwips >(nNewHeight));
1147*b1cdbd2cSJim Jagielski 
1148*b1cdbd2cSJim Jagielski 		if (aRelWidthCB.IsChecked())
1149*b1cdbd2cSJim Jagielski 		{
1150*b1cdbd2cSJim Jagielski             aSz.SetWidthPercent((sal_uInt8)Min( static_cast< sal_Int64 >(MAX_PERCENT_WIDTH), aWidthED.Convert(aWidthED.NormalizePercent(nNewWidth), FUNIT_TWIP, FUNIT_CUSTOM)));
1151*b1cdbd2cSJim Jagielski 		}
1152*b1cdbd2cSJim Jagielski 		else
1153*b1cdbd2cSJim Jagielski 			aSz.SetWidthPercent(0);
1154*b1cdbd2cSJim Jagielski 		if (aRelHeightCB.IsChecked())
1155*b1cdbd2cSJim Jagielski             aSz.SetHeightPercent((sal_uInt8)Min(static_cast< sal_Int64 >(MAX_PERCENT_HEIGHT), aHeightED.Convert(aHeightED.NormalizePercent(nNewHeight), FUNIT_TWIP, FUNIT_CUSTOM)));
1156*b1cdbd2cSJim Jagielski 		else
1157*b1cdbd2cSJim Jagielski 			aSz.SetHeightPercent(0);
1158*b1cdbd2cSJim Jagielski 
1159*b1cdbd2cSJim Jagielski 		if (aFixedRatioCB.IsChecked() && (aRelWidthCB.IsChecked() ^ aRelHeightCB.IsChecked()))
1160*b1cdbd2cSJim Jagielski 		{
1161*b1cdbd2cSJim Jagielski 			if (aRelWidthCB.IsChecked())
1162*b1cdbd2cSJim Jagielski 				aSz.SetHeightPercent(0xff);
1163*b1cdbd2cSJim Jagielski 			else
1164*b1cdbd2cSJim Jagielski 				aSz.SetWidthPercent(0xff);
1165*b1cdbd2cSJim Jagielski 		}
1166*b1cdbd2cSJim Jagielski 	}
1167*b1cdbd2cSJim Jagielski 	if( !IsInGraficMode() )
1168*b1cdbd2cSJim Jagielski 	{
1169*b1cdbd2cSJim Jagielski 		if( aAutoHeightCB.GetState() != aAutoHeightCB.GetSavedValue() )
1170*b1cdbd2cSJim Jagielski 		{
1171*b1cdbd2cSJim Jagielski 			SwFrmSize eFrmSize = (SwFrmSize) aAutoHeightCB.IsChecked()? ATT_MIN_SIZE : ATT_FIX_SIZE;
1172*b1cdbd2cSJim Jagielski 			if( eFrmSize != aSz.GetHeightSizeType() )
1173*b1cdbd2cSJim Jagielski                 aSz.SetHeightSizeType(eFrmSize);
1174*b1cdbd2cSJim Jagielski 		}
1175*b1cdbd2cSJim Jagielski 		if( aAutoWidthCB.GetState() != aAutoWidthCB.GetSavedValue() )
1176*b1cdbd2cSJim Jagielski 		{
1177*b1cdbd2cSJim Jagielski 			SwFrmSize eFrmSize = (SwFrmSize) aAutoWidthCB.IsChecked()? ATT_MIN_SIZE : ATT_FIX_SIZE;
1178*b1cdbd2cSJim Jagielski             if( eFrmSize != aSz.GetWidthSizeType() )
1179*b1cdbd2cSJim Jagielski                 aSz.SetWidthSizeType( eFrmSize );
1180*b1cdbd2cSJim Jagielski 		}
1181*b1cdbd2cSJim Jagielski 	}
1182*b1cdbd2cSJim Jagielski 	if( !bFormat && aFixedRatioCB.GetSavedValue() != aFixedRatioCB.IsChecked())
1183*b1cdbd2cSJim Jagielski 		bRet |= 0 != rSet.Put(SfxBoolItem(FN_KEEP_ASPECT_RATIO, aFixedRatioCB.IsChecked()));
1184*b1cdbd2cSJim Jagielski 
1185*b1cdbd2cSJim Jagielski 	pOldItem = GetOldItem(rSet, RES_FRM_SIZE);
1186*b1cdbd2cSJim Jagielski 
1187*b1cdbd2cSJim Jagielski 	if ((pOldItem && aSz != *pOldItem) || (!pOldItem && !bFormat) ||
1188*b1cdbd2cSJim Jagielski 			(bFormat &&
1189*b1cdbd2cSJim Jagielski 				(aSz.GetWidth() > 0 || aSz.GetWidthPercent() > 0) &&
1190*b1cdbd2cSJim Jagielski 					(aSz.GetHeight() > 0 || aSz.GetHeightPercent() > 0)))
1191*b1cdbd2cSJim Jagielski 	{
1192*b1cdbd2cSJim Jagielski         if (aSz.GetHeightSizeType() == ATT_VAR_SIZE)    // VAR_SIZE gibts nicht bei Rahmen
1193*b1cdbd2cSJim Jagielski             aSz.SetHeightSizeType(ATT_MIN_SIZE);        // Bug #45776 (Vorlagen ohne Breite/Hoehe)
1194*b1cdbd2cSJim Jagielski 
1195*b1cdbd2cSJim Jagielski 		bRet |= 0 != rSet.Put( aSz );
1196*b1cdbd2cSJim Jagielski 	}
1197*b1cdbd2cSJim Jagielski     // OD 19.09.2003 #i18732#
1198*b1cdbd2cSJim Jagielski     if(aFollowTextFlowCB.IsChecked() != aFollowTextFlowCB.GetSavedValue())
1199*b1cdbd2cSJim Jagielski     {
1200*b1cdbd2cSJim Jagielski         bRet |= 0 != rSet.Put(SwFmtFollowTextFlow(aFollowTextFlowCB.IsChecked()));
1201*b1cdbd2cSJim Jagielski     }
1202*b1cdbd2cSJim Jagielski 	return bRet;
1203*b1cdbd2cSJim Jagielski }
1204*b1cdbd2cSJim Jagielski 
1205*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
1206*b1cdbd2cSJim Jagielski 	Beschreibung:	Horizontale und vertikale Pos initialisieren
1207*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
1208*b1cdbd2cSJim Jagielski 
InitPos(RndStdIds eId,sal_uInt16 nH,sal_uInt16 nHRel,sal_uInt16 nV,sal_uInt16 nVRel,long nX,long nY)1209*b1cdbd2cSJim Jagielski void SwFrmPage::InitPos(RndStdIds eId,
1210*b1cdbd2cSJim Jagielski 								sal_uInt16 nH,
1211*b1cdbd2cSJim Jagielski 								sal_uInt16 nHRel,
1212*b1cdbd2cSJim Jagielski 								sal_uInt16 nV,
1213*b1cdbd2cSJim Jagielski 								sal_uInt16 nVRel,
1214*b1cdbd2cSJim Jagielski 								long   nX,
1215*b1cdbd2cSJim Jagielski 								long   nY)
1216*b1cdbd2cSJim Jagielski {
1217*b1cdbd2cSJim Jagielski 	sal_uInt16 nPos = aVerticalDLB.GetSelectEntryPos();
1218*b1cdbd2cSJim Jagielski 	if ( nPos != LISTBOX_ENTRY_NOTFOUND && pVMap )
1219*b1cdbd2cSJim Jagielski 	{
1220*b1cdbd2cSJim Jagielski 		nOldV	 = pVMap[nPos].nAlign;
1221*b1cdbd2cSJim Jagielski 
1222*b1cdbd2cSJim Jagielski 		nPos = aVertRelationLB.GetSelectEntryPos();
1223*b1cdbd2cSJim Jagielski 		if (nPos != LISTBOX_ENTRY_NOTFOUND)
1224*b1cdbd2cSJim Jagielski 			nOldVRel = ((RelationMap *)aVertRelationLB.GetEntryData(nPos))->nRelation;
1225*b1cdbd2cSJim Jagielski 	}
1226*b1cdbd2cSJim Jagielski 
1227*b1cdbd2cSJim Jagielski 	nPos = aHorizontalDLB.GetSelectEntryPos();
1228*b1cdbd2cSJim Jagielski 	if ( nPos != LISTBOX_ENTRY_NOTFOUND && pHMap )
1229*b1cdbd2cSJim Jagielski 	{
1230*b1cdbd2cSJim Jagielski 		nOldH	 = pHMap[nPos].nAlign;
1231*b1cdbd2cSJim Jagielski 
1232*b1cdbd2cSJim Jagielski 		nPos = aHoriRelationLB.GetSelectEntryPos();
1233*b1cdbd2cSJim Jagielski 		if (nPos != LISTBOX_ENTRY_NOTFOUND)
1234*b1cdbd2cSJim Jagielski 			nOldHRel = ((RelationMap *)aHoriRelationLB.GetEntryData(nPos))->nRelation;
1235*b1cdbd2cSJim Jagielski 	}
1236*b1cdbd2cSJim Jagielski 
1237*b1cdbd2cSJim Jagielski 	sal_Bool bEnable = sal_True;
1238*b1cdbd2cSJim Jagielski     if ( eId == FLY_AT_PAGE )
1239*b1cdbd2cSJim Jagielski 	{
1240*b1cdbd2cSJim Jagielski 		pVMap = bHtmlMode ? aVPageHtmlMap : aVPageMap;
1241*b1cdbd2cSJim Jagielski 		pHMap = bHtmlMode ? aHPageHtmlMap : aHPageMap;
1242*b1cdbd2cSJim Jagielski 	}
1243*b1cdbd2cSJim Jagielski     else if ( eId == FLY_AT_FLY )
1244*b1cdbd2cSJim Jagielski 	{
1245*b1cdbd2cSJim Jagielski         // OD 19.09.2003 #i18732# - own vertical alignment map for to frame
1246*b1cdbd2cSJim Jagielski         // anchored objects.
1247*b1cdbd2cSJim Jagielski         pVMap = bHtmlMode ? aVFlyHtmlMap : aVFrameMap;
1248*b1cdbd2cSJim Jagielski 		pHMap = bHtmlMode ? aHFlyHtmlMap : aHFrameMap;
1249*b1cdbd2cSJim Jagielski 	}
1250*b1cdbd2cSJim Jagielski     else if ( eId == FLY_AT_PARA )
1251*b1cdbd2cSJim Jagielski 	{
1252*b1cdbd2cSJim Jagielski 		if(bHtmlMode)
1253*b1cdbd2cSJim Jagielski 		{
1254*b1cdbd2cSJim Jagielski 			pVMap = aVParaHtmlMap;
1255*b1cdbd2cSJim Jagielski 			pHMap = nHtmlMode & HTMLMODE_SOME_ABS_POS ? aHParaHtmlAbsMap : aHParaHtmlMap;
1256*b1cdbd2cSJim Jagielski 		}
1257*b1cdbd2cSJim Jagielski 		else
1258*b1cdbd2cSJim Jagielski 		{
1259*b1cdbd2cSJim Jagielski 			pVMap = aVParaMap;
1260*b1cdbd2cSJim Jagielski 			pHMap = aHParaMap;
1261*b1cdbd2cSJim Jagielski 		}
1262*b1cdbd2cSJim Jagielski 	}
1263*b1cdbd2cSJim Jagielski     else if ( eId == FLY_AT_CHAR )
1264*b1cdbd2cSJim Jagielski 	{
1265*b1cdbd2cSJim Jagielski 		if(bHtmlMode)
1266*b1cdbd2cSJim Jagielski 		{
1267*b1cdbd2cSJim Jagielski 			pVMap = nHtmlMode & HTMLMODE_SOME_ABS_POS ? aVCharHtmlAbsMap	: aVCharHtmlMap;
1268*b1cdbd2cSJim Jagielski 			pHMap = nHtmlMode & HTMLMODE_SOME_ABS_POS ? aHCharHtmlAbsMap	: aHCharHtmlMap;
1269*b1cdbd2cSJim Jagielski 		}
1270*b1cdbd2cSJim Jagielski 		else
1271*b1cdbd2cSJim Jagielski 		{
1272*b1cdbd2cSJim Jagielski 			pVMap = aVCharMap;
1273*b1cdbd2cSJim Jagielski 			pHMap = aHCharMap;
1274*b1cdbd2cSJim Jagielski 		}
1275*b1cdbd2cSJim Jagielski 	}
1276*b1cdbd2cSJim Jagielski     else if ( eId == FLY_AS_CHAR )
1277*b1cdbd2cSJim Jagielski 	{
1278*b1cdbd2cSJim Jagielski 		pVMap = bHtmlMode ? aVAsCharHtmlMap 	: aVAsCharMap;
1279*b1cdbd2cSJim Jagielski 		pHMap = 0;
1280*b1cdbd2cSJim Jagielski 		bEnable = sal_False;
1281*b1cdbd2cSJim Jagielski 	}
1282*b1cdbd2cSJim Jagielski 	aHorizontalDLB.Enable( bEnable );
1283*b1cdbd2cSJim Jagielski 	aHorizontalFT.Enable( bEnable );
1284*b1cdbd2cSJim Jagielski 
1285*b1cdbd2cSJim Jagielski 	// aktuelle Pos selektieren
1286*b1cdbd2cSJim Jagielski 	// Horizontal
1287*b1cdbd2cSJim Jagielski 	if ( nH == USHRT_MAX )
1288*b1cdbd2cSJim Jagielski 	{
1289*b1cdbd2cSJim Jagielski 		nH 	  = nOldH;
1290*b1cdbd2cSJim Jagielski 		nHRel = nOldHRel;
1291*b1cdbd2cSJim Jagielski 	}
1292*b1cdbd2cSJim Jagielski     // OD 12.11.2003 #i22341# - pass <nHRel> as 3rd parameter to method <FillPosLB>
1293*b1cdbd2cSJim Jagielski     sal_uInt16 nMapPos = FillPosLB(pHMap, nH, nHRel, aHorizontalDLB);
1294*b1cdbd2cSJim Jagielski     FillRelLB(pHMap, nMapPos, nH, nHRel, aHoriRelationLB, aHoriRelationFT);
1295*b1cdbd2cSJim Jagielski 
1296*b1cdbd2cSJim Jagielski 	// Vertikal
1297*b1cdbd2cSJim Jagielski 	if ( nV == USHRT_MAX )
1298*b1cdbd2cSJim Jagielski 	{
1299*b1cdbd2cSJim Jagielski 		nV	  = nOldV;
1300*b1cdbd2cSJim Jagielski 		nVRel = nOldVRel;
1301*b1cdbd2cSJim Jagielski 	}
1302*b1cdbd2cSJim Jagielski     // OD 12.11.2003 #i22341# - pass <nVRel> as 3rd parameter to method <FillPosLB>
1303*b1cdbd2cSJim Jagielski     nMapPos = FillPosLB(pVMap, nV, nVRel, aVerticalDLB);
1304*b1cdbd2cSJim Jagielski     FillRelLB(pVMap, nMapPos, nV, nVRel, aVertRelationLB, aVertRelationFT);
1305*b1cdbd2cSJim Jagielski 
1306*b1cdbd2cSJim Jagielski 	// Edits init
1307*b1cdbd2cSJim Jagielski     bEnable = nH == text::HoriOrientation::NONE && eId != FLY_AS_CHAR;
1308*b1cdbd2cSJim Jagielski 	if (!bEnable)
1309*b1cdbd2cSJim Jagielski 	{
1310*b1cdbd2cSJim Jagielski 		aAtHorzPosED.SetValue( 0, FUNIT_TWIP );
1311*b1cdbd2cSJim Jagielski 		if (nX != LONG_MAX && bHtmlMode)
1312*b1cdbd2cSJim Jagielski 			aAtHorzPosED.SetModifyFlag();
1313*b1cdbd2cSJim Jagielski 	}
1314*b1cdbd2cSJim Jagielski 	else
1315*b1cdbd2cSJim Jagielski 	{
1316*b1cdbd2cSJim Jagielski 		if (nX != LONG_MAX)
1317*b1cdbd2cSJim Jagielski 			aAtHorzPosED.SetValue( aAtHorzPosED.Normalize(nX), FUNIT_TWIP );
1318*b1cdbd2cSJim Jagielski 	}
1319*b1cdbd2cSJim Jagielski 	aAtHorzPosFT.Enable( bEnable );
1320*b1cdbd2cSJim Jagielski 	aAtHorzPosED.Enable( bEnable );
1321*b1cdbd2cSJim Jagielski 
1322*b1cdbd2cSJim Jagielski     bEnable = nV == text::VertOrientation::NONE;
1323*b1cdbd2cSJim Jagielski 	if ( !bEnable )
1324*b1cdbd2cSJim Jagielski 	{
1325*b1cdbd2cSJim Jagielski 		aAtVertPosED.SetValue( 0, FUNIT_TWIP );
1326*b1cdbd2cSJim Jagielski 		if(nY != LONG_MAX && bHtmlMode)
1327*b1cdbd2cSJim Jagielski 			aAtVertPosED.SetModifyFlag();
1328*b1cdbd2cSJim Jagielski 	}
1329*b1cdbd2cSJim Jagielski 	else
1330*b1cdbd2cSJim Jagielski 	{
1331*b1cdbd2cSJim Jagielski         if ( eId == FLY_AS_CHAR )
1332*b1cdbd2cSJim Jagielski 		{
1333*b1cdbd2cSJim Jagielski 			if ( nY == LONG_MAX )
1334*b1cdbd2cSJim Jagielski 				nY = 0;
1335*b1cdbd2cSJim Jagielski 			else
1336*b1cdbd2cSJim Jagielski 				nY *= -1;
1337*b1cdbd2cSJim Jagielski 		}
1338*b1cdbd2cSJim Jagielski 		if ( nY != LONG_MAX )
1339*b1cdbd2cSJim Jagielski 			aAtVertPosED.SetValue( aAtVertPosED.Normalize(nY), FUNIT_TWIP );
1340*b1cdbd2cSJim Jagielski 	}
1341*b1cdbd2cSJim Jagielski 	aAtVertPosFT.Enable( bEnable && m_bAllowVertPositioning );
1342*b1cdbd2cSJim Jagielski 	aAtVertPosED.Enable( bEnable && m_bAllowVertPositioning );
1343*b1cdbd2cSJim Jagielski 	UpdateExample();
1344*b1cdbd2cSJim Jagielski }
1345*b1cdbd2cSJim Jagielski 
1346*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
1347*b1cdbd2cSJim Jagielski 	Beschreibung:
1348*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
1349*b1cdbd2cSJim Jagielski 
FillPosLB(const FrmMap * _pMap,const sal_uInt16 _nAlign,const sal_uInt16 _nRel,ListBox & _rLB)1350*b1cdbd2cSJim Jagielski sal_uInt16 SwFrmPage::FillPosLB(const FrmMap* _pMap,
1351*b1cdbd2cSJim Jagielski                             const sal_uInt16 _nAlign,
1352*b1cdbd2cSJim Jagielski                             const sal_uInt16 _nRel,
1353*b1cdbd2cSJim Jagielski                             ListBox& _rLB )
1354*b1cdbd2cSJim Jagielski {
1355*b1cdbd2cSJim Jagielski 	String sSelEntry, sOldEntry;
1356*b1cdbd2cSJim Jagielski     sOldEntry = _rLB.GetSelectEntry();
1357*b1cdbd2cSJim Jagielski 
1358*b1cdbd2cSJim Jagielski     _rLB.Clear();
1359*b1cdbd2cSJim Jagielski 
1360*b1cdbd2cSJim Jagielski     // OD 12.11.2003 #i22341# - determine all possible listbox relations for
1361*b1cdbd2cSJim Jagielski     // given relation for map <aVCharMap>
1362*b1cdbd2cSJim Jagielski     const sal_uLong nLBRelations = (_pMap != aVCharMap)
1363*b1cdbd2cSJim Jagielski                                ? 0L
1364*b1cdbd2cSJim Jagielski                                : ::lcl_GetLBRelationsForRelations( _nRel );
1365*b1cdbd2cSJim Jagielski 
1366*b1cdbd2cSJim Jagielski     // Listbox fuellen
1367*b1cdbd2cSJim Jagielski     size_t nCount = ::lcl_GetFrmMapCount(_pMap);
1368*b1cdbd2cSJim Jagielski     for (size_t i = 0; _pMap && i < nCount; ++i)
1369*b1cdbd2cSJim Jagielski 	{
1370*b1cdbd2cSJim Jagielski //		#61359# Warum nicht von links/von innen bzw. von oben?
1371*b1cdbd2cSJim Jagielski //      if (!bFormat || (pMap[i].eStrId != SwFPos::FROMLEFT && pMap[i].eStrId != SwFPos::FROMTOP))
1372*b1cdbd2cSJim Jagielski 		{
1373*b1cdbd2cSJim Jagielski             SvxSwFramePosString::StringId eStrId = aMirrorPagesCB.IsChecked() ? _pMap[i].eMirrorStrId : _pMap[i].eStrId;
1374*b1cdbd2cSJim Jagielski             // --> OD 2009-08-31 #mongolianlayout#
1375*b1cdbd2cSJim Jagielski             eStrId = lcl_ChangeResIdToVerticalOrRTL( eStrId,
1376*b1cdbd2cSJim Jagielski                                                      bIsVerticalFrame,
1377*b1cdbd2cSJim Jagielski                                                      bIsVerticalL2R,
1378*b1cdbd2cSJim Jagielski                                                      bIsInRightToLeft);
1379*b1cdbd2cSJim Jagielski             // <--
1380*b1cdbd2cSJim Jagielski             String sEntry(aFramePosString.GetString(eStrId));
1381*b1cdbd2cSJim Jagielski 			if (_rLB.GetEntryPos(sEntry) == LISTBOX_ENTRY_NOTFOUND)
1382*b1cdbd2cSJim Jagielski             {
1383*b1cdbd2cSJim Jagielski 				// bei zeichengebundenen Rahmen keine doppelten Eintraege einfuegen
1384*b1cdbd2cSJim Jagielski                 _rLB.InsertEntry(sEntry);
1385*b1cdbd2cSJim Jagielski             }
1386*b1cdbd2cSJim Jagielski             // OD 12.11.2003 #i22341# - add condition to handle map <aVCharMap>
1387*b1cdbd2cSJim Jagielski             // that is ambigous in the alignment.
1388*b1cdbd2cSJim Jagielski             if ( _pMap[i].nAlign == _nAlign &&
1389*b1cdbd2cSJim Jagielski                  ( !(_pMap == aVCharMap) || _pMap[i].nLBRelations & nLBRelations ) )
1390*b1cdbd2cSJim Jagielski             {
1391*b1cdbd2cSJim Jagielski 				sSelEntry = sEntry;
1392*b1cdbd2cSJim Jagielski             }
1393*b1cdbd2cSJim Jagielski 		}
1394*b1cdbd2cSJim Jagielski 	}
1395*b1cdbd2cSJim Jagielski 
1396*b1cdbd2cSJim Jagielski     _rLB.SelectEntry(sSelEntry);
1397*b1cdbd2cSJim Jagielski     if (!_rLB.GetSelectEntryCount())
1398*b1cdbd2cSJim Jagielski         _rLB.SelectEntry(sOldEntry);
1399*b1cdbd2cSJim Jagielski 
1400*b1cdbd2cSJim Jagielski     if (!_rLB.GetSelectEntryCount())
1401*b1cdbd2cSJim Jagielski         _rLB.SelectEntryPos(0);
1402*b1cdbd2cSJim Jagielski 
1403*b1cdbd2cSJim Jagielski     PosHdl(&_rLB);
1404*b1cdbd2cSJim Jagielski 
1405*b1cdbd2cSJim Jagielski     return GetMapPos(_pMap, _rLB);
1406*b1cdbd2cSJim Jagielski }
1407*b1cdbd2cSJim Jagielski 
1408*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
1409*b1cdbd2cSJim Jagielski 	Beschreibung:
1410*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
FillRelLB(const FrmMap * _pMap,const sal_uInt16 _nLBSelPos,const sal_uInt16 _nAlign,sal_uInt16 _nRel,ListBox & _rLB,FixedText & _rFT)1411*b1cdbd2cSJim Jagielski sal_uLong SwFrmPage::FillRelLB( const FrmMap* _pMap,
1412*b1cdbd2cSJim Jagielski                             const sal_uInt16 _nLBSelPos,
1413*b1cdbd2cSJim Jagielski                             const sal_uInt16 _nAlign,
1414*b1cdbd2cSJim Jagielski                             sal_uInt16 _nRel,
1415*b1cdbd2cSJim Jagielski                             ListBox& _rLB,
1416*b1cdbd2cSJim Jagielski                             FixedText& _rFT )
1417*b1cdbd2cSJim Jagielski {
1418*b1cdbd2cSJim Jagielski 	String sSelEntry;
1419*b1cdbd2cSJim Jagielski 	sal_uLong  nLBRelations = 0;
1420*b1cdbd2cSJim Jagielski     size_t nMapCount = ::lcl_GetFrmMapCount(_pMap);
1421*b1cdbd2cSJim Jagielski 
1422*b1cdbd2cSJim Jagielski     _rLB.Clear();
1423*b1cdbd2cSJim Jagielski 
1424*b1cdbd2cSJim Jagielski     if (_nLBSelPos < nMapCount)
1425*b1cdbd2cSJim Jagielski 	{
1426*b1cdbd2cSJim Jagielski         if (_pMap == aVAsCharHtmlMap || _pMap == aVAsCharMap)
1427*b1cdbd2cSJim Jagielski 		{
1428*b1cdbd2cSJim Jagielski             String sOldEntry(_rLB.GetSelectEntry());
1429*b1cdbd2cSJim Jagielski 			sal_uInt16 nRelCount = sizeof(aAsCharRelationMap) / sizeof(RelationMap);
1430*b1cdbd2cSJim Jagielski             SvxSwFramePosString::StringId eStrId = _pMap[_nLBSelPos].eStrId;
1431*b1cdbd2cSJim Jagielski 
1432*b1cdbd2cSJim Jagielski             for (size_t nMapPos = 0; nMapPos < nMapCount; nMapPos++)
1433*b1cdbd2cSJim Jagielski 			{
1434*b1cdbd2cSJim Jagielski                 if (_pMap[nMapPos].eStrId == eStrId)
1435*b1cdbd2cSJim Jagielski 				{
1436*b1cdbd2cSJim Jagielski                     nLBRelations = _pMap[nMapPos].nLBRelations;
1437*b1cdbd2cSJim Jagielski 					for (sal_uInt16 nRelPos = 0; nRelPos < nRelCount; nRelPos++)
1438*b1cdbd2cSJim Jagielski 					{
1439*b1cdbd2cSJim Jagielski 						if (nLBRelations & aAsCharRelationMap[nRelPos].nLBRelation)
1440*b1cdbd2cSJim Jagielski 						{
1441*b1cdbd2cSJim Jagielski                             SvxSwFramePosString::StringId sStrId1 = aAsCharRelationMap[nRelPos].eStrId;
1442*b1cdbd2cSJim Jagielski 
1443*b1cdbd2cSJim Jagielski                             // --> OD 2009-08-31 #mongolianlayout#
1444*b1cdbd2cSJim Jagielski                             sStrId1 =
1445*b1cdbd2cSJim Jagielski                                 lcl_ChangeResIdToVerticalOrRTL( sStrId1,
1446*b1cdbd2cSJim Jagielski                                                                 bIsVerticalFrame,
1447*b1cdbd2cSJim Jagielski                                                                 bIsVerticalL2R,
1448*b1cdbd2cSJim Jagielski                                                                 bIsInRightToLeft);
1449*b1cdbd2cSJim Jagielski                             // <--
1450*b1cdbd2cSJim Jagielski                             String sEntry = aFramePosString.GetString(sStrId1);
1451*b1cdbd2cSJim Jagielski                             sal_uInt16 nPos = _rLB.InsertEntry(sEntry);
1452*b1cdbd2cSJim Jagielski                             _rLB.SetEntryData(nPos, &aAsCharRelationMap[nRelPos]);
1453*b1cdbd2cSJim Jagielski                             if (_pMap[nMapPos].nAlign == _nAlign)
1454*b1cdbd2cSJim Jagielski 								sSelEntry = sEntry;
1455*b1cdbd2cSJim Jagielski 							break;
1456*b1cdbd2cSJim Jagielski 						}
1457*b1cdbd2cSJim Jagielski 					}
1458*b1cdbd2cSJim Jagielski 				}
1459*b1cdbd2cSJim Jagielski 			}
1460*b1cdbd2cSJim Jagielski 			if (sSelEntry.Len())
1461*b1cdbd2cSJim Jagielski                 _rLB.SelectEntry(sSelEntry);
1462*b1cdbd2cSJim Jagielski 			else
1463*b1cdbd2cSJim Jagielski 			{
1464*b1cdbd2cSJim Jagielski                 _rLB.SelectEntry(sOldEntry);
1465*b1cdbd2cSJim Jagielski 
1466*b1cdbd2cSJim Jagielski                 if (!_rLB.GetSelectEntryCount())
1467*b1cdbd2cSJim Jagielski 				{
1468*b1cdbd2cSJim Jagielski                     for (sal_uInt16 i = 0; i < _rLB.GetEntryCount(); i++)
1469*b1cdbd2cSJim Jagielski 					{
1470*b1cdbd2cSJim Jagielski                         RelationMap *pEntry = (RelationMap *)_rLB.GetEntryData(i);
1471*b1cdbd2cSJim Jagielski 						if (pEntry->nLBRelation == LB_REL_CHAR)	// Default
1472*b1cdbd2cSJim Jagielski 						{
1473*b1cdbd2cSJim Jagielski                             _rLB.SelectEntryPos(i);
1474*b1cdbd2cSJim Jagielski 							break;
1475*b1cdbd2cSJim Jagielski 						}
1476*b1cdbd2cSJim Jagielski 					}
1477*b1cdbd2cSJim Jagielski 				}
1478*b1cdbd2cSJim Jagielski 			}
1479*b1cdbd2cSJim Jagielski 		}
1480*b1cdbd2cSJim Jagielski 		else
1481*b1cdbd2cSJim Jagielski 		{
1482*b1cdbd2cSJim Jagielski 			sal_uInt16 nRelCount = sizeof(aRelationMap) / sizeof(RelationMap);
1483*b1cdbd2cSJim Jagielski 
1484*b1cdbd2cSJim Jagielski             // OD 14.11.2003 #i22341# - special handling for map <aVCharMap>,
1485*b1cdbd2cSJim Jagielski             // because its ambigous in its <eStrId>/<eMirrorStrId>.
1486*b1cdbd2cSJim Jagielski             if ( _pMap == aVCharMap )
1487*b1cdbd2cSJim Jagielski             {
1488*b1cdbd2cSJim Jagielski                 nLBRelations = ::lcl_GetLBRelationsForStrID( _pMap,
1489*b1cdbd2cSJim Jagielski                                              ( aMirrorPagesCB.IsChecked()
1490*b1cdbd2cSJim Jagielski                                                ? _pMap[_nLBSelPos].eMirrorStrId
1491*b1cdbd2cSJim Jagielski                                                : _pMap[_nLBSelPos].eStrId),
1492*b1cdbd2cSJim Jagielski                                              aMirrorPagesCB.IsChecked() );
1493*b1cdbd2cSJim Jagielski             }
1494*b1cdbd2cSJim Jagielski             else
1495*b1cdbd2cSJim Jagielski             {
1496*b1cdbd2cSJim Jagielski                 nLBRelations = _pMap[_nLBSelPos].nLBRelations;
1497*b1cdbd2cSJim Jagielski             }
1498*b1cdbd2cSJim Jagielski 
1499*b1cdbd2cSJim Jagielski 			for (sal_uLong nBit = 1; nBit < 0x80000000; nBit <<= 1)
1500*b1cdbd2cSJim Jagielski 			{
1501*b1cdbd2cSJim Jagielski 				if (nLBRelations & nBit)
1502*b1cdbd2cSJim Jagielski 				{
1503*b1cdbd2cSJim Jagielski 					for (sal_uInt16 nRelPos = 0; nRelPos < nRelCount; nRelPos++)
1504*b1cdbd2cSJim Jagielski 					{
1505*b1cdbd2cSJim Jagielski 						if (aRelationMap[nRelPos].nLBRelation == nBit)
1506*b1cdbd2cSJim Jagielski 						{
1507*b1cdbd2cSJim Jagielski                             SvxSwFramePosString::StringId eStrId1 = aMirrorPagesCB.IsChecked() ?
1508*b1cdbd2cSJim Jagielski                                             aRelationMap[nRelPos].eMirrorStrId : aRelationMap[nRelPos].eStrId;
1509*b1cdbd2cSJim Jagielski                             // --> OD 2009-08-31 #mongolianlayout#
1510*b1cdbd2cSJim Jagielski                             eStrId1 =
1511*b1cdbd2cSJim Jagielski                                 lcl_ChangeResIdToVerticalOrRTL( eStrId1,
1512*b1cdbd2cSJim Jagielski                                                                 bIsVerticalFrame,
1513*b1cdbd2cSJim Jagielski                                                                 bIsVerticalL2R,
1514*b1cdbd2cSJim Jagielski                                                                 bIsInRightToLeft);
1515*b1cdbd2cSJim Jagielski                             // <--
1516*b1cdbd2cSJim Jagielski                             String sEntry = aFramePosString.GetString(eStrId1);
1517*b1cdbd2cSJim Jagielski                             sal_uInt16 nPos = _rLB.InsertEntry(sEntry);
1518*b1cdbd2cSJim Jagielski                             _rLB.SetEntryData(nPos, &aRelationMap[nRelPos]);
1519*b1cdbd2cSJim Jagielski                             if (!sSelEntry.Len() && aRelationMap[nRelPos].nRelation == _nRel)
1520*b1cdbd2cSJim Jagielski 								sSelEntry = sEntry;
1521*b1cdbd2cSJim Jagielski 						}
1522*b1cdbd2cSJim Jagielski 					}
1523*b1cdbd2cSJim Jagielski 				}
1524*b1cdbd2cSJim Jagielski 			}
1525*b1cdbd2cSJim Jagielski 			if (sSelEntry.Len())
1526*b1cdbd2cSJim Jagielski                 _rLB.SelectEntry(sSelEntry);
1527*b1cdbd2cSJim Jagielski 			else
1528*b1cdbd2cSJim Jagielski 			{
1529*b1cdbd2cSJim Jagielski 				// Warscheinlich Ankerwechsel. Daher aehnliche Relation suchen
1530*b1cdbd2cSJim Jagielski                 switch (_nRel)
1531*b1cdbd2cSJim Jagielski 				{
1532*b1cdbd2cSJim Jagielski                     case text::RelOrientation::FRAME:           _nRel = text::RelOrientation::PAGE_FRAME;   break;
1533*b1cdbd2cSJim Jagielski                     case text::RelOrientation::PRINT_AREA:      _nRel = text::RelOrientation::PAGE_PRINT_AREA; break;
1534*b1cdbd2cSJim Jagielski                     case text::RelOrientation::PAGE_LEFT:       _nRel = text::RelOrientation::FRAME_LEFT;   break;
1535*b1cdbd2cSJim Jagielski                     case text::RelOrientation::PAGE_RIGHT:      _nRel = text::RelOrientation::FRAME_RIGHT;  break;
1536*b1cdbd2cSJim Jagielski                     case text::RelOrientation::FRAME_LEFT:      _nRel = text::RelOrientation::PAGE_LEFT;    break;
1537*b1cdbd2cSJim Jagielski                     case text::RelOrientation::FRAME_RIGHT:     _nRel = text::RelOrientation::PAGE_RIGHT;   break;
1538*b1cdbd2cSJim Jagielski                     case text::RelOrientation::PAGE_FRAME:      _nRel = text::RelOrientation::FRAME;          break;
1539*b1cdbd2cSJim Jagielski                     case text::RelOrientation::PAGE_PRINT_AREA: _nRel = text::RelOrientation::PRINT_AREA;        break;
1540*b1cdbd2cSJim Jagielski 
1541*b1cdbd2cSJim Jagielski 					default:
1542*b1cdbd2cSJim Jagielski                         if (_rLB.GetEntryCount())
1543*b1cdbd2cSJim Jagielski 						{
1544*b1cdbd2cSJim Jagielski                             RelationMap *pEntry = (RelationMap *)_rLB.GetEntryData(_rLB.GetEntryCount() - 1);
1545*b1cdbd2cSJim Jagielski                             _nRel = pEntry->nRelation;
1546*b1cdbd2cSJim Jagielski 						}
1547*b1cdbd2cSJim Jagielski 						break;
1548*b1cdbd2cSJim Jagielski 				}
1549*b1cdbd2cSJim Jagielski 
1550*b1cdbd2cSJim Jagielski                 for (sal_uInt16 i = 0; i < _rLB.GetEntryCount(); i++)
1551*b1cdbd2cSJim Jagielski 				{
1552*b1cdbd2cSJim Jagielski                     RelationMap *pEntry = (RelationMap *)_rLB.GetEntryData(i);
1553*b1cdbd2cSJim Jagielski                     if (pEntry->nRelation == _nRel)
1554*b1cdbd2cSJim Jagielski 					{
1555*b1cdbd2cSJim Jagielski                         _rLB.SelectEntryPos(i);
1556*b1cdbd2cSJim Jagielski 						break;
1557*b1cdbd2cSJim Jagielski 					}
1558*b1cdbd2cSJim Jagielski 				}
1559*b1cdbd2cSJim Jagielski 
1560*b1cdbd2cSJim Jagielski                 if (!_rLB.GetSelectEntryCount())
1561*b1cdbd2cSJim Jagielski                     _rLB.SelectEntryPos(0);
1562*b1cdbd2cSJim Jagielski 			}
1563*b1cdbd2cSJim Jagielski 		}
1564*b1cdbd2cSJim Jagielski 	}
1565*b1cdbd2cSJim Jagielski 
1566*b1cdbd2cSJim Jagielski     const bool bEnable = _rLB.GetEntryCount() != 0
1567*b1cdbd2cSJim Jagielski             && (&_rLB != &aVertRelationLB || m_bAllowVertPositioning);
1568*b1cdbd2cSJim Jagielski     _rLB.Enable( bEnable );
1569*b1cdbd2cSJim Jagielski     _rFT.Enable( bEnable );
1570*b1cdbd2cSJim Jagielski 
1571*b1cdbd2cSJim Jagielski     RelHdl(&_rLB);
1572*b1cdbd2cSJim Jagielski 
1573*b1cdbd2cSJim Jagielski 	return nLBRelations;
1574*b1cdbd2cSJim Jagielski }
1575*b1cdbd2cSJim Jagielski 
1576*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
1577*b1cdbd2cSJim Jagielski 	Beschreibung:
1578*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
1579*b1cdbd2cSJim Jagielski 
GetRelation(FrmMap *,ListBox & rRelationLB)1580*b1cdbd2cSJim Jagielski short SwFrmPage::GetRelation(FrmMap * /*pMap*/, ListBox &rRelationLB)
1581*b1cdbd2cSJim Jagielski {
1582*b1cdbd2cSJim Jagielski     short nRel = 0;
1583*b1cdbd2cSJim Jagielski 	sal_uInt16 nPos = rRelationLB.GetSelectEntryPos();
1584*b1cdbd2cSJim Jagielski 
1585*b1cdbd2cSJim Jagielski 	if (nPos != LISTBOX_ENTRY_NOTFOUND)
1586*b1cdbd2cSJim Jagielski 	{
1587*b1cdbd2cSJim Jagielski 		RelationMap *pEntry = (RelationMap *)rRelationLB.GetEntryData(nPos);
1588*b1cdbd2cSJim Jagielski 		nRel = pEntry->nRelation;
1589*b1cdbd2cSJim Jagielski 	}
1590*b1cdbd2cSJim Jagielski 
1591*b1cdbd2cSJim Jagielski 	return nRel;
1592*b1cdbd2cSJim Jagielski }
1593*b1cdbd2cSJim Jagielski 
1594*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
1595*b1cdbd2cSJim Jagielski 	Beschreibung:
1596*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
1597*b1cdbd2cSJim Jagielski 
GetAlignment(FrmMap * pMap,sal_uInt16 nMapPos,ListBox &,ListBox & rRelationLB)1598*b1cdbd2cSJim Jagielski short SwFrmPage::GetAlignment(FrmMap *pMap, sal_uInt16 nMapPos,
1599*b1cdbd2cSJim Jagielski         ListBox &/*rAlignLB*/, ListBox &rRelationLB)
1600*b1cdbd2cSJim Jagielski {
1601*b1cdbd2cSJim Jagielski     short nAlign = 0;
1602*b1cdbd2cSJim Jagielski 
1603*b1cdbd2cSJim Jagielski     // OD 14.11.2003 #i22341# - special handling also for map <aVCharMap>,
1604*b1cdbd2cSJim Jagielski     // because it contains ambigous items for alignment
1605*b1cdbd2cSJim Jagielski     if ( pMap == aVAsCharHtmlMap || pMap == aVAsCharMap ||
1606*b1cdbd2cSJim Jagielski          pMap == aVCharMap )
1607*b1cdbd2cSJim Jagielski 	{
1608*b1cdbd2cSJim Jagielski 		if (rRelationLB.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND)
1609*b1cdbd2cSJim Jagielski 		{
1610*b1cdbd2cSJim Jagielski 			sal_uLong  nRel = ((RelationMap *)rRelationLB.GetEntryData(rRelationLB.GetSelectEntryPos()))->nLBRelation;
1611*b1cdbd2cSJim Jagielski             size_t nMapCount = ::lcl_GetFrmMapCount(pMap);
1612*b1cdbd2cSJim Jagielski             SvxSwFramePosString::StringId eStrId = pMap[nMapPos].eStrId;
1613*b1cdbd2cSJim Jagielski 
1614*b1cdbd2cSJim Jagielski             for (size_t i = 0; i < nMapCount; i++)
1615*b1cdbd2cSJim Jagielski 			{
1616*b1cdbd2cSJim Jagielski                 if (pMap[i].eStrId == eStrId)
1617*b1cdbd2cSJim Jagielski 				{
1618*b1cdbd2cSJim Jagielski 					sal_uLong nLBRelations = pMap[i].nLBRelations;
1619*b1cdbd2cSJim Jagielski 					if (nLBRelations & nRel)
1620*b1cdbd2cSJim Jagielski 					{
1621*b1cdbd2cSJim Jagielski 						nAlign = pMap[i].nAlign;
1622*b1cdbd2cSJim Jagielski 						break;
1623*b1cdbd2cSJim Jagielski 					}
1624*b1cdbd2cSJim Jagielski 				}
1625*b1cdbd2cSJim Jagielski 			}
1626*b1cdbd2cSJim Jagielski 		}
1627*b1cdbd2cSJim Jagielski 	}
1628*b1cdbd2cSJim Jagielski 	else if (pMap)
1629*b1cdbd2cSJim Jagielski 		nAlign = pMap[nMapPos].nAlign;
1630*b1cdbd2cSJim Jagielski 
1631*b1cdbd2cSJim Jagielski 	return nAlign;
1632*b1cdbd2cSJim Jagielski }
1633*b1cdbd2cSJim Jagielski 
1634*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
1635*b1cdbd2cSJim Jagielski 	Beschreibung:
1636*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
1637*b1cdbd2cSJim Jagielski 
GetMapPos(const FrmMap * pMap,ListBox & rAlignLB)1638*b1cdbd2cSJim Jagielski sal_uInt16 SwFrmPage::GetMapPos( const FrmMap *pMap, ListBox &rAlignLB )
1639*b1cdbd2cSJim Jagielski {
1640*b1cdbd2cSJim Jagielski 	sal_uInt16 nMapPos = 0;
1641*b1cdbd2cSJim Jagielski 	sal_uInt16 nLBSelPos = rAlignLB.GetSelectEntryPos();
1642*b1cdbd2cSJim Jagielski 
1643*b1cdbd2cSJim Jagielski 	if (nLBSelPos != LISTBOX_ENTRY_NOTFOUND)
1644*b1cdbd2cSJim Jagielski 	{
1645*b1cdbd2cSJim Jagielski 		if (pMap == aVAsCharHtmlMap || pMap == aVAsCharMap)
1646*b1cdbd2cSJim Jagielski 		{
1647*b1cdbd2cSJim Jagielski             size_t nMapCount = ::lcl_GetFrmMapCount(pMap);
1648*b1cdbd2cSJim Jagielski 			String sSelEntry(rAlignLB.GetSelectEntry());
1649*b1cdbd2cSJim Jagielski 
1650*b1cdbd2cSJim Jagielski             for (size_t i = 0; i < nMapCount; i++)
1651*b1cdbd2cSJim Jagielski 			{
1652*b1cdbd2cSJim Jagielski                 SvxSwFramePosString::StringId eResId = pMap[i].eStrId;
1653*b1cdbd2cSJim Jagielski 
1654*b1cdbd2cSJim Jagielski                 String sEntry = aFramePosString.GetString(eResId);
1655*b1cdbd2cSJim Jagielski 				sEntry = MnemonicGenerator::EraseAllMnemonicChars( sEntry );
1656*b1cdbd2cSJim Jagielski 
1657*b1cdbd2cSJim Jagielski 				if (sEntry == sSelEntry)
1658*b1cdbd2cSJim Jagielski 				{
1659*b1cdbd2cSJim Jagielski                     nMapPos = static_cast< sal_uInt16 >(i);
1660*b1cdbd2cSJim Jagielski 					break;
1661*b1cdbd2cSJim Jagielski 				}
1662*b1cdbd2cSJim Jagielski 			}
1663*b1cdbd2cSJim Jagielski 		}
1664*b1cdbd2cSJim Jagielski 		else
1665*b1cdbd2cSJim Jagielski 			nMapPos = nLBSelPos;
1666*b1cdbd2cSJim Jagielski 	}
1667*b1cdbd2cSJim Jagielski 
1668*b1cdbd2cSJim Jagielski 	return nMapPos;
1669*b1cdbd2cSJim Jagielski }
1670*b1cdbd2cSJim Jagielski 
1671*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
1672*b1cdbd2cSJim Jagielski 	Beschreibung:
1673*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
1674*b1cdbd2cSJim Jagielski 
GetAnchor()1675*b1cdbd2cSJim Jagielski RndStdIds SwFrmPage::GetAnchor()
1676*b1cdbd2cSJim Jagielski {
1677*b1cdbd2cSJim Jagielski     RndStdIds nRet = FLY_AT_PAGE;
1678*b1cdbd2cSJim Jagielski 	if(aAnchorAtParaRB.IsChecked())
1679*b1cdbd2cSJim Jagielski     {
1680*b1cdbd2cSJim Jagielski         nRet = FLY_AT_PARA;
1681*b1cdbd2cSJim Jagielski     }
1682*b1cdbd2cSJim Jagielski 	else if(aAnchorAtCharRB.IsChecked())
1683*b1cdbd2cSJim Jagielski     {
1684*b1cdbd2cSJim Jagielski         nRet = FLY_AT_CHAR;
1685*b1cdbd2cSJim Jagielski     }
1686*b1cdbd2cSJim Jagielski 	else if(aAnchorAsCharRB.IsChecked())
1687*b1cdbd2cSJim Jagielski     {
1688*b1cdbd2cSJim Jagielski         nRet = FLY_AS_CHAR;
1689*b1cdbd2cSJim Jagielski     }
1690*b1cdbd2cSJim Jagielski 	else if(aAnchorAtFrameRB.IsChecked())
1691*b1cdbd2cSJim Jagielski     {
1692*b1cdbd2cSJim Jagielski 		nRet = FLY_AT_FLY;
1693*b1cdbd2cSJim Jagielski     }
1694*b1cdbd2cSJim Jagielski 	return nRet;
1695*b1cdbd2cSJim Jagielski }
1696*b1cdbd2cSJim Jagielski 
1697*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
1698*b1cdbd2cSJim Jagielski 	Beschreibung:	Bsp - Update
1699*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
1700*b1cdbd2cSJim Jagielski 
ActivatePage(const SfxItemSet & rSet)1701*b1cdbd2cSJim Jagielski void SwFrmPage::ActivatePage(const SfxItemSet& rSet)
1702*b1cdbd2cSJim Jagielski {
1703*b1cdbd2cSJim Jagielski 	bNoModifyHdl = sal_True;
1704*b1cdbd2cSJim Jagielski 	Init(rSet);
1705*b1cdbd2cSJim Jagielski 	bNoModifyHdl = sal_False;
1706*b1cdbd2cSJim Jagielski     //lock PercentFields
1707*b1cdbd2cSJim Jagielski     aWidthED.LockAutoCalculation(sal_True);
1708*b1cdbd2cSJim Jagielski     aHeightED.LockAutoCalculation(sal_True);
1709*b1cdbd2cSJim Jagielski     RangeModifyHdl(&aWidthED);  // Alle Maximalwerte initial setzen
1710*b1cdbd2cSJim Jagielski     aHeightED.LockAutoCalculation(sal_False);
1711*b1cdbd2cSJim Jagielski     aWidthED.LockAutoCalculation(sal_False);
1712*b1cdbd2cSJim Jagielski     aFollowTextFlowCB.SaveValue();
1713*b1cdbd2cSJim Jagielski }
1714*b1cdbd2cSJim Jagielski 
DeactivatePage(SfxItemSet * _pSet)1715*b1cdbd2cSJim Jagielski int SwFrmPage::DeactivatePage(SfxItemSet * _pSet)
1716*b1cdbd2cSJim Jagielski {
1717*b1cdbd2cSJim Jagielski     if ( _pSet )
1718*b1cdbd2cSJim Jagielski 	{
1719*b1cdbd2cSJim Jagielski         FillItemSet( *_pSet );
1720*b1cdbd2cSJim Jagielski 
1721*b1cdbd2cSJim Jagielski 		//FillItemSet setzt den Anker nicht in den Set, wenn er mit dem
1722*b1cdbd2cSJim Jagielski 		//Original uebereinstimmt. Fuer die anderen Pages brauchen wir aber
1723*b1cdbd2cSJim Jagielski 		//den aktuellen Anker.
1724*b1cdbd2cSJim Jagielski 		SwWrtShell* pSh = bFormat ? ::GetActiveWrtShell()
1725*b1cdbd2cSJim Jagielski 							: ((SwFrmDlg*)GetParent()->GetParent())->GetWrtShell();
1726*b1cdbd2cSJim Jagielski 		RndStdIds eAnchorId = (RndStdIds)GetAnchor();
1727*b1cdbd2cSJim Jagielski 		SwFmtAnchor aAnc( eAnchorId, pSh->GetPhyPageNum() );
1728*b1cdbd2cSJim Jagielski         _pSet->Put( aAnc );
1729*b1cdbd2cSJim Jagielski 	}
1730*b1cdbd2cSJim Jagielski 
1731*b1cdbd2cSJim Jagielski 	return sal_True;
1732*b1cdbd2cSJim Jagielski }
1733*b1cdbd2cSJim Jagielski 
1734*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
1735*b1cdbd2cSJim Jagielski 	Beschreibung: Links/rechts mit Innen/aussen tauschen
1736*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
1737*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwFrmPage,MirrorHdl,CheckBox *,EMPTYARG)1738*b1cdbd2cSJim Jagielski IMPL_LINK( SwFrmPage, MirrorHdl, CheckBox *, EMPTYARG )
1739*b1cdbd2cSJim Jagielski {
1740*b1cdbd2cSJim Jagielski     RndStdIds eId = GetAnchor();
1741*b1cdbd2cSJim Jagielski     InitPos( eId, USHRT_MAX, 0, USHRT_MAX, 0, LONG_MAX, LONG_MAX);
1742*b1cdbd2cSJim Jagielski 
1743*b1cdbd2cSJim Jagielski 	return 0;
1744*b1cdbd2cSJim Jagielski }
1745*b1cdbd2cSJim Jagielski 
1746*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
1747*b1cdbd2cSJim Jagielski 	Beschreibung:
1748*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
1749*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwFrmPage,RelSizeClickHdl,CheckBox *,pBtn)1750*b1cdbd2cSJim Jagielski IMPL_LINK( SwFrmPage, RelSizeClickHdl, CheckBox *, pBtn )
1751*b1cdbd2cSJim Jagielski {
1752*b1cdbd2cSJim Jagielski 	if (pBtn == &aRelWidthCB)
1753*b1cdbd2cSJim Jagielski     {
1754*b1cdbd2cSJim Jagielski 		aWidthED.ShowPercent(pBtn->IsChecked());
1755*b1cdbd2cSJim Jagielski         if(pBtn->IsChecked())
1756*b1cdbd2cSJim Jagielski             aWidthED.MetricField::SetMax(MAX_PERCENT_WIDTH);
1757*b1cdbd2cSJim Jagielski     }
1758*b1cdbd2cSJim Jagielski     else // pBtn == &aRelHeightCB
1759*b1cdbd2cSJim Jagielski     {
1760*b1cdbd2cSJim Jagielski 		aHeightED.ShowPercent(pBtn->IsChecked());
1761*b1cdbd2cSJim Jagielski         if(pBtn->IsChecked())
1762*b1cdbd2cSJim Jagielski             aHeightED.MetricField::SetMax(MAX_PERCENT_HEIGHT);
1763*b1cdbd2cSJim Jagielski     }
1764*b1cdbd2cSJim Jagielski 
1765*b1cdbd2cSJim Jagielski 	if (pBtn)	// Nur wenn Handler durch Aenderung des Controllers gerufen wurde
1766*b1cdbd2cSJim Jagielski 		RangeModifyHdl(&aWidthED);	// Werte wieder korrigieren
1767*b1cdbd2cSJim Jagielski 
1768*b1cdbd2cSJim Jagielski 	if (pBtn == &aRelWidthCB)
1769*b1cdbd2cSJim Jagielski 		ModifyHdl(&aWidthED);
1770*b1cdbd2cSJim Jagielski     else // pBtn == &aRelHeightCB
1771*b1cdbd2cSJim Jagielski 		ModifyHdl(&aHeightED);
1772*b1cdbd2cSJim Jagielski 
1773*b1cdbd2cSJim Jagielski 	return 0;
1774*b1cdbd2cSJim Jagielski }
1775*b1cdbd2cSJim Jagielski 
1776*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
1777*b1cdbd2cSJim Jagielski 	Beschreibung:	Bereichspruefung
1778*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
1779*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwFrmPage,RangeModifyHdl,Edit *,EMPTYARG)1780*b1cdbd2cSJim Jagielski IMPL_LINK( SwFrmPage, RangeModifyHdl, Edit *, EMPTYARG )
1781*b1cdbd2cSJim Jagielski {
1782*b1cdbd2cSJim Jagielski 	if (bNoModifyHdl)
1783*b1cdbd2cSJim Jagielski 		return 0;
1784*b1cdbd2cSJim Jagielski 
1785*b1cdbd2cSJim Jagielski 	SwWrtShell* pSh = bFormat ? ::GetActiveWrtShell()
1786*b1cdbd2cSJim Jagielski 						:((SwFrmDlg*)GetParent()->GetParent())->GetWrtShell();
1787*b1cdbd2cSJim Jagielski 	ASSERT(pSh , "shell not found");
1788*b1cdbd2cSJim Jagielski 	SwFlyFrmAttrMgr aMgr( bNew, pSh, (const SwAttrSet&)GetItemSet() );
1789*b1cdbd2cSJim Jagielski     SvxSwFrameValidation        aVal;
1790*b1cdbd2cSJim Jagielski 
1791*b1cdbd2cSJim Jagielski     aVal.nAnchorType = static_cast< sal_uInt16 >(GetAnchor());
1792*b1cdbd2cSJim Jagielski 	aVal.bAutoHeight = aAutoHeightCB.IsChecked();
1793*b1cdbd2cSJim Jagielski 	aVal.bAutoWidth = aAutoWidthCB.IsChecked();
1794*b1cdbd2cSJim Jagielski 	aVal.bMirror = aMirrorPagesCB.IsChecked();
1795*b1cdbd2cSJim Jagielski     // OD 18.09.2003 #i18732#
1796*b1cdbd2cSJim Jagielski     aVal.bFollowTextFlow = aFollowTextFlowCB.IsChecked();
1797*b1cdbd2cSJim Jagielski 
1798*b1cdbd2cSJim Jagielski 	if ( pHMap )
1799*b1cdbd2cSJim Jagielski 	{
1800*b1cdbd2cSJim Jagielski 		// Ausrichtung Horizontal
1801*b1cdbd2cSJim Jagielski 		sal_uInt16 nMapPos = GetMapPos(pHMap, aHorizontalDLB);
1802*b1cdbd2cSJim Jagielski         short nAlign = GetAlignment(pHMap, nMapPos, aHorizontalDLB, aHoriRelationLB);
1803*b1cdbd2cSJim Jagielski         short nRel = GetRelation(pHMap, aHoriRelationLB);
1804*b1cdbd2cSJim Jagielski 
1805*b1cdbd2cSJim Jagielski         aVal.nHoriOrient = nAlign;
1806*b1cdbd2cSJim Jagielski         aVal.nHRelOrient = nRel;
1807*b1cdbd2cSJim Jagielski 	}
1808*b1cdbd2cSJim Jagielski 	else
1809*b1cdbd2cSJim Jagielski         aVal.nHoriOrient = text::HoriOrientation::NONE;
1810*b1cdbd2cSJim Jagielski 
1811*b1cdbd2cSJim Jagielski 	if ( pVMap )
1812*b1cdbd2cSJim Jagielski 	{
1813*b1cdbd2cSJim Jagielski 		// Ausrichtung Vertikal
1814*b1cdbd2cSJim Jagielski 		sal_uInt16 nMapPos = GetMapPos(pVMap, aVerticalDLB);
1815*b1cdbd2cSJim Jagielski         short nAlign = GetAlignment(pVMap, nMapPos, aVerticalDLB, aVertRelationLB);
1816*b1cdbd2cSJim Jagielski         short nRel = GetRelation(pVMap, aVertRelationLB);
1817*b1cdbd2cSJim Jagielski 
1818*b1cdbd2cSJim Jagielski         aVal.nVertOrient = nAlign;
1819*b1cdbd2cSJim Jagielski         aVal.nVRelOrient = nRel;
1820*b1cdbd2cSJim Jagielski 	}
1821*b1cdbd2cSJim Jagielski 	else
1822*b1cdbd2cSJim Jagielski         aVal.nVertOrient = text::VertOrientation::NONE;
1823*b1cdbd2cSJim Jagielski 
1824*b1cdbd2cSJim Jagielski     const long nAtHorzPosVal = static_cast< long >(
1825*b1cdbd2cSJim Jagielski                     aAtHorzPosED.Denormalize(aAtHorzPosED.GetValue(FUNIT_TWIP)) );
1826*b1cdbd2cSJim Jagielski     const long nAtVertPosVal = static_cast< long >(
1827*b1cdbd2cSJim Jagielski                     aAtVertPosED.Denormalize(aAtVertPosED.GetValue(FUNIT_TWIP)) );
1828*b1cdbd2cSJim Jagielski 
1829*b1cdbd2cSJim Jagielski 	aVal.nHPos = nAtHorzPosVal;
1830*b1cdbd2cSJim Jagielski 	aVal.nVPos = nAtVertPosVal;
1831*b1cdbd2cSJim Jagielski 
1832*b1cdbd2cSJim Jagielski     aMgr.ValidateMetrics(aVal, mpToCharCntntPos, sal_True);   // Einmal, um Referenzwerte fuer prozentuale Werte zu erhalten
1833*b1cdbd2cSJim Jagielski 
1834*b1cdbd2cSJim Jagielski 	// Referenzwerte fuer fuer Prozentwerte setzen (100%) ...
1835*b1cdbd2cSJim Jagielski 	aWidthED.SetRefValue(aVal.aPercentSize.Width());
1836*b1cdbd2cSJim Jagielski 	aHeightED.SetRefValue(aVal.aPercentSize.Height());
1837*b1cdbd2cSJim Jagielski 
1838*b1cdbd2cSJim Jagielski 	// ... und damit Breite und Hoehe korrekt umrechnen
1839*b1cdbd2cSJim Jagielski     SwTwips nWidth  = static_cast< SwTwips >(aWidthED. DenormalizePercent(aWidthED.GetValue(FUNIT_TWIP)));
1840*b1cdbd2cSJim Jagielski     SwTwips nHeight = static_cast< SwTwips >(aHeightED.DenormalizePercent(aHeightED.GetValue(FUNIT_TWIP)));
1841*b1cdbd2cSJim Jagielski 	aVal.nWidth  = nWidth;
1842*b1cdbd2cSJim Jagielski 	aVal.nHeight = nHeight;
1843*b1cdbd2cSJim Jagielski 
1844*b1cdbd2cSJim Jagielski     aMgr.ValidateMetrics(aVal, mpToCharCntntPos);    // Nochmal um mit korrekter Breite und Hoehe alle restlichen Werte zu ermitteln
1845*b1cdbd2cSJim Jagielski 
1846*b1cdbd2cSJim Jagielski 	// alle Spalten muessen passen
1847*b1cdbd2cSJim Jagielski 	if(GetTabDialog()->GetExampleSet() &&
1848*b1cdbd2cSJim Jagielski 			SFX_ITEM_DEFAULT <= GetTabDialog()->GetExampleSet()->GetItemState(RES_COL))
1849*b1cdbd2cSJim Jagielski 	{
1850*b1cdbd2cSJim Jagielski 		const SwFmtCol& rCol = (const SwFmtCol&)GetTabDialog()->GetExampleSet()->Get(RES_COL);
1851*b1cdbd2cSJim Jagielski 		if ( rCol.GetColumns().Count() > 1 )
1852*b1cdbd2cSJim Jagielski 		{
1853*b1cdbd2cSJim Jagielski 			for ( sal_uInt16 i = 0; i < rCol.GetColumns().Count(); ++i )
1854*b1cdbd2cSJim Jagielski 			{
1855*b1cdbd2cSJim Jagielski 				aVal.nMinWidth += rCol.GetColumns()[i]->GetLeft() +
1856*b1cdbd2cSJim Jagielski 								  rCol.GetColumns()[i]->GetRight() +
1857*b1cdbd2cSJim Jagielski 								  MINFLY;
1858*b1cdbd2cSJim Jagielski 			}
1859*b1cdbd2cSJim Jagielski 			aVal.nMinWidth -= MINFLY;//einen hatten wir schon mit drin!
1860*b1cdbd2cSJim Jagielski 		}
1861*b1cdbd2cSJim Jagielski 	}
1862*b1cdbd2cSJim Jagielski 
1863*b1cdbd2cSJim Jagielski 	nWidth = aVal.nWidth;
1864*b1cdbd2cSJim Jagielski 	nHeight = aVal.nHeight;
1865*b1cdbd2cSJim Jagielski 
1866*b1cdbd2cSJim Jagielski 	// Mindestbreite auch fuer Vorlage
1867*b1cdbd2cSJim Jagielski 	aHeightED.SetMin(aHeightED.NormalizePercent(aVal.nMinHeight), FUNIT_TWIP);
1868*b1cdbd2cSJim Jagielski 	aWidthED. SetMin(aWidthED.NormalizePercent(aVal.nMinWidth), FUNIT_TWIP);
1869*b1cdbd2cSJim Jagielski 
1870*b1cdbd2cSJim Jagielski 	SwTwips nMaxWidth(aVal.nMaxWidth);
1871*b1cdbd2cSJim Jagielski 	SwTwips nMaxHeight(aVal.nMaxHeight);
1872*b1cdbd2cSJim Jagielski 
1873*b1cdbd2cSJim Jagielski 	if (aVal.bAutoHeight && (nDlgType == DLG_FRM_GRF || nDlgType == DLG_FRM_OLE))
1874*b1cdbd2cSJim Jagielski 	{
1875*b1cdbd2cSJim Jagielski 		SwTwips nTmp = Min(nWidth * nMaxHeight / Max(nHeight, 1L), nMaxHeight);
1876*b1cdbd2cSJim Jagielski 		aWidthED.SetMax(aWidthED.NormalizePercent(nTmp), FUNIT_TWIP);
1877*b1cdbd2cSJim Jagielski 
1878*b1cdbd2cSJim Jagielski 		nTmp = Min(nHeight * nMaxWidth / Max(nWidth, 1L), nMaxWidth);
1879*b1cdbd2cSJim Jagielski 		aHeightED.SetMax(aWidthED.NormalizePercent(nTmp), FUNIT_TWIP);
1880*b1cdbd2cSJim Jagielski 	}
1881*b1cdbd2cSJim Jagielski 	else
1882*b1cdbd2cSJim Jagielski 	{
1883*b1cdbd2cSJim Jagielski         SwTwips nTmp = static_cast< SwTwips >(aHeightED.NormalizePercent(nMaxHeight));
1884*b1cdbd2cSJim Jagielski 		aHeightED.SetMax(nTmp, FUNIT_TWIP);
1885*b1cdbd2cSJim Jagielski 
1886*b1cdbd2cSJim Jagielski         nTmp = static_cast< SwTwips >(aWidthED.NormalizePercent(nMaxWidth));
1887*b1cdbd2cSJim Jagielski 		aWidthED.SetMax(nTmp, FUNIT_TWIP);
1888*b1cdbd2cSJim Jagielski 	}
1889*b1cdbd2cSJim Jagielski 
1890*b1cdbd2cSJim Jagielski 	aAtHorzPosED.SetMin(aAtHorzPosED.Normalize(aVal.nMinHPos), FUNIT_TWIP);
1891*b1cdbd2cSJim Jagielski 	aAtHorzPosED.SetMax(aAtHorzPosED.Normalize(aVal.nMaxHPos), FUNIT_TWIP);
1892*b1cdbd2cSJim Jagielski 	if ( aVal.nHPos != nAtHorzPosVal )
1893*b1cdbd2cSJim Jagielski 		aAtHorzPosED.SetValue(aAtHorzPosED.Normalize(aVal.nHPos), FUNIT_TWIP);
1894*b1cdbd2cSJim Jagielski 
1895*b1cdbd2cSJim Jagielski     const SwTwips nUpperOffset = (aVal.nAnchorType == FLY_AS_CHAR)
1896*b1cdbd2cSJim Jagielski         ? nUpperBorder : 0;
1897*b1cdbd2cSJim Jagielski     const SwTwips nLowerOffset = (aVal.nAnchorType == FLY_AS_CHAR)
1898*b1cdbd2cSJim Jagielski         ? nLowerBorder : 0;
1899*b1cdbd2cSJim Jagielski 
1900*b1cdbd2cSJim Jagielski 	aAtVertPosED.SetMin(aAtVertPosED.Normalize(aVal.nMinVPos + nLowerOffset + nUpperOffset), FUNIT_TWIP);
1901*b1cdbd2cSJim Jagielski 	aAtVertPosED.SetMax(aAtVertPosED.Normalize(aVal.nMaxVPos), FUNIT_TWIP);
1902*b1cdbd2cSJim Jagielski 	if ( aVal.nVPos != nAtVertPosVal )
1903*b1cdbd2cSJim Jagielski 		aAtVertPosED.SetValue(aAtVertPosED.Normalize(aVal.nVPos), FUNIT_TWIP);
1904*b1cdbd2cSJim Jagielski 
1905*b1cdbd2cSJim Jagielski 	return 0;
1906*b1cdbd2cSJim Jagielski }
1907*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwFrmPage,AnchorTypeHdl,RadioButton *,EMPTYARG)1908*b1cdbd2cSJim Jagielski IMPL_LINK( SwFrmPage, AnchorTypeHdl, RadioButton *, EMPTYARG )
1909*b1cdbd2cSJim Jagielski {
1910*b1cdbd2cSJim Jagielski 	aMirrorPagesCB.Enable(!aAnchorAsCharRB.IsChecked());
1911*b1cdbd2cSJim Jagielski 
1912*b1cdbd2cSJim Jagielski     // OD 06.11.2003 #i18732# - enable check box 'Follow text flow' for anchor
1913*b1cdbd2cSJim Jagielski     // type to-paragraph' and to-character
1914*b1cdbd2cSJim Jagielski     // OD 10.11.2003 #i22305# - enable check box 'Follow text
1915*b1cdbd2cSJim Jagielski     // flow' also for anchor type to-frame.
1916*b1cdbd2cSJim Jagielski     aFollowTextFlowCB.Enable( aAnchorAtParaRB.IsChecked() ||
1917*b1cdbd2cSJim Jagielski                               aAnchorAtCharRB.IsChecked() ||
1918*b1cdbd2cSJim Jagielski                               aAnchorAtFrameRB.IsChecked() );
1919*b1cdbd2cSJim Jagielski 
1920*b1cdbd2cSJim Jagielski     RndStdIds eId = GetAnchor();
1921*b1cdbd2cSJim Jagielski 
1922*b1cdbd2cSJim Jagielski     InitPos( eId, USHRT_MAX, 0, USHRT_MAX, 0, LONG_MAX, LONG_MAX);
1923*b1cdbd2cSJim Jagielski 	RangeModifyHdl(0);
1924*b1cdbd2cSJim Jagielski 
1925*b1cdbd2cSJim Jagielski 	if(bHtmlMode)
1926*b1cdbd2cSJim Jagielski 	{
1927*b1cdbd2cSJim Jagielski 		PosHdl(&aHorizontalDLB);
1928*b1cdbd2cSJim Jagielski 		PosHdl(&aVerticalDLB);
1929*b1cdbd2cSJim Jagielski 	}
1930*b1cdbd2cSJim Jagielski 
1931*b1cdbd2cSJim Jagielski     EnableVerticalPositioning( !(m_bIsMathOLE && m_bIsMathBaselineAlignment
1932*b1cdbd2cSJim Jagielski             && FLY_AS_CHAR == eId) );
1933*b1cdbd2cSJim Jagielski 
1934*b1cdbd2cSJim Jagielski 	return 0;
1935*b1cdbd2cSJim Jagielski }
1936*b1cdbd2cSJim Jagielski 
1937*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
1938*b1cdbd2cSJim Jagielski 	Beschreibung:
1939*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
1940*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwFrmPage,PosHdl,ListBox *,pLB)1941*b1cdbd2cSJim Jagielski IMPL_LINK( SwFrmPage, PosHdl, ListBox *, pLB )
1942*b1cdbd2cSJim Jagielski {
1943*b1cdbd2cSJim Jagielski 	sal_Bool bHori = pLB == &aHorizontalDLB;
1944*b1cdbd2cSJim Jagielski 	ListBox *pRelLB = bHori ? &aHoriRelationLB : &aVertRelationLB;
1945*b1cdbd2cSJim Jagielski     FixedText *pRelFT = bHori ? &aHoriRelationFT : &aVertRelationFT;
1946*b1cdbd2cSJim Jagielski 	FrmMap *pMap = bHori ? pHMap : pVMap;
1947*b1cdbd2cSJim Jagielski 
1948*b1cdbd2cSJim Jagielski 	sal_uInt16 nMapPos = GetMapPos(pMap, *pLB);
1949*b1cdbd2cSJim Jagielski     short nAlign = GetAlignment(pMap, nMapPos, *pLB, *pRelLB);
1950*b1cdbd2cSJim Jagielski 
1951*b1cdbd2cSJim Jagielski 	if (bHori)
1952*b1cdbd2cSJim Jagielski 	{
1953*b1cdbd2cSJim Jagielski         sal_Bool bEnable = text::HoriOrientation::NONE == nAlign;
1954*b1cdbd2cSJim Jagielski 		aAtHorzPosED.Enable( bEnable );
1955*b1cdbd2cSJim Jagielski 		aAtHorzPosFT.Enable( bEnable );
1956*b1cdbd2cSJim Jagielski 	}
1957*b1cdbd2cSJim Jagielski 	else
1958*b1cdbd2cSJim Jagielski 	{
1959*b1cdbd2cSJim Jagielski         sal_Bool bEnable = text::VertOrientation::NONE == nAlign && m_bAllowVertPositioning;
1960*b1cdbd2cSJim Jagielski 		aAtVertPosED.Enable( bEnable );
1961*b1cdbd2cSJim Jagielski 		aAtVertPosFT.Enable( bEnable );
1962*b1cdbd2cSJim Jagielski 	}
1963*b1cdbd2cSJim Jagielski 
1964*b1cdbd2cSJim Jagielski 	if (pLB)	// Nur wenn Handler durch Aenderung des Controllers gerufen wurde
1965*b1cdbd2cSJim Jagielski 		RangeModifyHdl( 0 );
1966*b1cdbd2cSJim Jagielski 
1967*b1cdbd2cSJim Jagielski 	sal_uInt16 nRel = 0;
1968*b1cdbd2cSJim Jagielski 	if (pLB->GetSelectEntryCount())
1969*b1cdbd2cSJim Jagielski 	{
1970*b1cdbd2cSJim Jagielski 
1971*b1cdbd2cSJim Jagielski 		if (pRelLB->GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND)
1972*b1cdbd2cSJim Jagielski 			nRel = ((RelationMap *)pRelLB->GetEntryData(pRelLB->GetSelectEntryPos()))->nRelation;
1973*b1cdbd2cSJim Jagielski 
1974*b1cdbd2cSJim Jagielski         FillRelLB(pMap, nMapPos, nAlign, nRel, *pRelLB, *pRelFT);
1975*b1cdbd2cSJim Jagielski 	}
1976*b1cdbd2cSJim Jagielski 	else
1977*b1cdbd2cSJim Jagielski 		pRelLB->Clear();
1978*b1cdbd2cSJim Jagielski 
1979*b1cdbd2cSJim Jagielski 	UpdateExample();
1980*b1cdbd2cSJim Jagielski 
1981*b1cdbd2cSJim Jagielski 	if (bHori)
1982*b1cdbd2cSJim Jagielski 		bAtHorzPosModified = sal_True;
1983*b1cdbd2cSJim Jagielski 	else
1984*b1cdbd2cSJim Jagielski 		bAtVertPosModified = sal_True;
1985*b1cdbd2cSJim Jagielski 
1986*b1cdbd2cSJim Jagielski 	// Sonderbehandlung fuer HTML-Mode mit horz-vert-Abhaengigkeiten
1987*b1cdbd2cSJim Jagielski 	if(bHtmlMode && nHtmlMode&HTMLMODE_SOME_ABS_POS &&
1988*b1cdbd2cSJim Jagielski             (FLY_AT_CHAR == GetAnchor()))
1989*b1cdbd2cSJim Jagielski 	{
1990*b1cdbd2cSJim Jagielski 		sal_Bool bSet = sal_False;
1991*b1cdbd2cSJim Jagielski 		if(bHori)
1992*b1cdbd2cSJim Jagielski 		{
1993*b1cdbd2cSJim Jagielski 			// rechts ist nur unterhalb erlaubt - von links nur oben
1994*b1cdbd2cSJim Jagielski 			// von links am Zeichen -> unterhalb
1995*b1cdbd2cSJim Jagielski             if((text::HoriOrientation::LEFT == nAlign || text::HoriOrientation::RIGHT == nAlign) &&
1996*b1cdbd2cSJim Jagielski 					0 == aVerticalDLB.GetSelectEntryPos())
1997*b1cdbd2cSJim Jagielski 			{
1998*b1cdbd2cSJim Jagielski                 if(text::RelOrientation::FRAME == nRel)
1999*b1cdbd2cSJim Jagielski 					aVerticalDLB.SelectEntryPos(1);
2000*b1cdbd2cSJim Jagielski 				else
2001*b1cdbd2cSJim Jagielski 					aVerticalDLB.SelectEntryPos(0);
2002*b1cdbd2cSJim Jagielski 				bSet = sal_True;
2003*b1cdbd2cSJim Jagielski 			}
2004*b1cdbd2cSJim Jagielski             else if(text::HoriOrientation::LEFT == nAlign && 1 == aVerticalDLB.GetSelectEntryPos())
2005*b1cdbd2cSJim Jagielski 			{
2006*b1cdbd2cSJim Jagielski 				aVerticalDLB.SelectEntryPos(0);
2007*b1cdbd2cSJim Jagielski 				bSet = sal_True;
2008*b1cdbd2cSJim Jagielski 			}
2009*b1cdbd2cSJim Jagielski             else if(text::HoriOrientation::NONE == nAlign && 1 == aVerticalDLB.GetSelectEntryPos())
2010*b1cdbd2cSJim Jagielski 			{
2011*b1cdbd2cSJim Jagielski 				aVerticalDLB.SelectEntryPos(0);
2012*b1cdbd2cSJim Jagielski 				bSet = sal_True;
2013*b1cdbd2cSJim Jagielski 			}
2014*b1cdbd2cSJim Jagielski 			if(bSet)
2015*b1cdbd2cSJim Jagielski 				PosHdl(&aVerticalDLB);
2016*b1cdbd2cSJim Jagielski 		}
2017*b1cdbd2cSJim Jagielski 		else
2018*b1cdbd2cSJim Jagielski 		{
2019*b1cdbd2cSJim Jagielski             if(text::VertOrientation::TOP == nAlign)
2020*b1cdbd2cSJim Jagielski 			{
2021*b1cdbd2cSJim Jagielski 				if(1 == aHorizontalDLB.GetSelectEntryPos())
2022*b1cdbd2cSJim Jagielski 				{
2023*b1cdbd2cSJim Jagielski 					aHorizontalDLB.SelectEntryPos(0);
2024*b1cdbd2cSJim Jagielski 					bSet = sal_True;
2025*b1cdbd2cSJim Jagielski 				}
2026*b1cdbd2cSJim Jagielski 				aHoriRelationLB.SelectEntryPos(1);
2027*b1cdbd2cSJim Jagielski 			}
2028*b1cdbd2cSJim Jagielski             else if(text::VertOrientation::CHAR_BOTTOM == nAlign)
2029*b1cdbd2cSJim Jagielski 			{
2030*b1cdbd2cSJim Jagielski 				if(2 == aHorizontalDLB.GetSelectEntryPos())
2031*b1cdbd2cSJim Jagielski 				{
2032*b1cdbd2cSJim Jagielski 					aHorizontalDLB.SelectEntryPos(0);
2033*b1cdbd2cSJim Jagielski 					bSet = sal_True;
2034*b1cdbd2cSJim Jagielski 				}
2035*b1cdbd2cSJim Jagielski 				aHoriRelationLB.SelectEntryPos(0) ;
2036*b1cdbd2cSJim Jagielski 			}
2037*b1cdbd2cSJim Jagielski 			if(bSet)
2038*b1cdbd2cSJim Jagielski 				PosHdl(&aHorizontalDLB);
2039*b1cdbd2cSJim Jagielski 		}
2040*b1cdbd2cSJim Jagielski 
2041*b1cdbd2cSJim Jagielski 	}
2042*b1cdbd2cSJim Jagielski 	return 0;
2043*b1cdbd2cSJim Jagielski }
2044*b1cdbd2cSJim Jagielski 
2045*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
2046*b1cdbd2cSJim Jagielski 	Beschreibung:	Horizontale Pos
2047*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
2048*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwFrmPage,RelHdl,ListBox *,pLB)2049*b1cdbd2cSJim Jagielski IMPL_LINK( SwFrmPage, RelHdl, ListBox *, pLB )
2050*b1cdbd2cSJim Jagielski {
2051*b1cdbd2cSJim Jagielski 	sal_Bool bHori = pLB == &aHoriRelationLB;
2052*b1cdbd2cSJim Jagielski 
2053*b1cdbd2cSJim Jagielski 	UpdateExample();
2054*b1cdbd2cSJim Jagielski 
2055*b1cdbd2cSJim Jagielski 	if (bHori)
2056*b1cdbd2cSJim Jagielski 		bAtHorzPosModified = sal_True;
2057*b1cdbd2cSJim Jagielski 	else
2058*b1cdbd2cSJim Jagielski 		bAtVertPosModified = sal_True;
2059*b1cdbd2cSJim Jagielski 
2060*b1cdbd2cSJim Jagielski     if (bHtmlMode && (FLY_AT_CHAR == GetAnchor()))
2061*b1cdbd2cSJim Jagielski 	{
2062*b1cdbd2cSJim Jagielski 		if(bHori)
2063*b1cdbd2cSJim Jagielski 		{
2064*b1cdbd2cSJim Jagielski 			sal_uInt16 nRel = GetRelation(pHMap, aHoriRelationLB);
2065*b1cdbd2cSJim Jagielski             if(text::RelOrientation::PRINT_AREA == nRel && 0 == aVerticalDLB.GetSelectEntryPos())
2066*b1cdbd2cSJim Jagielski 			{
2067*b1cdbd2cSJim Jagielski 				aVerticalDLB.SelectEntryPos(1);
2068*b1cdbd2cSJim Jagielski 			}
2069*b1cdbd2cSJim Jagielski             else if(text::RelOrientation::CHAR == nRel && 1 == aVerticalDLB.GetSelectEntryPos())
2070*b1cdbd2cSJim Jagielski 			{
2071*b1cdbd2cSJim Jagielski 				aVerticalDLB.SelectEntryPos(0);
2072*b1cdbd2cSJim Jagielski 			}
2073*b1cdbd2cSJim Jagielski 		}
2074*b1cdbd2cSJim Jagielski 	}
2075*b1cdbd2cSJim Jagielski 	if (pLB)	// Nur wenn Handler durch Aenderung des Controllers gerufen wurde
2076*b1cdbd2cSJim Jagielski 		RangeModifyHdl(0);
2077*b1cdbd2cSJim Jagielski 
2078*b1cdbd2cSJim Jagielski 	return 0;
2079*b1cdbd2cSJim Jagielski }
2080*b1cdbd2cSJim Jagielski 
2081*b1cdbd2cSJim Jagielski 
IMPL_LINK_INLINE_START(SwFrmPage,RealSizeHdl,Button *,EMPTYARG)2082*b1cdbd2cSJim Jagielski IMPL_LINK_INLINE_START( SwFrmPage, RealSizeHdl, Button *, EMPTYARG )
2083*b1cdbd2cSJim Jagielski {
2084*b1cdbd2cSJim Jagielski 	aWidthED.SetUserValue( aWidthED. NormalizePercent(aGrfSize.Width() ), FUNIT_TWIP);
2085*b1cdbd2cSJim Jagielski 	aHeightED.SetUserValue(aHeightED.NormalizePercent(aGrfSize.Height()), FUNIT_TWIP);
2086*b1cdbd2cSJim Jagielski     fWidthHeightRatio = aGrfSize.Height() ? double(aGrfSize.Width()) / double(aGrfSize.Height()) : 1.0;
2087*b1cdbd2cSJim Jagielski 	UpdateExample();
2088*b1cdbd2cSJim Jagielski 	return 0;
2089*b1cdbd2cSJim Jagielski }
IMPL_LINK_INLINE_END(SwFrmPage,RealSizeHdl,Button *,EMPTYARG)2090*b1cdbd2cSJim Jagielski IMPL_LINK_INLINE_END( SwFrmPage, RealSizeHdl, Button *, EMPTYARG )
2091*b1cdbd2cSJim Jagielski 
2092*b1cdbd2cSJim Jagielski 
2093*b1cdbd2cSJim Jagielski IMPL_LINK( SwFrmPage, AutoWidthClickHdl, void*, EMPTYARG )
2094*b1cdbd2cSJim Jagielski {
2095*b1cdbd2cSJim Jagielski 	if( !IsInGraficMode() )
2096*b1cdbd2cSJim Jagielski 		HandleAutoCB( aAutoWidthCB.IsChecked(), aWidthFT, aWidthAutoFT, aWidthED );
2097*b1cdbd2cSJim Jagielski 	return 0;
2098*b1cdbd2cSJim Jagielski }
2099*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwFrmPage,AutoHeightClickHdl,void *,EMPTYARG)2100*b1cdbd2cSJim Jagielski IMPL_LINK( SwFrmPage, AutoHeightClickHdl, void*, EMPTYARG )
2101*b1cdbd2cSJim Jagielski {
2102*b1cdbd2cSJim Jagielski 	if( !IsInGraficMode() )
2103*b1cdbd2cSJim Jagielski 		HandleAutoCB( aAutoHeightCB.IsChecked(), aHeightFT, aHeightAutoFT, aWidthED );
2104*b1cdbd2cSJim Jagielski 	return 0;
2105*b1cdbd2cSJim Jagielski }
2106*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwFrmPage,ModifyHdl,Edit *,pEdit)2107*b1cdbd2cSJim Jagielski IMPL_LINK( SwFrmPage, ModifyHdl, Edit *, pEdit )
2108*b1cdbd2cSJim Jagielski {
2109*b1cdbd2cSJim Jagielski     SwTwips nWidth  = static_cast< SwTwips >(aWidthED.DenormalizePercent(aWidthED.GetValue(FUNIT_TWIP)));
2110*b1cdbd2cSJim Jagielski     SwTwips nHeight = static_cast< SwTwips >(aHeightED.DenormalizePercent(aHeightED.GetValue(FUNIT_TWIP)));
2111*b1cdbd2cSJim Jagielski     if ( aFixedRatioCB.IsChecked() )
2112*b1cdbd2cSJim Jagielski 	{
2113*b1cdbd2cSJim Jagielski 		if ( pEdit == &aWidthED )
2114*b1cdbd2cSJim Jagielski 		{
2115*b1cdbd2cSJim Jagielski             nHeight = SwTwips((double)nWidth / fWidthHeightRatio);
2116*b1cdbd2cSJim Jagielski             aHeightED.SetPrcntValue(aHeightED.NormalizePercent(nHeight), FUNIT_TWIP);
2117*b1cdbd2cSJim Jagielski 		}
2118*b1cdbd2cSJim Jagielski 		else if(pEdit == &aHeightED)
2119*b1cdbd2cSJim Jagielski 		{
2120*b1cdbd2cSJim Jagielski             nWidth = SwTwips((double)nHeight * fWidthHeightRatio);
2121*b1cdbd2cSJim Jagielski             aWidthED.SetPrcntValue(aWidthED.NormalizePercent(nWidth), FUNIT_TWIP);
2122*b1cdbd2cSJim Jagielski 		}
2123*b1cdbd2cSJim Jagielski 	}
2124*b1cdbd2cSJim Jagielski     fWidthHeightRatio = nHeight ? double(nWidth) / double(nHeight) : 1.0;
2125*b1cdbd2cSJim Jagielski 	UpdateExample();
2126*b1cdbd2cSJim Jagielski 	return 0;
2127*b1cdbd2cSJim Jagielski }
2128*b1cdbd2cSJim Jagielski 
2129*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
2130*b1cdbd2cSJim Jagielski 	Beschreibung:
2131*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
2132*b1cdbd2cSJim Jagielski 
UpdateExample()2133*b1cdbd2cSJim Jagielski void SwFrmPage::UpdateExample()
2134*b1cdbd2cSJim Jagielski {
2135*b1cdbd2cSJim Jagielski 	sal_uInt16 nPos = aHorizontalDLB.GetSelectEntryPos();
2136*b1cdbd2cSJim Jagielski 	if ( pHMap && nPos != LISTBOX_ENTRY_NOTFOUND )
2137*b1cdbd2cSJim Jagielski 	{
2138*b1cdbd2cSJim Jagielski 		sal_uInt16 nMapPos = GetMapPos(pHMap, aHorizontalDLB);
2139*b1cdbd2cSJim Jagielski         short nAlign = GetAlignment(pHMap, nMapPos, aHorizontalDLB, aHoriRelationLB);
2140*b1cdbd2cSJim Jagielski         short nRel = GetRelation(pHMap, aHoriRelationLB);
2141*b1cdbd2cSJim Jagielski 
2142*b1cdbd2cSJim Jagielski 		aExampleWN.SetHAlign(nAlign);
2143*b1cdbd2cSJim Jagielski 		aExampleWN.SetHoriRel(nRel);
2144*b1cdbd2cSJim Jagielski 	}
2145*b1cdbd2cSJim Jagielski 
2146*b1cdbd2cSJim Jagielski 	nPos = aVerticalDLB.GetSelectEntryPos();
2147*b1cdbd2cSJim Jagielski 	if ( pVMap && nPos != LISTBOX_ENTRY_NOTFOUND )
2148*b1cdbd2cSJim Jagielski 	{
2149*b1cdbd2cSJim Jagielski 		sal_uInt16 nMapPos = GetMapPos(pVMap, aVerticalDLB);
2150*b1cdbd2cSJim Jagielski         short nAlign = GetAlignment(pVMap, nMapPos, aVerticalDLB, aVertRelationLB);
2151*b1cdbd2cSJim Jagielski         short nRel = GetRelation(pVMap, aVertRelationLB);
2152*b1cdbd2cSJim Jagielski 
2153*b1cdbd2cSJim Jagielski 		aExampleWN.SetVAlign(nAlign);
2154*b1cdbd2cSJim Jagielski 		aExampleWN.SetVertRel(nRel);
2155*b1cdbd2cSJim Jagielski 	}
2156*b1cdbd2cSJim Jagielski 
2157*b1cdbd2cSJim Jagielski 	// Size
2158*b1cdbd2cSJim Jagielski     long nXPos = static_cast< long >(aAtHorzPosED.Denormalize(aAtHorzPosED.GetValue(FUNIT_TWIP)));
2159*b1cdbd2cSJim Jagielski     long nYPos = static_cast< long >(aAtVertPosED.Denormalize(aAtVertPosED.GetValue(FUNIT_TWIP)));
2160*b1cdbd2cSJim Jagielski 	aExampleWN.SetRelPos(Point(nXPos, nYPos));
2161*b1cdbd2cSJim Jagielski 
2162*b1cdbd2cSJim Jagielski     aExampleWN.SetAnchor( static_cast< sal_uInt16 >(GetAnchor()) );
2163*b1cdbd2cSJim Jagielski 	aExampleWN.Invalidate();
2164*b1cdbd2cSJim Jagielski }
2165*b1cdbd2cSJim Jagielski 
Init(const SfxItemSet & rSet,sal_Bool bReset)2166*b1cdbd2cSJim Jagielski void SwFrmPage::Init(const SfxItemSet& rSet, sal_Bool bReset)
2167*b1cdbd2cSJim Jagielski {
2168*b1cdbd2cSJim Jagielski 	if(!bFormat)
2169*b1cdbd2cSJim Jagielski 	{
2170*b1cdbd2cSJim Jagielski 		SwWrtShell* pSh = ((SwFrmDlg*)GetParent()->GetParent())->GetWrtShell();
2171*b1cdbd2cSJim Jagielski 
2172*b1cdbd2cSJim Jagielski 		// Size
2173*b1cdbd2cSJim Jagielski 		const sal_Bool bSizeFixed = pSh->IsSelObjProtected( FLYPROTECT_FIXED );
2174*b1cdbd2cSJim Jagielski 
2175*b1cdbd2cSJim Jagielski 		aWidthED .Enable( !bSizeFixed );
2176*b1cdbd2cSJim Jagielski 		aHeightED.Enable( !bSizeFixed );
2177*b1cdbd2cSJim Jagielski 
2178*b1cdbd2cSJim Jagielski         // size controls for math OLE objects
2179*b1cdbd2cSJim Jagielski         if ( DLG_FRM_OLE == nDlgType && ! bNew )
2180*b1cdbd2cSJim Jagielski         {
2181*b1cdbd2cSJim Jagielski             // disable width and height for math objects
2182*b1cdbd2cSJim Jagielski             const SvGlobalName& rFactNm( pSh->GetOLEObject()->getClassID() );
2183*b1cdbd2cSJim Jagielski 
2184*b1cdbd2cSJim Jagielski             struct _GlobalNameId {
2185*b1cdbd2cSJim Jagielski                 sal_uInt32 n1;
2186*b1cdbd2cSJim Jagielski                 sal_uInt16 n2, n3;
2187*b1cdbd2cSJim Jagielski                 sal_uInt8 b8, b9, b10, b11, b12, b13, b14, b15;
2188*b1cdbd2cSJim Jagielski             } aGlbNmIds[4] = { { SO3_SM_CLASSID_60 }, { SO3_SM_CLASSID_50 },
2189*b1cdbd2cSJim Jagielski                                { SO3_SM_CLASSID_40 }, { SO3_SM_CLASSID_30 } };
2190*b1cdbd2cSJim Jagielski 
2191*b1cdbd2cSJim Jagielski             for ( int i = 0; i < 4; ++i ) {
2192*b1cdbd2cSJim Jagielski                 const _GlobalNameId& rId = aGlbNmIds[ i ];
2193*b1cdbd2cSJim Jagielski 
2194*b1cdbd2cSJim Jagielski                 SvGlobalName aGlbNm( rId.n1, rId.n2, rId.n3,
2195*b1cdbd2cSJim Jagielski                                      rId.b8, rId.b9, rId.b10, rId.b11,
2196*b1cdbd2cSJim Jagielski                                      rId.b12, rId.b13, rId.b14, rId.b15 );
2197*b1cdbd2cSJim Jagielski 
2198*b1cdbd2cSJim Jagielski                 if( rFactNm == aGlbNm )
2199*b1cdbd2cSJim Jagielski                 {
2200*b1cdbd2cSJim Jagielski                     // disable size controls for math OLE objects
2201*b1cdbd2cSJim Jagielski                     aWidthFT.Disable();
2202*b1cdbd2cSJim Jagielski                     aWidthED.Disable();
2203*b1cdbd2cSJim Jagielski                     aRelWidthCB.Disable();
2204*b1cdbd2cSJim Jagielski                     aHeightFT.Disable();
2205*b1cdbd2cSJim Jagielski                     aHeightED.Disable();
2206*b1cdbd2cSJim Jagielski                     aRelHeightCB.Disable();
2207*b1cdbd2cSJim Jagielski                     aFixedRatioCB.Disable();
2208*b1cdbd2cSJim Jagielski                     aRealSizeBT.Disable();
2209*b1cdbd2cSJim Jagielski                     break;
2210*b1cdbd2cSJim Jagielski                 }
2211*b1cdbd2cSJim Jagielski             }
2212*b1cdbd2cSJim Jagielski 
2213*b1cdbd2cSJim Jagielski             // TODO/LATER: get correct aspect
2214*b1cdbd2cSJim Jagielski             if(0 != (pSh->GetOLEObject()->getStatus( embed::Aspects::MSOLE_CONTENT ) & embed::EmbedMisc::MS_EMBED_RECOMPOSEONRESIZE ) )
2215*b1cdbd2cSJim Jagielski                 aRealSizeBT.Disable();
2216*b1cdbd2cSJim Jagielski         }
2217*b1cdbd2cSJim Jagielski 	}
2218*b1cdbd2cSJim Jagielski 
2219*b1cdbd2cSJim Jagielski 	const SwFmtFrmSize& rSize = (const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE);
2220*b1cdbd2cSJim Jagielski     sal_Int64 nWidth  = aWidthED.NormalizePercent(rSize.GetWidth());
2221*b1cdbd2cSJim Jagielski     sal_Int64 nHeight = aHeightED.NormalizePercent(rSize.GetHeight());
2222*b1cdbd2cSJim Jagielski 
2223*b1cdbd2cSJim Jagielski 	if (nWidth != aWidthED.GetValue(FUNIT_TWIP))
2224*b1cdbd2cSJim Jagielski 	{
2225*b1cdbd2cSJim Jagielski 		if(!bReset)
2226*b1cdbd2cSJim Jagielski 		{
2227*b1cdbd2cSJim Jagielski 			// Wert wurde von Umlauf-Tabpage geaendert und muss
2228*b1cdbd2cSJim Jagielski 			// mit Modify-Flag gesetzt werden
2229*b1cdbd2cSJim Jagielski 			aWidthED.SetUserValue(nWidth, FUNIT_TWIP);
2230*b1cdbd2cSJim Jagielski 		}
2231*b1cdbd2cSJim Jagielski 		else
2232*b1cdbd2cSJim Jagielski             aWidthED.SetPrcntValue(nWidth, FUNIT_TWIP);
2233*b1cdbd2cSJim Jagielski 	}
2234*b1cdbd2cSJim Jagielski 
2235*b1cdbd2cSJim Jagielski 	if (nHeight != aHeightED.GetValue(FUNIT_TWIP))
2236*b1cdbd2cSJim Jagielski 	{
2237*b1cdbd2cSJim Jagielski 		if (!bReset)
2238*b1cdbd2cSJim Jagielski 		{
2239*b1cdbd2cSJim Jagielski 			// Wert wurde von Umlauf-Tabpage geaendert und muss
2240*b1cdbd2cSJim Jagielski 			// mit Modify-Flag gesetzt werden
2241*b1cdbd2cSJim Jagielski 			aHeightED.SetUserValue(nHeight, FUNIT_TWIP);
2242*b1cdbd2cSJim Jagielski 		}
2243*b1cdbd2cSJim Jagielski 		else
2244*b1cdbd2cSJim Jagielski             aHeightED.SetPrcntValue(nHeight, FUNIT_TWIP);
2245*b1cdbd2cSJim Jagielski 	}
2246*b1cdbd2cSJim Jagielski 
2247*b1cdbd2cSJim Jagielski 	if (!IsInGraficMode())
2248*b1cdbd2cSJim Jagielski 	{
2249*b1cdbd2cSJim Jagielski 		SwFrmSize eSize = rSize.GetHeightSizeType();
2250*b1cdbd2cSJim Jagielski 		sal_Bool bCheck = eSize != ATT_FIX_SIZE;
2251*b1cdbd2cSJim Jagielski 		aAutoHeightCB.Check( bCheck );
2252*b1cdbd2cSJim Jagielski 		HandleAutoCB( bCheck, aHeightFT, aHeightAutoFT, aWidthED );
2253*b1cdbd2cSJim Jagielski 		if( eSize == ATT_VAR_SIZE )
2254*b1cdbd2cSJim Jagielski 			aHeightED.SetValue( aHeightED.GetMin(), FUNIT_NONE );
2255*b1cdbd2cSJim Jagielski 
2256*b1cdbd2cSJim Jagielski 		eSize = rSize.GetWidthSizeType();
2257*b1cdbd2cSJim Jagielski 		bCheck = eSize != ATT_FIX_SIZE;
2258*b1cdbd2cSJim Jagielski 		aAutoWidthCB.Check( bCheck );
2259*b1cdbd2cSJim Jagielski 		HandleAutoCB( bCheck, aWidthFT, aWidthAutoFT, aWidthED );
2260*b1cdbd2cSJim Jagielski 		if( eSize == ATT_VAR_SIZE )
2261*b1cdbd2cSJim Jagielski 			aWidthED.SetValue( aWidthED.GetMin(), FUNIT_NONE );
2262*b1cdbd2cSJim Jagielski 
2263*b1cdbd2cSJim Jagielski 		if ( !bFormat )
2264*b1cdbd2cSJim Jagielski 		{
2265*b1cdbd2cSJim Jagielski 			SwWrtShell* pSh = ((SwFrmDlg*)GetParent()->GetParent())->GetWrtShell();
2266*b1cdbd2cSJim Jagielski 			const SwFrmFmt* pFmt = pSh->GetFlyFrmFmt();
2267*b1cdbd2cSJim Jagielski 			if( pFmt && pFmt->GetChain().GetNext() )
2268*b1cdbd2cSJim Jagielski 				aAutoHeightCB.Enable( sal_False );
2269*b1cdbd2cSJim Jagielski 		}
2270*b1cdbd2cSJim Jagielski 	}
2271*b1cdbd2cSJim Jagielski 	else
2272*b1cdbd2cSJim Jagielski 		aAutoHeightCB.Hide();
2273*b1cdbd2cSJim Jagielski 
2274*b1cdbd2cSJim Jagielski 	// Umlauf-Abstand fuer zeichengebundene Rahmen organisieren
2275*b1cdbd2cSJim Jagielski 	const SvxULSpaceItem &rUL = (const SvxULSpaceItem &)rSet.Get(RES_UL_SPACE);
2276*b1cdbd2cSJim Jagielski 	nUpperBorder = rUL.GetUpper();
2277*b1cdbd2cSJim Jagielski 	nLowerBorder = rUL.GetLower();
2278*b1cdbd2cSJim Jagielski 
2279*b1cdbd2cSJim Jagielski 	if(SFX_ITEM_SET == rSet.GetItemState(FN_KEEP_ASPECT_RATIO))
2280*b1cdbd2cSJim Jagielski 	{
2281*b1cdbd2cSJim Jagielski 		aFixedRatioCB.Check(((const SfxBoolItem&)rSet.Get(FN_KEEP_ASPECT_RATIO)).GetValue());
2282*b1cdbd2cSJim Jagielski 		aFixedRatioCB.SaveValue();
2283*b1cdbd2cSJim Jagielski 	}
2284*b1cdbd2cSJim Jagielski 
2285*b1cdbd2cSJim Jagielski 	// Spalten
2286*b1cdbd2cSJim Jagielski 	SwFmtCol aCol( (const SwFmtCol&)rSet.Get(RES_COL) );
2287*b1cdbd2cSJim Jagielski 	::FitToActualSize( aCol, (sal_uInt16)rSize.GetWidth() );
2288*b1cdbd2cSJim Jagielski 
2289*b1cdbd2cSJim Jagielski 	RndStdIds eAnchorId = (RndStdIds)GetAnchor();
2290*b1cdbd2cSJim Jagielski 
2291*b1cdbd2cSJim Jagielski 	if ( bNew && !bFormat )
2292*b1cdbd2cSJim Jagielski         InitPos(eAnchorId, USHRT_MAX, 0, USHRT_MAX, USHRT_MAX, LONG_MAX, LONG_MAX);
2293*b1cdbd2cSJim Jagielski 	else
2294*b1cdbd2cSJim Jagielski 	{
2295*b1cdbd2cSJim Jagielski 		const SwFmtHoriOrient& rHori = (const SwFmtHoriOrient&)rSet.Get(RES_HORI_ORIENT);
2296*b1cdbd2cSJim Jagielski 		const SwFmtVertOrient& rVert = (const SwFmtVertOrient&)rSet.Get(RES_VERT_ORIENT);
2297*b1cdbd2cSJim Jagielski 		nOldH 	 = rHori.GetHoriOrient();
2298*b1cdbd2cSJim Jagielski 		nOldHRel = rHori.GetRelationOrient();
2299*b1cdbd2cSJim Jagielski 		nOldV 	 = rVert.GetVertOrient(),
2300*b1cdbd2cSJim Jagielski 		nOldVRel = rVert.GetRelationOrient();
2301*b1cdbd2cSJim Jagielski 
2302*b1cdbd2cSJim Jagielski         if (eAnchorId == FLY_AT_PAGE)
2303*b1cdbd2cSJim Jagielski         {
2304*b1cdbd2cSJim Jagielski             if (nOldHRel == text::RelOrientation::FRAME)
2305*b1cdbd2cSJim Jagielski                 nOldHRel = text::RelOrientation::PAGE_FRAME;
2306*b1cdbd2cSJim Jagielski             else if (nOldHRel == text::RelOrientation::PRINT_AREA)
2307*b1cdbd2cSJim Jagielski                 nOldHRel = text::RelOrientation::PAGE_PRINT_AREA;
2308*b1cdbd2cSJim Jagielski             if (nOldVRel == text::RelOrientation::FRAME)
2309*b1cdbd2cSJim Jagielski                 nOldVRel = text::RelOrientation::PAGE_FRAME;
2310*b1cdbd2cSJim Jagielski             else if (nOldVRel == text::RelOrientation::PRINT_AREA)
2311*b1cdbd2cSJim Jagielski                 nOldVRel = text::RelOrientation::PAGE_PRINT_AREA;
2312*b1cdbd2cSJim Jagielski 		}
2313*b1cdbd2cSJim Jagielski 
2314*b1cdbd2cSJim Jagielski 		aMirrorPagesCB.Check(rHori.IsPosToggle());
2315*b1cdbd2cSJim Jagielski 		aMirrorPagesCB.SaveValue();
2316*b1cdbd2cSJim Jagielski 
2317*b1cdbd2cSJim Jagielski 		InitPos(eAnchorId,
2318*b1cdbd2cSJim Jagielski 				nOldH,
2319*b1cdbd2cSJim Jagielski 				nOldHRel,
2320*b1cdbd2cSJim Jagielski 				nOldV,
2321*b1cdbd2cSJim Jagielski 				nOldVRel,
2322*b1cdbd2cSJim Jagielski 				rHori.GetPos(),
2323*b1cdbd2cSJim Jagielski 				rVert.GetPos());
2324*b1cdbd2cSJim Jagielski 	}
2325*b1cdbd2cSJim Jagielski 
2326*b1cdbd2cSJim Jagielski 	// Transparent fuers Bsp
2327*b1cdbd2cSJim Jagielski 	// Umlauf fuers Bsp
2328*b1cdbd2cSJim Jagielski 	const SwFmtSurround& rSurround = (const SwFmtSurround&)rSet.Get(RES_SURROUND);
2329*b1cdbd2cSJim Jagielski     aExampleWN.SetWrap ( static_cast< sal_uInt16 >(rSurround.GetSurround()) );
2330*b1cdbd2cSJim Jagielski 
2331*b1cdbd2cSJim Jagielski 	if ( rSurround.GetSurround() == SURROUND_THROUGHT )
2332*b1cdbd2cSJim Jagielski 	{
2333*b1cdbd2cSJim Jagielski 		const SvxOpaqueItem& rOpaque = (const SvxOpaqueItem&)rSet.Get(RES_OPAQUE);
2334*b1cdbd2cSJim Jagielski 		aExampleWN.SetTransparent(!rOpaque.GetValue());
2335*b1cdbd2cSJim Jagielski 	}
2336*b1cdbd2cSJim Jagielski 
2337*b1cdbd2cSJim Jagielski 	// ggf auf Prozent umschalten
2338*b1cdbd2cSJim Jagielski 	RangeModifyHdl(&aWidthED);	// Referenzwerte setzen (fuer 100%)
2339*b1cdbd2cSJim Jagielski 
2340*b1cdbd2cSJim Jagielski 	if (rSize.GetWidthPercent() == 0xff || rSize.GetHeightPercent() == 0xff)
2341*b1cdbd2cSJim Jagielski 		aFixedRatioCB.Check(sal_True);
2342*b1cdbd2cSJim Jagielski 	if (rSize.GetWidthPercent() && rSize.GetWidthPercent() != 0xff &&
2343*b1cdbd2cSJim Jagielski 		!aRelWidthCB.IsChecked())
2344*b1cdbd2cSJim Jagielski 	{
2345*b1cdbd2cSJim Jagielski 		aRelWidthCB.Check(sal_True);
2346*b1cdbd2cSJim Jagielski 		RelSizeClickHdl(&aRelWidthCB);
2347*b1cdbd2cSJim Jagielski         aWidthED.SetPrcntValue(rSize.GetWidthPercent(), FUNIT_CUSTOM);
2348*b1cdbd2cSJim Jagielski 	}
2349*b1cdbd2cSJim Jagielski 	if (rSize.GetHeightPercent() && rSize.GetHeightPercent() != 0xff &&
2350*b1cdbd2cSJim Jagielski 		!aRelHeightCB.IsChecked())
2351*b1cdbd2cSJim Jagielski 	{
2352*b1cdbd2cSJim Jagielski 		aRelHeightCB.Check(sal_True);
2353*b1cdbd2cSJim Jagielski 		RelSizeClickHdl(&aRelHeightCB);
2354*b1cdbd2cSJim Jagielski         aHeightED.SetPrcntValue(rSize.GetHeightPercent(), FUNIT_CUSTOM);
2355*b1cdbd2cSJim Jagielski 	}
2356*b1cdbd2cSJim Jagielski 	aRelWidthCB.SaveValue();
2357*b1cdbd2cSJim Jagielski 	aRelHeightCB.SaveValue();
2358*b1cdbd2cSJim Jagielski }
2359*b1cdbd2cSJim Jagielski 
GetRanges()2360*b1cdbd2cSJim Jagielski sal_uInt16* SwFrmPage::GetRanges()
2361*b1cdbd2cSJim Jagielski {
2362*b1cdbd2cSJim Jagielski 	return aPageRg;
2363*b1cdbd2cSJim Jagielski }
2364*b1cdbd2cSJim Jagielski /* -----------------------------03.11.00 10:52--------------------------------
2365*b1cdbd2cSJim Jagielski 
2366*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
SetFormatUsed(sal_Bool bFmt)2367*b1cdbd2cSJim Jagielski void SwFrmPage::SetFormatUsed(sal_Bool bFmt)
2368*b1cdbd2cSJim Jagielski {
2369*b1cdbd2cSJim Jagielski 	bFormat  	= bFmt;
2370*b1cdbd2cSJim Jagielski 	if(bFormat)
2371*b1cdbd2cSJim Jagielski 	{
2372*b1cdbd2cSJim Jagielski         aAnchorAtPageRB.Hide();
2373*b1cdbd2cSJim Jagielski         aAnchorAtParaRB.Hide();
2374*b1cdbd2cSJim Jagielski         aAnchorAtCharRB.Hide();
2375*b1cdbd2cSJim Jagielski         aAnchorAsCharRB.Hide();
2376*b1cdbd2cSJim Jagielski         aAnchorAtFrameRB.Hide();
2377*b1cdbd2cSJim Jagielski         aTypeFL.Hide();
2378*b1cdbd2cSJim Jagielski         aTypeSepFL.Hide();
2379*b1cdbd2cSJim Jagielski 
2380*b1cdbd2cSJim Jagielski //        Point aSizePos = aSizeFL.GetPosPixel();
2381*b1cdbd2cSJim Jagielski //        Size aSizeSize = aSizeFL.GetSizePixel();
2382*b1cdbd2cSJim Jagielski //        aSizeSize.Width() = aTypeFL.GetPosPixel().X() +
2383*b1cdbd2cSJim Jagielski //                    aTypeFL.GetSizePixel().Width() - aSizePos.X();
2384*b1cdbd2cSJim Jagielski //        aSizeFL.SetSizePixel(aSizeSize);
2385*b1cdbd2cSJim Jagielski 	}
2386*b1cdbd2cSJim Jagielski }
2387*b1cdbd2cSJim Jagielski 
2388*b1cdbd2cSJim Jagielski 
EnableVerticalPositioning(bool bEnable)2389*b1cdbd2cSJim Jagielski void SwFrmPage::EnableVerticalPositioning( bool bEnable )
2390*b1cdbd2cSJim Jagielski {
2391*b1cdbd2cSJim Jagielski     m_bAllowVertPositioning = bEnable;
2392*b1cdbd2cSJim Jagielski     aVerticalFT.Enable( bEnable );
2393*b1cdbd2cSJim Jagielski     aVerticalDLB.Enable( bEnable );
2394*b1cdbd2cSJim Jagielski     aAtVertPosFT.Enable( bEnable );
2395*b1cdbd2cSJim Jagielski     aAtVertPosED.Enable( bEnable );
2396*b1cdbd2cSJim Jagielski     aVertRelationFT.Enable( bEnable );
2397*b1cdbd2cSJim Jagielski     aVertRelationLB.Enable( bEnable );
2398*b1cdbd2cSJim Jagielski }
2399*b1cdbd2cSJim Jagielski 
2400*b1cdbd2cSJim Jagielski 
2401*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
2402*b1cdbd2cSJim Jagielski 	Beschreibung:
2403*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
2404*b1cdbd2cSJim Jagielski 
SwGrfExtPage(Window * pParent,const SfxItemSet & rSet)2405*b1cdbd2cSJim Jagielski SwGrfExtPage::SwGrfExtPage(Window *pParent, const SfxItemSet &rSet) :
2406*b1cdbd2cSJim Jagielski 	SfxTabPage( pParent, SW_RES(TP_GRF_EXT), rSet ),
2407*b1cdbd2cSJim Jagielski     aMirrorFL       (this, SW_RES( FL_MIRROR )),
2408*b1cdbd2cSJim Jagielski     aMirrorVertBox  (this, SW_RES( CB_VERT )),
2409*b1cdbd2cSJim Jagielski     aMirrorHorzBox  (this, SW_RES( CB_HOR )),
2410*b1cdbd2cSJim Jagielski     aAllPagesRB     (this, SW_RES( RB_MIRROR_ALL_PAGES )),
2411*b1cdbd2cSJim Jagielski     aLeftPagesRB    (this, SW_RES( RB_MIRROR_LEFT_PAGES )),
2412*b1cdbd2cSJim Jagielski     aRightPagesRB   (this, SW_RES( RB_MIRROR_RIGHT_PAGES )),
2413*b1cdbd2cSJim Jagielski     aBmpWin         (this, WN_BMP, Graphic(), BitmapEx(SW_RES(BMP_EXAMPLE)), BitmapEx(SW_RES(BMP_EXAMPLE_HC)) ),
2414*b1cdbd2cSJim Jagielski     aConnectFL      (this, SW_RES( FL_CONNECT )),
2415*b1cdbd2cSJim Jagielski     aConnectFT      (this, SW_RES( FT_CONNECT )),
2416*b1cdbd2cSJim Jagielski     aConnectED      (this, SW_RES( ED_CONNECT )),
2417*b1cdbd2cSJim Jagielski     aBrowseBT       (this, SW_RES( PB_BROWSE )),
2418*b1cdbd2cSJim Jagielski     pGrfDlg         ( 0 )
2419*b1cdbd2cSJim Jagielski {
2420*b1cdbd2cSJim Jagielski 	FreeResource();
2421*b1cdbd2cSJim Jagielski 
2422*b1cdbd2cSJim Jagielski 	aBrowseBT.SetAccessibleRelationMemberOf(&aConnectFL);
2423*b1cdbd2cSJim Jagielski 
2424*b1cdbd2cSJim Jagielski     SetExchangeSupport();
2425*b1cdbd2cSJim Jagielski 	aMirrorHorzBox.SetClickHdl( LINK(this, SwGrfExtPage, MirrorHdl));
2426*b1cdbd2cSJim Jagielski 	aMirrorVertBox.SetClickHdl( LINK(this, SwGrfExtPage, MirrorHdl));
2427*b1cdbd2cSJim Jagielski 	aBrowseBT.SetClickHdl	 ( LINK(this, SwGrfExtPage, BrowseHdl));
2428*b1cdbd2cSJim Jagielski }
2429*b1cdbd2cSJim Jagielski 
2430*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
2431*b1cdbd2cSJim Jagielski 	Beschreibung:
2432*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
2433*b1cdbd2cSJim Jagielski 
~SwGrfExtPage()2434*b1cdbd2cSJim Jagielski SwGrfExtPage::~SwGrfExtPage()
2435*b1cdbd2cSJim Jagielski {
2436*b1cdbd2cSJim Jagielski 	delete pGrfDlg;
2437*b1cdbd2cSJim Jagielski }
2438*b1cdbd2cSJim Jagielski 
2439*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
2440*b1cdbd2cSJim Jagielski 	Beschreibung:
2441*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
2442*b1cdbd2cSJim Jagielski 
Create(Window * pParent,const SfxItemSet & rSet)2443*b1cdbd2cSJim Jagielski SfxTabPage* SwGrfExtPage::Create( Window *pParent, const SfxItemSet &rSet )
2444*b1cdbd2cSJim Jagielski {
2445*b1cdbd2cSJim Jagielski 	return new SwGrfExtPage( pParent, rSet );
2446*b1cdbd2cSJim Jagielski }
2447*b1cdbd2cSJim Jagielski 
2448*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
2449*b1cdbd2cSJim Jagielski 	Beschreibung:
2450*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
2451*b1cdbd2cSJim Jagielski 
Reset(const SfxItemSet & rSet)2452*b1cdbd2cSJim Jagielski void SwGrfExtPage::Reset(const SfxItemSet &rSet)
2453*b1cdbd2cSJim Jagielski {
2454*b1cdbd2cSJim Jagielski 	const SfxPoolItem* pItem;
2455*b1cdbd2cSJim Jagielski 	sal_uInt16 nHtmlMode = ::GetHtmlMode((const SwDocShell*)SfxObjectShell::Current());
2456*b1cdbd2cSJim Jagielski 	bHtmlMode = nHtmlMode & HTMLMODE_ON ? sal_True : sal_False;
2457*b1cdbd2cSJim Jagielski 
2458*b1cdbd2cSJim Jagielski 	if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_GRF_CONNECT, sal_True, &pItem)
2459*b1cdbd2cSJim Jagielski 		&& ((const SfxBoolItem *)pItem)->GetValue() )
2460*b1cdbd2cSJim Jagielski 	{
2461*b1cdbd2cSJim Jagielski 		aBrowseBT.Enable();
2462*b1cdbd2cSJim Jagielski 		aConnectED.SetReadOnly(sal_False);
2463*b1cdbd2cSJim Jagielski 	}
2464*b1cdbd2cSJim Jagielski 
2465*b1cdbd2cSJim Jagielski 	ActivatePage(rSet);
2466*b1cdbd2cSJim Jagielski }
2467*b1cdbd2cSJim Jagielski 
2468*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
2469*b1cdbd2cSJim Jagielski 	Beschreibung:
2470*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
2471*b1cdbd2cSJim Jagielski 
ActivatePage(const SfxItemSet & rSet)2472*b1cdbd2cSJim Jagielski void SwGrfExtPage::ActivatePage(const SfxItemSet& rSet)
2473*b1cdbd2cSJim Jagielski {
2474*b1cdbd2cSJim Jagielski 	const SvxProtectItem& rProt = (const SvxProtectItem& )rSet.Get(RES_PROTECT);
2475*b1cdbd2cSJim Jagielski     sal_Bool bProtCntnt = rProt.IsCntntProtected();
2476*b1cdbd2cSJim Jagielski 
2477*b1cdbd2cSJim Jagielski 	const SfxPoolItem* pItem = 0;
2478*b1cdbd2cSJim Jagielski 	sal_Bool bEnable = sal_False;
2479*b1cdbd2cSJim Jagielski 	sal_Bool bEnableMirrorRB = sal_False;
2480*b1cdbd2cSJim Jagielski 
2481*b1cdbd2cSJim Jagielski 	SfxItemState eState = rSet.GetItemState(RES_GRFATR_MIRRORGRF, sal_True, &pItem);
2482*b1cdbd2cSJim Jagielski 	if( SFX_ITEM_UNKNOWN != eState && !bProtCntnt && !bHtmlMode )
2483*b1cdbd2cSJim Jagielski 	{
2484*b1cdbd2cSJim Jagielski 		if( SFX_ITEM_SET != eState )
2485*b1cdbd2cSJim Jagielski 			pItem = &rSet.Get( RES_GRFATR_MIRRORGRF );
2486*b1cdbd2cSJim Jagielski 
2487*b1cdbd2cSJim Jagielski 		bEnable = sal_True;
2488*b1cdbd2cSJim Jagielski 
2489*b1cdbd2cSJim Jagielski         MirrorGraph eMirror = static_cast< MirrorGraph >(((const SwMirrorGrf* )pItem)->GetValue());
2490*b1cdbd2cSJim Jagielski 		switch( eMirror )
2491*b1cdbd2cSJim Jagielski 		{
2492*b1cdbd2cSJim Jagielski         case RES_MIRROR_GRAPH_DONT: break;
2493*b1cdbd2cSJim Jagielski         case RES_MIRROR_GRAPH_VERT: aMirrorHorzBox.Check(sal_True); break;
2494*b1cdbd2cSJim Jagielski         case RES_MIRROR_GRAPH_HOR:  aMirrorVertBox.Check(sal_True); break;
2495*b1cdbd2cSJim Jagielski         case RES_MIRROR_GRAPH_BOTH: aMirrorHorzBox.Check(sal_True);
2496*b1cdbd2cSJim Jagielski 									aMirrorVertBox.Check(sal_True);
2497*b1cdbd2cSJim Jagielski 									break;
2498*b1cdbd2cSJim Jagielski         default:
2499*b1cdbd2cSJim Jagielski             ;
2500*b1cdbd2cSJim Jagielski         }
2501*b1cdbd2cSJim Jagielski 
2502*b1cdbd2cSJim Jagielski 		sal_uInt16 nPos = ((const SwMirrorGrf* )pItem)->IsGrfToggle() ? 1 : 0;
2503*b1cdbd2cSJim Jagielski         nPos += (eMirror == RES_MIRROR_GRAPH_VERT || eMirror == RES_MIRROR_GRAPH_BOTH)
2504*b1cdbd2cSJim Jagielski 				 ? 2 : 0;
2505*b1cdbd2cSJim Jagielski 
2506*b1cdbd2cSJim Jagielski 		bEnableMirrorRB = nPos != 0;
2507*b1cdbd2cSJim Jagielski 
2508*b1cdbd2cSJim Jagielski 		switch (nPos)
2509*b1cdbd2cSJim Jagielski 		{
2510*b1cdbd2cSJim Jagielski 			case 1:	// Auf linken bzw geraden Seiten spiegeln
2511*b1cdbd2cSJim Jagielski 				aLeftPagesRB.Check();
2512*b1cdbd2cSJim Jagielski 				aMirrorHorzBox.Check(sal_True);
2513*b1cdbd2cSJim Jagielski 				break;
2514*b1cdbd2cSJim Jagielski 			case 2:	// Auf allen Seiten spiegeln
2515*b1cdbd2cSJim Jagielski 				aAllPagesRB.Check();
2516*b1cdbd2cSJim Jagielski 				break;
2517*b1cdbd2cSJim Jagielski 			case 3:	// Auf rechten bzw ungeraden Seiten spiegeln
2518*b1cdbd2cSJim Jagielski 				aRightPagesRB.Check();
2519*b1cdbd2cSJim Jagielski 				break;
2520*b1cdbd2cSJim Jagielski 			default:
2521*b1cdbd2cSJim Jagielski 				aAllPagesRB.Check();
2522*b1cdbd2cSJim Jagielski 				break;
2523*b1cdbd2cSJim Jagielski 		}
2524*b1cdbd2cSJim Jagielski 	}
2525*b1cdbd2cSJim Jagielski 
2526*b1cdbd2cSJim Jagielski 	if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_GRAF_GRAPHIC, sal_False, &pItem ) )
2527*b1cdbd2cSJim Jagielski 	{
2528*b1cdbd2cSJim Jagielski 		const SvxBrushItem& rBrush = *(SvxBrushItem*)pItem;
2529*b1cdbd2cSJim Jagielski 		if( rBrush.GetGraphicLink() )
2530*b1cdbd2cSJim Jagielski 		{
2531*b1cdbd2cSJim Jagielski 			aGrfName = aNewGrfName = *rBrush.GetGraphicLink();
2532*b1cdbd2cSJim Jagielski 			aConnectED.SetText( aNewGrfName );
2533*b1cdbd2cSJim Jagielski 		}
2534*b1cdbd2cSJim Jagielski 		const Graphic* pGrf = rBrush.GetGraphic();
2535*b1cdbd2cSJim Jagielski 		if( pGrf )
2536*b1cdbd2cSJim Jagielski 			aBmpWin.SetGraphic( *pGrf );
2537*b1cdbd2cSJim Jagielski 	}
2538*b1cdbd2cSJim Jagielski 
2539*b1cdbd2cSJim Jagielski 	aAllPagesRB .Enable(bEnableMirrorRB);
2540*b1cdbd2cSJim Jagielski 	aLeftPagesRB.Enable(bEnableMirrorRB);
2541*b1cdbd2cSJim Jagielski 	aRightPagesRB.Enable(bEnableMirrorRB);
2542*b1cdbd2cSJim Jagielski 	aMirrorHorzBox.Enable(bEnable);
2543*b1cdbd2cSJim Jagielski 	aMirrorVertBox.Enable(bEnable);
2544*b1cdbd2cSJim Jagielski     aMirrorFL.Enable(bEnable);
2545*b1cdbd2cSJim Jagielski 
2546*b1cdbd2cSJim Jagielski 	aAllPagesRB .SaveValue();
2547*b1cdbd2cSJim Jagielski 	aLeftPagesRB.SaveValue();
2548*b1cdbd2cSJim Jagielski 	aRightPagesRB.SaveValue();
2549*b1cdbd2cSJim Jagielski 	aMirrorHorzBox.SaveValue();
2550*b1cdbd2cSJim Jagielski 	aMirrorVertBox.SaveValue();
2551*b1cdbd2cSJim Jagielski 
2552*b1cdbd2cSJim Jagielski 	aBmpWin.MirrorHorz( aMirrorVertBox.IsChecked() );
2553*b1cdbd2cSJim Jagielski 	aBmpWin.MirrorVert( aMirrorHorzBox.IsChecked() );
2554*b1cdbd2cSJim Jagielski 	aBmpWin.Invalidate();
2555*b1cdbd2cSJim Jagielski }
2556*b1cdbd2cSJim Jagielski 
2557*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
2558*b1cdbd2cSJim Jagielski 	Beschreibung:
2559*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
2560*b1cdbd2cSJim Jagielski 
FillItemSet(SfxItemSet & rSet)2561*b1cdbd2cSJim Jagielski sal_Bool SwGrfExtPage::FillItemSet( SfxItemSet &rSet )
2562*b1cdbd2cSJim Jagielski {
2563*b1cdbd2cSJim Jagielski 	sal_Bool bModified = sal_False;
2564*b1cdbd2cSJim Jagielski 	if ( aMirrorHorzBox.GetSavedValue() != aMirrorHorzBox.IsChecked() ||
2565*b1cdbd2cSJim Jagielski 		 aMirrorVertBox.GetSavedValue() != aMirrorVertBox.IsChecked() ||
2566*b1cdbd2cSJim Jagielski 		 aAllPagesRB .GetSavedValue() != aAllPagesRB .IsChecked() ||
2567*b1cdbd2cSJim Jagielski 		 aLeftPagesRB.GetSavedValue() != aLeftPagesRB.IsChecked() ||
2568*b1cdbd2cSJim Jagielski 		 aRightPagesRB.GetSavedValue() != aRightPagesRB.IsChecked())
2569*b1cdbd2cSJim Jagielski 	{
2570*b1cdbd2cSJim Jagielski 		bModified = sal_True;
2571*b1cdbd2cSJim Jagielski 
2572*b1cdbd2cSJim Jagielski 		sal_Bool bHori = sal_False;
2573*b1cdbd2cSJim Jagielski 
2574*b1cdbd2cSJim Jagielski 		if (aMirrorHorzBox.IsChecked() &&
2575*b1cdbd2cSJim Jagielski 				!aLeftPagesRB.IsChecked())
2576*b1cdbd2cSJim Jagielski 			bHori = sal_True;
2577*b1cdbd2cSJim Jagielski 
2578*b1cdbd2cSJim Jagielski         MirrorGraph eMirror;
2579*b1cdbd2cSJim Jagielski 		eMirror = aMirrorVertBox.IsChecked() && bHori ?
2580*b1cdbd2cSJim Jagielski                     RES_MIRROR_GRAPH_BOTH : bHori ?
2581*b1cdbd2cSJim Jagielski                     RES_MIRROR_GRAPH_VERT : aMirrorVertBox.IsChecked() ?
2582*b1cdbd2cSJim Jagielski                     RES_MIRROR_GRAPH_HOR  : RES_MIRROR_GRAPH_DONT;
2583*b1cdbd2cSJim Jagielski 
2584*b1cdbd2cSJim Jagielski 		sal_Bool bMirror = !aAllPagesRB.IsChecked();
2585*b1cdbd2cSJim Jagielski 		SwMirrorGrf aMirror( eMirror );
2586*b1cdbd2cSJim Jagielski 		aMirror.SetGrfToggle(bMirror );
2587*b1cdbd2cSJim Jagielski 		rSet.Put( aMirror );
2588*b1cdbd2cSJim Jagielski 	}
2589*b1cdbd2cSJim Jagielski 
2590*b1cdbd2cSJim Jagielski 	if( aGrfName != aNewGrfName || aConnectED.IsModified() )
2591*b1cdbd2cSJim Jagielski 	{
2592*b1cdbd2cSJim Jagielski 		bModified = sal_True;
2593*b1cdbd2cSJim Jagielski 		aGrfName = aConnectED.GetText();
2594*b1cdbd2cSJim Jagielski 		rSet.Put( SvxBrushItem( aGrfName, aFilterName, GPOS_LT,
2595*b1cdbd2cSJim Jagielski 								SID_ATTR_GRAF_GRAPHIC ));
2596*b1cdbd2cSJim Jagielski 	}
2597*b1cdbd2cSJim Jagielski 	return bModified;
2598*b1cdbd2cSJim Jagielski }
2599*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
2600*b1cdbd2cSJim Jagielski 	Beschreibung:
2601*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
2602*b1cdbd2cSJim Jagielski 
DeactivatePage(SfxItemSet * _pSet)2603*b1cdbd2cSJim Jagielski int SwGrfExtPage::DeactivatePage(SfxItemSet *_pSet)
2604*b1cdbd2cSJim Jagielski {
2605*b1cdbd2cSJim Jagielski     if( _pSet )
2606*b1cdbd2cSJim Jagielski         FillItemSet( *_pSet );
2607*b1cdbd2cSJim Jagielski 	return sal_True;
2608*b1cdbd2cSJim Jagielski }
2609*b1cdbd2cSJim Jagielski 
2610*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
2611*b1cdbd2cSJim Jagielski 	Beschreibung:
2612*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
2613*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwGrfExtPage,BrowseHdl,Button *,EMPTYARG)2614*b1cdbd2cSJim Jagielski IMPL_LINK( SwGrfExtPage, BrowseHdl, Button *, EMPTYARG )
2615*b1cdbd2cSJim Jagielski {
2616*b1cdbd2cSJim Jagielski 	if(!pGrfDlg)
2617*b1cdbd2cSJim Jagielski     {
2618*b1cdbd2cSJim Jagielski         pGrfDlg = new FileDialogHelper( SFXWB_GRAPHIC );
2619*b1cdbd2cSJim Jagielski         pGrfDlg->SetTitle(SW_RESSTR(STR_EDIT_GRF ));
2620*b1cdbd2cSJim Jagielski     }
2621*b1cdbd2cSJim Jagielski     pGrfDlg->SetDisplayDirectory( aConnectED.GetText() );
2622*b1cdbd2cSJim Jagielski     uno::Reference < ui::dialogs::XFilePicker > xFP = pGrfDlg->GetFilePicker();
2623*b1cdbd2cSJim Jagielski     uno::Reference < ui::dialogs::XFilePickerControlAccess > xCtrlAcc(xFP, uno::UNO_QUERY);
2624*b1cdbd2cSJim Jagielski     sal_Bool bTrue = sal_True;
2625*b1cdbd2cSJim Jagielski     uno::Any aVal(&bTrue, ::getBooleanCppuType());
2626*b1cdbd2cSJim Jagielski     xCtrlAcc->setValue( ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_LINK, 0, aVal);
2627*b1cdbd2cSJim Jagielski 
2628*b1cdbd2cSJim Jagielski     if ( pGrfDlg->Execute() == ERRCODE_NONE )
2629*b1cdbd2cSJim Jagielski 	{	// ausgewaehlten Filter merken
2630*b1cdbd2cSJim Jagielski         aFilterName = pGrfDlg->GetCurrentFilter();
2631*b1cdbd2cSJim Jagielski 		aNewGrfName = INetURLObject::decode( pGrfDlg->GetPath(),
2632*b1cdbd2cSJim Jagielski 										INET_HEX_ESCAPE,
2633*b1cdbd2cSJim Jagielski 						   				INetURLObject::DECODE_UNAMBIGUOUS,
2634*b1cdbd2cSJim Jagielski 										RTL_TEXTENCODING_UTF8 );
2635*b1cdbd2cSJim Jagielski 		aConnectED.SetModifyFlag();
2636*b1cdbd2cSJim Jagielski 		aConnectED.SetText( aNewGrfName );
2637*b1cdbd2cSJim Jagielski 		//Spiegeln zuruecksetzen, da u. U. eine Bitmap
2638*b1cdbd2cSJim Jagielski 		//gegen eine andere Art von Grafik ausgetauscht worden ist,
2639*b1cdbd2cSJim Jagielski 		//die nicht gespiegelt werden kann.
2640*b1cdbd2cSJim Jagielski 		aMirrorVertBox.Check(sal_False);
2641*b1cdbd2cSJim Jagielski 		aMirrorHorzBox.Check(sal_False);
2642*b1cdbd2cSJim Jagielski 		aAllPagesRB .Enable(sal_False);
2643*b1cdbd2cSJim Jagielski 		aLeftPagesRB.Enable(sal_False);
2644*b1cdbd2cSJim Jagielski 		aRightPagesRB.Enable(sal_False);
2645*b1cdbd2cSJim Jagielski 		aBmpWin.MirrorHorz(sal_False);
2646*b1cdbd2cSJim Jagielski 		aBmpWin.MirrorVert(sal_False);
2647*b1cdbd2cSJim Jagielski 
2648*b1cdbd2cSJim Jagielski         Graphic aGraphic;
2649*b1cdbd2cSJim Jagielski         GraphicFilter::LoadGraphic( pGrfDlg->GetPath(), aEmptyStr, aGraphic );
2650*b1cdbd2cSJim Jagielski         aBmpWin.SetGraphic(aGraphic);
2651*b1cdbd2cSJim Jagielski 
2652*b1cdbd2cSJim Jagielski         sal_Bool bEnable = GRAPHIC_BITMAP      == aGraphic.GetType() ||
2653*b1cdbd2cSJim Jagielski                             GRAPHIC_GDIMETAFILE == aGraphic.GetType();
2654*b1cdbd2cSJim Jagielski 		aMirrorVertBox.Enable(bEnable);
2655*b1cdbd2cSJim Jagielski 		aMirrorHorzBox.Enable(bEnable);
2656*b1cdbd2cSJim Jagielski 		aAllPagesRB .Enable(bEnable);
2657*b1cdbd2cSJim Jagielski 		aLeftPagesRB.Enable(bEnable);
2658*b1cdbd2cSJim Jagielski 		aRightPagesRB.Enable(bEnable);
2659*b1cdbd2cSJim Jagielski 	}
2660*b1cdbd2cSJim Jagielski 	return 0;
2661*b1cdbd2cSJim Jagielski }
2662*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
2663*b1cdbd2cSJim Jagielski 	Beschreibung:
2664*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
2665*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwGrfExtPage,MirrorHdl,CheckBox *,EMPTYARG)2666*b1cdbd2cSJim Jagielski IMPL_LINK( SwGrfExtPage, MirrorHdl, CheckBox *, EMPTYARG )
2667*b1cdbd2cSJim Jagielski {
2668*b1cdbd2cSJim Jagielski 	sal_Bool bEnable = aMirrorHorzBox.IsChecked();
2669*b1cdbd2cSJim Jagielski 
2670*b1cdbd2cSJim Jagielski 	aBmpWin.MirrorHorz( aMirrorVertBox.IsChecked() );
2671*b1cdbd2cSJim Jagielski 	aBmpWin.MirrorVert( bEnable );
2672*b1cdbd2cSJim Jagielski 
2673*b1cdbd2cSJim Jagielski 	aAllPagesRB .Enable(bEnable);
2674*b1cdbd2cSJim Jagielski 	aLeftPagesRB.Enable(bEnable);
2675*b1cdbd2cSJim Jagielski 	aRightPagesRB.Enable(bEnable);
2676*b1cdbd2cSJim Jagielski 
2677*b1cdbd2cSJim Jagielski 	if (!aAllPagesRB.IsChecked() && !aLeftPagesRB.IsChecked() && !aRightPagesRB.IsChecked())
2678*b1cdbd2cSJim Jagielski 		aAllPagesRB.Check();
2679*b1cdbd2cSJim Jagielski 
2680*b1cdbd2cSJim Jagielski 	return 0;
2681*b1cdbd2cSJim Jagielski }
2682*b1cdbd2cSJim Jagielski 
2683*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
2684*b1cdbd2cSJim Jagielski 	Beschreibung: BeispielWindow
2685*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
2686*b1cdbd2cSJim Jagielski 
BmpWindow(Window * pPar,sal_uInt16 nId,const Graphic & rGraphic,const BitmapEx & rBmp,const BitmapEx & rBmpHC)2687*b1cdbd2cSJim Jagielski BmpWindow::BmpWindow( Window* pPar, sal_uInt16 nId,
2688*b1cdbd2cSJim Jagielski                         const Graphic& rGraphic, const BitmapEx& rBmp, const BitmapEx& rBmpHC ) :
2689*b1cdbd2cSJim Jagielski 	Window(pPar, SW_RES(nId)),
2690*b1cdbd2cSJim Jagielski 	aGraphic(rGraphic),
2691*b1cdbd2cSJim Jagielski     aBmp(rBmp),
2692*b1cdbd2cSJim Jagielski     aBmpHC(rBmpHC),
2693*b1cdbd2cSJim Jagielski 	bHorz(sal_False),
2694*b1cdbd2cSJim Jagielski 	bVert(sal_False),
2695*b1cdbd2cSJim Jagielski 	bGraphic(sal_False),
2696*b1cdbd2cSJim Jagielski 	bLeftAlign(sal_False)
2697*b1cdbd2cSJim Jagielski {
2698*b1cdbd2cSJim Jagielski     // #119307# use background, the graphic might have transparency
2699*b1cdbd2cSJim Jagielski     SetBackground(Wallpaper(Color(COL_WHITE)));
2700*b1cdbd2cSJim Jagielski }
2701*b1cdbd2cSJim Jagielski 
Paint(const Rectangle &)2702*b1cdbd2cSJim Jagielski void BmpWindow::Paint( const Rectangle& )
2703*b1cdbd2cSJim Jagielski {
2704*b1cdbd2cSJim Jagielski 	Point aPntPos;
2705*b1cdbd2cSJim Jagielski 	Size  aPntSz( GetSizePixel() );
2706*b1cdbd2cSJim Jagielski 	Size  aGrfSize;
2707*b1cdbd2cSJim Jagielski 	if(bGraphic)
2708*b1cdbd2cSJim Jagielski 		aGrfSize = ::GetGraphicSizeTwip(aGraphic, this);
2709*b1cdbd2cSJim Jagielski     //it should show the default bitmap also if no graphic can be found
2710*b1cdbd2cSJim Jagielski     if(!aGrfSize.Width() && !aGrfSize.Height())
2711*b1cdbd2cSJim Jagielski         aGrfSize =  PixelToLogic(aBmp.GetSizePixel());
2712*b1cdbd2cSJim Jagielski 
2713*b1cdbd2cSJim Jagielski     long nRelGrf = aGrfSize.Width() * 100L / aGrfSize.Height();
2714*b1cdbd2cSJim Jagielski     long nRelWin = aPntSz.Width() * 100L / aPntSz.Height();
2715*b1cdbd2cSJim Jagielski     if(nRelGrf < nRelWin)
2716*b1cdbd2cSJim Jagielski     {
2717*b1cdbd2cSJim Jagielski         const long nWidth = aPntSz.Width();
2718*b1cdbd2cSJim Jagielski         aPntSz.Width() = aPntSz.Height() * nRelGrf /100;
2719*b1cdbd2cSJim Jagielski         if(!bLeftAlign)
2720*b1cdbd2cSJim Jagielski             aPntPos.X() += nWidth - aPntSz.Width() ;
2721*b1cdbd2cSJim Jagielski     }
2722*b1cdbd2cSJim Jagielski 
2723*b1cdbd2cSJim Jagielski     if ( bHorz )
2724*b1cdbd2cSJim Jagielski     {
2725*b1cdbd2cSJim Jagielski         aPntPos.Y()     += aPntSz.Height();
2726*b1cdbd2cSJim Jagielski         aPntPos.Y() --;
2727*b1cdbd2cSJim Jagielski         aPntSz.Height() *= -1;
2728*b1cdbd2cSJim Jagielski     }
2729*b1cdbd2cSJim Jagielski     if ( bVert )
2730*b1cdbd2cSJim Jagielski     {
2731*b1cdbd2cSJim Jagielski         aPntPos.X()     += aPntSz.Width();
2732*b1cdbd2cSJim Jagielski         aPntPos.X()--;
2733*b1cdbd2cSJim Jagielski         aPntSz.Width()  *= -1;
2734*b1cdbd2cSJim Jagielski     }
2735*b1cdbd2cSJim Jagielski 
2736*b1cdbd2cSJim Jagielski     // #119307# clear window background, the graphic might have transparency
2737*b1cdbd2cSJim Jagielski     Erase();
2738*b1cdbd2cSJim Jagielski 
2739*b1cdbd2cSJim Jagielski     if ( bGraphic )
2740*b1cdbd2cSJim Jagielski         aGraphic.Draw( this, aPntPos, aPntSz );
2741*b1cdbd2cSJim Jagielski     else
2742*b1cdbd2cSJim Jagielski     {
2743*b1cdbd2cSJim Jagielski         bool bHC = GetSettings().GetStyleSettings().GetHighContrastMode();
2744*b1cdbd2cSJim Jagielski         DrawBitmapEx( aPntPos, aPntSz, bHC ? aBmpHC : aBmp );
2745*b1cdbd2cSJim Jagielski     }
2746*b1cdbd2cSJim Jagielski }
2747*b1cdbd2cSJim Jagielski 
~BmpWindow()2748*b1cdbd2cSJim Jagielski BmpWindow::~BmpWindow()
2749*b1cdbd2cSJim Jagielski {
2750*b1cdbd2cSJim Jagielski }
2751*b1cdbd2cSJim Jagielski 
SetGraphic(const Graphic & rGrf)2752*b1cdbd2cSJim Jagielski void BmpWindow::SetGraphic(const Graphic& rGrf)
2753*b1cdbd2cSJim Jagielski {
2754*b1cdbd2cSJim Jagielski     aGraphic = rGrf;
2755*b1cdbd2cSJim Jagielski     Size aGrfSize = ::GetGraphicSizeTwip(aGraphic, this);
2756*b1cdbd2cSJim Jagielski     bGraphic = aGrfSize.Width() && aGrfSize.Height();
2757*b1cdbd2cSJim Jagielski     Invalidate();
2758*b1cdbd2cSJim Jagielski }
2759*b1cdbd2cSJim Jagielski 
2760*b1cdbd2cSJim Jagielski /***************************************************************************
2761*b1cdbd2cSJim Jagielski 	Beschreibung: 	URL und ImageMap an Rahmen einstellen
2762*b1cdbd2cSJim Jagielski ***************************************************************************/
2763*b1cdbd2cSJim Jagielski 
2764*b1cdbd2cSJim Jagielski 
SwFrmURLPage(Window * pParent,const SfxItemSet & rSet)2765*b1cdbd2cSJim Jagielski SwFrmURLPage::SwFrmURLPage( Window *pParent, const SfxItemSet &rSet ) :
2766*b1cdbd2cSJim Jagielski 	SfxTabPage(pParent, 	SW_RES(TP_FRM_URL), rSet),
2767*b1cdbd2cSJim Jagielski     aHyperLinkFL    (this, SW_RES( FL_HYPERLINK )),
2768*b1cdbd2cSJim Jagielski 	aURLFT      	(this, SW_RES( FT_URL  	 )),
2769*b1cdbd2cSJim Jagielski 	aURLED			(this, SW_RES( ED_URL 	 )),
2770*b1cdbd2cSJim Jagielski     aSearchPB       (this, SW_RES( PB_SEARCH  )),
2771*b1cdbd2cSJim Jagielski 	aNameFT      	(this, SW_RES( FT_NAME   )),
2772*b1cdbd2cSJim Jagielski 	aNameED			(this, SW_RES( ED_NAME 	 )),
2773*b1cdbd2cSJim Jagielski 	aFrameFT        (this, SW_RES( FT_FRAME   )),
2774*b1cdbd2cSJim Jagielski 	aFrameCB        (this, SW_RES( CB_FRAME   )),
2775*b1cdbd2cSJim Jagielski 
2776*b1cdbd2cSJim Jagielski     aImageFL        (this, SW_RES( FL_IMAGE   )),
2777*b1cdbd2cSJim Jagielski 	aServerCB       (this, SW_RES( CB_SERVER  )),
2778*b1cdbd2cSJim Jagielski 	aClientCB       (this, SW_RES( CB_CLIENT  ))
2779*b1cdbd2cSJim Jagielski {
2780*b1cdbd2cSJim Jagielski 	FreeResource();
2781*b1cdbd2cSJim Jagielski 	aSearchPB.SetClickHdl(LINK(this, SwFrmURLPage, InsertFileHdl));
2782*b1cdbd2cSJim Jagielski }
2783*b1cdbd2cSJim Jagielski 
2784*b1cdbd2cSJim Jagielski /***************************************************************************
2785*b1cdbd2cSJim Jagielski 	Beschreibung:
2786*b1cdbd2cSJim Jagielski ***************************************************************************/
2787*b1cdbd2cSJim Jagielski 
~SwFrmURLPage()2788*b1cdbd2cSJim Jagielski SwFrmURLPage::~SwFrmURLPage()
2789*b1cdbd2cSJim Jagielski {
2790*b1cdbd2cSJim Jagielski }
2791*b1cdbd2cSJim Jagielski 
2792*b1cdbd2cSJim Jagielski /***************************************************************************
2793*b1cdbd2cSJim Jagielski 	Beschreibung:
2794*b1cdbd2cSJim Jagielski ***************************************************************************/
2795*b1cdbd2cSJim Jagielski 
Reset(const SfxItemSet & rSet)2796*b1cdbd2cSJim Jagielski void SwFrmURLPage::Reset( const SfxItemSet &rSet )
2797*b1cdbd2cSJim Jagielski {
2798*b1cdbd2cSJim Jagielski 	const SfxPoolItem* pItem;
2799*b1cdbd2cSJim Jagielski 	if ( SFX_ITEM_SET == rSet.GetItemState( SID_DOCFRAME, sal_True, &pItem))
2800*b1cdbd2cSJim Jagielski 	{
2801*b1cdbd2cSJim Jagielski 		TargetList* pList = new TargetList;
2802*b1cdbd2cSJim Jagielski 		((const SfxFrameItem*)pItem)->GetFrame()->GetTargetList(*pList);
2803*b1cdbd2cSJim Jagielski 		sal_uInt16 nCount = (sal_uInt16)pList->Count();
2804*b1cdbd2cSJim Jagielski 		if( nCount )
2805*b1cdbd2cSJim Jagielski 		{
2806*b1cdbd2cSJim Jagielski 			sal_uInt16 i;
2807*b1cdbd2cSJim Jagielski 			for ( i = 0; i < nCount; i++ )
2808*b1cdbd2cSJim Jagielski 			{
2809*b1cdbd2cSJim Jagielski 				aFrameCB.InsertEntry(*pList->GetObject(i));
2810*b1cdbd2cSJim Jagielski 			}
2811*b1cdbd2cSJim Jagielski 			for ( i = nCount; i; i-- )
2812*b1cdbd2cSJim Jagielski 			{
2813*b1cdbd2cSJim Jagielski 				delete pList->GetObject( i - 1 );
2814*b1cdbd2cSJim Jagielski 			}
2815*b1cdbd2cSJim Jagielski 		}
2816*b1cdbd2cSJim Jagielski 		delete pList;
2817*b1cdbd2cSJim Jagielski 	}
2818*b1cdbd2cSJim Jagielski 
2819*b1cdbd2cSJim Jagielski 	if ( SFX_ITEM_SET == rSet.GetItemState( RES_URL, sal_True, &pItem ) )
2820*b1cdbd2cSJim Jagielski 	{
2821*b1cdbd2cSJim Jagielski 		const SwFmtURL* pFmtURL = (const SwFmtURL*)pItem;
2822*b1cdbd2cSJim Jagielski 		aURLED.SetText( INetURLObject::decode( pFmtURL->GetURL(),
2823*b1cdbd2cSJim Jagielski 										INET_HEX_ESCAPE,
2824*b1cdbd2cSJim Jagielski 						   				INetURLObject::DECODE_UNAMBIGUOUS,
2825*b1cdbd2cSJim Jagielski 										RTL_TEXTENCODING_UTF8 ));
2826*b1cdbd2cSJim Jagielski 		aNameED.SetText( pFmtURL->GetName());
2827*b1cdbd2cSJim Jagielski 
2828*b1cdbd2cSJim Jagielski 		aClientCB.Enable( pFmtURL->GetMap() != 0 );
2829*b1cdbd2cSJim Jagielski 		aClientCB.Check ( pFmtURL->GetMap() != 0 );
2830*b1cdbd2cSJim Jagielski 		aServerCB.Check ( pFmtURL->IsServerMap() );
2831*b1cdbd2cSJim Jagielski 
2832*b1cdbd2cSJim Jagielski 		aFrameCB.SetText(pFmtURL->GetTargetFrameName());
2833*b1cdbd2cSJim Jagielski 		aFrameCB.SaveValue();
2834*b1cdbd2cSJim Jagielski 	}
2835*b1cdbd2cSJim Jagielski 	else
2836*b1cdbd2cSJim Jagielski 		aClientCB.Enable( sal_False );
2837*b1cdbd2cSJim Jagielski 
2838*b1cdbd2cSJim Jagielski 	aServerCB.SaveValue();
2839*b1cdbd2cSJim Jagielski 	aClientCB.SaveValue();
2840*b1cdbd2cSJim Jagielski }
2841*b1cdbd2cSJim Jagielski 
2842*b1cdbd2cSJim Jagielski 
2843*b1cdbd2cSJim Jagielski 
2844*b1cdbd2cSJim Jagielski /***************************************************************************
2845*b1cdbd2cSJim Jagielski 	Beschreibung:
2846*b1cdbd2cSJim Jagielski ***************************************************************************/
2847*b1cdbd2cSJim Jagielski 
FillItemSet(SfxItemSet & rSet)2848*b1cdbd2cSJim Jagielski sal_Bool SwFrmURLPage::FillItemSet(SfxItemSet &rSet)
2849*b1cdbd2cSJim Jagielski {
2850*b1cdbd2cSJim Jagielski 	sal_Bool bModified = sal_False;
2851*b1cdbd2cSJim Jagielski 	const SwFmtURL* pOldURL = (SwFmtURL*)GetOldItem(rSet, RES_URL);
2852*b1cdbd2cSJim Jagielski 	SwFmtURL* pFmtURL;
2853*b1cdbd2cSJim Jagielski 	if(pOldURL)
2854*b1cdbd2cSJim Jagielski 		pFmtURL = (SwFmtURL*)pOldURL->Clone();
2855*b1cdbd2cSJim Jagielski 	else
2856*b1cdbd2cSJim Jagielski 		pFmtURL = new SwFmtURL();
2857*b1cdbd2cSJim Jagielski 
2858*b1cdbd2cSJim Jagielski 	{
2859*b1cdbd2cSJim Jagielski 		String sText = aURLED.GetText();
2860*b1cdbd2cSJim Jagielski 
2861*b1cdbd2cSJim Jagielski 		if( pFmtURL->GetURL() != sText ||
2862*b1cdbd2cSJim Jagielski 			pFmtURL->GetName() != aNameED.GetText() ||
2863*b1cdbd2cSJim Jagielski 			aServerCB.IsChecked() != pFmtURL->IsServerMap() )
2864*b1cdbd2cSJim Jagielski 		{
2865*b1cdbd2cSJim Jagielski 			pFmtURL->SetURL( sText, aServerCB.IsChecked() );
2866*b1cdbd2cSJim Jagielski 			pFmtURL->SetName( aNameED.GetText() );
2867*b1cdbd2cSJim Jagielski 			bModified = sal_True;
2868*b1cdbd2cSJim Jagielski 		}
2869*b1cdbd2cSJim Jagielski 	}
2870*b1cdbd2cSJim Jagielski 
2871*b1cdbd2cSJim Jagielski 	if(!aClientCB.IsChecked() && pFmtURL->GetMap() != 0)
2872*b1cdbd2cSJim Jagielski 	{
2873*b1cdbd2cSJim Jagielski 		pFmtURL->SetMap(0);
2874*b1cdbd2cSJim Jagielski 		bModified = sal_True;
2875*b1cdbd2cSJim Jagielski 	}
2876*b1cdbd2cSJim Jagielski 
2877*b1cdbd2cSJim Jagielski 	if(pFmtURL->GetTargetFrameName() != aFrameCB.GetText())
2878*b1cdbd2cSJim Jagielski 	{
2879*b1cdbd2cSJim Jagielski 		pFmtURL->SetTargetFrameName(aFrameCB.GetText());
2880*b1cdbd2cSJim Jagielski 		bModified = sal_True;
2881*b1cdbd2cSJim Jagielski 	}
2882*b1cdbd2cSJim Jagielski 	rSet.Put(*pFmtURL);
2883*b1cdbd2cSJim Jagielski 	delete pFmtURL;
2884*b1cdbd2cSJim Jagielski 	return bModified;
2885*b1cdbd2cSJim Jagielski }
2886*b1cdbd2cSJim Jagielski 
2887*b1cdbd2cSJim Jagielski /***************************************************************************
2888*b1cdbd2cSJim Jagielski 	Beschreibung:
2889*b1cdbd2cSJim Jagielski ***************************************************************************/
2890*b1cdbd2cSJim Jagielski 
Create(Window * pParent,const SfxItemSet & rSet)2891*b1cdbd2cSJim Jagielski SfxTabPage* SwFrmURLPage::Create(Window *pParent, const SfxItemSet &rSet)
2892*b1cdbd2cSJim Jagielski {
2893*b1cdbd2cSJim Jagielski 	return new SwFrmURLPage( pParent, rSet );
2894*b1cdbd2cSJim Jagielski }
2895*b1cdbd2cSJim Jagielski 
2896*b1cdbd2cSJim Jagielski /***************************************************************************
2897*b1cdbd2cSJim Jagielski 	Beschreibung:
2898*b1cdbd2cSJim Jagielski ***************************************************************************/
2899*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwFrmURLPage,InsertFileHdl,PushButton *,EMPTYARG)2900*b1cdbd2cSJim Jagielski IMPL_LINK( SwFrmURLPage, InsertFileHdl, PushButton *, EMPTYARG )
2901*b1cdbd2cSJim Jagielski {
2902*b1cdbd2cSJim Jagielski     FileDialogHelper aDlgHelper( ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE, 0 );
2903*b1cdbd2cSJim Jagielski     uno::Reference < ui::dialogs::XFilePicker > xFP = aDlgHelper.GetFilePicker();
2904*b1cdbd2cSJim Jagielski 
2905*b1cdbd2cSJim Jagielski     try
2906*b1cdbd2cSJim Jagielski     {
2907*b1cdbd2cSJim Jagielski         String sTemp(aURLED.GetText());
2908*b1cdbd2cSJim Jagielski         if(sTemp.Len())
2909*b1cdbd2cSJim Jagielski             xFP->setDisplayDirectory(sTemp);
2910*b1cdbd2cSJim Jagielski     }
2911*b1cdbd2cSJim Jagielski     catch( const uno::Exception& rEx )
2912*b1cdbd2cSJim Jagielski     {
2913*b1cdbd2cSJim Jagielski         (void) rEx;
2914*b1cdbd2cSJim Jagielski     }
2915*b1cdbd2cSJim Jagielski     if( aDlgHelper.Execute() == ERRCODE_NONE )
2916*b1cdbd2cSJim Jagielski     {
2917*b1cdbd2cSJim Jagielski         aURLED.SetText( xFP->getFiles().getConstArray()[0] );
2918*b1cdbd2cSJim Jagielski     }
2919*b1cdbd2cSJim Jagielski 
2920*b1cdbd2cSJim Jagielski 	return 0;
2921*b1cdbd2cSJim Jagielski }
2922*b1cdbd2cSJim Jagielski 
2923*b1cdbd2cSJim Jagielski /* -----------------------------03.11.00 10:56--------------------------------
2924*b1cdbd2cSJim Jagielski 
2925*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
lcl_Move(Window & rWin,sal_Int32 nDiff)2926*b1cdbd2cSJim Jagielski void lcl_Move(Window& rWin, sal_Int32 nDiff)
2927*b1cdbd2cSJim Jagielski {
2928*b1cdbd2cSJim Jagielski 	Point aPos(rWin.GetPosPixel());
2929*b1cdbd2cSJim Jagielski 	aPos.Y() -= nDiff;
2930*b1cdbd2cSJim Jagielski 	rWin.SetPosPixel(aPos);
2931*b1cdbd2cSJim Jagielski }
2932*b1cdbd2cSJim Jagielski 
2933*b1cdbd2cSJim Jagielski /*-----------------13.11.96 13.15-------------------
2934*b1cdbd2cSJim Jagielski 
2935*b1cdbd2cSJim Jagielski --------------------------------------------------*/
2936*b1cdbd2cSJim Jagielski 
SwFrmAddPage(Window * pParent,const SfxItemSet & rSet)2937*b1cdbd2cSJim Jagielski SwFrmAddPage::SwFrmAddPage(Window *pParent, const SfxItemSet &rSet ) :
2938*b1cdbd2cSJim Jagielski 	SfxTabPage(pParent, 	SW_RES(TP_FRM_ADD), rSet),
2939*b1cdbd2cSJim Jagielski 
2940*b1cdbd2cSJim Jagielski     aNamesFL           (this, SW_RES(FL_NAME)),
2941*b1cdbd2cSJim Jagielski     aNameFT            (this, SW_RES(FT_NAME)),
2942*b1cdbd2cSJim Jagielski 	aNameED            (this, SW_RES(ED_NAME)),
2943*b1cdbd2cSJim Jagielski 	aAltNameFT         (this, SW_RES(FT_ALT_NAME)),
2944*b1cdbd2cSJim Jagielski 	aAltNameED         (this, SW_RES(ED_ALT_NAME)),
2945*b1cdbd2cSJim Jagielski 	aPrevFT            (this, SW_RES(FT_PREV)),
2946*b1cdbd2cSJim Jagielski     aPrevLB            (this, SW_RES(LB_PREV)),
2947*b1cdbd2cSJim Jagielski 	aNextFT            (this, SW_RES(FT_NEXT)),
2948*b1cdbd2cSJim Jagielski     aNextLB            (this, SW_RES(LB_NEXT)),
2949*b1cdbd2cSJim Jagielski 
2950*b1cdbd2cSJim Jagielski     aProtectFL         (this, SW_RES(FL_PROTECT)),
2951*b1cdbd2cSJim Jagielski     aProtectContentCB  (this, SW_RES(CB_PROTECT_CONTENT)),
2952*b1cdbd2cSJim Jagielski     aProtectFrameCB    (this, SW_RES(CB_PROTECT_FRAME)),
2953*b1cdbd2cSJim Jagielski     aProtectSizeCB     (this, SW_RES(CB_PROTECT_SIZE)),
2954*b1cdbd2cSJim Jagielski     aExtFL             (this, SW_RES(FL_EXT)),
2955*b1cdbd2cSJim Jagielski 
2956*b1cdbd2cSJim Jagielski     aEditInReadonlyCB  (this, SW_RES(CB_EDIT_IN_READONLY)),
2957*b1cdbd2cSJim Jagielski     aPrintFrameCB      (this, SW_RES(CB_PRINT_FRAME)),
2958*b1cdbd2cSJim Jagielski     aTextFlowFT        (this, SW_RES(FT_TEXTFLOW)),
2959*b1cdbd2cSJim Jagielski 	aTextFlowLB		   (this, SW_RES(LB_TEXTFLOW)),
2960*b1cdbd2cSJim Jagielski 
2961*b1cdbd2cSJim Jagielski     pWrtSh(0),
2962*b1cdbd2cSJim Jagielski 
2963*b1cdbd2cSJim Jagielski     nDlgType(0),
2964*b1cdbd2cSJim Jagielski     bHtmlMode(sal_False),
2965*b1cdbd2cSJim Jagielski     bFormat(sal_False),
2966*b1cdbd2cSJim Jagielski     bNew(sal_False)
2967*b1cdbd2cSJim Jagielski {
2968*b1cdbd2cSJim Jagielski 	FreeResource();
2969*b1cdbd2cSJim Jagielski 
2970*b1cdbd2cSJim Jagielski }
2971*b1cdbd2cSJim Jagielski 
2972*b1cdbd2cSJim Jagielski /*-----------------13.11.96 13.15-------------------
2973*b1cdbd2cSJim Jagielski 
2974*b1cdbd2cSJim Jagielski --------------------------------------------------*/
2975*b1cdbd2cSJim Jagielski 
~SwFrmAddPage()2976*b1cdbd2cSJim Jagielski SwFrmAddPage::~SwFrmAddPage()
2977*b1cdbd2cSJim Jagielski {
2978*b1cdbd2cSJim Jagielski }
2979*b1cdbd2cSJim Jagielski 
2980*b1cdbd2cSJim Jagielski /*-----------------13.11.96 13.15-------------------
2981*b1cdbd2cSJim Jagielski 
2982*b1cdbd2cSJim Jagielski --------------------------------------------------*/
2983*b1cdbd2cSJim Jagielski 
Create(Window * pParent,const SfxItemSet & rSet)2984*b1cdbd2cSJim Jagielski SfxTabPage* SwFrmAddPage::Create(Window *pParent, const SfxItemSet &rSet)
2985*b1cdbd2cSJim Jagielski {
2986*b1cdbd2cSJim Jagielski 	return new SwFrmAddPage(pParent, rSet);
2987*b1cdbd2cSJim Jagielski }
2988*b1cdbd2cSJim Jagielski 
2989*b1cdbd2cSJim Jagielski /*-----------------13.11.96 13.14-------------------
2990*b1cdbd2cSJim Jagielski 
2991*b1cdbd2cSJim Jagielski --------------------------------------------------*/
2992*b1cdbd2cSJim Jagielski 
Reset(const SfxItemSet & rSet)2993*b1cdbd2cSJim Jagielski void SwFrmAddPage::Reset(const SfxItemSet &rSet )
2994*b1cdbd2cSJim Jagielski {
2995*b1cdbd2cSJim Jagielski 	const SfxPoolItem* pItem;
2996*b1cdbd2cSJim Jagielski 	sal_uInt16 nHtmlMode = ::GetHtmlMode((const SwDocShell*)SfxObjectShell::Current());
2997*b1cdbd2cSJim Jagielski 	bHtmlMode = nHtmlMode & HTMLMODE_ON ? sal_True : sal_False;
2998*b1cdbd2cSJim Jagielski 	if(bHtmlMode)
2999*b1cdbd2cSJim Jagielski 	{
3000*b1cdbd2cSJim Jagielski 		aProtectContentCB .Hide();
3001*b1cdbd2cSJim Jagielski 		aProtectFrameCB   .Hide();
3002*b1cdbd2cSJim Jagielski 		aProtectSizeCB    .Hide();
3003*b1cdbd2cSJim Jagielski 		aEditInReadonlyCB .Hide();
3004*b1cdbd2cSJim Jagielski 		aPrintFrameCB     .Hide();
3005*b1cdbd2cSJim Jagielski         aExtFL            .Hide();
3006*b1cdbd2cSJim Jagielski         aProtectFL.Hide();
3007*b1cdbd2cSJim Jagielski 	}
3008*b1cdbd2cSJim Jagielski 	if ( DLG_FRM_GRF == nDlgType || DLG_FRM_OLE == nDlgType )
3009*b1cdbd2cSJim Jagielski 	{
3010*b1cdbd2cSJim Jagielski 		aEditInReadonlyCB.Hide();
3011*b1cdbd2cSJim Jagielski 		aPrintFrameCB.SetPosPixel(aEditInReadonlyCB.GetPosPixel());
3012*b1cdbd2cSJim Jagielski 	}
3013*b1cdbd2cSJim Jagielski 
3014*b1cdbd2cSJim Jagielski 	if(SFX_ITEM_SET == rSet.GetItemState(FN_SET_FRM_ALT_NAME, sal_False, &pItem))
3015*b1cdbd2cSJim Jagielski 	{
3016*b1cdbd2cSJim Jagielski 		aAltNameED.SetText(((const SfxStringItem*)pItem)->GetValue());
3017*b1cdbd2cSJim Jagielski 		aAltNameED.SaveValue();
3018*b1cdbd2cSJim Jagielski 	}
3019*b1cdbd2cSJim Jagielski 
3020*b1cdbd2cSJim Jagielski 	if(!bFormat)
3021*b1cdbd2cSJim Jagielski 	{
3022*b1cdbd2cSJim Jagielski 		// Grafik einfuegen - Eigenschaften
3023*b1cdbd2cSJim Jagielski 		// bNew ist nicht gesetzt, deswegen ueber Selektion erkennen
3024*b1cdbd2cSJim Jagielski 		String aTmpName1;
3025*b1cdbd2cSJim Jagielski 		if(SFX_ITEM_SET == rSet.GetItemState(FN_SET_FRM_NAME, sal_False, &pItem))
3026*b1cdbd2cSJim Jagielski 		{
3027*b1cdbd2cSJim Jagielski 			aTmpName1 = ((const SfxStringItem*)pItem)->GetValue();
3028*b1cdbd2cSJim Jagielski 		}
3029*b1cdbd2cSJim Jagielski 
3030*b1cdbd2cSJim Jagielski 		DBG_ASSERT(pWrtSh, "keine Shell?");
3031*b1cdbd2cSJim Jagielski 		if( bNew || !aTmpName1.Len() )
3032*b1cdbd2cSJim Jagielski 
3033*b1cdbd2cSJim Jagielski 			switch( nDlgType )
3034*b1cdbd2cSJim Jagielski 			{
3035*b1cdbd2cSJim Jagielski 				case DLG_FRM_GRF:
3036*b1cdbd2cSJim Jagielski 					aTmpName1 = pWrtSh->GetUniqueGrfName();
3037*b1cdbd2cSJim Jagielski 					break;
3038*b1cdbd2cSJim Jagielski 				case DLG_FRM_OLE:
3039*b1cdbd2cSJim Jagielski 					aTmpName1 = pWrtSh->GetUniqueOLEName();
3040*b1cdbd2cSJim Jagielski 					break;
3041*b1cdbd2cSJim Jagielski 				default:
3042*b1cdbd2cSJim Jagielski 					aTmpName1 = pWrtSh->GetUniqueFrameName();
3043*b1cdbd2cSJim Jagielski 					break;
3044*b1cdbd2cSJim Jagielski 			}
3045*b1cdbd2cSJim Jagielski 
3046*b1cdbd2cSJim Jagielski 		aNameED.SetText( aTmpName1 );
3047*b1cdbd2cSJim Jagielski 		aNameED.SaveValue();
3048*b1cdbd2cSJim Jagielski 	}
3049*b1cdbd2cSJim Jagielski 	else
3050*b1cdbd2cSJim Jagielski 	{
3051*b1cdbd2cSJim Jagielski 		aNameED.Enable( sal_False );
3052*b1cdbd2cSJim Jagielski 		aAltNameED.Enable(sal_False);
3053*b1cdbd2cSJim Jagielski 		aNameFT.Enable( sal_False );
3054*b1cdbd2cSJim Jagielski 		aAltNameFT.Enable(sal_False);
3055*b1cdbd2cSJim Jagielski         aNamesFL.Enable(sal_False);
3056*b1cdbd2cSJim Jagielski 	}
3057*b1cdbd2cSJim Jagielski     if(nDlgType == DLG_FRM_STD && aAltNameFT.IsVisible())
3058*b1cdbd2cSJim Jagielski 	{
3059*b1cdbd2cSJim Jagielski 		aAltNameFT.Hide();
3060*b1cdbd2cSJim Jagielski 		aAltNameED.Hide();
3061*b1cdbd2cSJim Jagielski         //move all controls one step up
3062*b1cdbd2cSJim Jagielski         Window* aWindows[] =
3063*b1cdbd2cSJim Jagielski         {
3064*b1cdbd2cSJim Jagielski             &aPrevFT,
3065*b1cdbd2cSJim Jagielski             &aPrevLB,
3066*b1cdbd2cSJim Jagielski             &aNextFT,
3067*b1cdbd2cSJim Jagielski             &aNextLB,
3068*b1cdbd2cSJim Jagielski             &aNamesFL,
3069*b1cdbd2cSJim Jagielski             &aProtectContentCB,
3070*b1cdbd2cSJim Jagielski             &aProtectFrameCB,
3071*b1cdbd2cSJim Jagielski             &aProtectSizeCB,
3072*b1cdbd2cSJim Jagielski             &aProtectFL,
3073*b1cdbd2cSJim Jagielski             &aEditInReadonlyCB,
3074*b1cdbd2cSJim Jagielski             &aPrintFrameCB,
3075*b1cdbd2cSJim Jagielski             &aTextFlowFT,
3076*b1cdbd2cSJim Jagielski             &aTextFlowLB,
3077*b1cdbd2cSJim Jagielski             &aExtFL,
3078*b1cdbd2cSJim Jagielski             0
3079*b1cdbd2cSJim Jagielski         };
3080*b1cdbd2cSJim Jagielski         sal_Int32 nOffset = aAltNameED.GetPosPixel().Y() - aNameED.GetPosPixel().Y();
3081*b1cdbd2cSJim Jagielski         sal_Int32 nIdx = 0;
3082*b1cdbd2cSJim Jagielski         while(aWindows[nIdx])
3083*b1cdbd2cSJim Jagielski         {
3084*b1cdbd2cSJim Jagielski             lcl_Move(*aWindows[nIdx++], nOffset);
3085*b1cdbd2cSJim Jagielski         }
3086*b1cdbd2cSJim Jagielski 	}
3087*b1cdbd2cSJim Jagielski 	else
3088*b1cdbd2cSJim Jagielski 	{
3089*b1cdbd2cSJim Jagielski 		aNameED.SetModifyHdl(LINK(this, SwFrmAddPage, EditModifyHdl));
3090*b1cdbd2cSJim Jagielski 	}
3091*b1cdbd2cSJim Jagielski 
3092*b1cdbd2cSJim Jagielski 	if (!bNew)
3093*b1cdbd2cSJim Jagielski 	{
3094*b1cdbd2cSJim Jagielski 		SwFrmFmt* pFmt = pWrtSh->GetFlyFrmFmt();
3095*b1cdbd2cSJim Jagielski 
3096*b1cdbd2cSJim Jagielski 		if (pFmt)
3097*b1cdbd2cSJim Jagielski 		{
3098*b1cdbd2cSJim Jagielski 			const SwFmtChain &rChain = pFmt->GetChain();
3099*b1cdbd2cSJim Jagielski 			const SwFlyFrmFmt* pFlyFmt;
3100*b1cdbd2cSJim Jagielski             String sNextChain, sPrevChain;
3101*b1cdbd2cSJim Jagielski 			if ((pFlyFmt = rChain.GetPrev()) != 0)
3102*b1cdbd2cSJim Jagielski 			{
3103*b1cdbd2cSJim Jagielski                 sPrevChain = pFlyFmt->GetName();
3104*b1cdbd2cSJim Jagielski 			}
3105*b1cdbd2cSJim Jagielski 
3106*b1cdbd2cSJim Jagielski 			if ((pFlyFmt = rChain.GetNext()) != 0)
3107*b1cdbd2cSJim Jagielski 			{
3108*b1cdbd2cSJim Jagielski                 sNextChain = pFlyFmt->GetName();
3109*b1cdbd2cSJim Jagielski 			}
3110*b1cdbd2cSJim Jagielski             //determine chainable frames
3111*b1cdbd2cSJim Jagielski             ::std::vector< String > aPrevPageFrames;
3112*b1cdbd2cSJim Jagielski             ::std::vector< String > aThisPageFrames;
3113*b1cdbd2cSJim Jagielski             ::std::vector< String > aNextPageFrames;
3114*b1cdbd2cSJim Jagielski             ::std::vector< String > aRemainFrames;
3115*b1cdbd2cSJim Jagielski             pWrtSh->GetConnectableFrmFmts(*pFmt, sNextChain, sal_False,
3116*b1cdbd2cSJim Jagielski                             aPrevPageFrames, aThisPageFrames, aNextPageFrames, aRemainFrames );
3117*b1cdbd2cSJim Jagielski             lcl_InsertVectors(aPrevLB, aPrevPageFrames, aThisPageFrames, aNextPageFrames, aRemainFrames);
3118*b1cdbd2cSJim Jagielski             if(sPrevChain.Len())
3119*b1cdbd2cSJim Jagielski             {
3120*b1cdbd2cSJim Jagielski                 if(LISTBOX_ENTRY_NOTFOUND == aPrevLB.GetEntryPos(sPrevChain))
3121*b1cdbd2cSJim Jagielski                     aPrevLB.InsertEntry(sPrevChain, 1);
3122*b1cdbd2cSJim Jagielski                 aPrevLB.SelectEntry(sPrevChain);
3123*b1cdbd2cSJim Jagielski             }
3124*b1cdbd2cSJim Jagielski             else
3125*b1cdbd2cSJim Jagielski                 aPrevLB.SelectEntryPos(0);
3126*b1cdbd2cSJim Jagielski             aPrevPageFrames.erase(aPrevPageFrames.begin(), aPrevPageFrames.end());
3127*b1cdbd2cSJim Jagielski             aNextPageFrames.erase(aNextPageFrames.begin(), aNextPageFrames.end());
3128*b1cdbd2cSJim Jagielski             aThisPageFrames.erase(aThisPageFrames.begin(), aThisPageFrames.end());
3129*b1cdbd2cSJim Jagielski             aRemainFrames.erase(aRemainFrames.begin(), aRemainFrames.end());
3130*b1cdbd2cSJim Jagielski 
3131*b1cdbd2cSJim Jagielski 
3132*b1cdbd2cSJim Jagielski             pWrtSh->GetConnectableFrmFmts(*pFmt, sPrevChain, sal_True,
3133*b1cdbd2cSJim Jagielski                             aPrevPageFrames, aThisPageFrames, aNextPageFrames, aRemainFrames );
3134*b1cdbd2cSJim Jagielski             lcl_InsertVectors(aNextLB, aPrevPageFrames, aThisPageFrames, aNextPageFrames, aRemainFrames);
3135*b1cdbd2cSJim Jagielski             if(sNextChain.Len())
3136*b1cdbd2cSJim Jagielski             {
3137*b1cdbd2cSJim Jagielski                 if(LISTBOX_ENTRY_NOTFOUND == aNextLB.GetEntryPos(sNextChain))
3138*b1cdbd2cSJim Jagielski                     aNextLB.InsertEntry(sNextChain, 1);
3139*b1cdbd2cSJim Jagielski                 aNextLB.SelectEntry(sNextChain);
3140*b1cdbd2cSJim Jagielski             }
3141*b1cdbd2cSJim Jagielski             else
3142*b1cdbd2cSJim Jagielski                 aNextLB.SelectEntryPos(0);
3143*b1cdbd2cSJim Jagielski             Link aLink(LINK(this, SwFrmAddPage, ChainModifyHdl));
3144*b1cdbd2cSJim Jagielski             aPrevLB.SetSelectHdl(aLink);
3145*b1cdbd2cSJim Jagielski             aNextLB.SetSelectHdl(aLink);
3146*b1cdbd2cSJim Jagielski         }
3147*b1cdbd2cSJim Jagielski 	}
3148*b1cdbd2cSJim Jagielski 	// Pos Protected
3149*b1cdbd2cSJim Jagielski 	const SvxProtectItem& rProt = (const SvxProtectItem& )rSet.Get(RES_PROTECT);
3150*b1cdbd2cSJim Jagielski 	aProtectFrameCB.Check(rProt.IsPosProtected());
3151*b1cdbd2cSJim Jagielski 	aProtectContentCB.Check(rProt.IsCntntProtected());
3152*b1cdbd2cSJim Jagielski 	aProtectSizeCB.Check(rProt.IsSizeProtected());
3153*b1cdbd2cSJim Jagielski 
3154*b1cdbd2cSJim Jagielski 	const SwFmtEditInReadonly& rEdit = (const SwFmtEditInReadonly& )rSet.Get(RES_EDIT_IN_READONLY);
3155*b1cdbd2cSJim Jagielski 	aEditInReadonlyCB.Check(rEdit.GetValue());			aEditInReadonlyCB.SaveValue();
3156*b1cdbd2cSJim Jagielski 
3157*b1cdbd2cSJim Jagielski 	// drucken
3158*b1cdbd2cSJim Jagielski 	const SvxPrintItem& rPrt = (const SvxPrintItem&)rSet.Get(RES_PRINT);
3159*b1cdbd2cSJim Jagielski 	aPrintFrameCB.Check(rPrt.GetValue());				aPrintFrameCB.SaveValue();
3160*b1cdbd2cSJim Jagielski 
3161*b1cdbd2cSJim Jagielski 	// textflow
3162*b1cdbd2cSJim Jagielski 	SfxItemState eState;
3163*b1cdbd2cSJim Jagielski     if( (!bHtmlMode || (0 != (nHtmlMode&HTMLMODE_SOME_STYLES)))
3164*b1cdbd2cSJim Jagielski             && DLG_FRM_GRF != nDlgType && DLG_FRM_OLE != nDlgType &&
3165*b1cdbd2cSJim Jagielski 		SFX_ITEM_UNKNOWN != ( eState = rSet.GetItemState(
3166*b1cdbd2cSJim Jagielski                                         RES_FRAMEDIR, sal_True )) )
3167*b1cdbd2cSJim Jagielski 	{
3168*b1cdbd2cSJim Jagielski 		aTextFlowFT.Show();
3169*b1cdbd2cSJim Jagielski 		aTextFlowLB.Show();
3170*b1cdbd2cSJim Jagielski 
3171*b1cdbd2cSJim Jagielski         //vertical text flow is not possible in HTML
3172*b1cdbd2cSJim Jagielski         if(bHtmlMode)
3173*b1cdbd2cSJim Jagielski         {
3174*b1cdbd2cSJim Jagielski             sal_uLong nData = FRMDIR_VERT_TOP_RIGHT;
3175*b1cdbd2cSJim Jagielski             aTextFlowLB.RemoveEntry(aTextFlowLB.GetEntryPos((void*)nData));
3176*b1cdbd2cSJim Jagielski         }
3177*b1cdbd2cSJim Jagielski         sal_uInt16 nPos, nVal = ((SvxFrameDirectionItem&)rSet.Get(RES_FRAMEDIR)).GetValue();
3178*b1cdbd2cSJim Jagielski 		for( nPos = aTextFlowLB.GetEntryCount(); nPos; )
3179*b1cdbd2cSJim Jagielski 			if( (sal_uInt16)(long)aTextFlowLB.GetEntryData( --nPos ) == nVal )
3180*b1cdbd2cSJim Jagielski 				break;
3181*b1cdbd2cSJim Jagielski 		aTextFlowLB.SelectEntryPos( nPos );
3182*b1cdbd2cSJim Jagielski 		aTextFlowLB.SaveValue();
3183*b1cdbd2cSJim Jagielski 	}
3184*b1cdbd2cSJim Jagielski 	else
3185*b1cdbd2cSJim Jagielski 	{
3186*b1cdbd2cSJim Jagielski 		aTextFlowFT.Hide();
3187*b1cdbd2cSJim Jagielski 		aTextFlowLB.Hide();
3188*b1cdbd2cSJim Jagielski 	}
3189*b1cdbd2cSJim Jagielski }
3190*b1cdbd2cSJim Jagielski 
3191*b1cdbd2cSJim Jagielski /*-----------------13.11.96 13.20-------------------
3192*b1cdbd2cSJim Jagielski 
3193*b1cdbd2cSJim Jagielski --------------------------------------------------*/
3194*b1cdbd2cSJim Jagielski 
FillItemSet(SfxItemSet & rSet)3195*b1cdbd2cSJim Jagielski sal_Bool SwFrmAddPage::FillItemSet(SfxItemSet &rSet)
3196*b1cdbd2cSJim Jagielski {
3197*b1cdbd2cSJim Jagielski 	sal_Bool bRet = sal_False;
3198*b1cdbd2cSJim Jagielski 	if (aNameED.GetText() != aNameED.GetSavedValue())
3199*b1cdbd2cSJim Jagielski 		bRet |= 0 != rSet.Put(SfxStringItem(FN_SET_FRM_NAME, aNameED.GetText()));
3200*b1cdbd2cSJim Jagielski 	if (aAltNameED.GetText()  != aAltNameED.GetSavedValue())
3201*b1cdbd2cSJim Jagielski 		bRet |= 0 != rSet.Put(SfxStringItem(FN_SET_FRM_ALT_NAME, aAltNameED.GetText()));
3202*b1cdbd2cSJim Jagielski 
3203*b1cdbd2cSJim Jagielski 	const SfxPoolItem* pOldItem;
3204*b1cdbd2cSJim Jagielski 	SvxProtectItem aProt ( (const SvxProtectItem& )GetItemSet().Get(RES_PROTECT) );
3205*b1cdbd2cSJim Jagielski 	aProt.SetCntntProtect( aProtectContentCB.IsChecked() );
3206*b1cdbd2cSJim Jagielski 	aProt.SetSizeProtect ( aProtectSizeCB.IsChecked() );
3207*b1cdbd2cSJim Jagielski 	aProt.SetPosProtect  ( aProtectFrameCB.IsChecked() );
3208*b1cdbd2cSJim Jagielski 	if ( 0 == (pOldItem = GetOldItem(rSet, FN_SET_PROTECT)) ||
3209*b1cdbd2cSJim Jagielski 				aProt != *pOldItem )
3210*b1cdbd2cSJim Jagielski 		bRet |= 0 != rSet.Put( aProt);
3211*b1cdbd2cSJim Jagielski 
3212*b1cdbd2cSJim Jagielski 	sal_Bool bChecked;
3213*b1cdbd2cSJim Jagielski 	if ( (bChecked = aEditInReadonlyCB.IsChecked()) != aEditInReadonlyCB.GetSavedValue() )
3214*b1cdbd2cSJim Jagielski 		bRet |= 0 != rSet.Put( SwFmtEditInReadonly( RES_EDIT_IN_READONLY, bChecked));
3215*b1cdbd2cSJim Jagielski 
3216*b1cdbd2cSJim Jagielski 	if ( (bChecked = aPrintFrameCB.IsChecked()) != aPrintFrameCB.GetSavedValue() )
3217*b1cdbd2cSJim Jagielski 		bRet |= 0 != rSet.Put( SvxPrintItem( RES_PRINT, bChecked));
3218*b1cdbd2cSJim Jagielski 
3219*b1cdbd2cSJim Jagielski 	// textflow
3220*b1cdbd2cSJim Jagielski 	if( aTextFlowLB.IsVisible() )
3221*b1cdbd2cSJim Jagielski 	{
3222*b1cdbd2cSJim Jagielski 		sal_uInt16 nPos = aTextFlowLB.GetSelectEntryPos();
3223*b1cdbd2cSJim Jagielski 		if( nPos != aTextFlowLB.GetSavedValue() )
3224*b1cdbd2cSJim Jagielski 		{
3225*b1cdbd2cSJim Jagielski 			nPos = (sal_uInt16)(long)aTextFlowLB.GetEntryData( nPos );
3226*b1cdbd2cSJim Jagielski 			bRet |= 0 != rSet.Put( SvxFrameDirectionItem(
3227*b1cdbd2cSJim Jagielski 									(SvxFrameDirection)nPos, RES_FRAMEDIR ));
3228*b1cdbd2cSJim Jagielski 		}
3229*b1cdbd2cSJim Jagielski 	}
3230*b1cdbd2cSJim Jagielski     if(pWrtSh)
3231*b1cdbd2cSJim Jagielski     {
3232*b1cdbd2cSJim Jagielski         const SwFrmFmt* pFmt = pWrtSh->GetFlyFrmFmt();
3233*b1cdbd2cSJim Jagielski 		if (pFmt)
3234*b1cdbd2cSJim Jagielski 		{
3235*b1cdbd2cSJim Jagielski             String sCurrentPrevChain, sCurrentNextChain;
3236*b1cdbd2cSJim Jagielski             if(aPrevLB.GetSelectEntryPos())
3237*b1cdbd2cSJim Jagielski                 sCurrentPrevChain = aPrevLB.GetSelectEntry();
3238*b1cdbd2cSJim Jagielski             if(aNextLB.GetSelectEntryPos())
3239*b1cdbd2cSJim Jagielski                 sCurrentNextChain = aNextLB.GetSelectEntry();
3240*b1cdbd2cSJim Jagielski             const SwFmtChain &rChain = pFmt->GetChain();
3241*b1cdbd2cSJim Jagielski 			const SwFlyFrmFmt* pFlyFmt;
3242*b1cdbd2cSJim Jagielski             String sNextChain, sPrevChain;
3243*b1cdbd2cSJim Jagielski 			if ((pFlyFmt = rChain.GetPrev()) != 0)
3244*b1cdbd2cSJim Jagielski                 sPrevChain = pFlyFmt->GetName();
3245*b1cdbd2cSJim Jagielski 
3246*b1cdbd2cSJim Jagielski 			if ((pFlyFmt = rChain.GetNext()) != 0)
3247*b1cdbd2cSJim Jagielski                 sNextChain = pFlyFmt->GetName();
3248*b1cdbd2cSJim Jagielski             if(sPrevChain != sCurrentPrevChain)
3249*b1cdbd2cSJim Jagielski                 bRet |= 0 != rSet.Put(SfxStringItem(FN_PARAM_CHAIN_PREVIOUS, sCurrentPrevChain));
3250*b1cdbd2cSJim Jagielski             if(sNextChain != sCurrentNextChain)
3251*b1cdbd2cSJim Jagielski                 bRet |= 0 != rSet.Put(SfxStringItem(FN_PARAM_CHAIN_NEXT, sCurrentNextChain));
3252*b1cdbd2cSJim Jagielski         }
3253*b1cdbd2cSJim Jagielski     }
3254*b1cdbd2cSJim Jagielski     return bRet;
3255*b1cdbd2cSJim Jagielski }
3256*b1cdbd2cSJim Jagielski 
3257*b1cdbd2cSJim Jagielski /*-----------------13.11.96 15.05-------------------
3258*b1cdbd2cSJim Jagielski 
3259*b1cdbd2cSJim Jagielski --------------------------------------------------*/
3260*b1cdbd2cSJim Jagielski 
GetRanges()3261*b1cdbd2cSJim Jagielski sal_uInt16* SwFrmAddPage::GetRanges()
3262*b1cdbd2cSJim Jagielski {
3263*b1cdbd2cSJim Jagielski 	return aAddPgRg;
3264*b1cdbd2cSJim Jagielski }
3265*b1cdbd2cSJim Jagielski 
3266*b1cdbd2cSJim Jagielski /*-----------------13.11.96 16.12-------------------
3267*b1cdbd2cSJim Jagielski 
3268*b1cdbd2cSJim Jagielski --------------------------------------------------*/
3269*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwFrmAddPage,EditModifyHdl,Edit *,EMPTYARG)3270*b1cdbd2cSJim Jagielski IMPL_LINK(SwFrmAddPage, EditModifyHdl, Edit*, EMPTYARG)
3271*b1cdbd2cSJim Jagielski {
3272*b1cdbd2cSJim Jagielski 	sal_Bool bEnable = 0 != aNameED.GetText().Len();
3273*b1cdbd2cSJim Jagielski 	aAltNameED.Enable(bEnable);
3274*b1cdbd2cSJim Jagielski 	aAltNameFT.Enable(bEnable);
3275*b1cdbd2cSJim Jagielski 
3276*b1cdbd2cSJim Jagielski 	return 0;
3277*b1cdbd2cSJim Jagielski }
3278*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
SetFormatUsed(sal_Bool bFmt)3279*b1cdbd2cSJim Jagielski void	SwFrmAddPage::SetFormatUsed(sal_Bool bFmt)
3280*b1cdbd2cSJim Jagielski {
3281*b1cdbd2cSJim Jagielski 	bFormat  = bFmt;
3282*b1cdbd2cSJim Jagielski 	if(bFormat)
3283*b1cdbd2cSJim Jagielski 	{
3284*b1cdbd2cSJim Jagielski 		aNameFT.Show(sal_False);
3285*b1cdbd2cSJim Jagielski 		aNameED.Show(sal_False);
3286*b1cdbd2cSJim Jagielski 		aAltNameFT.Show(sal_False);
3287*b1cdbd2cSJim Jagielski 		aAltNameED.Show(sal_False);
3288*b1cdbd2cSJim Jagielski 		aPrevFT.Show(sal_False);
3289*b1cdbd2cSJim Jagielski         aPrevLB.Show(sal_False);
3290*b1cdbd2cSJim Jagielski 		aNextFT.Show(sal_False);
3291*b1cdbd2cSJim Jagielski         aNextLB.Show(sal_False);
3292*b1cdbd2cSJim Jagielski         aNamesFL.Show(sal_False);
3293*b1cdbd2cSJim Jagielski 
3294*b1cdbd2cSJim Jagielski         sal_Int32 nDiff = aExtFL.GetPosPixel().Y() - aNamesFL.GetPosPixel().Y();
3295*b1cdbd2cSJim Jagielski         Window* aWindows[] =
3296*b1cdbd2cSJim Jagielski         {
3297*b1cdbd2cSJim Jagielski             &aProtectContentCB,
3298*b1cdbd2cSJim Jagielski             &aProtectFrameCB,
3299*b1cdbd2cSJim Jagielski             &aProtectSizeCB,
3300*b1cdbd2cSJim Jagielski             &aProtectFL,
3301*b1cdbd2cSJim Jagielski             &aEditInReadonlyCB,
3302*b1cdbd2cSJim Jagielski             &aPrintFrameCB,
3303*b1cdbd2cSJim Jagielski             &aExtFL,
3304*b1cdbd2cSJim Jagielski             &aTextFlowFT,
3305*b1cdbd2cSJim Jagielski             &aTextFlowLB,
3306*b1cdbd2cSJim Jagielski             0
3307*b1cdbd2cSJim Jagielski         };
3308*b1cdbd2cSJim Jagielski         sal_Int32 nIdx = 0;
3309*b1cdbd2cSJim Jagielski         while(aWindows[nIdx])
3310*b1cdbd2cSJim Jagielski             lcl_Move(*aWindows[nIdx++], nDiff);
3311*b1cdbd2cSJim Jagielski 	}
3312*b1cdbd2cSJim Jagielski }
3313*b1cdbd2cSJim Jagielski /* -----------------------------08.08.2002 16:24------------------------------
3314*b1cdbd2cSJim Jagielski 
3315*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
IMPL_LINK(SwFrmAddPage,ChainModifyHdl,ListBox *,pBox)3316*b1cdbd2cSJim Jagielski IMPL_LINK(SwFrmAddPage, ChainModifyHdl, ListBox*, pBox)
3317*b1cdbd2cSJim Jagielski {
3318*b1cdbd2cSJim Jagielski     String sCurrentPrevChain, sCurrentNextChain;
3319*b1cdbd2cSJim Jagielski     if(aPrevLB.GetSelectEntryPos())
3320*b1cdbd2cSJim Jagielski         sCurrentPrevChain = aPrevLB.GetSelectEntry();
3321*b1cdbd2cSJim Jagielski     if(aNextLB.GetSelectEntryPos())
3322*b1cdbd2cSJim Jagielski         sCurrentNextChain = aNextLB.GetSelectEntry();
3323*b1cdbd2cSJim Jagielski     SwFrmFmt* pFmt = pWrtSh->GetFlyFrmFmt();
3324*b1cdbd2cSJim Jagielski     if (pFmt)
3325*b1cdbd2cSJim Jagielski     {
3326*b1cdbd2cSJim Jagielski         sal_Bool bNextBox = &aNextLB == pBox;
3327*b1cdbd2cSJim Jagielski         ListBox& rChangeLB = bNextBox ? aPrevLB : aNextLB;
3328*b1cdbd2cSJim Jagielski         for(sal_uInt16 nEntry = rChangeLB.GetEntryCount(); nEntry > 1; nEntry--)
3329*b1cdbd2cSJim Jagielski             rChangeLB.RemoveEntry(nEntry - 1);
3330*b1cdbd2cSJim Jagielski         //determine chainable frames
3331*b1cdbd2cSJim Jagielski         ::std::vector< String > aPrevPageFrames;
3332*b1cdbd2cSJim Jagielski         ::std::vector< String > aThisPageFrames;
3333*b1cdbd2cSJim Jagielski         ::std::vector< String > aNextPageFrames;
3334*b1cdbd2cSJim Jagielski         ::std::vector< String > aRemainFrames;
3335*b1cdbd2cSJim Jagielski         pWrtSh->GetConnectableFrmFmts(*pFmt, bNextBox ? sCurrentNextChain : sCurrentPrevChain, !bNextBox,
3336*b1cdbd2cSJim Jagielski                         aPrevPageFrames, aThisPageFrames, aNextPageFrames, aRemainFrames );
3337*b1cdbd2cSJim Jagielski         lcl_InsertVectors(rChangeLB,
3338*b1cdbd2cSJim Jagielski                 aPrevPageFrames, aThisPageFrames, aNextPageFrames, aRemainFrames);
3339*b1cdbd2cSJim Jagielski         String sToSelect = bNextBox ? sCurrentPrevChain : sCurrentNextChain;
3340*b1cdbd2cSJim Jagielski         if(rChangeLB.GetEntryPos(sToSelect) != LISTBOX_ENTRY_NOTFOUND)
3341*b1cdbd2cSJim Jagielski             rChangeLB.SelectEntry(sToSelect);
3342*b1cdbd2cSJim Jagielski         else
3343*b1cdbd2cSJim Jagielski             rChangeLB.SelectEntryPos(0);
3344*b1cdbd2cSJim Jagielski 
3345*b1cdbd2cSJim Jagielski     }
3346*b1cdbd2cSJim Jagielski     return 0;
3347*b1cdbd2cSJim Jagielski }
3348