Skip to content

Commit 59527df

Browse files
committed
[NEW_FEATURE] enhance Project manager (in progress).
- Notepad-plus svn trunk @ 818
1 parent 22cf186 commit 59527df

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.cpp

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,8 @@ bool ProjectPanel::saveWorkSpace()
302302
bool ProjectPanel::writeWorkSpace(TCHAR *projectFileName)
303303
{
304304
//write <NotepadPlus>: use the default file name if new file name is not given
305-
TiXmlDocument projDoc(projectFileName?projectFileName:_workSpaceFilePath.c_str());
305+
const TCHAR * fn2write = projectFileName?projectFileName:_workSpaceFilePath.c_str();
306+
TiXmlDocument projDoc(fn2write);
306307
TiXmlNode *root = projDoc.InsertEndChild(TiXmlElement(TEXT("NotepadPlus")));
307308

308309
TCHAR textBuffer[MAX_PATH];
@@ -326,13 +327,13 @@ bool ProjectPanel::writeWorkSpace(TCHAR *projectFileName)
326327

327328
TiXmlNode *projRoot = root->InsertEndChild(TiXmlElement(TEXT("Project")));
328329
projRoot->ToElement()->SetAttribute(TEXT("name"), tvItem.pszText);
329-
buildProjectXml(projRoot, tvProj);
330+
buildProjectXml(projRoot, tvProj, fn2write);
330331
}
331332
projDoc.SaveFile();
332333
return true;
333334
}
334335

335-
void ProjectPanel::buildProjectXml(TiXmlNode *node, HTREEITEM hItem)
336+
void ProjectPanel::buildProjectXml(TiXmlNode *node, HTREEITEM hItem, const TCHAR* fn2write)
336337
{
337338
TCHAR textBuffer[MAX_PATH];
338339
TVITEM tvItem;
@@ -349,18 +350,34 @@ void ProjectPanel::buildProjectXml(TiXmlNode *node, HTREEITEM hItem)
349350
if (tvItem.lParam != NULL)
350351
{
351352
generic_string *fn = (generic_string *)tvItem.lParam;
353+
generic_string newFn = getRelativePath(*fn, fn2write);
352354
TiXmlNode *fileLeaf = node->InsertEndChild(TiXmlElement(TEXT("File")));
353-
fileLeaf->ToElement()->SetAttribute(TEXT("name"), fn->c_str());
355+
fileLeaf->ToElement()->SetAttribute(TEXT("name"), newFn.c_str());
354356
}
355357
else
356358
{
357359
TiXmlNode *folderNode = node->InsertEndChild(TiXmlElement(TEXT("Folder")));
358360
folderNode->ToElement()->SetAttribute(TEXT("name"), tvItem.pszText);
359-
buildProjectXml(folderNode, hItemNode);
361+
buildProjectXml(folderNode, hItemNode, fn2write);
360362
}
361363
}
362364
}
363365

366+
generic_string ProjectPanel::getRelativePath(const generic_string & filePath, const TCHAR *workSpaceFileName)
367+
{
368+
TCHAR wsfn[MAX_PATH];
369+
lstrcpy(wsfn, workSpaceFileName);
370+
::PathRemoveFileSpec(wsfn);
371+
372+
size_t pos_found = filePath.find(wsfn);
373+
if (pos_found == generic_string::npos)
374+
return filePath;
375+
const TCHAR *relativeFile = filePath.c_str() + lstrlen(wsfn) + 1;
376+
377+
//printStr(relativeFile);
378+
return relativeFile;
379+
}
380+
364381
bool ProjectPanel::buildTreeFrom(TiXmlNode *projectRoot, HTREEITEM hParentItem)
365382
{
366383
for (TiXmlNode *childNode = projectRoot->FirstChildElement();

PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ class ProjectPanel : public DockingDlgInterface {
8080
BOOL setImageList(int root_clean_id, int root_dirty_id, int project_id, int open_node_id, int closed_node_id, int leaf_id, int ivalid_leaf_id);
8181
void addFiles(HTREEITEM hTreeItem);
8282
bool writeWorkSpace(TCHAR *projectFileName = NULL);
83-
void buildProjectXml(TiXmlNode *root, HTREEITEM hItem);
83+
generic_string getRelativePath(const generic_string & fn, const TCHAR *workSpaceFileName);
84+
void buildProjectXml(TiXmlNode *root, HTREEITEM hItem, const TCHAR* fn2write);
8485
NodeType getNodeType(HTREEITEM hItem);
8586
void setWorkSpaceDirty(bool isDirty);
8687
void popupMenuCmd(int cmdID);

0 commit comments

Comments
 (0)