MCPcopy Create free account
hub / github.com/WinMerge/winmerge / Save

Method Save

Src/ProjectFile.cpp:387–461  ·  view source on GitHub ↗

* @brief Save data from member variables to path-file. * @param [in] path Path to project file. * @param [out] sError Error string if error happened. * @return true if saving succeeded, false if error happened. */

Source from the content-addressed store, hash-verified

385 * @return true if saving succeeded, false if error happened.
386 */
387bool ProjectFile::Save(const String& path) const
388{
389 FileStream out(toUTF8(path), FileStream::out | FileStream::trunc);
390 XMLWriter writer(out, XMLWriter::WRITE_XML_DECLARATION | XMLWriter::PRETTY_PRINT);
391 writer.startDocument();
392 writer.startElement("", "", Root_element_name);
393 {
394 for (auto& item : m_items)
395 {
396 writer.startElement("", "", Paths_element_name);
397 {
398 if (!item.m_paths.GetLeft().empty())
399 writeElement(writer, Left_element_name, toUTF8(item.m_paths.GetLeft()));
400 if (!item.m_paths.GetMiddle().empty())
401 writeElement(writer, Middle_element_name, toUTF8(item.m_paths.GetMiddle()));
402 if (!item.m_paths.GetRight().empty())
403 writeElement(writer, Right_element_name, toUTF8(item.m_paths.GetRight()));
404 if (!item.GetLeftDesc().empty())
405 writeElement(writer, Left_desc_element_name, toUTF8(item.GetLeftDesc()));
406 if (!item.GetMiddleDesc().empty())
407 writeElement(writer, Middle_desc_element_name, toUTF8(item.GetMiddleDesc()));
408 if (!item.GetRightDesc().empty())
409 writeElement(writer, Right_desc_element_name, toUTF8(item.GetRightDesc()));
410 if (item.m_bSaveFilter && !item.GetFilter().empty())
411 writeElement(writer, Filter_element_name, toUTF8(item.GetFilter()));
412 if (item.m_bSaveSubfolders)
413 writeElement(writer, Subfolders_element_name, item.GetSubfolders() != 0 ? "1" : "0");
414 writeElement(writer, Left_ro_element_name, item.GetLeftReadOnly() ? "1" : "0");
415 if (!item.m_paths.GetMiddle().empty())
416 writeElement(writer, Middle_ro_element_name, item.GetMiddleReadOnly() ? "1" : "0");
417 writeElement(writer, Right_ro_element_name, item.GetRightReadOnly() ? "1" : "0");
418 if (item.m_bSaveUnpacker && !item.GetUnpacker().empty())
419 writeElement(writer, Unpacker_element_name, toUTF8(item.GetUnpacker()));
420 if (item.m_bSavePrediffer && !item.GetPrediffer().empty())
421 writeElement(writer, Prediffer_element_name, toUTF8(item.GetPrediffer()));
422 if (item.GetWindowType() != -1)
423 writeElement(writer, Window_type_element_name, std::to_string(item.GetWindowType()));
424 if (item.GetWindowType() == 2 /* table */)
425 {
426 const tchar_t delim = item.GetTableDelimiter();
427 const tchar_t quote = item.GetTableQuote();
428 writeElement(writer, Table_delimiter_element_name, toUTF8(String(&delim, 1)));
429 writeElement(writer, Table_quote_element_name, toUTF8(String(&quote, 1)));
430 writeElement(writer, Table_allownewlinesinquotes_element_name, item.GetTableAllowNewLinesInQuotes() ? "1" : "0");
431 }
432 if (item.m_bSaveIgnoreWhite)
433 writeElement(writer, White_spaces_element_name, std::to_string(item.GetIgnoreWhite()));
434 if (item.m_bSaveIgnoreBlankLines)
435 writeElement(writer, Ignore_blank_lines_element_name, item.GetIgnoreBlankLines() ? "1" : "0");
436 if (item.m_bSaveIgnoreCase)
437 writeElement(writer, Ignore_case_element_name, item.GetIgnoreCase() ? "1" : "0");
438 if (item.m_bSaveIgnoreEol)
439 writeElement(writer, Ignore_cr_diff_element_name, item.GetIgnoreEol() ? "1" : "0");
440 if (item.m_bSaveIgnoreNumbers)
441 writeElement(writer, Ignore_numbers_element_name, item.GetIgnoreNumbers() ? "1" : "0");
442 if (item.m_bSaveIgnoreCodepage)
443 writeElement(writer, Ignore_codepage_diff_element_name, item.GetIgnoreCodepage() ? "1" : "0");
444 if (item.m_bSaveIgnoreMissingTrailingEol)

Callers 3

SaveProjectFileMethod · 0.80
GetIconPNGDataMethod · 0.80
saveWindowImageAsPNGFunction · 0.80

Calls 15

writeElementFunction · 0.85
to_stringFunction · 0.85
saveHiddenItemsFunction · 0.85
GetLeftDescMethod · 0.80
GetMiddleDescMethod · 0.80
GetRightDescMethod · 0.80
GetFilterMethod · 0.80
GetSubfoldersMethod · 0.80
GetLeftReadOnlyMethod · 0.80
GetMiddleReadOnlyMethod · 0.80
GetRightReadOnlyMethod · 0.80
GetWindowTypeMethod · 0.80

Tested by 1

saveWindowImageAsPNGFunction · 0.64