fixes 0003521: Import of csv file into Spreadsheet does not work if the path contains non ASCII characters
This commit is contained in:
@@ -35,8 +35,10 @@
|
||||
#include <App/DynamicProperty.h>
|
||||
#include <App/FeaturePythonPyImp.h>
|
||||
#include <Base/Exception.h>
|
||||
#include <Base/FileInfo.h>
|
||||
#include <Base/Placement.h>
|
||||
#include <Base/Reader.h>
|
||||
#include <Base/Stream.h>
|
||||
#include <Base/Writer.h>
|
||||
#include <Base/Tools.h>
|
||||
#include "Sheet.h"
|
||||
@@ -140,7 +142,8 @@ void Sheet::clearAll()
|
||||
|
||||
bool Sheet::importFromFile(const std::string &filename, char delimiter, char quoteChar, char escapeChar)
|
||||
{
|
||||
std::ifstream file;
|
||||
Base::FileInfo fi(filename);
|
||||
Base::ifstream file(fi);
|
||||
int row = 0;
|
||||
|
||||
PropertySheet::AtomicPropertyChange signaller(cells);
|
||||
|
||||
@@ -73,17 +73,19 @@ public:
|
||||
private:
|
||||
Py::Object open(const Py::Tuple& args)
|
||||
{
|
||||
const char* Name;
|
||||
char* Name;
|
||||
const char* DocName=0;
|
||||
if (!PyArg_ParseTuple(args.ptr(), "s|s",&Name,&DocName))
|
||||
if (!PyArg_ParseTuple(args.ptr(), "et|s","utf-8",&Name,&DocName))
|
||||
throw Py::Exception();
|
||||
std::string EncodedName = std::string(Name);
|
||||
PyMem_Free(Name);
|
||||
|
||||
try {
|
||||
Base::FileInfo file(Name);
|
||||
Base::FileInfo file(EncodedName);
|
||||
App::Document *pcDoc = App::GetApplication().newDocument(DocName ? DocName : QT_TR_NOOP("Unnamed"));
|
||||
Spreadsheet::Sheet *pcSheet = static_cast<Spreadsheet::Sheet *>(pcDoc->addObject("Spreadsheet::Sheet", file.fileNamePure().c_str()));
|
||||
|
||||
pcSheet->importFromFile(Name, '\t', '"', '\\');
|
||||
pcSheet->importFromFile(EncodedName, '\t', '"', '\\');
|
||||
pcSheet->execute();
|
||||
}
|
||||
catch (const Base::Exception& e) {
|
||||
|
||||
Reference in New Issue
Block a user