improve unicode handling when setting Start page

This commit is contained in:
wmayer
2018-10-05 15:36:34 +02:00
parent 907b6f2a8f
commit 7f4cbee47d
4 changed files with 37 additions and 2 deletions

View File

@@ -3,6 +3,7 @@ add_subdirectory(App)
set(Web_Scripts
Init.py
TestWebGui.py
)
if(BUILD_GUI)

View File

@@ -119,10 +119,14 @@ Py::Object BrowserViewPy::setHtml(const Py::Tuple& args)
{
char* HtmlCode;
char* BaseUrl;
if (! PyArg_ParseTuple(args.ptr(), "ss",&HtmlCode,&BaseUrl))
if (!PyArg_ParseTuple(args.ptr(), "et|s","utf-8",&HtmlCode,&BaseUrl))
throw Py::Exception();
std::string EncodedHtml = std::string(HtmlCode);
PyMem_Free(HtmlCode);
if (myWebView)
myWebView->setHtml(QString::fromUtf8(HtmlCode),QUrl(QString::fromLatin1(BaseUrl)));
myWebView->setHtml(QString::fromUtf8(EncodedHtml.c_str()), QUrl(QString::fromLatin1(BaseUrl)));
return Py::None();
}
}

View File

@@ -46,3 +46,5 @@ class WebWorkbench ( Workbench ):
return "WebGui::Workbench"
Gui.addWorkbench(WebWorkbench())
FreeCAD.__unit_test__ += [ "TestWebGui" ]

28
src/Mod/Web/TestWebGui.py Normal file
View File

@@ -0,0 +1,28 @@
# Copyright (c) 2018 Werner Mayer <wmayer[at]users.sourceforge.net> *
# *
# This file is part of the FreeCAD CAx development system. *
# *
# This program is free software; you can redistribute it and/or modify *
# it under the terms of the GNU Lesser General Public License (LGPL) *
# as published by the Free Software Foundation; either version 2 of *
# the License, or (at your option) any later version. *
# for detail see the LICENCE text file. *
# *
# FreeCAD is distributed in the hope that it will be useful, *
# but WITHOUT ANY WARRANTY; without even the implied warranty of *
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
# GNU Library General Public License for more details. *
# *
# You should have received a copy of the GNU Library General Public *
# License along with FreeCAD; if not, write to the Free Software *
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
# USA *
#**************************************************************************
import FreeCAD, os, sys, unittest, WebGui
class WebGuiTestCases(unittest.TestCase):
def testHtmlCase(self):
bytestr=b'<b>Fran\xc3\xa7ais</b>'
browser=WebGui.openBrowserWindow('Browser')
browser.setHtml(bytestr.decode("utf8"), FreeCAD.getResourceDir())