1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
21 #include <svtools/htmltokn.h>
22 #include <svtools/asynclink.hxx>
24 #include <sfx2/sfx.hrc>
26 #include <sfx2/frmhtml.hxx>
27 #include <sfx2/docfile.hxx>
28 #include <sfx2/viewfrm.hxx>
29 #include <sfx2/evntconf.hxx>
30 #include <sfx2/request.hxx>
31 #include <sfx2/fcontnr.hxx>
32 #include "sfxtypes.hxx"
34 static sal_Char
const sHTML_SC_yes
[] = "YES";
35 static sal_Char
const sHTML_SC_no
[] = "NO";
36 static sal_Char
const sHTML_SC_auto
[] = "AUTO";
38 #define HTML_O_READONLY "READONLY"
39 #define HTML_O_EDIT "EDIT"
41 static HTMLOptionEnum
const aScollingTable
[] =
43 { sHTML_SC_yes
, ScrollingYes
},
44 { sHTML_SC_no
, ScrollingNo
},
45 { sHTML_SC_auto
, ScrollingAuto
},
49 void SfxFrameHTMLParser::ParseFrameOptions(
50 SfxFrameDescriptor
*pFrame
, const HTMLOptions
& rOptions
, const String
& rBaseURL
)
52 // Get and set the options
53 Size
aMargin( pFrame
->GetMargin() );
55 // Netscape seems to set marginwidth to 0 as soon as
56 // marginheight is set, and vice versa.
57 // Netscape does however not allow for a direct
58 // seting to 0, while IE4.0 does
59 // We will not mimic that bug !
60 sal_Bool bMarginWidth
= sal_False
, bMarginHeight
= sal_False
;
62 for (size_t i
= 0, n
= rOptions
.size(); i
< n
; ++i
)
64 const HTMLOption
& aOption
= rOptions
[i
];
65 switch( aOption
.GetToken() )
67 case HTML_O_BORDERCOLOR
:
70 aOption
.GetColor( aColor
);
71 pFrame
->SetWallpaper( Wallpaper( aColor
) );
77 INetURLObject::GetAbsURL(
78 rBaseURL
, aOption
.GetString())) );
81 pFrame
->SetName( aOption
.GetString() );
83 case HTML_O_MARGINWIDTH
:
84 aMargin
.Width() = aOption
.GetNumber();
88 bMarginWidth
= sal_True
;
90 case HTML_O_MARGINHEIGHT
:
91 aMargin
.Height() = aOption
.GetNumber();
95 bMarginHeight
= sal_True
;
97 case HTML_O_SCROLLING
:
98 pFrame
->SetScrollingMode(
99 (ScrollingMode
)aOption
.GetEnum( aScollingTable
,
102 case HTML_O_FRAMEBORDER
:
104 String aStr
= aOption
.GetString();
105 sal_Bool bBorder
= sal_True
;
106 if ( aStr
.EqualsIgnoreCaseAscii("NO") ||
107 aStr
.EqualsIgnoreCaseAscii("0") )
109 pFrame
->SetFrameBorder( bBorder
);
112 case HTML_O_NORESIZE
:
113 pFrame
->SetResizable( sal_False
);
116 if ( aOption
.GetTokenString().EqualsIgnoreCaseAscii(
119 String aStr
= aOption
.GetString();
120 sal_Bool bReadonly
= sal_True
;
121 if ( aStr
.EqualsIgnoreCaseAscii("FALSE") )
122 bReadonly
= sal_False
;
123 pFrame
->SetReadOnly( bReadonly
);
125 else if ( aOption
.GetTokenString().EqualsIgnoreCaseAscii(
128 String aStr
= aOption
.GetString();
129 sal_Bool bEdit
= sal_True
;
130 if ( aStr
.EqualsIgnoreCaseAscii("FALSE") )
132 pFrame
->SetEditable( bEdit
);
139 pFrame
->SetMargin( aMargin
);
142 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */