Как сохранить весь текст из редактора Ace в WT?

Поэтому я встроил редактор Ace в проект WT и загрузил в него копию файла Ace.js в качестве теста, чтобы посмотреть, как он выглядит. Загрузка прошла нормально, так что теперь я попытался сохранить его, и я заметил, что моя функция сохранения не вызывается. После некоторой отладки я заметил, что моя функция сохранения не вызывается, если файл, который я пытаюсь сохранить, превышает 70000-80000 символов, и вызывается нормально и передает данные, если файл меньше. Как обойти это ограничение при попытке сохранить большие файлы? Код, который я запускаю в проекте WT, можно увидеть ниже, а более подробную информацию о том, как его встроить, можно найти здесь Использование ACE с WT

WText *editor;

MyClass::MyClass(const WEnvironment& env)
: WApplication(env)
{
wApp->require("lib/src/ace.js");
// A WContainerWidget is rendered as a div
editor = new WText("function(){\n hello.abc();\n}\n", root());
editor->setInline(false);
editor->resize(500, 500);

std::string editor_ref = editor->jsRef(); // is a text string that will be the element when executed in JS

std::string command = 
  editor_ref + ".editor = ace.edit(" + editor_ref + ");" +
  editor_ref + ".editor.setTheme(\"ace/theme/monokai\");" +
  editor_ref + ".editor.getSession().setMode(\"ace/mode/javascript\");";

editor->doJavaScript(command);    

JSignal <std::string> *jsignal = new JSignal<std::string>(editor, "textChanged");
jsignal->connect(this, &MyClass::textChanged);

WPushButton *b = new WPushButton("Save", root());

command = "function(object, event) {" +
  jsignal->createCall(editor_ref + ".editor.getValue()") +
  ";}";

b->clicked().connect(command);
}

void MyClass::textChanged(std::string incoming)
{

}

Теперь с приведенным выше кодом функция textChanged будет вызываться при нажатии кнопки «Сохранить». Однако, если загружается большой файл, я использовал приведенную ниже функцию и заменил «function () {\ n hello.abc (); \ n} \ n» ее вызовом.

std::string MyClass::ReadFile(std::string path)
{
std::ifstream in(path, std::ios::in | std::ios::binary);
if(in)
{
  std::string contents;
  in.seekg(0, std::ios::end);
  contents.resize(in.tellg());
  in.seekg(0, std::ios::beg);
  in.read(&contents[0], contents.size());
  in.close();
  return(contents);
}
throw(errno);
}

Как упоминалось ранее, я загрузил Ace.js, длина которого составляет около 15 000 строк. Это привело к сбою моего вызова сохранения. Хотя я уверен, что любой другой файл, содержащий более 80 000 символов, также приведет к сбою. Заранее спасибо!


person user2115945    schedule 01.05.2013    source источник


Ответы (1)


Вероятно, необходимо увеличить максимальный размер запроса в wt_config.xml. По умолчанию это 128К.

person user52875    schedule 03.05.2013
comment
В настоящее время я не использую wt_config.xml в своем проекте, я попытаюсь добавить его и установить максимальный размер запроса. - person user2115945; 07.05.2013