mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-07-28 16:24:27 +02:00
[NEW_FEATURE] enhance Project manager (in progress).
git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@801 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
parent
52a17f8056
commit
463e198409
@ -29,19 +29,8 @@ BOOL CALLBACK ProjectPanel::run_dlgProc(UINT message, WPARAM wParam, LPARAM lPar
|
|||||||
case WM_INITDIALOG :
|
case WM_INITDIALOG :
|
||||||
{
|
{
|
||||||
_treeView.init(_hInst, _hSelf, ID_PROJECTTREEVIEW);
|
_treeView.init(_hInst, _hSelf, ID_PROJECTTREEVIEW);
|
||||||
std::vector<Heading> headings;
|
|
||||||
/*
|
_treeView.initImageList(IDR_ZOOMIN, IDR_ZOOMOUT, IDR_FIND);
|
||||||
headings.push_back(Heading(TEXT("1-a"), 1));
|
|
||||||
headings.push_back(Heading(TEXT("1-b"), 1));
|
|
||||||
headings.push_back(Heading(TEXT("2-a"), 2));
|
|
||||||
headings.push_back(Heading(TEXT("2-a"), 3));
|
|
||||||
headings.push_back(Heading(TEXT("2-a"), 4));
|
|
||||||
headings.push_back(Heading(TEXT("2-a"), 5));
|
|
||||||
headings.push_back(Heading(TEXT("1-c"), 1));
|
|
||||||
headings.push_back(Heading(TEXT("2-a"), 2));
|
|
||||||
headings.push_back(Heading(TEXT("2-b"), 2));
|
|
||||||
*/
|
|
||||||
_treeView.initTreeViewItems(headings, IDR_ZOOMIN, IDR_ZOOMOUT, IDR_FIND);
|
|
||||||
_treeView.display();
|
_treeView.display();
|
||||||
openProject(TEXT("C:\\sources\\Notepad++\\trunk\\PowerEditor\\src\\WinControls\\ProjectPanel\\demo.xml"));
|
openProject(TEXT("C:\\sources\\Notepad++\\trunk\\PowerEditor\\src\\WinControls\\ProjectPanel\\demo.xml"));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -157,11 +146,13 @@ BOOL CALLBACK ProjectPanel::run_dlgProc(UINT message, WPARAM wParam, LPARAM lPar
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
*/
|
*/
|
||||||
case WM_SIZE:
|
case WM_SIZE:
|
||||||
{/*
|
{
|
||||||
int width = LOWORD(lParam);
|
int width = LOWORD(lParam);
|
||||||
int height = HIWORD(lParam);
|
int height = HIWORD(lParam);
|
||||||
::MoveWindow(_fileListView.getHSelf(), 0, 0, width, height, TRUE);
|
HWND hwnd = _treeView.getHSelf();
|
||||||
*/break;
|
if (hwnd)
|
||||||
|
::MoveWindow(hwnd, 0, 0, width, height, TRUE);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case WM_DESTROY:
|
case WM_DESTROY:
|
||||||
@ -191,7 +182,8 @@ bool ProjectPanel::openProject(TCHAR *projectFileName)
|
|||||||
if (!root)
|
if (!root)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
loadOkay = buildTreeFrom(root, TVI_ROOT);
|
HTREEITEM rootItem = _treeView.addItem((root->ToElement())->Attribute(TEXT("name")), TVI_ROOT, true);
|
||||||
|
buildTreeFrom(root, rootItem);
|
||||||
delete pXmlDocProject;
|
delete pXmlDocProject;
|
||||||
|
|
||||||
return loadOkay;
|
return loadOkay;
|
||||||
@ -207,7 +199,7 @@ bool ProjectPanel::buildTreeFrom(TiXmlNode *projectRoot, HTREEITEM hParentItem)
|
|||||||
if (lstrcmp(TEXT("Folder"), v) == 0)
|
if (lstrcmp(TEXT("Folder"), v) == 0)
|
||||||
{
|
{
|
||||||
//::MessageBox(NULL, (childNode->ToElement())->Attribute(TEXT("name")), TEXT("Folder"), MB_OK);
|
//::MessageBox(NULL, (childNode->ToElement())->Attribute(TEXT("name")), TEXT("Folder"), MB_OK);
|
||||||
HTREEITEM addedItem = _treeView.addItem((childNode->ToElement())->Attribute(TEXT("name")), hParentItem);
|
HTREEITEM addedItem = _treeView.addItem((childNode->ToElement())->Attribute(TEXT("name")), hParentItem, true);
|
||||||
if (!childNode->NoChildren())
|
if (!childNode->NoChildren())
|
||||||
{
|
{
|
||||||
bool isOK = buildTreeFrom(childNode, addedItem);
|
bool isOK = buildTreeFrom(childNode, addedItem);
|
||||||
@ -217,7 +209,7 @@ bool ProjectPanel::buildTreeFrom(TiXmlNode *projectRoot, HTREEITEM hParentItem)
|
|||||||
}
|
}
|
||||||
else if (lstrcmp(TEXT("File"), v) == 0)
|
else if (lstrcmp(TEXT("File"), v) == 0)
|
||||||
{
|
{
|
||||||
_treeView.addItem((childNode->ToElement())->Attribute(TEXT("name")), hParentItem);
|
_treeView.addItem((childNode->ToElement())->Attribute(TEXT("name")), hParentItem, false);
|
||||||
//::MessageBox(NULL, (childNode->ToElement())->Attribute(TEXT("name")), TEXT("File"), MB_OK);
|
//::MessageBox(NULL, (childNode->ToElement())->Attribute(TEXT("name")), TEXT("File"), MB_OK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,23 +71,6 @@ BOOL TreeView::initImageList(int open_node_id, int closed_node_id, int leaf_id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BOOL TreeView::initTreeViewItems(std::vector<Heading> & headings, int idOpen, int idClosed, int idDocument)
|
|
||||||
{
|
|
||||||
HTREEITEM hti;
|
|
||||||
|
|
||||||
initImageList(idOpen,idClosed,idDocument);
|
|
||||||
|
|
||||||
for (size_t i = 0; i < headings.size(); i++)
|
|
||||||
{
|
|
||||||
// Add the item to the tree-view control.
|
|
||||||
hti = addItem(headings[i]._name, headings[i]._level);
|
|
||||||
if (hti == NULL)
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TreeView::destroy()
|
void TreeView::destroy()
|
||||||
{
|
{
|
||||||
::DestroyWindow(_hSelf);
|
::DestroyWindow(_hSelf);
|
||||||
@ -99,7 +82,7 @@ LRESULT TreeView::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
|
|||||||
return ::CallWindowProc(_defaultProc, hwnd, Message, wParam, lParam);
|
return ::CallWindowProc(_defaultProc, hwnd, Message, wParam, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
HTREEITEM TreeView::addItem(const TCHAR *itemName, HTREEITEM hParentItem)
|
HTREEITEM TreeView::addItem(const TCHAR *itemName, HTREEITEM hParentItem, bool isNode)
|
||||||
{
|
{
|
||||||
TVITEM tvi;
|
TVITEM tvi;
|
||||||
tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM;
|
tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM;
|
||||||
@ -110,8 +93,8 @@ HTREEITEM TreeView::addItem(const TCHAR *itemName, HTREEITEM hParentItem)
|
|||||||
|
|
||||||
// Assume the item is not a parent item, so give it a
|
// Assume the item is not a parent item, so give it a
|
||||||
// document image.
|
// document image.
|
||||||
tvi.iImage = INDEX_LEAF;
|
tvi.iImage = isNode?INDEX_CLOSED_NODE:INDEX_LEAF;
|
||||||
tvi.iSelectedImage = INDEX_LEAF;
|
tvi.iSelectedImage = isNode?INDEX_OPEN_NODE:INDEX_LEAF;
|
||||||
|
|
||||||
// Save the heading level in the item's application-defined
|
// Save the heading level in the item's application-defined
|
||||||
// data area.
|
// data area.
|
||||||
@ -125,6 +108,7 @@ HTREEITEM TreeView::addItem(const TCHAR *itemName, HTREEITEM hParentItem)
|
|||||||
return (HTREEITEM)::SendMessage(_hSelf, TVM_INSERTITEM, 0, (LPARAM)(LPTVINSERTSTRUCT)&tvInsertStruct);
|
return (HTREEITEM)::SendMessage(_hSelf, TVM_INSERTITEM, 0, (LPARAM)(LPTVINSERTSTRUCT)&tvInsertStruct);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
HTREEITEM TreeView::addItem(const TCHAR *itemName, int nLevel)
|
HTREEITEM TreeView::addItem(const TCHAR *itemName, int nLevel)
|
||||||
{
|
{
|
||||||
TVITEM tvi;
|
TVITEM tvi;
|
||||||
@ -185,5 +169,5 @@ HTREEITEM TreeView::addItem(const TCHAR *itemName, int nLevel)
|
|||||||
}
|
}
|
||||||
return hPrev;
|
return hPrev;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
@ -20,14 +20,6 @@
|
|||||||
|
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
|
|
||||||
struct Heading {
|
|
||||||
TCHAR _name[64];
|
|
||||||
int _level;
|
|
||||||
Heading(TCHAR *name, int level): _level(level){
|
|
||||||
lstrcpy(_name, name);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class TreeView : public Window
|
class TreeView : public Window
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -36,9 +28,8 @@ public:
|
|||||||
virtual ~TreeView() {};
|
virtual ~TreeView() {};
|
||||||
virtual void init(HINSTANCE hInst, HWND parent, int treeViewID);
|
virtual void init(HINSTANCE hInst, HWND parent, int treeViewID);
|
||||||
virtual void destroy();
|
virtual void destroy();
|
||||||
HTREEITEM addItem(const TCHAR *itemName, int nLevel);
|
HTREEITEM addItem(const TCHAR *itemName, HTREEITEM hParentItem, bool isNode);
|
||||||
HTREEITEM addItem(const TCHAR *itemName, HTREEITEM hParentItem);
|
BOOL initImageList(int open_node_id, int closed_node_id, int leaf_id);
|
||||||
BOOL initTreeViewItems(std::vector<Heading> & headings, int idOpen, int idClosed, int idDocument);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
HIMAGELIST _hImaLst;
|
HIMAGELIST _hImaLst;
|
||||||
@ -48,8 +39,6 @@ protected:
|
|||||||
static LRESULT CALLBACK staticProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
|
static LRESULT CALLBACK staticProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
|
||||||
return (((TreeView *)(::GetWindowLongPtr(hwnd, GWL_USERDATA)))->runProc(hwnd, Message, wParam, lParam));
|
return (((TreeView *)(::GetWindowLongPtr(hwnd, GWL_USERDATA)))->runProc(hwnd, Message, wParam, lParam));
|
||||||
};
|
};
|
||||||
BOOL initImageList(int open_node_id, int closed_node_id, int leaf_id);
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,9 +1,17 @@
|
|||||||
<NotepadPlus>
|
<NotepadPlus>
|
||||||
|
<!-- projectFile/location -->
|
||||||
|
<!-- if file name is relative, then project file current path will be used -->
|
||||||
<Project name="Notepad++" >
|
<Project name="Notepad++" >
|
||||||
<Folder name="Power Editor">
|
<Folder name="Power Editor">
|
||||||
<Folder name="src">
|
<Folder name="src">
|
||||||
|
<Folder name="src2">
|
||||||
|
<Folder name="src3">
|
||||||
<File name="C:\toto.txt"/>
|
<File name="C:\toto.txt"/>
|
||||||
</Folder>
|
</Folder>
|
||||||
|
<Folder name="src3-B">
|
||||||
|
</Folder>
|
||||||
|
</Folder>
|
||||||
|
</Folder>
|
||||||
<File name="C:\sources\Notepad++\trunk\PowerEditor\license.txt"/>
|
<File name="C:\sources\Notepad++\trunk\PowerEditor\license.txt"/>
|
||||||
</Folder>
|
</Folder>
|
||||||
<Folder name="Scintilla">
|
<Folder name="Scintilla">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user