Skip to content

Commit

Permalink
Moved to libxmldiff 0.2.9beta
Browse files Browse the repository at this point in the history
Fixed crash with CData nodes display
  • Loading branch information
rpeyron committed Apr 22, 2019
1 parent 4c33075 commit 7a50eb1
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 35 deletions.
5 changes: 5 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
2019-04-22 14:33 remi 0.3.4beta
* libxmldiff 0.2.9beta
* Add new parameters for special nodes
* Fixed crash while displaying CData nodes

2016-12-18 17:13 remi 0.3.3-2
* Small fixes and improvments asked by bovirus
* ConfigDialog field align with wxGridBagSizer
Expand Down
2 changes: 1 addition & 1 deletion build/win32/XmlTreeNav.iss
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
[Setup]
AppName={#AppName}
AppPublisher=Remi Peyronnet
AppVersion=0.3.3-2
AppVersion=0.3.4beta
;AppVerName=xmlTreeNav 0.3.2
AppPublisherURL=http://www.lprp.fr/soft/xml/xmltreenav/xmltreenav_en.php3
AppSupportURL=http://www.lprp.fr/soft/xml/xmltreenav/xmltreenav_en.php3
Expand Down
4 changes: 2 additions & 2 deletions src/xtnApp.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
* ************************************************************************** */

#define XTN_NAME wxT("xmlTreeNav")
#define XTN_VERSION wxT("v0.3.3-2")
#define XTN_COPYRIGHT wxT("(c) 2004-2016 - Remi Peyronnet")
#define XTN_VERSION wxT("v0.3.4beta")
#define XTN_COPYRIGHT wxT("(c) 2004-2019 - Remi Peyronnet")
#define XTN_WEBSITE wxT("http://www.lprp.fr")
#define XTN_APP_DESCRIPTION _("Performs efficient XML tree navigation and diff XML files.")
#define XTN_ABOUT _("%s %s\nlibxmldiff %s\n\n(c) 2004-2016 - Remi Peyronnet\nhttp://www.lprp.fr")
Expand Down
32 changes: 20 additions & 12 deletions src/xtnFrame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,11 @@ void xtnFrame::InitConfig()
new wxConfigDialog_EntryTextEdit(*m_pConfigDialog, wxT("DiffDefaults"), wxT("PrevSeparator"), _("Diff Defaults"), _("Separator"), _("|"));
new wxConfigDialog_EntryCheck(*m_pConfigDialog, wxT("DiffDefaults"), wxT("TagChilds"), _("Diff Defaults"), _("Tag childs"), TRUE);

new wxConfigDialog_EntryCheck(*m_pConfigDialog, wxT("DiffDefaults"), wxT("SpecialNodesIds"), _("Diff Defaults"), _("Special Node Ids"), TRUE);
new wxConfigDialog_EntryCheck(*m_pConfigDialog, wxT("DiffDefaults"), wxT("SpecialNodesBeforeValue"), _("Diff Defaults"), _("Special Nodes Before Value"), FALSE);

m_pConfigDialog->doLayout();
m_pConfigDialog->SetSize(500,300);
m_pConfigDialog->SetSize(500,350);
}

void xtnFrame::DoConfig()
Expand Down Expand Up @@ -212,6 +215,12 @@ void xtnFrame::DoConfig()
// Tag Childs
m_pConfig->Read(wxT("DiffDefaults/TagChilds"), &opt);
m_curOptions.tagChildsAddedRemoved = opt;
// SpecialNodesIds
m_pConfig->Read(wxT("DiffDefaults/SpecialNodesIds"), &opt);
m_curOptions.specialNodesIds = opt;
// SpecialNodesBeforeValue
m_pConfig->Read(wxT("DiffDefaults/SpecialNodesBeforeValue"), &opt);
m_curOptions.specialNodesBeforeValue = opt;

m_pConfig->Read(wxT("Config/SearchSize"), &str, wxT("250"));
if (str.ToLong(&l)) { GetToolBar()->FindWindowById(CTRL_XPATH)->SetSize(l, -1); GetToolBar()->Realize(); }
Expand Down Expand Up @@ -415,7 +424,7 @@ void xtnFrame::OnHelpAbout(wxCommandEvent &event)
wxAboutDialogInfo info;
info.SetName(XTN_NAME);
info.SetVersion(XTN_VERSION);
info.SetDescription(XTN_APP_DESCRIPTION);
info.SetDescription(XTN_APP_DESCRIPTION + wxString::Format(wxString("\n\nlibxmldiff: %s\n"), wxT(LIBXMLDIFF_VER)));
info.SetCopyright(XTN_COPYRIGHT);
info.SetWebSite(XTN_WEBSITE);
//info.SetLicence(wxT("GPL"));
Expand Down Expand Up @@ -799,15 +808,16 @@ void xtnFrame::OnEditPaste(wxCommandEvent &event)
}
#else
// Put it in the Clipboard
if (::wxOpenClipboard())
if (wxTheClipboard->Open())
{
if (::wxIsClipboardFormatAvailable(1))
wxTextDataObject data;
if (wxTheClipboard->IsSupported(data.GetFormat()))
{
char * data;
data = (char *)::wxGetClipboardData(1);
wxTheClipboard->GetData(data);
wxFile fil;
fil.Open(m_sDirectXMLTempFilename,wxFile::write);
fil.Write(wxString(data, wxConvLocal));
//fil.Write(wxString(data.GetText(), wxConvLocal));
fil.Write(data.GetText());
fil.Close();
// Add open / close tag if problems
doc = NULL;
Expand All @@ -818,7 +828,7 @@ void xtnFrame::OnEditPaste(wxCommandEvent &event)
{
fil.Open(m_sDirectXMLTempFilename,wxFile::write);
fil.Write(wxT("<file>\n"));
fil.Write(wxString(data, wxConvLocal));
fil.Write(data.GetText());
fil.Write(wxT("\n</file>"));
fil.Close();
try {
Expand All @@ -827,7 +837,7 @@ void xtnFrame::OnEditPaste(wxCommandEvent &event)
if (doc == NULL)
{
fil.Open(m_sDirectXMLTempFilename,wxFile::write);
fil.Write(wxString(data, wxConvLocal));
fil.Write(data.GetText());
fil.Close();
}
else
Expand All @@ -839,11 +849,9 @@ void xtnFrame::OnEditPaste(wxCommandEvent &event)
{
xmlFreeDoc(doc);
}

delete [] data;
LoadFile(m_sDirectXMLTempFilename);
}
::wxCloseClipboard();
wxTheClipboard->Close();
}
#endif
}
Expand Down
63 changes: 43 additions & 20 deletions src/xtnXmlTree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,31 @@ xmlXPathObjectPtr xtnXmlTree::getDisplayedNodes(xmlNodePtr node, xmlDocPtr displ
return xpathObj;
}

int xtnXmlTree::getDiffIcon(int defIcon, xmlNodePtr child)
{
int icon;
xmlChar * strTemp;
xmlstring sxTemp;

icon = defIcon;
// Diff Icon
if (m_bShowDiff)
{
strTemp = xmlGetNsProp(child, diffStatusAttr, diffNamespace);
if (strTemp != NULL)
{
sxTemp = strTemp;
if (sxTemp == BAD_CAST "added") icon = TI_ADDED;
else if (sxTemp == BAD_CAST "removed") icon = TI_REMOVED;
else if (sxTemp == BAD_CAST "modified") icon = TI_MODIFIED;
else icon = TI_BELOW;
xmlFree(strTemp);
}
}

return icon;
}

void xtnXmlTree::PopulateItem(const wxTreeItemId & item)
{
xmlNodePtr node, child;
Expand Down Expand Up @@ -459,7 +484,7 @@ void xtnXmlTree::PopulateItem(const wxTreeItemId & item)
{
child = xpathObj->nodesetval->nodeTab[i];
icon = TI_UNKNOWN;
libelle = xmlstring2wxString(child->name);
libelle = (child->name)?xmlstring2wxString(child->name):"";
if (child->ns != NULL)
{
if (child->ns->prefix != NULL) libelle = xmlstring2wxString(child->ns->prefix) + wxT(":") + libelle;
Expand All @@ -469,21 +494,7 @@ void xtnXmlTree::PopulateItem(const wxTreeItemId & item)
switch(child->type)
{
case XML_ELEMENT_NODE:
icon = TI_ELEMENT;
// Diff Icon
if (m_bShowDiff)
{
strTemp = xmlGetNsProp(child, diffStatusAttr, diffNamespace);
if (strTemp != NULL)
{
sxTemp = strTemp;
if (sxTemp == BAD_CAST "added") icon = TI_ADDED;
else if (sxTemp == BAD_CAST "removed") icon = TI_REMOVED;
else if (sxTemp == BAD_CAST "modified") icon = TI_MODIFIED;
else icon = TI_BELOW;
xmlFree(strTemp);
}
}
icon = getDiffIcon(TI_ELEMENT, child);
// Append attributes
if (m_eDispMode != XTN_DISP_FULL)
{
Expand Down Expand Up @@ -520,20 +531,32 @@ void xtnXmlTree::PopulateItem(const wxTreeItemId & item)
if ((m_eDispMode == XTN_DISP_FULL) && (child->properties)) hasChildren = true;
break;
case XML_ATTRIBUTE_NODE:
icon = TI_ATTRIBUTE;
icon = getDiffIcon(TI_ATTRIBUTE, child);
libelle += wxT("=\"");
libelle += xmlstring2wxString(xmlstring(xmlCharTmp(xmlNodeGetContent((xmlNodePtr)child))));
libelle += wxT("\"");
break;
case XML_TEXT_NODE:
icon = TI_TEXT;
icon = getDiffIcon(TI_TEXT, child);
libelle = xmlstring2wxString(child->content);
break;
case XML_COMMENT_NODE:
icon = TI_COMMENT;
icon = getDiffIcon(TI_COMMENT, child);
libelle = wxString(wxT("<-- ")) + xmlstring2wxString(child->content) + wxString(wxT(" -->"));
break;
default:
case XML_CDATA_SECTION_NODE:
icon = getDiffIcon(TI_UNKNOWN, child);
libelle = wxString(wxT("<![CDATA["));
if (child->content) libelle += xmlstring2wxString(child->content);
libelle += wxString(wxT("]]>"));
break;
case XML_PI_NODE:
icon = getDiffIcon(TI_UNKNOWN, child);
libelle = wxString(wxT("<?")) + libelle + wxString(wxT(" "));
if (child->content) libelle += xmlstring2wxString(child->content);
libelle += wxString(wxT("?>"));
break;
default:
break;
}
// XSLT
Expand Down
2 changes: 2 additions & 0 deletions src/xtnXmlTree.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ class xtnXmlTree : public wxTreeCtrl
wxTreeItemId MakeNodeVisible(xmlNodePtr node);
void LoadTreeImageList();

int getDiffIcon(int defIcon, xmlNodePtr child);

protected:
xmlDocPtr applyNodeStylesheet(xmlNodePtr node, xsltStylesheetPtr xslt);
xmlXPathObjectPtr getDisplayedNodes(xmlNodePtr node, xmlDocPtr displayInfo);
Expand Down

0 comments on commit 7a50eb1

Please sign in to comment.