Esempio n. 1
0
void CModuleNode::ItemExpanding()
{
	IModuleVector modules;
	IAttributeVector attributes;
	m_owner->OnLoading();
	m_module->GetModules(modules);
	if (m_nextExpandShouldBeFast)
	{
		m_module->GetAttributes(attributes, true);
		m_nextExpandShouldBeFast = false;
	}
	else
		m_module->GetAttributes(attributes);
	m_owner->OnLoaded(m_module, attributes);
	WTL::CLockWindowUpdate lock(*GetTreeView());
	for (IModuleVector::iterator itr = modules.begin(); itr != modules.end(); ++itr)
	{
		CModuleNode * newNode = new CModuleNode(m_owner, itr->get());
		newNode->InsertBelow(*GetTreeView(), *this);
		newNode->operator ()(newNode->GetModule());
	}
	for (IAttributeVector::iterator itr = attributes.begin(); itr != attributes.end(); ++itr)
	{
		CAttributeNode * newNode = new CAttributeNode(m_owner, itr->get());
		newNode->InsertBelow(*GetTreeView(), *this);
		newNode->operator ()(newNode->GetAttribute(), false, NULL, false);
	}
}
Esempio n. 2
0
BOOL CRepositoryNode::Expand(UINT nCode)
{
	if (!m_bVirtualNode)
		return CRepositoryBaseNode::Expand(nCode);

	if ((nCode & TVE_COLLAPSE) == TVE_COLLAPSE)
		GetTreeView()->DeleteAllItems();
	else if (GetTreeView()->GetCount() == 0)
		ItemExpanding();
	return true;
}
Esempio n. 3
0
void InitTree(LPFOLDERDATA lpFolderData, LPFILTER_ITEM lpFilterList)
{
	g_lpFolderData = lpFolderData;
	g_lpFilterList = lpFilterList;

	InitFolders();

	/* this will subclass the treeview (where WM_DRAWITEM gets sent for
	   the header control) */
	g_lpTreeWndProc = (WNDPROC)(LONG)(int)GetWindowLong(GetTreeView(), GWL_WNDPROC);
	SetWindowLong(GetTreeView(), GWL_WNDPROC, (LONG)TreeWndProc);
}
Esempio n. 4
0
static BOOL ListViewOnErase(HWND hWnd, HDC hDC)
{
	RECT		rcClient;
	HRGN		rgnBitmap;
	HPALETTE	hPAL;

	int 		i = 0, j = 0;
	HDC 		htempDC;
	POINT		ptOrigin;
	POINT		pt = {0,0};
	HBITMAP 	hOldBitmap;
	MYBITMAPINFO *pbmDesc = GetBackgroundInfo();
	HBITMAP		hBackground = GetBackgroundBitmap();
	HPALETTE	hPALbg = GetBackgroundPalette();

	// this does not draw the background properly in report view

	GetClientRect(hWnd, &rcClient);

	htempDC = CreateCompatibleDC(hDC);
	hOldBitmap = (HBITMAP)SelectObject(htempDC, hBackground);

	rgnBitmap = CreateRectRgnIndirect(&rcClient);
	SelectClipRgn(hDC, rgnBitmap);
	DeleteBitmap(rgnBitmap);

	hPAL = (!hPALbg) ? CreateHalftonePalette(hDC) : hPALbg;

	if (GetDeviceCaps(htempDC, RASTERCAPS) & RC_PALETTE && hPAL != NULL)
	{
		SelectPalette(htempDC, hPAL, FALSE);
		RealizePalette(htempDC);
	}

	// Get x and y offset
	MapWindowPoints(hWnd, GetTreeView(), &pt, 1);
	GetDCOrgEx(hDC, &ptOrigin);
	ptOrigin.x -= pt.x;
	ptOrigin.y -= pt.y;
	ptOrigin.x = -GetScrollPos(hWnd, SB_HORZ);
	ptOrigin.y = -GetScrollPos(hWnd, SB_VERT);

	if (pbmDesc->bmWidth && pbmDesc->bmHeight)
	{
		for (i = ptOrigin.x; i < rcClient.right; i += pbmDesc->bmWidth)
			for (j = ptOrigin.y; j < rcClient.bottom; j += pbmDesc->bmHeight)
				BitBlt(hDC, i, j, pbmDesc->bmWidth, pbmDesc->bmHeight, htempDC, 0, 0, SRCCOPY);
	}

	SelectObject(htempDC, hOldBitmap);
	DeleteDC(htempDC);

	if (!pbmDesc->bmColors)
	{
		DeletePalette(hPAL);
		hPAL = 0;
	}

	return TRUE;
}
Esempio n. 5
0
void CRepositoryNode::LoadModules(IModuleVector & modules, CLoadingNode * loading)
{
	clib::recursive_mutex::scoped_lock lock(m_mutex);
	if (m_loading == loading)
	{
		m_loading->Delete();
		m_loading = NULL;
		WTL::CLockWindowUpdate lock(*GetTreeView());
		for (IModuleVector::iterator itr = modules.begin(); itr != modules.end(); ++itr)
		{
			CModuleNode * newNode = new CModuleNode(m_owner, itr->get());
			newNode->InsertBelow(*GetTreeView(), m_bVirtualNode ? TVI_ROOT : *this);
			newNode->operator ()(itr->get());
		}
	}
}
Esempio n. 6
0
void CRepositoryFilterNode::ItemExpanding()
{
	CComPtr<IRepository> rep = m_owner->GetRepository();
	IModuleVector modules;
	rep->GetAllModules(modules, false, true, true);
	for(IAttributeVector::iterator itr = m_results->begin(); itr != m_results->end(); ++itr)
	{
		std::_tstring module = itr->get()->GetModuleQualifiedLabel();
		if (m_modules.find(module) == m_modules.end())
		{
			IModule * found = Find(&modules, module);
			ATLASSERT(found);
			m_modules[module] = new CModuleFilterNode(m_owner, found);
			ATLASSERT(m_modules[module].get());
		}
		m_modules[module]->AddAttribute(itr->get());
	}

	for(IModuleVector::iterator itr = modules.begin(); itr != modules.end(); ++itr)
	{
		if (m_modules.find(itr->get()->GetQualifiedLabel()) != m_modules.end())
		{
			m_modules[itr->get()->GetQualifiedLabel()]->InsertBelow(*GetTreeView(), *this);
			m_modules[itr->get()->GetQualifiedLabel()]->Expand();
		}
	}
}
Esempio n. 7
0
// create iconlist and Treeview control
static BOOL CreateTreeIcons()
{
	HICON	hIcon;
	INT 	i;
	HINSTANCE hInst = GetModuleHandle(0);

	int numIcons = ICON_MAX + numExtraIcons;

	hTreeSmall = ImageList_Create (16, 16, ILC_COLORDDB | ILC_MASK, numIcons, numIcons);

	//dprintf("Trying to load %i normal icons",ICON_MAX);
	for (i = 0; i < ICON_MAX; i++)
	{
		hIcon = LoadIconFromFile(treeIconNames[i].lpName);
		if (!hIcon)
			hIcon = LoadIcon(hInst, MAKEINTRESOURCE(treeIconNames[i].nResourceID));

		if (ImageList_AddIcon (hTreeSmall, hIcon) == -1)
		{
			ErrorMsg("Error creating icon on regular folder, %i %i",i,hIcon != NULL);
			return FALSE;
		}
	}

	//dprintf("Trying to load %i extra custom-folder icons",numExtraIcons);
	for (i = 0; i < numExtraIcons; i++)
	{
		if ((hIcon = LoadIconFromFile(ExtraFolderIcons[i])) == 0)
			hIcon = LoadIcon (hInst, MAKEINTRESOURCE(IDI_FOLDER));

		if (ImageList_AddIcon(hTreeSmall, hIcon) == -1)
		{
			ErrorMsg("Error creating icon on extra folder, %i %i",i,hIcon != NULL);
			return FALSE;
		}
	}

	// Be sure that all the small icons were added.
	if (ImageList_GetImageCount(hTreeSmall) < numIcons)
	{
		ErrorMsg("Error with icon list--too few images.  %i %i",
				ImageList_GetImageCount(hTreeSmall),numIcons);
		return FALSE;
	}

	// Be sure that all the small icons were added.

	if (ImageList_GetImageCount (hTreeSmall) < ICON_MAX)
	{
		ErrorMsg("Error with icon list--too few images.  %i < %i",
				 ImageList_GetImageCount(hTreeSmall),ICON_MAX);
		return FALSE;
	}

	// Associate the image lists with the list view control.
	TreeView_SetImageList(GetTreeView(), hTreeSmall, TVSIL_NORMAL);

	return TRUE;
}
Esempio n. 8
0
void CRepositoryNode::ItemExpanding()
{
	clib::recursive_mutex::scoped_lock lock(m_mutex);
	if (!m_loading)
		m_loading = new CLoadingNode();
	m_loading->InsertBelow(*GetTreeView(), m_bVirtualNode ? TVI_ROOT : *this);
	clib::thread run(__FUNCTION__, boost::bind(&GetModules, this, m_loading));
}
Esempio n. 9
0
void CAttributeNode::operator()(ATTRSTATE state)
{
	if (GetTreeView())
	{
		SetState(-1, TVIS_STATEIMAGEMASK);
		SetState(INDEXTOSTATEIMAGEMASK(GetStateIcon(state)), TVIS_STATEIMAGEMASK);
	}
}
Esempio n. 10
0
void CModuleNode::operator()(IModule * /*module*/)
{
	if (GetTreeView())
	{
		SetState(-1, TVIS_STATEIMAGEMASK);
		SetState(INDEXTOSTATEIMAGEMASK(GetStateIcon(GetState())), TVIS_STATEIMAGEMASK);
	}
}
Esempio n. 11
0
void CModuleFilterNode::ItemExpanding()
{
	for(IAttributeVector::iterator itr = m_attrs.begin(); itr != m_attrs.end(); ++itr)
	{
		CAttributeNode * newNode = new CAttributeNode(m_owner, itr->get());
		newNode->InsertBelow(*GetTreeView(), *this);
		newNode->operator ()(newNode->GetAttribute(), false, NULL, false);
	}
}
Esempio n. 12
0
void CAttributeNode::operator()(IAttribute * /*attr*/, bool eclChanged, IAttribute * newAttrAsOldOneMoved, bool deleted) 
{
	if (GetTreeView())
	{
		if (newAttrAsOldOneMoved || deleted)
			Delete();
		else
		{
			GenerateDispText();
			SetState(-1, TVIS_STATEIMAGEMASK);
			SetState(INDEXTOSTATEIMAGEMASK(GetStateIcon(GetState())), TVIS_STATEIMAGEMASK);
		}
	}
}
Esempio n. 13
0
void SelectTreeViewFolder(int folder_id)
{
	HWND hTreeView = GetTreeView();
	HTREEITEM hti;
	TVITEM tvi;

	hti = TreeView_GetRoot(hTreeView);

	while (hti != NULL)
	{
		HTREEITEM hti_next;

		tvi.hItem = hti;
		tvi.mask = TVIF_PARAM;
		TreeView_GetItem(hTreeView,&tvi);

		if (((LPTREEFOLDER)tvi.lParam)->m_nFolderId == folder_id)
		{
			TreeView_SelectItem(hTreeView,tvi.hItem);
			SetCurrentFolder((LPTREEFOLDER)tvi.lParam);
			return;
		}
		
		hti_next = TreeView_GetChild(hTreeView,hti);
		if (hti_next == NULL)
		{
			hti_next = TreeView_GetNextSibling(hTreeView,hti);
			if (hti_next == NULL)
			{
				hti_next = TreeView_GetParent(hTreeView,hti);
				if (hti_next != NULL)
					hti_next = TreeView_GetNextSibling(hTreeView,hti_next);
			}
		}
		hti = hti_next;
	}

	// could not find folder to select
	// make sure we select something
	tvi.hItem = TreeView_GetRoot(hTreeView);
	tvi.mask = TVIF_PARAM;
	TreeView_GetItem(hTreeView,&tvi);

	TreeView_SelectItem(hTreeView,tvi.hItem);
	SetCurrentFolder((LPTREEFOLDER)tvi.lParam);

}
Esempio n. 14
0
void CAttributeHistoryNode::operator()(IAttribute * /*attr*/, bool eclChanged, IAttribute * newAttrAsOldOneMoved, bool deleted) 
{
	if (GetTreeView())
	{
		GenerateDispText();
		bool isCurrentVersion = (m_attributeHistory->GetVersion() == m_attributeHistory->GetAttribute()->GetVersion());
		SetState(-1, TVIS_STATEIMAGEMASK);
		SetState(INDEXTOSTATEIMAGEMASK(GetStateIcon(isCurrentVersion ? m_attributeHistory->GetAttribute()->GetState() : ATTRSTATE_NONE)), TVIS_STATEIMAGEMASK);
	}

	//TODO handle renamed and deleted.
	ATLASSERT(!newAttrAsOldOneMoved && !deleted);

	//CString modfiedDate(m_attributeHistory->GetModifiedDate());
	//if( modfiedDate.IsEmpty() )
	//{
	//	SetState(INDEXTOSTATEIMAGEMASK(ATTRSTATE_NONE), TVIS_STATEIMAGEMASK);
	//}
	//GenerateDispText();
}
Esempio n. 15
0
void CMainFrame::OnUpdateMdsImportMdsFile(CCmdUI* pCmdUI)
{
	CMdsEditTreeView *pTreeView = GetTreeView();

	HTREEITEM hTreeItemSelected = 0;

	if ( pTreeView )
	{
		hTreeItemSelected =
			pTreeView->GetTreeCtrl().GetSelectedItem();

		pCmdUI->Enable(
			hTreeItemSelected &&
			pTreeView->IsMdsRoot(hTreeItemSelected));

		return;
	}

	pCmdUI->Enable( FALSE );
}
Esempio n. 16
0
void CMainFrame::OnInitialUpdate()
{
	// Add the right window pane
	int Width = (int) (GetWindowRect().Width() * 0.3);
	DWORD dwDockStyle = DS_DOCKED_LEFT  | DS_NO_UNDOCK | DS_NO_CAPTION;
	m_pLeftPane = static_cast<CLeftPane*>(m_RightPane.AddDockedChild(new CLeftPane, dwDockStyle, Width));

	// All windows are now created, so populate the treeview
	GetTreeView().GetRootItems();

	// Uncheck the hidden menu item
	GetFrameMenu().CheckMenuItem(IDM_SHOW_HIDDEN, MF_UNCHECKED);

	// Place Radio button in view menu
	CMenu ViewMenu = GetFrameMenu().GetSubMenu(1);
	ViewMenu.CheckMenuRadioItem(IDM_VIEW_SMALLICON, IDM_VIEW_REPORT, IDM_VIEW_REPORT, 0);

	// Uncomment the following to use a hash bar and disable of auto resizing 
	// m_RightPane.SetDragAutoResize(FALSE);
}
Esempio n. 17
0
bool CMusicListGroupUI::AdjustIndexs(int nStartPos)
{
	TCHAR szBuf[MAX_PATH] = {0};
	CMusicListItemUI *pListElement = NULL;
	CLabelUI* id = NULL;
	int nSum = GetTreeNodes().GetSize();
	for (int i = 0; i < nSum; i++ )
	{
		pListElement = static_cast<CMusicListItemUI*>(GetTreeNodes().GetAt(i));
		if (pListElement == NULL)
			return false;
		id = static_cast<CLabelUI*>(GetTreeView()->GetManager()->FindSubControlByName(pListElement, kMusicIndexControlName));
		if (id != NULL)
		{
			int index = 0;

			_stprintf_s(szBuf, MAX_PATH - 1, _T("%2.2d"), i + 1);
			id->SetText(szBuf);
		}
		else
			return false;
	}
	return true;
}
Esempio n. 18
0
void CMainFrame::OnViewRefresh()
{
	CMdsEditTreeView *pTreeView = GetTreeView();
	/*BOOL bStatus = */pTreeView->Refresh();
}
Esempio n. 19
0
void CMainFrame::OnMdsImportMdsFile()
{
	CMdsEditTreeView * pTreeView = GetTreeView();
	pTreeView->ImportMdsFile();
}
Esempio n. 20
0
// adds these folders to the treeview
void ResetTreeViewFolders(void)
{
	HWND hTreeView = GetTreeView();
	int i;
	TVITEM tvi;
	TVINSERTSTRUCT	tvs;

	HTREEITEM shti; // for current child branches

	// currently "cached" parent
	HTREEITEM hti_parent = NULL;
	int index_parent = -1;			

	TreeView_DeleteAllItems(hTreeView);

	//dprintf("Adding folders to tree ui indices %i to %i",start_index,end_index);

	tvs.hInsertAfter = TVI_SORT;

	for (i=0;i<numFolders;i++)
	{
		LPTREEFOLDER lpFolder = treeFolders[i];

		if (lpFolder->m_nParent == -1)
		{
			if (lpFolder->m_nFolderId < MAX_FOLDERS)
			{
				// it's a built in folder, let's see if we should show it
				if (GetShowFolder(lpFolder->m_nFolderId) == FALSE)
				{
					continue;
				}
			}

			tvi.mask	= TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
			tvs.hParent = TVI_ROOT;
			tvi.pszText = lpFolder->m_lpTitle;
			tvi.lParam	= (LPARAM)lpFolder;
			tvi.iImage	= GetTreeViewIconIndex(lpFolder->m_nIconId);
			tvi.iSelectedImage = 0;

#if defined(__GNUC__) /* bug in commctrl.h */
			tvs.item = tvi;
#else
			tvs.DUMMYUNIONNAME.item = tvi;
#endif

			// Add root branch
			hti_parent = TreeView_InsertItem(hTreeView, &tvs);

			continue;
		}

		// not a top level branch, so look for parent
		if (treeFolders[i]->m_nParent != index_parent)
		{
			
			hti_parent = TreeView_GetRoot(hTreeView);
			while (1)
			{
				if (hti_parent == NULL)
				{
					// couldn't find parent folder, so it's a built-in but
					// not shown folder
					break;
				}

				tvi.hItem = hti_parent;
				tvi.mask = TVIF_PARAM;
				TreeView_GetItem(hTreeView,&tvi);
				if (((LPTREEFOLDER)tvi.lParam) == treeFolders[treeFolders[i]->m_nParent])
					break;

				hti_parent = TreeView_GetNextSibling(hTreeView,hti_parent);
			}

			// if parent is not shown, then don't show the child either obviously!
			if (hti_parent == NULL)
				continue;

			index_parent = treeFolders[i]->m_nParent;
		}

		tvi.mask	= TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		tvs.hParent = hti_parent;
		tvi.iImage	= GetTreeViewIconIndex(treeFolders[i]->m_nIconId);
		tvi.iSelectedImage = 0;
		tvi.pszText = treeFolders[i]->m_lpTitle;
		tvi.lParam	= (LPARAM)treeFolders[i];
		
#if defined(__GNUC__) /* bug in commctrl.h */
		tvs.item = tvi;
#else
		tvs.DUMMYUNIONNAME.item = tvi;
#endif
		// Add it to this tree branch
		shti = TreeView_InsertItem(hTreeView, &tvs);

	}
}
Esempio n. 21
0
void CMainFrame::OnEditFind()
{
	GetTreeView()->FindFirst();
}