Bump version to 4.1-6
[LibreOffice.git] / sfx2 / source / bastyp / frmhtml.cxx
bloba90778225b80b0ee937b67ec6f3bf85b2be06bca
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
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 },
46 { 0, 0 }
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:
69 Color aColor;
70 aOption.GetColor( aColor );
71 pFrame->SetWallpaper( Wallpaper( aColor ) );
72 break;
74 case HTML_O_SRC:
75 pFrame->SetURL(
76 String(
77 INetURLObject::GetAbsURL(
78 rBaseURL, aOption.GetString())) );
79 break;
80 case HTML_O_NAME:
81 pFrame->SetName( aOption.GetString() );
82 break;
83 case HTML_O_MARGINWIDTH:
84 aMargin.Width() = aOption.GetNumber();
86 if( !bMarginHeight )
87 aMargin.Height() = 0;
88 bMarginWidth = sal_True;
89 break;
90 case HTML_O_MARGINHEIGHT:
91 aMargin.Height() = aOption.GetNumber();
93 if( !bMarginWidth )
94 aMargin.Width() = 0;
95 bMarginHeight = sal_True;
96 break;
97 case HTML_O_SCROLLING:
98 pFrame->SetScrollingMode(
99 (ScrollingMode)aOption.GetEnum( aScollingTable,
100 ScrollingAuto ) );
101 break;
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") )
108 bBorder = sal_False;
109 pFrame->SetFrameBorder( bBorder );
110 break;
112 case HTML_O_NORESIZE:
113 pFrame->SetResizable( sal_False );
114 break;
115 default:
116 if ( aOption.GetTokenString().EqualsIgnoreCaseAscii(
117 HTML_O_READONLY ) )
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(
126 HTML_O_EDIT ) )
128 String aStr = aOption.GetString();
129 sal_Bool bEdit = sal_True;
130 if ( aStr.EqualsIgnoreCaseAscii("FALSE") )
131 bEdit = sal_False;
132 pFrame->SetEditable( bEdit );
135 break;
139 pFrame->SetMargin( aMargin );
142 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */