Michael Hansen
11 years ago
13 changed files with 1322 additions and 1274 deletions
@ -0,0 +1,76 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools |
||||
Copyright (C) 2011 Cyan Worlds, Inc. |
||||
|
||||
This program is free software: you can redistribute it and/or modify |
||||
it under the terms of the GNU General Public License as published by |
||||
the Free Software Foundation, either version 3 of the License, or |
||||
(at your option) any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License |
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7 |
||||
|
||||
If you modify this Program, or any covered work, by linking or |
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, |
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent |
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK |
||||
(or a modified version of those libraries), |
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, |
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG |
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the |
||||
licensors of this Program grant you additional |
||||
permission to convey the resulting work. Corresponding Source for a |
||||
non-source form of such a combination shall include the source code for |
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered |
||||
work. |
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com |
||||
or by snail mail at: |
||||
Cyan Worlds, Inc. |
||||
14617 N Newport Hwy |
||||
Mead, WA 99021 |
||||
|
||||
*==LICENSE==*/ |
||||
#ifndef _plResBrowser_h |
||||
#define _plResBrowser_h |
||||
|
||||
#include <QMainWindow> |
||||
|
||||
class plResBrowser : public QMainWindow |
||||
{ |
||||
Q_OBJECT |
||||
|
||||
public: |
||||
plResBrowser(); |
||||
virtual ~plResBrowser(); |
||||
|
||||
void SetWindowTitle(const QString &title); |
||||
|
||||
protected: |
||||
virtual void dragEnterEvent(QDragEnterEvent *event) override; |
||||
virtual void dropEvent(QDropEvent *event) override; |
||||
|
||||
private slots: |
||||
void OpenFile(); |
||||
void OpenDirectory(); |
||||
void SaveSelectedObject(); |
||||
void RefreshTree(); |
||||
void UpdateInfoPage(); |
||||
|
||||
private: |
||||
class Ui_ResBrowser *fUI; |
||||
|
||||
void RegisterFileTypes(); |
||||
void LoadPrpFile(const QString &fileName); |
||||
void LoadResourcePath(const QString &path); |
||||
}; |
||||
|
||||
#endif |
@ -1,432 +0,0 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools |
||||
Copyright (C) 2011 Cyan Worlds, Inc. |
||||
|
||||
This program is free software: you can redistribute it and/or modify |
||||
it under the terms of the GNU General Public License as published by |
||||
the Free Software Foundation, either version 3 of the License, or |
||||
(at your option) any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License |
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7 |
||||
|
||||
If you modify this Program, or any covered work, by linking or |
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, |
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent |
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK |
||||
(or a modified version of those libraries), |
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, |
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG |
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the |
||||
licensors of this Program grant you additional |
||||
permission to convey the resulting work. Corresponding Source for a |
||||
non-source form of such a combination shall include the source code for |
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered |
||||
work. |
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com |
||||
or by snail mail at: |
||||
Cyan Worlds, Inc. |
||||
14617 N Newport Hwy |
||||
Mead, WA 99021 |
||||
|
||||
*==LICENSE==*/ |
||||
#include "HeadSpin.h" |
||||
#include "hsWindows.h" |
||||
#include "hsTemplates.h" |
||||
#include "res/resource.h" |
||||
#include <commdlg.h> |
||||
#include <commctrl.h> |
||||
#include <shellapi.h> |
||||
#include <shlwapi.h> |
||||
#include <shlobj.h> |
||||
|
||||
#include "plResTreeView.h" |
||||
#include "plResMgr/plResManager.h" |
||||
#include "plResMgr/plResMgrSettings.h" |
||||
#include "plWinRegistryTools.h" |
||||
|
||||
#define IDC_REGTREEVIEW 1000 |
||||
|
||||
extern HINSTANCE gInstance; |
||||
extern char *gCommandLine; |
||||
|
||||
HWND gTreeView; |
||||
HWND gInfoDlg; |
||||
|
||||
class plWaitCursor |
||||
{ |
||||
HCURSOR fOrig; |
||||
public: |
||||
plWaitCursor() |
||||
{ |
||||
fOrig = ::SetCursor( ::LoadCursor( nil, IDC_WAIT ) ); |
||||
} |
||||
|
||||
~plWaitCursor() |
||||
{ |
||||
::SetCursor( fOrig ); |
||||
} |
||||
}; |
||||
|
||||
void SetWindowTitle( HWND hWnd, char *path ) |
||||
{ |
||||
char fun[ MAX_PATH + 50 ]; |
||||
|
||||
|
||||
sprintf( fun, "plResBrowser%s%s", path != nil ? " - " : "", path != nil ? path : "" ); |
||||
SetWindowText( hWnd, fun ); |
||||
} |
||||
|
||||
INT_PTR CALLBACK AboutDialogProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) |
||||
{ |
||||
if( msg == WM_COMMAND ) |
||||
EndDialog( hWnd, 0 ); |
||||
return 0; |
||||
} |
||||
|
||||
LRESULT CALLBACK HandleCommand( HWND hWnd, WPARAM wParam, LPARAM lParam ) |
||||
{ |
||||
OPENFILENAME openInfo; |
||||
char fileName[ MAX_PATH ]; |
||||
char path[ MAX_PATH ]; |
||||
|
||||
static bool filter = true; |
||||
|
||||
|
||||
switch( LOWORD( wParam ) ) |
||||
{ |
||||
case ID_FILE_EXIT: |
||||
PostQuitMessage( 0 ); |
||||
break; |
||||
|
||||
case ID_FILE_OPENDIRECTORY: |
||||
|
||||
BROWSEINFO bInfo; |
||||
LPITEMIDLIST itemList; |
||||
LPMALLOC shMalloc; |
||||
|
||||
|
||||
memset( &bInfo, 0, sizeof( bInfo ) ); |
||||
bInfo.hwndOwner = hWnd; |
||||
bInfo.pidlRoot = NULL; |
||||
bInfo.pszDisplayName = path; |
||||
bInfo.lpszTitle = "Select a Plasma 2 Data Directory:"; |
||||
bInfo.ulFlags = BIF_EDITBOX; |
||||
|
||||
itemList = SHBrowseForFolder( &bInfo ); |
||||
if( itemList != NULL ) |
||||
{ |
||||
plWaitCursor myWaitCursor; |
||||
|
||||
SHGetPathFromIDList( itemList, path ); |
||||
SHGetMalloc( &shMalloc ); |
||||
shMalloc->Free( itemList ); |
||||
shMalloc->Release(); |
||||
|
||||
hsgResMgr::Reset(); |
||||
plResTreeView::ClearTreeView( gTreeView ); |
||||
|
||||
// Load that source
|
||||
plResManager *mgr = (plResManager *)hsgResMgr::ResMgr(); |
||||
|
||||
std::vector<plFileName> prpFiles = plFileSystem::ListDir(path, "*.prp"); |
||||
for (auto iter = prpFiles.begin(); iter != prpFiles.end(); ++iter) |
||||
mgr->AddSinglePage(*iter); |
||||
|
||||
plResTreeView::FillTreeViewFromRegistry( gTreeView ); |
||||
|
||||
SetWindowTitle( hWnd, path ); |
||||
} |
||||
|
||||
break; |
||||
|
||||
case ID_FILE_OPEN: |
||||
fileName[ 0 ] = 0; |
||||
|
||||
memset( &openInfo, 0, sizeof( OPENFILENAME ) ); |
||||
openInfo.hInstance = gInstance; |
||||
openInfo.hwndOwner = hWnd; |
||||
openInfo.lStructSize = sizeof( OPENFILENAME ); |
||||
openInfo.lpstrFile = fileName; |
||||
openInfo.nMaxFile = sizeof( fileName ); |
||||
openInfo.lpstrFilter = "Plasma 2 Pack Files\0*.prp\0All Files\0*.*\0"; |
||||
openInfo.lpstrTitle = "Choose a file to browse:"; |
||||
openInfo.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST; |
||||
|
||||
if( GetOpenFileName( &openInfo ) ) |
||||
{ |
||||
plWaitCursor myWaitCursor; |
||||
|
||||
hsgResMgr::Reset(); |
||||
plResTreeView::ClearTreeView( gTreeView ); |
||||
|
||||
// Load that source
|
||||
plResManager *mgr = (plResManager *)hsgResMgr::ResMgr(); |
||||
mgr->AddSinglePage(fileName); |
||||
plResTreeView::FillTreeViewFromRegistry( gTreeView ); |
||||
|
||||
SetWindowTitle( hWnd, fileName ); |
||||
} |
||||
|
||||
break; |
||||
|
||||
case ID_FILE_ABOUT: |
||||
DialogBox( gInstance, MAKEINTRESOURCE( IDD_ABOUT ), hWnd, AboutDialogProc ); |
||||
break; |
||||
|
||||
case ID_FILE_FINDOBJECT: |
||||
plResTreeView::FindObject( gTreeView ); |
||||
break; |
||||
|
||||
case ID_FILE_FINDNEXT: |
||||
plResTreeView::FindNextObject( gTreeView ); |
||||
break; |
||||
|
||||
case ID_FILE_VERIFYPAGE: |
||||
plResTreeView::VerifyCurrentPage( gTreeView ); |
||||
break; |
||||
|
||||
case IDC_SHOWASHEX: |
||||
plResTreeView::UpdateInfoDlg( gTreeView ); |
||||
break; |
||||
|
||||
case ID_FILE_ONLYLOAD: |
||||
filter = !filter; |
||||
plResTreeView::FilterLoadables( filter, gTreeView ); |
||||
{ |
||||
HMENU menu = ::GetMenu( hWnd ); |
||||
menu = ::GetSubMenu( menu, 0 ); |
||||
::CheckMenuItem( menu, ID_FILE_ONLYLOAD, MF_BYCOMMAND | ( filter ? MF_CHECKED : MF_UNCHECKED ) ); |
||||
} |
||||
break; |
||||
|
||||
case ID_FILE_SAVESELECTED: |
||||
plResTreeView::SaveSelectedObject(gTreeView); |
||||
break; |
||||
|
||||
default: |
||||
return DefWindowProc( hWnd, WM_COMMAND, wParam, lParam ); |
||||
} |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
void SizeControls( HWND parent ) |
||||
{ |
||||
RECT clientRect, infoRect; |
||||
|
||||
|
||||
GetClientRect( parent, &clientRect ); |
||||
GetClientRect( gInfoDlg, &infoRect ); |
||||
|
||||
SetWindowPos( gTreeView, NULL, 0, 0, clientRect.right - infoRect.right - 4, clientRect.bottom, 0 ); |
||||
|
||||
OffsetRect( &infoRect, clientRect.right - infoRect.right, ( clientRect.bottom >> 1 ) - ( infoRect.bottom >> 1 ) ); |
||||
SetWindowPos( gInfoDlg, NULL, infoRect.left, infoRect.top, 0, 0, SWP_NOSIZE ); |
||||
} |
||||
|
||||
void InitWindowControls( HWND hWnd ) |
||||
{ |
||||
RECT clientRect; |
||||
|
||||
|
||||
GetClientRect( hWnd, &clientRect ); |
||||
|
||||
gTreeView = CreateWindowEx( WS_EX_CLIENTEDGE, WC_TREEVIEW, "Tree View", WS_VISIBLE | WS_CHILD | WS_BORDER | |
||||
TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_SHOWSELALWAYS, |
||||
0, 0, 0, 0, |
||||
hWnd, (HMENU)IDC_REGTREEVIEW, gInstance, NULL ); |
||||
|
||||
|
||||
gInfoDlg = CreateDialog( gInstance, MAKEINTRESOURCE( IDD_INFODLG ), hWnd, plResTreeView::InfoDlgProc ); |
||||
|
||||
SizeControls( hWnd ); |
||||
} |
||||
|
||||
static bool sFileTypesRegistered = false; |
||||
|
||||
void RegisterFileTypes( HWND mainWnd ) |
||||
{ |
||||
if( sFileTypesRegistered ) |
||||
return; |
||||
|
||||
// Make sure our file types are created
|
||||
char path[ MAX_PATH ]; |
||||
|
||||
if( ::GetModuleFileName( nil, path, sizeof( path ) ) == 0 ) |
||||
return; |
||||
|
||||
//plWinRegistryTools::AssociateFileType( "PlasmaIdxFile", "Plasma 2 Index File", path, 1 );
|
||||
//plWinRegistryTools::AssociateFileType( "PlasmaDatFile", "Plasma 2 Data File", path, 2 );
|
||||
//plWinRegistryTools::AssociateFileType( "PlasmaPatchFile", "Plasma 2 Patch File", path, 3 );
|
||||
plWinRegistryTools::AssociateFileType( "PlasmaPackFile", "Plasma 2 Packfile", path, 4 ); |
||||
|
||||
// Check our file extensions
|
||||
char prpAssoc[ 512 ]; |
||||
bool needToRegister = true; |
||||
if( plWinRegistryTools::GetCurrentFileExtensionAssociation( ".prp", prpAssoc, sizeof( prpAssoc ) ) ) |
||||
{ |
||||
if( strcmp( prpAssoc, "PlasmaPackFile" ) == 0 ) |
||||
needToRegister = false; |
||||
} |
||||
|
||||
if( needToRegister ) |
||||
{ |
||||
if( MessageBox( nil, "The Plasma 2 packed data file extension .prp is not currently associated with " |
||||
"plResBrowser. Would you like to associate it now?", "plResBrowser File Type Association",
|
||||
MB_YESNO | MB_ICONQUESTION) == IDYES ) |
||||
{ |
||||
// Associate 'em
|
||||
plWinRegistryTools::AssociateFileExtension( ".prp", "PlasmaPackFile" ); |
||||
} |
||||
} |
||||
|
||||
sFileTypesRegistered = true; |
||||
} |
||||
|
||||
LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) |
||||
{
|
||||
switch( message )
|
||||
{
|
||||
case WM_CREATE: |
||||
InitCommonControls(); |
||||
InitWindowControls( hWnd ); |
||||
RegisterFileTypes( hWnd ); |
||||
plResMgrSettings::Get().SetLoadPagesOnInit(false); |
||||
|
||||
{ |
||||
plResTreeView::FilterLoadables( true, gTreeView ); |
||||
HMENU menu = ::GetMenu( hWnd ); |
||||
menu = ::GetSubMenu( menu, 0 ); |
||||
::CheckMenuItem( menu, ID_FILE_ONLYLOAD, MF_BYCOMMAND | MF_CHECKED ); |
||||
} |
||||
|
||||
if( gCommandLine != nil ) |
||||
{ |
||||
plWaitCursor myWaitCursor; |
||||
|
||||
char path[ MAX_PATH ]; |
||||
if( gCommandLine[ 0 ] == '"' ) |
||||
{ |
||||
strcpy( path, gCommandLine + 1 ); |
||||
char *c = strchr( path, '"' ); |
||||
if( c != nil ) |
||||
*c = 0; |
||||
} |
||||
else |
||||
strcpy( path, gCommandLine ); |
||||
|
||||
if( stricmp( PathFindExtension( path ), ".prp" ) == 0 ) |
||||
{ |
||||
hsgResMgr::Reset(); |
||||
plResTreeView::ClearTreeView( gTreeView ); |
||||
plResManager *mgr = (plResManager *)hsgResMgr::ResMgr(); |
||||
mgr->AddSinglePage(path); |
||||
plResTreeView::FillTreeViewFromRegistry( gTreeView ); |
||||
|
||||
SetWindowTitle( hWnd, path ); |
||||
} |
||||
} |
||||
break; |
||||
|
||||
case WM_CLOSE: |
||||
DestroyWindow( hWnd ); |
||||
break; |
||||
case WM_DESTROY: |
||||
plResTreeView::ClearTreeView( gTreeView ); |
||||
PostQuitMessage(0); |
||||
break; |
||||
|
||||
case WM_SIZING: |
||||
case WM_SIZE: |
||||
SizeControls( hWnd ); |
||||
break; |
||||
|
||||
case WM_NOTIFY: |
||||
if( wParam == IDC_REGTREEVIEW ) |
||||
{ |
||||
NMHDR *hdr = (NMHDR *)lParam; |
||||
if( hdr->code == TVN_SELCHANGED ) |
||||
{ |
||||
plResTreeView::UpdateInfoDlg( gTreeView ); |
||||
//NMTREEVIEW *tv = (NMTREEVIEW *)hdr;
|
||||
|
||||
} |
||||
else if( hdr->code == NM_DBLCLK ) |
||||
{ |
||||
plResTreeView::SelectionDblClicked( gTreeView ); |
||||
} |
||||
} |
||||
break; |
||||
|
||||
case WM_DROPFILES: |
||||
{ |
||||
int i, j, fileCount = DragQueryFile( (HDROP)wParam, -1, nil, 0 ); |
||||
char path[ MAX_PATH ]; |
||||
|
||||
plWaitCursor myWaitCursor; |
||||
|
||||
hsgResMgr::Reset(); |
||||
plResTreeView::ClearTreeView( gTreeView ); |
||||
plResManager *mgr = (plResManager *)hsgResMgr::ResMgr(); |
||||
|
||||
if( fileCount == 1 && DragQueryFile( (HDROP)wParam, 0, path, sizeof( path ) ) > 0 && |
||||
( (char *)PathFindExtension( path ) )[ 0 ] == 0 ) |
||||
{ |
||||
// Must be a directory
|
||||
std::vector<plFileName> prpFiles = plFileSystem::ListDir(path, "*.prp"); |
||||
for (auto iter = prpFiles.begin(); iter != prpFiles.end(); ++iter) |
||||
mgr->AddSinglePage(*iter); |
||||
} |
||||
else |
||||
{ |
||||
hsTArray<char *> filesAdded; |
||||
|
||||
filesAdded.Reset(); |
||||
for( i = 0; i < fileCount; i++ ) |
||||
{ |
||||
if( DragQueryFile( (HDROP)wParam, i, path, sizeof( path ) ) > 0 ) |
||||
{ |
||||
// Check for duplicates
|
||||
for( j = 0; j < filesAdded.GetCount(); j++ ) |
||||
{ |
||||
if( stricmp( filesAdded[ j ], path ) == 0 ) |
||||
break; |
||||
} |
||||
if( j < filesAdded.GetCount() ) |
||||
continue; |
||||
|
||||
if( stricmp( PathFindExtension( path ), ".prp" ) == 0 ) |
||||
{ |
||||
mgr->AddSinglePage(path); |
||||
filesAdded.Append( hsStrcpy( path ) ); |
||||
} |
||||
} |
||||
} |
||||
|
||||
for( j = 0; j < filesAdded.GetCount(); j++ ) |
||||
delete [] filesAdded[ j ]; |
||||
} |
||||
plResTreeView::FillTreeViewFromRegistry( gTreeView ); |
||||
|
||||
PathRemoveFileSpec( path ); |
||||
SetWindowTitle( hWnd, path ); |
||||
} |
||||
break; |
||||
|
||||
case WM_COMMAND: |
||||
return HandleCommand( hWnd, wParam, lParam ); |
||||
} |
||||
|
||||
return DefWindowProc( hWnd, message, wParam, lParam ); |
||||
} |
||||
|
@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<ui version="4.0"> |
||||
<class>FindDialog</class> |
||||
<widget class="QDialog" name="FindDialog"> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>0</x> |
||||
<y>0</y> |
||||
<width>320</width> |
||||
<height>71</height> |
||||
</rect> |
||||
</property> |
||||
<property name="windowTitle"> |
||||
<string>Find Object</string> |
||||
</property> |
||||
<layout class="QHBoxLayout" name="horizontalLayout"> |
||||
<item> |
||||
<widget class="QGroupBox" name="groupBox"> |
||||
<property name="title"> |
||||
<string>Object Name</string> |
||||
</property> |
||||
<layout class="QVBoxLayout" name="verticalLayout"> |
||||
<item> |
||||
<widget class="QLineEdit" name="fObjectName"/> |
||||
</item> |
||||
</layout> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<widget class="QDialogButtonBox" name="buttonBox"> |
||||
<property name="orientation"> |
||||
<enum>Qt::Vertical</enum> |
||||
</property> |
||||
<property name="standardButtons"> |
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
</layout> |
||||
</widget> |
||||
<resources/> |
||||
<connections> |
||||
<connection> |
||||
<sender>buttonBox</sender> |
||||
<signal>accepted()</signal> |
||||
<receiver>FindDialog</receiver> |
||||
<slot>accept()</slot> |
||||
<hints> |
||||
<hint type="sourcelabel"> |
||||
<x>248</x> |
||||
<y>254</y> |
||||
</hint> |
||||
<hint type="destinationlabel"> |
||||
<x>157</x> |
||||
<y>274</y> |
||||
</hint> |
||||
</hints> |
||||
</connection> |
||||
<connection> |
||||
<sender>buttonBox</sender> |
||||
<signal>rejected()</signal> |
||||
<receiver>FindDialog</receiver> |
||||
<slot>reject()</slot> |
||||
<hints> |
||||
<hint type="sourcelabel"> |
||||
<x>316</x> |
||||
<y>260</y> |
||||
</hint> |
||||
<hint type="destinationlabel"> |
||||
<x>286</x> |
||||
<y>274</y> |
||||
</hint> |
||||
</hints> |
||||
</connection> |
||||
</connections> |
||||
</ui> |
@ -0,0 +1,591 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<ui version="4.0"> |
||||
<class>ResBrowser</class> |
||||
<widget class="QMainWindow" name="ResBrowser"> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>0</x> |
||||
<y>0</y> |
||||
<width>800</width> |
||||
<height>600</height> |
||||
</rect> |
||||
</property> |
||||
<property name="windowTitle"> |
||||
<string>plResBrowser</string> |
||||
</property> |
||||
<widget class="QWidget" name="centralwidget"> |
||||
<layout class="QVBoxLayout" name="verticalLayout"> |
||||
<property name="leftMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="topMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="rightMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<property name="bottomMargin"> |
||||
<number>0</number> |
||||
</property> |
||||
<item> |
||||
<widget class="plResTreeView" name="fTreeView"> |
||||
<attribute name="headerVisible"> |
||||
<bool>false</bool> |
||||
</attribute> |
||||
<column> |
||||
<property name="text"> |
||||
<string notr="true">1</string> |
||||
</property> |
||||
</column> |
||||
</widget> |
||||
</item> |
||||
</layout> |
||||
</widget> |
||||
<widget class="QMenuBar" name="menubar"> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>0</x> |
||||
<y>0</y> |
||||
<width>800</width> |
||||
<height>21</height> |
||||
</rect> |
||||
</property> |
||||
<widget class="QMenu" name="menu_File"> |
||||
<property name="title"> |
||||
<string>&File</string> |
||||
</property> |
||||
<addaction name="fOpenAction"/> |
||||
<addaction name="fOpenDirectoryAction"/> |
||||
<addaction name="separator"/> |
||||
<addaction name="fSaveSelectedAction"/> |
||||
<addaction name="separator"/> |
||||
<addaction name="fFindAction"/> |
||||
<addaction name="fFindNextAction"/> |
||||
<addaction name="fShowOnlyLoadableAction"/> |
||||
<addaction name="separator"/> |
||||
<addaction name="fExitAction"/> |
||||
</widget> |
||||
<widget class="QMenu" name="menu_Help"> |
||||
<property name="title"> |
||||
<string>&Help</string> |
||||
</property> |
||||
<addaction name="fAboutAction"/> |
||||
</widget> |
||||
<addaction name="menu_File"/> |
||||
<addaction name="menu_Help"/> |
||||
</widget> |
||||
<widget class="QDockWidget" name="dockWidget"> |
||||
<property name="minimumSize"> |
||||
<size> |
||||
<width>300</width> |
||||
<height>520</height> |
||||
</size> |
||||
</property> |
||||
<property name="features"> |
||||
<set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set> |
||||
</property> |
||||
<property name="allowedAreas"> |
||||
<set>Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea</set> |
||||
</property> |
||||
<property name="windowTitle"> |
||||
<string>Properties</string> |
||||
</property> |
||||
<attribute name="dockWidgetArea"> |
||||
<number>2</number> |
||||
</attribute> |
||||
<widget class="QWidget" name="dockWidgetContents"> |
||||
<property name="sizePolicy"> |
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> |
||||
<horstretch>0</horstretch> |
||||
<verstretch>0</verstretch> |
||||
</sizepolicy> |
||||
</property> |
||||
<property name="minimumSize"> |
||||
<size> |
||||
<width>300</width> |
||||
<height>0</height> |
||||
</size> |
||||
</property> |
||||
<property name="maximumSize"> |
||||
<size> |
||||
<width>300</width> |
||||
<height>16777215</height> |
||||
</size> |
||||
</property> |
||||
<layout class="QVBoxLayout" name="verticalLayout_2"> |
||||
<item> |
||||
<widget class="QGroupBox" name="groupBox"> |
||||
<property name="title"> |
||||
<string>Page Information</string> |
||||
</property> |
||||
<layout class="QGridLayout" name="gridLayout_2"> |
||||
<item row="0" column="0"> |
||||
<widget class="QLabel" name="label"> |
||||
<property name="text"> |
||||
<string>Age:</string> |
||||
</property> |
||||
<property name="alignment"> |
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="0" column="1"> |
||||
<widget class="QLineEdit" name="fAgeName"> |
||||
<property name="readOnly"> |
||||
<bool>true</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="2" column="1"> |
||||
<widget class="QLineEdit" name="fLocation"> |
||||
<property name="readOnly"> |
||||
<bool>true</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="4" column="0"> |
||||
<widget class="QLabel" name="label_4"> |
||||
<property name="text"> |
||||
<string>Data Version:</string> |
||||
</property> |
||||
<property name="alignment"> |
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="2" column="0"> |
||||
<widget class="QLabel" name="label_3"> |
||||
<property name="text"> |
||||
<string>Location:</string> |
||||
</property> |
||||
<property name="alignment"> |
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="1" column="0"> |
||||
<widget class="QLabel" name="label_2"> |
||||
<property name="text"> |
||||
<string>Page</string> |
||||
</property> |
||||
<property name="alignment"> |
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="1" column="1"> |
||||
<widget class="QLineEdit" name="fPageName"> |
||||
<property name="readOnly"> |
||||
<bool>true</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="4" column="1"> |
||||
<widget class="QLineEdit" name="fDataVersion"> |
||||
<property name="readOnly"> |
||||
<bool>true</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="6" column="1"> |
||||
<widget class="QLineEdit" name="fChecksum"> |
||||
<property name="readOnly"> |
||||
<bool>true</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="6" column="0"> |
||||
<widget class="QLabel" name="label_5"> |
||||
<property name="text"> |
||||
<string>Checksum:</string> |
||||
</property> |
||||
<property name="alignment"> |
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="3" column="1"> |
||||
<layout class="QGridLayout" name="gridLayout"> |
||||
<item row="0" column="0"> |
||||
<widget class="QCheckBox" name="fLocalOnly"> |
||||
<property name="enabled"> |
||||
<bool>false</bool> |
||||
</property> |
||||
<property name="text"> |
||||
<string/> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="0" column="2"> |
||||
<widget class="QCheckBox" name="fVolatile"> |
||||
<property name="enabled"> |
||||
<bool>false</bool> |
||||
</property> |
||||
<property name="text"> |
||||
<string/> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="1" column="0"> |
||||
<widget class="QCheckBox" name="fReserved"> |
||||
<property name="enabled"> |
||||
<bool>false</bool> |
||||
</property> |
||||
<property name="text"> |
||||
<string/> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="1" column="2"> |
||||
<widget class="QCheckBox" name="fBuiltIn"> |
||||
<property name="enabled"> |
||||
<bool>false</bool> |
||||
</property> |
||||
<property name="text"> |
||||
<string/> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="0" column="1"> |
||||
<widget class="QLabel" name="label_11"> |
||||
<property name="sizePolicy"> |
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred"> |
||||
<horstretch>0</horstretch> |
||||
<verstretch>0</verstretch> |
||||
</sizepolicy> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Local Only</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="1" column="1"> |
||||
<widget class="QLabel" name="label_12"> |
||||
<property name="sizePolicy"> |
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred"> |
||||
<horstretch>0</horstretch> |
||||
<verstretch>0</verstretch> |
||||
</sizepolicy> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Reserved</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="0" column="3"> |
||||
<widget class="QLabel" name="label_13"> |
||||
<property name="sizePolicy"> |
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred"> |
||||
<horstretch>0</horstretch> |
||||
<verstretch>0</verstretch> |
||||
</sizepolicy> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Volatile</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="1" column="3"> |
||||
<widget class="QLabel" name="label_14"> |
||||
<property name="sizePolicy"> |
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred"> |
||||
<horstretch>0</horstretch> |
||||
<verstretch>0</verstretch> |
||||
</sizepolicy> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Built-In</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
</layout> |
||||
</item> |
||||
<item row="7" column="1"> |
||||
<widget class="QLineEdit" name="fChecksumType"> |
||||
<property name="readOnly"> |
||||
<bool>true</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="7" column="0"> |
||||
<widget class="QLabel" name="label_6"> |
||||
<property name="text"> |
||||
<string>Checksum Type:</string> |
||||
</property> |
||||
<property name="alignment"> |
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="5" column="0" colspan="2"> |
||||
<spacer name="verticalSpacer"> |
||||
<property name="orientation"> |
||||
<enum>Qt::Vertical</enum> |
||||
</property> |
||||
<property name="sizeType"> |
||||
<enum>QSizePolicy::Fixed</enum> |
||||
</property> |
||||
<property name="sizeHint" stdset="0"> |
||||
<size> |
||||
<width>0</width> |
||||
<height>40</height> |
||||
</size> |
||||
</property> |
||||
</spacer> |
||||
</item> |
||||
</layout> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<widget class="QGroupBox" name="groupBox_2"> |
||||
<property name="title"> |
||||
<string>Object Information</string> |
||||
</property> |
||||
<layout class="QGridLayout" name="gridLayout_3"> |
||||
<item row="3" column="0"> |
||||
<widget class="QLabel" name="label_9"> |
||||
<property name="text"> |
||||
<string>Start Pos:</string> |
||||
</property> |
||||
<property name="alignment"> |
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="0" column="0"> |
||||
<widget class="QLabel" name="label_7"> |
||||
<property name="text"> |
||||
<string>Name:</string> |
||||
</property> |
||||
<property name="alignment"> |
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="1" column="0"> |
||||
<widget class="QLabel" name="label_8"> |
||||
<property name="text"> |
||||
<string>Class:</string> |
||||
</property> |
||||
<property name="alignment"> |
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="3" column="1"> |
||||
<widget class="QLineEdit" name="fStartPos"> |
||||
<property name="readOnly"> |
||||
<bool>true</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="3" column="3"> |
||||
<widget class="QLabel" name="label_10"> |
||||
<property name="text"> |
||||
<string>Size:</string> |
||||
</property> |
||||
<property name="alignment"> |
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="2" column="0" colspan="5"> |
||||
<spacer name="verticalSpacer_2"> |
||||
<property name="orientation"> |
||||
<enum>Qt::Vertical</enum> |
||||
</property> |
||||
<property name="sizeType"> |
||||
<enum>QSizePolicy::Fixed</enum> |
||||
</property> |
||||
<property name="sizeHint" stdset="0"> |
||||
<size> |
||||
<width>0</width> |
||||
<height>20</height> |
||||
</size> |
||||
</property> |
||||
</spacer> |
||||
</item> |
||||
<item row="3" column="4"> |
||||
<widget class="QLineEdit" name="fObjectSize"> |
||||
<property name="readOnly"> |
||||
<bool>true</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="0" column="1" colspan="4"> |
||||
<widget class="QLineEdit" name="fObjectName"> |
||||
<property name="readOnly"> |
||||
<bool>true</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="1" column="1" colspan="4"> |
||||
<widget class="QLineEdit" name="fObjectClass"> |
||||
<property name="readOnly"> |
||||
<bool>true</bool> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="3" column="2"> |
||||
<spacer name="horizontalSpacer_3"> |
||||
<property name="orientation"> |
||||
<enum>Qt::Horizontal</enum> |
||||
</property> |
||||
<property name="sizeType"> |
||||
<enum>QSizePolicy::Fixed</enum> |
||||
</property> |
||||
<property name="sizeHint" stdset="0"> |
||||
<size> |
||||
<width>16</width> |
||||
<height>0</height> |
||||
</size> |
||||
</property> |
||||
</spacer> |
||||
</item> |
||||
</layout> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<layout class="QHBoxLayout" name="horizontalLayout_2"> |
||||
<item> |
||||
<spacer name="horizontalSpacer_2"> |
||||
<property name="orientation"> |
||||
<enum>Qt::Horizontal</enum> |
||||
</property> |
||||
<property name="sizeHint" stdset="0"> |
||||
<size> |
||||
<width>40</width> |
||||
<height>20</height> |
||||
</size> |
||||
</property> |
||||
</spacer> |
||||
</item> |
||||
<item> |
||||
<widget class="QCheckBox" name="fHexValues"> |
||||
<property name="text"> |
||||
<string>View values as he&x</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
</layout> |
||||
</item> |
||||
<item> |
||||
<spacer name="verticalSpacer_3"> |
||||
<property name="orientation"> |
||||
<enum>Qt::Vertical</enum> |
||||
</property> |
||||
<property name="sizeHint" stdset="0"> |
||||
<size> |
||||
<width>20</width> |
||||
<height>40</height> |
||||
</size> |
||||
</property> |
||||
</spacer> |
||||
</item> |
||||
<item> |
||||
<layout class="QHBoxLayout" name="horizontalLayout"> |
||||
<item> |
||||
<widget class="QPushButton" name="fFindButton"> |
||||
<property name="text"> |
||||
<string>Fin&d</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<widget class="QPushButton" name="fFindNextButton"> |
||||
<property name="text"> |
||||
<string>Find &Next</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item> |
||||
<spacer name="horizontalSpacer"> |
||||
<property name="orientation"> |
||||
<enum>Qt::Horizontal</enum> |
||||
</property> |
||||
<property name="sizeHint" stdset="0"> |
||||
<size> |
||||
<width>40</width> |
||||
<height>20</height> |
||||
</size> |
||||
</property> |
||||
</spacer> |
||||
</item> |
||||
<item> |
||||
<widget class="QPushButton" name="fSaveButton"> |
||||
<property name="enabled"> |
||||
<bool>false</bool> |
||||
</property> |
||||
<property name="text"> |
||||
<string>&Save Object</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
</layout> |
||||
</item> |
||||
</layout> |
||||
</widget> |
||||
</widget> |
||||
<action name="fOpenAction"> |
||||
<property name="text"> |
||||
<string>&Open...</string> |
||||
</property> |
||||
</action> |
||||
<action name="fOpenDirectoryAction"> |
||||
<property name="text"> |
||||
<string>Open &Directory...</string> |
||||
</property> |
||||
</action> |
||||
<action name="fSaveSelectedAction"> |
||||
<property name="enabled"> |
||||
<bool>false</bool> |
||||
</property> |
||||
<property name="text"> |
||||
<string>&Save Selected Object</string> |
||||
</property> |
||||
</action> |
||||
<action name="fFindAction"> |
||||
<property name="text"> |
||||
<string>&Find Object...</string> |
||||
</property> |
||||
<property name="shortcut"> |
||||
<string>Ctrl+F</string> |
||||
</property> |
||||
</action> |
||||
<action name="fFindNextAction"> |
||||
<property name="text"> |
||||
<string>Find &Next</string> |
||||
</property> |
||||
<property name="shortcut"> |
||||
<string>F3</string> |
||||
</property> |
||||
</action> |
||||
<action name="fShowOnlyLoadableAction"> |
||||
<property name="checkable"> |
||||
<bool>true</bool> |
||||
</property> |
||||
<property name="text"> |
||||
<string>Show Only &Loadable</string> |
||||
</property> |
||||
</action> |
||||
<action name="fExitAction"> |
||||
<property name="text"> |
||||
<string>E&xit</string> |
||||
</property> |
||||
</action> |
||||
<action name="fAboutAction"> |
||||
<property name="text"> |
||||
<string>&About...</string> |
||||
</property> |
||||
</action> |
||||
</widget> |
||||
<customwidgets> |
||||
<customwidget> |
||||
<class>plResTreeView</class> |
||||
<extends>QTreeWidget</extends> |
||||
<header>plResTreeView.h</header> |
||||
</customwidget> |
||||
</customwidgets> |
||||
<resources/> |
||||
<connections/> |
||||
</ui> |
@ -0,0 +1,5 @@
|
||||
<!DOCTYPE RCC><RCC version="1.0"> |
||||
<qresource> |
||||
<file>icon1.ico</file> |
||||
</qresource> |
||||
</RCC> |
@ -1,68 +0,0 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by plResBrowser.rc
|
||||
//
|
||||
#define IDI_ICON1 101 |
||||
#define IDI_APPICON 101 |
||||
#define IDR_APPMENU 102 |
||||
#define IDD_INFODLG 103 |
||||
#define IDD_ABOUT 104 |
||||
#define IDR_ACCELERATOR1 106 |
||||
#define IDD_FINDOBJ 107 |
||||
#define IDI_INDEXICON 108 |
||||
#define IDI_DATAICON 109 |
||||
#define IDI_PATCHICON 110 |
||||
#define IDI_MERGEDDATAICON 111 |
||||
#define IDI_MERGEDINDEXICON 112 |
||||
#define IDC_NAME 1000 |
||||
#define IDC_AGE 1001 |
||||
#define IDC_CHAPTER 1002 |
||||
#define IDC_PAGE 1003 |
||||
#define IDC_LOCATION 1004 |
||||
#define IDC_RESERVED 1005 |
||||
#define IDC_CLASS 1006 |
||||
#define IDC_STARTPOS 1007 |
||||
#define IDC_LENGTH 1008 |
||||
#define IDC_CANLOAD 1009 |
||||
#define IDC_STARTPOS_LABEL 1010 |
||||
#define IDC_SIZE_LABEL 1011 |
||||
#define IDC_INTERLEAVED 1012 |
||||
#define IDC_RELVERSION 1013 |
||||
#define IDC_SEARCHSTRING 1014 |
||||
#define IDC_DATAVERSION 1014 |
||||
#define IDC_IDXCHECKSUM 1015 |
||||
#define IDC_DATACHECKSUM 1016 |
||||
#define IDC_CHECKSUMTYPE 1017 |
||||
#define IDC_SHOWASHEX 1018 |
||||
#define IDC_SCROLLBAR 1019 |
||||
#define IDC_PARTIALPATCH 1019 |
||||
#define IDC_FRAME 1020 |
||||
#define IDC_HEADERPATCH 1020 |
||||
#define IDC_COPIED 1021 |
||||
#define IDC_NEW 1022 |
||||
#define IDC_ZOOM 1023 |
||||
#define IDC_ZOOMSLIDER 1024 |
||||
#define IDC_SEGINFO 1025 |
||||
#define IDC_LOCAL_ONLY 1025 |
||||
#define IDC_BUILTIN 1026 |
||||
#define IDC_VOLATILE 1027 |
||||
#define ID_FILE_OPEN 40001 |
||||
#define ID_FILE_EXIT 40002 |
||||
#define ID_FILE_OPENDIRECTORY 40003 |
||||
#define ID_FILE_ABOUT 40004 |
||||
#define ID_FILE_FINDOBJECT 40005 |
||||
#define ID_FILE_FINDNEXT 40006 |
||||
#define ID_FILE_VERIFYPAGE 40007 |
||||
#define ID_FILE_ONLYLOAD 40008 |
||||
#define ID_FILE_SAVESELECTED 40009 |
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED |
||||
#ifndef APSTUDIO_READONLY_SYMBOLS |
||||
#define _APS_NEXT_RESOURCE_VALUE 110 |
||||
#define _APS_NEXT_COMMAND_VALUE 40010 |
||||
#define _APS_NEXT_CONTROL_VALUE 1026 |
||||
#define _APS_NEXT_SYMED_VALUE 101 |
||||
#endif |
||||
#endif |
Loading…
Reference in new issue