初步修复
This commit is contained in:
parent
8fc4357cc6
commit
e4714f3f0e
46705 changed files with 12004901 additions and 0 deletions
|
|
@ -0,0 +1,450 @@
|
|||
// ResourceEditorView.cpp : implementation of the CResourceEditorView class
|
||||
//
|
||||
// This file is a part of the XTREME TOOLKIT PRO MFC class library.
|
||||
// (c)1998-2008 Codejock Software, All Rights Reserved.
|
||||
//
|
||||
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
|
||||
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
|
||||
// CONSENT OF CODEJOCK SOFTWARE.
|
||||
//
|
||||
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
|
||||
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
|
||||
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
|
||||
// SINGLE COMPUTER.
|
||||
//
|
||||
// CONTACT INFORMATION:
|
||||
// support@codejock.com
|
||||
// http://www.codejock.com
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ResourceEditor.h"
|
||||
|
||||
#include "ResourceEditorDoc.h"
|
||||
#include "ResourceEditorView.h"
|
||||
#include "ChildFrm.h"
|
||||
#include "ResourceViewRecord.h"
|
||||
#include "MainFrm.h"
|
||||
#include "ResourceExport.h"
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CResourceEditorView
|
||||
|
||||
IMPLEMENT_DYNCREATE(CResourceEditorView, CXTPReportView)
|
||||
|
||||
BEGIN_MESSAGE_MAP(CResourceEditorView, CXTPReportView)
|
||||
//{{AFX_MSG_MAP(CResourceEditorView)
|
||||
ON_WM_CREATE()
|
||||
//}}AFX_MSG_MAP
|
||||
// Standard printing commands
|
||||
ON_NOTIFY(XTP_NM_REPORT_VALUECHANGED, XTP_ID_REPORT_CONTROL, OnReportValueChanged)
|
||||
ON_NOTIFY(XTP_NM_REPORT_SELCHANGED, XTP_ID_REPORT_CONTROL, OnReportSelectionChanged)
|
||||
|
||||
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
|
||||
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
|
||||
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
|
||||
|
||||
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CResourceEditorView construction/destruction
|
||||
|
||||
CResourceEditorView::CResourceEditorView()
|
||||
{
|
||||
// TODO: add construction code here
|
||||
|
||||
}
|
||||
|
||||
CResourceEditorView::~CResourceEditorView()
|
||||
{
|
||||
}
|
||||
|
||||
BOOL CResourceEditorView::PreCreateWindow(CREATESTRUCT& cs)
|
||||
{
|
||||
// TODO: Modify the Window class or styles here by modifying
|
||||
// the CREATESTRUCT cs
|
||||
|
||||
cs.style |= WS_CLIPCHILDREN|WS_CLIPSIBLINGS;
|
||||
//cs.style &= ~WS_BORDER;
|
||||
|
||||
return CXTPReportView::PreCreateWindow(cs);
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CResourceEditorView diagnostics
|
||||
|
||||
#ifdef _DEBUG
|
||||
void CResourceEditorView::AssertValid() const
|
||||
{
|
||||
CXTPReportView::AssertValid();
|
||||
}
|
||||
|
||||
void CResourceEditorView::Dump(CDumpContext& dc) const
|
||||
{
|
||||
CXTPReportView::Dump(dc);
|
||||
}
|
||||
|
||||
CResourceEditorDoc* CResourceEditorView::GetDocument() // non-debug version is inline
|
||||
{
|
||||
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CResourceEditorDoc)));
|
||||
return (CResourceEditorDoc*)m_pDocument;
|
||||
}
|
||||
#endif //_DEBUG
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CResourceEditorView message handlers
|
||||
|
||||
int CResourceEditorView::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
||||
{
|
||||
if (CXTPReportView::OnCreate(lpCreateStruct) == -1)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CResourceEditorView::LoadXMLString(CXTPPropExchange* pPX, LPCTSTR pszPropName, CString& strValue)
|
||||
{
|
||||
#ifdef _UNICODE
|
||||
PX_String(pPX, pszPropName, strValue);
|
||||
#else
|
||||
|
||||
BSTR bstrValue = 0;
|
||||
PX_Bstr(pPX, pszPropName, bstrValue, 0);
|
||||
|
||||
ASSERT(!bstrValue || wcslen(bstrValue) < 1024);
|
||||
|
||||
if (bstrValue)
|
||||
{
|
||||
WideCharToMultiByte(GetDocument()->m_pLanguageInfo->nCodePage, 0, bstrValue, -1, strValue.GetBuffer(1024), 1024, 0, 0);
|
||||
strValue.ReleaseBuffer();
|
||||
SysFreeString(bstrValue);
|
||||
}
|
||||
#endif
|
||||
CXTPPropExchangeXMLNode::PreformatString(strValue, FALSE);
|
||||
}
|
||||
|
||||
void CResourceEditorView::PopulateStringResources(CTreeCtrl& wndResourceTree, CXTPPropExchange* pResources, HTREEITEM hItemStrings)
|
||||
{
|
||||
CXTPReportControl& wndReport = GetReportCtrl();
|
||||
|
||||
|
||||
CXTPPropExchangeEnumeratorPtr ptrEnumeratorStrings(pResources->GetEnumerator(_T("string")));
|
||||
POSITION pos = ptrEnumeratorStrings->GetPosition();
|
||||
|
||||
while (pos)
|
||||
{
|
||||
CXTPPropExchangeXMLNode* ptrSectionString = (CXTPPropExchangeXMLNode*)ptrEnumeratorStrings->GetNext(pos);
|
||||
CString strValue;
|
||||
DWORD dwId = 0;
|
||||
|
||||
PX_DWord(ptrSectionString, _T("id"), dwId);
|
||||
LoadXMLString(ptrSectionString, _T("value"), strValue);
|
||||
|
||||
CResourceViewRecord* pRecord = new CResourceViewRecord(_T("String"), resString, dwId, strValue);
|
||||
wndReport.GetRecords()->Add(pRecord);
|
||||
pRecord->m_pSection = ptrSectionString;
|
||||
|
||||
HTREEITEM hItemString = wndResourceTree.InsertItem(GetResourceName(dwId), 6, 6, hItemStrings);
|
||||
|
||||
wndResourceTree.SetItemData(hItemString, (DWORD_PTR)pRecord);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CResourceEditorView::PopulateMenuItemsResources(CXTPReportRecord* pMenuBase, CXTPReportRecord* pMenuRecord, CXTPPropExchange* pResourceMenu)
|
||||
{
|
||||
CXTPPropExchangeEnumeratorPtr ptrEnumeratorStrings(pResourceMenu->GetEnumerator(_T("menuitem")));
|
||||
POSITION pos = ptrEnumeratorStrings->GetPosition();
|
||||
|
||||
while (pos)
|
||||
{
|
||||
CXTPPropExchangeXMLNode* ptrSectionMenuItem = (CXTPPropExchangeXMLNode*)ptrEnumeratorStrings->GetNext(pos);
|
||||
CString strValue;
|
||||
DWORD dwId = 0;
|
||||
|
||||
PX_DWord(ptrSectionMenuItem, _T("id"), dwId);
|
||||
LoadXMLString(ptrSectionMenuItem, _T("caption"), strValue);
|
||||
|
||||
CResourceViewRecord* pRecord = new CResourceViewRecord(_T("Menuitem"), resMenu, dwId, strValue);
|
||||
pMenuRecord->GetChilds()->Add(pRecord);
|
||||
pRecord->m_pSection = ptrSectionMenuItem;
|
||||
|
||||
PopulateMenuItemsResources(pMenuBase, pRecord, ptrSectionMenuItem);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CResourceEditorView::PopulateDialogControlsResources(CResourceViewRecord* pDialogRecord, CXTPPropExchange* pResourceDialog)
|
||||
{
|
||||
CXTPPropExchangeEnumeratorPtr ptrEnumeratorStrings(pResourceDialog->GetEnumerator(_T("control")));
|
||||
POSITION pos = ptrEnumeratorStrings->GetPosition();
|
||||
|
||||
while (pos)
|
||||
{
|
||||
CXTPPropExchangeXMLNode* ptrSectionDialogControl = (CXTPPropExchangeXMLNode*)ptrEnumeratorStrings->GetNext(pos);
|
||||
CString strValue;
|
||||
DWORD dwId = 0;
|
||||
|
||||
PX_DWord(ptrSectionDialogControl, _T("id"), dwId);
|
||||
LoadXMLString(ptrSectionDialogControl, _T("caption"), strValue);
|
||||
|
||||
CResourceViewRecord* pRecord = new CResourceViewRecord(_T("Control"), resDialog, dwId, strValue);
|
||||
pDialogRecord->GetChilds()->Add(pRecord);
|
||||
pRecord->m_pSection = ptrSectionDialogControl;
|
||||
pRecord->m_pBaseRecord = pDialogRecord;
|
||||
}
|
||||
}
|
||||
|
||||
void CResourceEditorView::PopulateDialogResources(CTreeCtrl& wndResourceTree, CXTPPropExchange* pResources, HTREEITEM hItemDialogs)
|
||||
{
|
||||
CXTPReportControl& wndReport = GetReportCtrl();
|
||||
|
||||
|
||||
CXTPPropExchangeEnumeratorPtr ptrEnumeratorStrings(pResources->GetEnumerator(_T("dialog")));
|
||||
POSITION pos = ptrEnumeratorStrings->GetPosition();
|
||||
|
||||
while (pos)
|
||||
{
|
||||
CXTPPropExchangeXMLNode* ptrSectionDialog = (CXTPPropExchangeXMLNode*)ptrEnumeratorStrings->GetNext(pos);
|
||||
DWORD dwId = 0;
|
||||
CString strValue;
|
||||
|
||||
PX_DWord(ptrSectionDialog, _T("id"), dwId);
|
||||
LoadXMLString(ptrSectionDialog, _T("caption"), strValue);
|
||||
|
||||
CResourceViewRecord* pRecord = new CResourceViewRecord(_T("Dialog"), resDialog, dwId, strValue);
|
||||
wndReport.GetRecords()->Add(pRecord);
|
||||
pRecord->m_pSection = ptrSectionDialog;
|
||||
|
||||
HTREEITEM hItemDialog = wndResourceTree.InsertItem(GetResourceName(dwId), 3, 3, hItemDialogs);
|
||||
|
||||
wndResourceTree.SetItemData(hItemDialog, (DWORD_PTR)pRecord);
|
||||
|
||||
PopulateDialogControlsResources(pRecord, ptrSectionDialog);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CResourceEditorView::PopulateMenuResources(CTreeCtrl& wndResourceTree, CXTPPropExchange* pResources, HTREEITEM hItemMenus)
|
||||
{
|
||||
CXTPReportControl& wndReport = GetReportCtrl();
|
||||
|
||||
|
||||
CXTPPropExchangeEnumeratorPtr ptrEnumeratorStrings(pResources->GetEnumerator(_T("menu")));
|
||||
POSITION pos = ptrEnumeratorStrings->GetPosition();
|
||||
|
||||
while (pos)
|
||||
{
|
||||
CXTPPropExchangeXMLNode* ptrSectionMenu = (CXTPPropExchangeXMLNode*)ptrEnumeratorStrings->GetNext(pos);
|
||||
DWORD dwId = 0;
|
||||
|
||||
PX_DWord(ptrSectionMenu, _T("id"), dwId);
|
||||
|
||||
CResourceViewRecord* pRecord = new CResourceViewRecord(_T("Menu"), resMenu, dwId, _T(""));
|
||||
wndReport.GetRecords()->Add(pRecord);
|
||||
pRecord->m_pSection = ptrSectionMenu;
|
||||
pRecord->SetEditable(FALSE);
|
||||
|
||||
HTREEITEM hItemMenu = wndResourceTree.InsertItem(GetResourceName(dwId), 5, 5, hItemMenus);
|
||||
|
||||
wndResourceTree.SetItemData(hItemMenu, (DWORD_PTR)pRecord);
|
||||
|
||||
PopulateMenuItemsResources(pRecord, pRecord, ptrSectionMenu);
|
||||
}
|
||||
}
|
||||
|
||||
void CResourceEditorView::PopulateResources()
|
||||
{
|
||||
CXTPReportControl& wndReport = GetReportCtrl();
|
||||
wndReport.GetRecords()->RemoveAll();
|
||||
|
||||
CResourceEditorDoc* pDocument = GetDocument();
|
||||
CXTPPropExchangeXMLNode* pResources = pDocument->m_pResources;
|
||||
|
||||
CTreeCtrl& wndResourceTree = ((CChildFrame*)GetParentFrame())->m_wndResourceTree;
|
||||
wndResourceTree.DeleteAllItems();
|
||||
|
||||
|
||||
HTREEITEM hItemResources = wndResourceTree.InsertItem(_T("Resources"));
|
||||
HTREEITEM hItemStrings = wndResourceTree.InsertItem(_T("String Table"), 6, 6, hItemResources);
|
||||
HTREEITEM hItemMenus = wndResourceTree.InsertItem(_T("Menus"), 5, 5, hItemResources);
|
||||
HTREEITEM hItemDialogs = wndResourceTree.InsertItem(_T("Dialogs"), 3, 3, hItemResources);
|
||||
|
||||
|
||||
if (pResources)
|
||||
{
|
||||
CString strLanguage;
|
||||
PX_String(pResources, _T("Language"), strLanguage);
|
||||
wndReport.GetColumns()->Find(3)->SetCaption(strLanguage);
|
||||
|
||||
|
||||
PopulateStringResources(wndResourceTree, pResources, hItemStrings);
|
||||
PopulateMenuResources(wndResourceTree, pResources, hItemMenus);
|
||||
PopulateDialogResources(wndResourceTree, pResources, hItemDialogs);
|
||||
}
|
||||
|
||||
wndResourceTree.Expand(hItemResources, TVE_EXPAND);
|
||||
|
||||
|
||||
wndReport.Populate();
|
||||
}
|
||||
|
||||
void CResourceEditorView::OnInitialUpdate()
|
||||
{
|
||||
CXTPReportView::OnInitialUpdate();
|
||||
|
||||
XTP_RESOURCEMANAGER_LANGINFO* pLanguageInfo = GetDocument()->m_pLanguageInfo;
|
||||
ASSERT(pLanguageInfo);
|
||||
|
||||
CXTPReportControl& wndReport = GetReportCtrl();
|
||||
wndReport.GetImageManager()->SetIcons(IDB_RESTREE, 0, 10, 0);
|
||||
wndReport.GetPaintManager()->m_treeStructureStyle = xtpReportTreeStructureDots;
|
||||
|
||||
CXTPReportColumn* pColumn;
|
||||
|
||||
|
||||
pColumn = new CXTPReportColumn(4, _T("Resource"), 180, TRUE);
|
||||
pColumn->SetEditable(FALSE);
|
||||
wndReport.GetColumns()->Add(pColumn);
|
||||
wndReport.GetColumns()->GetGroupsOrder()->Add(pColumn, FALSE);
|
||||
pColumn->SetTreeColumn(TRUE);
|
||||
|
||||
pColumn = new CXTPReportColumn(0, _T("Module"), 130, TRUE);
|
||||
pColumn->SetEditable(FALSE);
|
||||
wndReport.GetColumns()->Add(pColumn);
|
||||
wndReport.GetColumns()->GetGroupsOrder()->Add(pColumn);
|
||||
pColumn->SetVisible(FALSE);
|
||||
|
||||
pColumn = new CXTPReportColumn(1, _T("ID"), 40, FALSE);
|
||||
pColumn->SetEditable(FALSE);
|
||||
wndReport.GetColumns()->Add(pColumn);
|
||||
|
||||
pColumn = new CXTPReportColumn(2, _T("English US (Original Resources)"), 300, TRUE);
|
||||
pColumn->SetEditable(FALSE);
|
||||
wndReport.GetColumns()->Add(pColumn);
|
||||
|
||||
pColumn = new CXTPReportColumn(3, _T("Tranlated"), 300, TRUE);
|
||||
pColumn->SetAlignment(pLanguageInfo->nCodePage == 1256 || pLanguageInfo->nCodePage == 1255 ? DT_RIGHT : DT_LEFT);
|
||||
wndReport.GetColumns()->Add(pColumn);
|
||||
|
||||
wndReport.GetPaintManager()->SetColumnStyle(xtpReportColumnExplorer);
|
||||
wndReport.GetReportHeader()->AllowColumnRemove(FALSE);
|
||||
wndReport.AllowEdit(TRUE);
|
||||
wndReport.EditOnClick(FALSE);
|
||||
wndReport.ShowGroupBy();
|
||||
|
||||
|
||||
LOGFONT lfIcon;
|
||||
VERIFY(::SystemParametersInfo(SPI_GETICONTITLELOGFONT, sizeof(lfIcon), &lfIcon, 0));
|
||||
lfIcon.lfCharSet = pLanguageInfo->nFontCharSet;
|
||||
|
||||
GetReportCtrl().GetPaintManager()->SetTextFont(lfIcon);
|
||||
|
||||
|
||||
PopulateResources();
|
||||
|
||||
}
|
||||
|
||||
void CResourceEditorView::OnReportValueChanged(NMHDR * pNotifyStruct, LRESULT * /*result*/)
|
||||
{
|
||||
XTP_NM_REPORTRECORDITEM* pItemNotify = (XTP_NM_REPORTRECORDITEM*) pNotifyStruct;
|
||||
ASSERT(pItemNotify->pItem);
|
||||
|
||||
CResourceEditorDoc* pDocument = GetDocument();
|
||||
CXTPPropExchangeXMLNode* pResources = pDocument->m_pResources;
|
||||
|
||||
|
||||
if (pItemNotify->pItem && pResources)
|
||||
{
|
||||
CResourceViewRecord* pRecord = (CResourceViewRecord*)pItemNotify->pItem->GetRecord();
|
||||
|
||||
CXTPPropExchangeXMLNode* ptrSectionString = pRecord->m_pSection;
|
||||
|
||||
if (ptrSectionString)
|
||||
{
|
||||
ptrSectionString->SetLoading(FALSE);
|
||||
|
||||
CString strValue = pItemNotify->pItem->GetCaption(0);
|
||||
|
||||
CString strSection = pRecord->m_resType == resString ? _T("value"): _T("caption");
|
||||
|
||||
#ifdef _UNICODE
|
||||
CXTPPropExchangeXMLNode::PreformatString(strValue, TRUE);
|
||||
PX_String(ptrSectionString, strSection, strValue);
|
||||
#else
|
||||
WCHAR lpszValue[1024];
|
||||
lpszValue[0] = 0;
|
||||
MultiByteToWideChar(GetDocument()->m_pLanguageInfo->nCodePage, 0,
|
||||
strValue, -1, lpszValue, 1024);
|
||||
|
||||
BSTR bstrVal = (BSTR)&lpszValue;
|
||||
PX_Bstr(ptrSectionString, strSection, bstrVal, NULL);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
GetDocument()->SetModifiedFlag();
|
||||
|
||||
|
||||
}
|
||||
|
||||
void CResourceEditorView::OnReportSelectionChanged(NMHDR * /*pNotifyStruct*/, LRESULT * /*result*/)
|
||||
{
|
||||
CXTPReportControl& wndReport = GetReportCtrl();
|
||||
CXTPReportRow* pRow = wndReport.GetFocusedRow();
|
||||
|
||||
CResourceEditorDoc* pDocument = GetDocument();
|
||||
CXTPPropExchangeXMLNode* pResources = pDocument->m_pResources;
|
||||
|
||||
|
||||
if (pRow && pRow->GetRecord() && pResources)
|
||||
{
|
||||
CResourceViewRecord* pRecord = (CResourceViewRecord*)pRow->GetRecord();
|
||||
if (pRecord->m_pBaseRecord) pRecord = pRecord->m_pBaseRecord;
|
||||
|
||||
DWORD dwId = pRecord->GetId();
|
||||
|
||||
if (pRecord->m_resType == resMenu && dwId)
|
||||
{
|
||||
((CMainFrame*)AfxGetMainWnd())->ShowMenuPreview(pResources, dwId, pDocument->m_pLanguageInfo);
|
||||
|
||||
}
|
||||
else if (pRecord->m_resType == resDialog && dwId)
|
||||
{
|
||||
((CMainFrame*)AfxGetMainWnd())->ShowDialogPreview(pResources, dwId);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
((CMainFrame*)AfxGetMainWnd())->ClearPreview();
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
((CMainFrame*)AfxGetMainWnd())->ClearPreview();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CResourceEditorView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView)
|
||||
{
|
||||
if (!bActivate)
|
||||
{
|
||||
((CMainFrame*)AfxGetMainWnd())->ClearPreview();
|
||||
|
||||
}
|
||||
|
||||
CXTPReportView::OnActivateView(bActivate, pActivateView, pDeactiveView);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue