Adam Johnson
11 years ago
51 changed files with 3878 additions and 3733 deletions
@ -0,0 +1,86 @@ |
|||||||
|
/*==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 _plFontConverter_h |
||||||
|
#define _plFontConverter_h |
||||||
|
|
||||||
|
#include <QMainWindow> |
||||||
|
|
||||||
|
class plFont; |
||||||
|
class plFileName; |
||||||
|
|
||||||
|
class plFontConverter : public QMainWindow |
||||||
|
{ |
||||||
|
Q_OBJECT |
||||||
|
|
||||||
|
public: |
||||||
|
plFontConverter(); |
||||||
|
virtual ~plFontConverter(); |
||||||
|
|
||||||
|
private slots: |
||||||
|
void OpenFNT(); |
||||||
|
void OpenBDF(); |
||||||
|
void OpenFON(); |
||||||
|
void OpenTTF(); |
||||||
|
void OpenP2F(); |
||||||
|
void ExportP2F(); |
||||||
|
|
||||||
|
protected: |
||||||
|
virtual void dragEnterEvent(QDragEnterEvent *event); |
||||||
|
virtual void dropEvent(QDropEvent *event); |
||||||
|
|
||||||
|
private: |
||||||
|
class Ui_MainDialog *fUI; |
||||||
|
plFont *fFont; |
||||||
|
|
||||||
|
void IMakeFontGoAway(); |
||||||
|
void IMakeNewFont(); |
||||||
|
void IUpdateInfo(); |
||||||
|
|
||||||
|
void IImportFNT(const plFileName &path); |
||||||
|
void IImportBDF(const plFileName &path); |
||||||
|
void IImportFON(const plFileName &path); |
||||||
|
void IBatchFreeType(const plFileName &path, void *init = nullptr); |
||||||
|
void IImportFreeType(const plFileName &path); |
||||||
|
void IOpenP2F(const plFileName &path); |
||||||
|
}; |
||||||
|
|
||||||
|
#endif |
@ -1,756 +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 "res/resource.h" |
|
||||||
#include <shlwapi.h> |
|
||||||
#include <shellapi.h> |
|
||||||
#include <shlobj.h> |
|
||||||
#include <commdlg.h> |
|
||||||
#include <commctrl.h> |
|
||||||
#include <ctime> |
|
||||||
|
|
||||||
#include "hsStream.h" |
|
||||||
#include "hsResMgr.h" |
|
||||||
#include "plFontFreeType.h" |
|
||||||
#include "plGImage/plFont.h" |
|
||||||
#include "plGImage/plMipmap.h" |
|
||||||
#include "pnKeyedObject/plUoid.h" |
|
||||||
#include "pnKeyedObject/plKeyImp.h" |
|
||||||
|
|
||||||
|
|
||||||
extern HINSTANCE gInstance; |
|
||||||
|
|
||||||
// My global font that i'm working on
|
|
||||||
plFont *gFont = nil; |
|
||||||
|
|
||||||
// Preview bitmap
|
|
||||||
HDC gPreviewHDC = nil; |
|
||||||
HBITMAP gPreviewBitmap = nil; |
|
||||||
|
|
||||||
void IMakeFontGoAway( void ) |
|
||||||
{ |
|
||||||
if( gFont != nil ) |
|
||||||
{ |
|
||||||
plKeyImp *imp = (plKeyImp *)(gFont->GetKey()); |
|
||||||
if( imp != nil ) |
|
||||||
imp->SetObjectPtr( nil ); |
|
||||||
gFont = nil; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
void IMakeNewFont( void ) |
|
||||||
{ |
|
||||||
IMakeFontGoAway(); |
|
||||||
gFont = new plFont(); |
|
||||||
} |
|
||||||
|
|
||||||
BOOL CALLBACK AboutDialogProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) |
|
||||||
{ |
|
||||||
if( msg == WM_COMMAND ) |
|
||||||
EndDialog( hWnd, 0 ); |
|
||||||
return 0; |
|
||||||
} |
|
||||||
|
|
||||||
bool PromptForFile( HWND parent, const char *prompt, const char *filter, char *fileName, int fileNameMax, bool save ) |
|
||||||
{ |
|
||||||
OPENFILENAME openInfo; |
|
||||||
|
|
||||||
|
|
||||||
memset( &openInfo, 0, sizeof( OPENFILENAME ) ); |
|
||||||
openInfo.hInstance = gInstance; |
|
||||||
openInfo.hwndOwner = parent; |
|
||||||
openInfo.lStructSize = sizeof( OPENFILENAME ); |
|
||||||
openInfo.lpstrFile = fileName; |
|
||||||
openInfo.nMaxFile = fileNameMax; |
|
||||||
openInfo.lpstrFilter = filter; |
|
||||||
openInfo.lpstrTitle = prompt; |
|
||||||
openInfo.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY; |
|
||||||
if( !save ) |
|
||||||
openInfo.Flags |= OFN_READONLY; |
|
||||||
|
|
||||||
if( save ) |
|
||||||
return GetSaveFileName( &openInfo ) ? true : false; |
|
||||||
|
|
||||||
return GetOpenFileName( &openInfo ) ? true : false; |
|
||||||
} |
|
||||||
|
|
||||||
void IUpdateInfo( HWND hDlg ) |
|
||||||
{ |
|
||||||
const int TEST_STRING_SIZE = 512; |
|
||||||
static wchar_t testString[ TEST_STRING_SIZE ] = L"The quick brown fox jumped over the lazy dog! ABCabc012345;,."; |
|
||||||
|
|
||||||
if( gFont == nil ) |
|
||||||
{ |
|
||||||
SetDlgItemText( hDlg, IDC_FACE, "" ); |
|
||||||
SetDlgItemText( hDlg, IDC_FSIZE, "" ); |
|
||||||
SetDlgItemText( hDlg, IDC_STARTG, "" ); |
|
||||||
SetDlgItemText( hDlg, IDC_GCOUNT, "" ); |
|
||||||
|
|
||||||
SetDlgItemText( hDlg, IDC_WIDTH, "" ); |
|
||||||
SetDlgItemText( hDlg, IDC_HEIGHT, "" ); |
|
||||||
SetDlgItemText( hDlg, IDC_BPP, "" ); |
|
||||||
|
|
||||||
CheckDlgButton( hDlg, IDC_BOLD, false ); |
|
||||||
CheckDlgButton( hDlg, IDC_ITALIC, false ); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
SetDlgItemText( hDlg, IDC_FACE, gFont->GetFace().c_str() ); |
|
||||||
SetDlgItemInt( hDlg, IDC_FSIZE, gFont->GetSize(), false ); |
|
||||||
SetDlgItemInt( hDlg, IDC_STARTG, gFont->GetFirstChar(), false ); |
|
||||||
SetDlgItemInt( hDlg, IDC_GCOUNT, gFont->GetNumChars(), false ); |
|
||||||
|
|
||||||
SetDlgItemInt( hDlg, IDC_WIDTH, gFont->GetBitmapWidth(), false ); |
|
||||||
SetDlgItemInt( hDlg, IDC_HEIGHT, gFont->GetBitmapHeight(), false ); |
|
||||||
SetDlgItemInt( hDlg, IDC_BPP, gFont->GetBitmapBPP(), false ); |
|
||||||
|
|
||||||
CheckDlgButton( hDlg, IDC_BOLD, gFont->IsFlagSet( plFont::kFlagBold ) ); |
|
||||||
CheckDlgButton( hDlg, IDC_ITALIC, gFont->IsFlagSet( plFont::kFlagItalic ) ); |
|
||||||
|
|
||||||
if( gPreviewHDC != nil ) |
|
||||||
{ |
|
||||||
DeleteObject( gPreviewHDC ); |
|
||||||
DeleteObject( gPreviewBitmap ); |
|
||||||
gPreviewHDC = nil; |
|
||||||
gPreviewBitmap = nil; |
|
||||||
} |
|
||||||
|
|
||||||
// Get the size of our preview
|
|
||||||
RECT r; |
|
||||||
GetClientRect( GetDlgItem( hDlg, IDC_PREVIEW ), &r ); |
|
||||||
MapWindowPoints( GetDlgItem( hDlg, IDC_PREVIEW ), hDlg, (POINT *)&r, 2 ); |
|
||||||
|
|
||||||
InvalidateRect( hDlg, &r, false ); |
|
||||||
|
|
||||||
if( gFont->GetNumChars() == 0 ) |
|
||||||
return; |
|
||||||
|
|
||||||
// Our preview bitmap
|
|
||||||
HDC deskDC = GetDC( nil ); |
|
||||||
gPreviewHDC = CreateCompatibleDC( deskDC ); |
|
||||||
gPreviewBitmap = CreateCompatibleBitmap( deskDC, r.right - r.left, r.bottom - r.top ); |
|
||||||
SelectObject( gPreviewHDC, gPreviewBitmap ); |
|
||||||
ReleaseDC( nil, deskDC ); |
|
||||||
|
|
||||||
::GetDlgItemTextW( hDlg, IDC_PREVTEXT, testString, TEST_STRING_SIZE ); |
|
||||||
|
|
||||||
// Create us a mipmap to render onto, render onto it, then copy that to our DC
|
|
||||||
plMipmap *mip = new plMipmap( r.right - r.left, r.bottom - r.top, plMipmap::kARGB32Config, 1 ); |
|
||||||
memset( mip->GetImage(), 0xff, mip->GetWidth() * mip->GetHeight() * 4 ); |
|
||||||
|
|
||||||
gFont->SetRenderColor( 0xff000000 ); |
|
||||||
gFont->SetRenderFlag( plFont::kRenderClip, true ); |
|
||||||
gFont->SetRenderClipRect( 0, 0, (int16_t)(r.right - r.left), (int16_t)(r.bottom - r.top) ); |
|
||||||
uint16_t w, h, a, lastX, lastY; |
|
||||||
uint32_t firstCC; |
|
||||||
gFont->CalcStringExtents( testString, w, h, a, firstCC, lastX, lastY ); |
|
||||||
|
|
||||||
int cY = ( ( ( r.bottom - r.top ) - h ) >> 1 ) + a; |
|
||||||
|
|
||||||
if( cY < 0 ) |
|
||||||
cY = 0; |
|
||||||
else if( cY > r.bottom - r.top - 1 ) |
|
||||||
cY = r.bottom - r.top - 1; |
|
||||||
|
|
||||||
memset( mip->GetAddr32( 8, cY ), 0xc0, ( r.right - r.left - 8 ) * 4 ); |
|
||||||
|
|
||||||
gFont->RenderString( mip, 8, cY, testString ); |
|
||||||
|
|
||||||
int x, y; |
|
||||||
for( y = 0; y < r.bottom - r.top; y++ ) |
|
||||||
{ |
|
||||||
for( x = 0; x < r.right - r.left; x++ ) |
|
||||||
{ |
|
||||||
uint32_t color = *mip->GetAddr32( x, y ); |
|
||||||
hsColorRGBA rgba; |
|
||||||
rgba.FromARGB32( color ); |
|
||||||
|
|
||||||
if( color != 0xffffffff && color != 0xff000000 ) |
|
||||||
{ |
|
||||||
int q = 0; |
|
||||||
} |
|
||||||
SetPixel( gPreviewHDC, x, y, RGB( rgba.r * 255.f, rgba.g * 255.f, rgba.b * 255.f) ); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
delete mip; |
|
||||||
} |
|
||||||
|
|
||||||
class plSetKeyObj : public hsKeyedObject |
|
||||||
{ |
|
||||||
public: |
|
||||||
void SetMyKey( const plKey &key ) |
|
||||||
{ |
|
||||||
SetKey( key ); |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
class plMyBDFCallback : public plBDFConvertCallback |
|
||||||
{ |
|
||||||
protected: |
|
||||||
HWND fDlg; |
|
||||||
clock_t fLastTime; |
|
||||||
uint16_t fPoint; |
|
||||||
|
|
||||||
void IPumpMessageQueue( void ) |
|
||||||
{ |
|
||||||
MSG msg; |
|
||||||
while( PeekMessage( &msg, fDlg, 0, 0, PM_REMOVE ) ) |
|
||||||
{ |
|
||||||
TranslateMessage( &msg ); |
|
||||||
DispatchMessage( &msg ); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public: |
|
||||||
plMyBDFCallback( HWND dlg ) : fDlg( dlg ) {} |
|
||||||
|
|
||||||
virtual void NumChars( uint16_t chars ) |
|
||||||
{ |
|
||||||
::SendDlgItemMessage( fDlg, IDC_PROGRESS, PBM_SETRANGE, 0, MAKELPARAM( 0, chars ) ); |
|
||||||
IPumpMessageQueue(); |
|
||||||
fLastTime = clock(); |
|
||||||
fPoint = 0; |
|
||||||
} |
|
||||||
|
|
||||||
virtual void CharDone( void ) |
|
||||||
{ |
|
||||||
fPoint++; |
|
||||||
if( clock() - fLastTime > CLOCKS_PER_SEC / 16 ) |
|
||||||
{ |
|
||||||
::SendDlgItemMessage( fDlg, IDC_PROGRESS, PBM_SETPOS, fPoint, 0 ); |
|
||||||
IPumpMessageQueue(); |
|
||||||
fLastTime = clock(); |
|
||||||
} |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
BOOL CALLBACK ProgressWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) |
|
||||||
{ |
|
||||||
return 0; |
|
||||||
} |
|
||||||
|
|
||||||
void IImportFNT( HWND hWnd, const char *path ) |
|
||||||
{ |
|
||||||
IMakeNewFont(); |
|
||||||
if( !gFont->LoadFromFNT( path ) ) |
|
||||||
MessageBox( hWnd, "Failure converting FNT file", "ERROR", MB_OK | MB_ICONEXCLAMATION ); |
|
||||||
IUpdateInfo( hWnd ); |
|
||||||
} |
|
||||||
|
|
||||||
void IImportBDF( HWND hWnd, const char *path ) |
|
||||||
{ |
|
||||||
IMakeNewFont(); |
|
||||||
HWND dialog = CreateDialog( gInstance, MAKEINTRESOURCE( IDD_PROGRESS ), hWnd, ProgressWndProc ); |
|
||||||
ShowWindow( dialog, SW_SHOW ); |
|
||||||
EnableWindow( hWnd, false ); |
|
||||||
plMyBDFCallback callback( dialog ); |
|
||||||
|
|
||||||
if( !gFont->LoadFromBDF( path, &callback ) ) |
|
||||||
MessageBox( hWnd, "Failure converting BDF file", "ERROR", MB_OK | MB_ICONEXCLAMATION ); |
|
||||||
|
|
||||||
DestroyWindow( dialog ); |
|
||||||
EnableWindow( hWnd, true ); |
|
||||||
|
|
||||||
IUpdateInfo( hWnd ); |
|
||||||
} |
|
||||||
|
|
||||||
void IOpenP2F( HWND hWnd, const char *path ) |
|
||||||
{ |
|
||||||
IMakeNewFont(); |
|
||||||
if( !gFont->LoadFromP2FFile( path ) ) |
|
||||||
MessageBox( hWnd, "Failure opening P2F file", "ERROR", MB_OK | MB_ICONEXCLAMATION ); |
|
||||||
|
|
||||||
IUpdateInfo( hWnd ); |
|
||||||
} |
|
||||||
|
|
||||||
struct ResRecord |
|
||||||
{ |
|
||||||
HRSRC fHandle; |
|
||||||
char fName[ 512 ]; |
|
||||||
|
|
||||||
ResRecord() { fHandle = nil; fName[ 0 ] = 0; } |
|
||||||
ResRecord( HRSRC h, const char *n ) { fHandle = h; strncpy( fName, n, sizeof( fName ) ); } |
|
||||||
}; |
|
||||||
|
|
||||||
BOOL CALLBACK ResEnumProc( HMODULE module, LPCTSTR type, LPTSTR name, LONG_PTR lParam ) |
|
||||||
{ |
|
||||||
HRSRC res = FindResource( module, name, type ); |
|
||||||
if( res != nil ) |
|
||||||
{ |
|
||||||
hsTArray<ResRecord *> *array = (hsTArray<ResRecord *> *)lParam; |
|
||||||
array->Append( new ResRecord( res, name ) ); |
|
||||||
} |
|
||||||
|
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
BOOL CALLBACK ResListWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) |
|
||||||
{ |
|
||||||
switch( message ) |
|
||||||
{ |
|
||||||
case WM_INITDIALOG: |
|
||||||
{ |
|
||||||
SendDlgItemMessage( hWnd, IDC_RESLIST, LB_RESETCONTENT, 0, 0 ); |
|
||||||
hsTArray<ResRecord *> *array = (hsTArray<ResRecord *> *)lParam; |
|
||||||
for( uint32_t i = 0; i < array->GetCount(); i++ ) |
|
||||||
{ |
|
||||||
ResRecord *rec = array->Get( i ); |
|
||||||
int idx = SendDlgItemMessage( hWnd, IDC_RESLIST, LB_ADDSTRING, 0, (LPARAM)rec->fName ); |
|
||||||
SendDlgItemMessage( hWnd, IDC_RESLIST, LB_SETITEMDATA, idx, (LPARAM)rec ); |
|
||||||
} |
|
||||||
} |
|
||||||
return 0; |
|
||||||
|
|
||||||
case WM_COMMAND: |
|
||||||
if( wParam == IDCANCEL ) |
|
||||||
EndDialog( hWnd, 0 ); |
|
||||||
else |
|
||||||
{ |
|
||||||
int idx = SendDlgItemMessage( hWnd, IDC_RESLIST, LB_GETCURSEL, 0, 0 ); |
|
||||||
if( idx == LB_ERR ) |
|
||||||
EndDialog( hWnd, 0 ); |
|
||||||
else |
|
||||||
{ |
|
||||||
ResRecord *rec = (ResRecord *)SendDlgItemMessage( hWnd, IDC_RESLIST, LB_GETITEMDATA, idx, 0 ); |
|
||||||
EndDialog( hWnd, (int)rec ); |
|
||||||
} |
|
||||||
} |
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
return 0; |
|
||||||
} |
|
||||||
|
|
||||||
void IImportFON( HWND hWnd, const char *path ) |
|
||||||
{ |
|
||||||
// FON files are really just resource modules
|
|
||||||
IMakeNewFont(); |
|
||||||
HMODULE file = LoadLibraryEx( path, nil, LOAD_LIBRARY_AS_DATAFILE | DONT_RESOLVE_DLL_REFERENCES ); |
|
||||||
if( file == nil ) |
|
||||||
{ |
|
||||||
char msg[ 512 ], msg2[ 1024 ]; |
|
||||||
|
|
||||||
FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
|
||||||
nil, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)msg, sizeof( msg ), nil ); |
|
||||||
|
|
||||||
sprintf( msg2, "Failure importing FON file: can't open as resource library (%s)", msg ); |
|
||||||
MessageBox( hWnd, msg2, "Error", MB_OK | MB_ICONEXCLAMATION ); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
hsTArray<ResRecord *> resList; |
|
||||||
|
|
||||||
if( EnumResourceNames( file, "Font", ResEnumProc, (LPARAM)&resList ) ) |
|
||||||
{ |
|
||||||
// Put up a list of the resources so the user can choose which one
|
|
||||||
ResRecord *res = (ResRecord *)DialogBoxParam( gInstance, MAKEINTRESOURCE( IDD_FONCHOOSER ), hWnd,
|
|
||||||
ResListWndProc, (LPARAM)&resList ); |
|
||||||
if( res != nil ) |
|
||||||
{ |
|
||||||
// Load the resource into a ram stream
|
|
||||||
hsRAMStream stream; |
|
||||||
|
|
||||||
HGLOBAL glob = LoadResource( file, res->fHandle ); |
|
||||||
if( glob != nil ) |
|
||||||
{ |
|
||||||
void *data = LockResource( glob ); |
|
||||||
if( data != nil ) |
|
||||||
{ |
|
||||||
stream.Write( SizeofResource( file, res->fHandle ), data ); |
|
||||||
stream.Rewind(); |
|
||||||
|
|
||||||
if( !gFont->LoadFromFNTStream( &stream ) ) |
|
||||||
MessageBox( hWnd, "Failure importing FON file: can't parse resource as FNT", |
|
||||||
"Error", MB_OK | MB_ICONEXCLAMATION ); |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
char msg[ 512 ], msg2[ 1024 ]; |
|
||||||
|
|
||||||
FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
|
||||||
nil, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)msg, sizeof( msg ), nil ); |
|
||||||
|
|
||||||
sprintf( msg2, "Failure importing FON file: can't enumerate resources (%s)", msg ); |
|
||||||
MessageBox( hWnd, msg2, "Error", MB_OK | MB_ICONEXCLAMATION ); |
|
||||||
} |
|
||||||
|
|
||||||
uint32_t i; |
|
||||||
for( i = 0; i < resList.GetCount(); i++ ) |
|
||||||
delete resList[ i ]; |
|
||||||
resList.Reset(); |
|
||||||
|
|
||||||
FreeLibrary( file ); |
|
||||||
} |
|
||||||
|
|
||||||
IUpdateInfo( hWnd ); |
|
||||||
} |
|
||||||
|
|
||||||
BOOL CALLBACK FreeTypeDlgProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) |
|
||||||
{ |
|
||||||
static plFontFreeType::Options *info; |
|
||||||
|
|
||||||
switch( message ) |
|
||||||
{ |
|
||||||
case WM_INITDIALOG: |
|
||||||
info = (plFontFreeType::Options *)lParam; |
|
||||||
SetDlgItemInt( hWnd, IDC_PSIZE, info->fSize, false ); |
|
||||||
SetDlgItemInt( hWnd, IDC_RES, info->fScreenRes, false ); |
|
||||||
SetDlgItemInt( hWnd, IDC_MAXCHAR, info->fMaxCharLimit, false ); |
|
||||||
CheckRadioButton( hWnd, IDC_BITDEPTH, IDC_BITDEPTH2, info->fBitDepth == 1 ? IDC_BITDEPTH : IDC_BITDEPTH2 ); |
|
||||||
return 0; |
|
||||||
|
|
||||||
case WM_COMMAND: |
|
||||||
if( wParam == IDOK || wParam == IDCANCEL || wParam == IDC_BATCH ) |
|
||||||
{ |
|
||||||
info->fSize = GetDlgItemInt( hWnd, IDC_PSIZE, nil, false ); |
|
||||||
info->fScreenRes = GetDlgItemInt( hWnd, IDC_RES, nil, false ); |
|
||||||
info->fMaxCharLimit = GetDlgItemInt( hWnd, IDC_MAXCHAR, nil, false ); |
|
||||||
|
|
||||||
if( IsDlgButtonChecked( hWnd, IDC_BITDEPTH ) ) |
|
||||||
info->fBitDepth = 1; |
|
||||||
else |
|
||||||
info->fBitDepth = 8; |
|
||||||
|
|
||||||
EndDialog( hWnd, wParam ); |
|
||||||
} |
|
||||||
return 1; |
|
||||||
} |
|
||||||
return 0; |
|
||||||
} |
|
||||||
|
|
||||||
void IBatchFreeType( HWND hWnd, const char *path ); |
|
||||||
|
|
||||||
void IImportFreeType( HWND hWnd, const char *path ) |
|
||||||
{ |
|
||||||
static plFontFreeType::Options info; |
|
||||||
|
|
||||||
int ret = DialogBoxParam( gInstance, MAKEINTRESOURCE( IDD_FREETYPE ), hWnd, FreeTypeDlgProc, (LPARAM)&info ); |
|
||||||
if( ret == IDCANCEL ) |
|
||||||
return; |
|
||||||
else if( ret == IDC_BATCH ) |
|
||||||
{ |
|
||||||
IBatchFreeType( hWnd, path ); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
IMakeNewFont(); |
|
||||||
HWND dialog = CreateDialog( gInstance, MAKEINTRESOURCE( IDD_PROGRESS ), hWnd, ProgressWndProc ); |
|
||||||
ShowWindow( dialog, SW_SHOW ); |
|
||||||
EnableWindow( hWnd, false ); |
|
||||||
plMyBDFCallback callback( dialog ); |
|
||||||
|
|
||||||
plFontFreeType *ft2Convert = (plFontFreeType *)gFont; |
|
||||||
if( !ft2Convert->ImportFreeType( path, &info, &callback ) ) |
|
||||||
MessageBox( hWnd, "Failure converting TrueType file", "ERROR", MB_OK | MB_ICONEXCLAMATION ); |
|
||||||
|
|
||||||
DestroyWindow( dialog ); |
|
||||||
EnableWindow( hWnd, true ); |
|
||||||
|
|
||||||
IUpdateInfo( hWnd ); |
|
||||||
} |
|
||||||
|
|
||||||
static uint8_t sNumSizes = 0; |
|
||||||
static uint8_t sSizeArray[ 256 ]; |
|
||||||
static char sFontName[ 256 ]; // desired font name for FreeType conversions
|
|
||||||
|
|
||||||
BOOL CALLBACK FreeTypeBatchDlgProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) |
|
||||||
{ |
|
||||||
static plFontFreeType::Options *info; |
|
||||||
|
|
||||||
switch( message ) |
|
||||||
{ |
|
||||||
case WM_INITDIALOG: |
|
||||||
info = (plFontFreeType::Options *)lParam; |
|
||||||
SetDlgItemText( hWnd, IDC_PSIZE, "12" ); |
|
||||||
SetDlgItemText( hWnd, IDC_FONTNAME, "Untitled" ); |
|
||||||
SetDlgItemInt( hWnd, IDC_RES, info->fScreenRes, false ); |
|
||||||
SetDlgItemInt( hWnd, IDC_MAXCHAR, info->fMaxCharLimit, false ); |
|
||||||
CheckRadioButton( hWnd, IDC_BITDEPTH, IDC_BITDEPTH2, info->fBitDepth == 1 ? IDC_BITDEPTH : IDC_BITDEPTH2 ); |
|
||||||
return 0; |
|
||||||
|
|
||||||
case WM_COMMAND: |
|
||||||
if( wParam == IDOK || wParam == IDCANCEL ) |
|
||||||
{ |
|
||||||
sNumSizes = 0; |
|
||||||
|
|
||||||
char *c, *lastC, str[ 1024 ]; |
|
||||||
GetDlgItemText( hWnd, IDC_PSIZE, str, sizeof( str ) ); |
|
||||||
lastC = str; |
|
||||||
while( ( c = strchr( lastC, ',' ) ) != nil && sNumSizes < 255 ) |
|
||||||
{ |
|
||||||
*c = 0; |
|
||||||
sSizeArray[ sNumSizes++ ] = atoi( lastC ); |
|
||||||
lastC = c + 1;
|
|
||||||
} |
|
||||||
|
|
||||||
sSizeArray[ sNumSizes++ ] = atoi( lastC ); |
|
||||||
|
|
||||||
info->fScreenRes = GetDlgItemInt( hWnd, IDC_RES, nil, false ); |
|
||||||
info->fMaxCharLimit = GetDlgItemInt( hWnd, IDC_MAXCHAR, nil, false ); |
|
||||||
|
|
||||||
if( IsDlgButtonChecked( hWnd, IDC_BITDEPTH ) ) |
|
||||||
info->fBitDepth = 1; |
|
||||||
else |
|
||||||
info->fBitDepth = 8; |
|
||||||
|
|
||||||
GetDlgItemText( hWnd, IDC_FONTNAME, sFontName, sizeof(sFontName) ); |
|
||||||
|
|
||||||
EndDialog( hWnd, wParam ); |
|
||||||
} |
|
||||||
return 1; |
|
||||||
} |
|
||||||
return 0; |
|
||||||
} |
|
||||||
|
|
||||||
void IBatchFreeType( HWND hWnd, const char *path ) |
|
||||||
{ |
|
||||||
static plFontFreeType::Options info; |
|
||||||
|
|
||||||
if( DialogBoxParam( gInstance, MAKEINTRESOURCE( IDD_FREETYPEBATCH ), hWnd, FreeTypeBatchDlgProc, (LPARAM)&info ) == IDCANCEL ) |
|
||||||
return; |
|
||||||
|
|
||||||
BROWSEINFO bInfo; |
|
||||||
LPITEMIDLIST itemList; |
|
||||||
LPMALLOC shMalloc; |
|
||||||
static char destPath[ MAX_PATH ] = ""; |
|
||||||
|
|
||||||
memset( &bInfo, 0, sizeof( bInfo ) ); |
|
||||||
bInfo.hwndOwner = hWnd; |
|
||||||
bInfo.pidlRoot = NULL; |
|
||||||
bInfo.pszDisplayName = destPath; |
|
||||||
bInfo.lpszTitle = "Select a path to write the P2F fonts to:"; |
|
||||||
bInfo.ulFlags = BIF_EDITBOX; |
|
||||||
|
|
||||||
itemList = SHBrowseForFolder( &bInfo ); |
|
||||||
if( itemList != NULL ) |
|
||||||
{ |
|
||||||
SHGetPathFromIDList( itemList, destPath ); |
|
||||||
SHGetMalloc( &shMalloc ); |
|
||||||
shMalloc->Free( itemList ); |
|
||||||
shMalloc->Release(); |
|
||||||
} |
|
||||||
else |
|
||||||
return; |
|
||||||
|
|
||||||
HWND dialog = CreateDialog( gInstance, MAKEINTRESOURCE( IDD_PROGRESS ), hWnd, ProgressWndProc ); |
|
||||||
ShowWindow( dialog, SW_SHOW ); |
|
||||||
EnableWindow( hWnd, false ); |
|
||||||
plMyBDFCallback callback( dialog ); |
|
||||||
|
|
||||||
callback.NumChars( sNumSizes ); |
|
||||||
uint8_t i; |
|
||||||
for( i = 0; i < sNumSizes; i++ ) |
|
||||||
{ |
|
||||||
IMakeNewFont(); |
|
||||||
plFontFreeType *ft2Convert = (plFontFreeType *)gFont; |
|
||||||
|
|
||||||
info.fSize = sSizeArray[ i ]; |
|
||||||
if( !ft2Convert->ImportFreeType( path, &info, nil ) ) |
|
||||||
{ |
|
||||||
MessageBox( hWnd, "Failure converting TrueType file", "ERROR", MB_OK | MB_ICONEXCLAMATION ); |
|
||||||
continue; |
|
||||||
} |
|
||||||
|
|
||||||
gFont->SetFace(sFontName); |
|
||||||
char fileName[ MAX_PATH ]; |
|
||||||
sprintf( fileName, "%s\\%s-%d.p2f", destPath, gFont->GetFace().c_str(), gFont->GetSize() ); |
|
||||||
hsUNIXStream stream; |
|
||||||
if( !stream.Open( fileName, "wb" ) ) |
|
||||||
MessageBox( hWnd, "Can't open file for writing", "Error", MB_OK | MB_ICONEXCLAMATION ); |
|
||||||
else |
|
||||||
{ |
|
||||||
gFont->WriteRaw( &stream ); |
|
||||||
stream.Close(); |
|
||||||
} |
|
||||||
|
|
||||||
callback.CharDone(); |
|
||||||
} |
|
||||||
|
|
||||||
DestroyWindow( dialog ); |
|
||||||
EnableWindow( hWnd, true ); |
|
||||||
IUpdateInfo( hWnd ); |
|
||||||
} |
|
||||||
|
|
||||||
BOOL CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) |
|
||||||
{ |
|
||||||
char fileName[ MAX_PATH ]; |
|
||||||
PAINTSTRUCT paintInfo; |
|
||||||
HDC myDC; |
|
||||||
RECT r; |
|
||||||
|
|
||||||
|
|
||||||
switch( message ) |
|
||||||
{ |
|
||||||
case WM_PAINT: |
|
||||||
myDC = BeginPaint( hWnd, &paintInfo ); |
|
||||||
|
|
||||||
GetClientRect( GetDlgItem( hWnd, IDC_PREVIEW ), &r ); |
|
||||||
MapWindowPoints( GetDlgItem( hWnd, IDC_PREVIEW ), hWnd, (POINT *)&r, 2 ); |
|
||||||
|
|
||||||
if( gPreviewHDC != nil ) |
|
||||||
BitBlt( myDC, r.left, r.top, r.right - r.left, r.bottom - r.top, gPreviewHDC, 0, 0, SRCCOPY ); |
|
||||||
else |
|
||||||
FillRect( myDC, &r, GetSysColorBrush( COLOR_3DFACE ) ); |
|
||||||
|
|
||||||
DrawEdge( myDC, &r, EDGE_SUNKEN, BF_RECT ); |
|
||||||
|
|
||||||
EndPaint( hWnd, &paintInfo ); |
|
||||||
return 0; |
|
||||||
|
|
||||||
case WM_INITDIALOG: |
|
||||||
SendMessage( hWnd, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon( gInstance, MAKEINTRESOURCE( IDI_APPICON ) ) ); |
|
||||||
SetDlgItemTextW( hWnd, IDC_PREVTEXT, L"The quick brown fox jumped over the lazy dog! ABCabc012345;,." ); |
|
||||||
return 0; |
|
||||||
|
|
||||||
case WM_COMMAND: |
|
||||||
if( wParam == ID_FILE_ABOUT ) |
|
||||||
{ |
|
||||||
DialogBox( gInstance, MAKEINTRESOURCE( IDD_ABOUT ), hWnd, AboutDialogProc ); |
|
||||||
} |
|
||||||
else if( wParam == ID_FILE_EXIT ) |
|
||||||
PostQuitMessage( 0 ); |
|
||||||
else if( wParam == ID_FILE_FNT ) |
|
||||||
{ |
|
||||||
fileName[ 0 ] = 0; |
|
||||||
if( PromptForFile( hWnd, "Choose a FNT file to convert", "Windows FNT files\0*.fnt\0All files\0*.*\0", fileName, sizeof( fileName ), false ) ) |
|
||||||
IImportFNT( hWnd, fileName ); |
|
||||||
} |
|
||||||
else if( wParam == ID_FILE_P2F ) |
|
||||||
{ |
|
||||||
fileName[ 0 ] = 0; |
|
||||||
if( PromptForFile( hWnd, "Choose a P2F file to open", "Plasma 2 font files\0*.p2f\0All files\0*.*\0", fileName, sizeof( fileName ), false ) ) |
|
||||||
IOpenP2F( hWnd, fileName ); |
|
||||||
} |
|
||||||
else if( wParam == ID_FILE_FON ) |
|
||||||
{ |
|
||||||
fileName[ 0 ] = 0; |
|
||||||
if( PromptForFile( hWnd, "Choose a FON file to convert", "Windows FON files\0*.fon\0All files\0*.*\0", fileName, sizeof( fileName ), false ) ) |
|
||||||
IImportFON( hWnd, fileName ); |
|
||||||
} |
|
||||||
else if( wParam == ID_FILE_TRUETYPE ) |
|
||||||
{ |
|
||||||
fileName[ 0 ] = 0; |
|
||||||
if( PromptForFile( hWnd, "Choose a TrueType font to convert", "TrueType files\0*.ttf\0TrueType Collections\0*.ttc\0All files\0*.*\0", fileName, sizeof( fileName ), false ) ) |
|
||||||
IBatchFreeType( hWnd, fileName ); |
|
||||||
} |
|
||||||
else if( wParam == ID_FILE_EXPORT ) |
|
||||||
{ |
|
||||||
// Grab updated values for the font
|
|
||||||
GetDlgItemText( hWnd, IDC_FACE, fileName, sizeof( fileName ) ); |
|
||||||
gFont->SetFace( fileName ); |
|
||||||
gFont->SetSize( GetDlgItemInt( hWnd, IDC_FSIZE, nil, false ) ); |
|
||||||
gFont->SetFlag( plFont::kFlagBold, IsDlgButtonChecked( hWnd, IDC_BOLD ) == BST_CHECKED ); |
|
||||||
gFont->SetFlag( plFont::kFlagItalic, IsDlgButtonChecked( hWnd, IDC_ITALIC ) == BST_CHECKED ); |
|
||||||
|
|
||||||
// Write out
|
|
||||||
sprintf( fileName, "%s-%d.p2f", gFont->GetFace().c_str(), gFont->GetSize() ); |
|
||||||
if( PromptForFile( hWnd, "Specify a file to export to", "Plasma 2 font files\0*.p2f\0", fileName, sizeof( fileName ), true ) ) |
|
||||||
{ |
|
||||||
hsUNIXStream stream; |
|
||||||
if( !stream.Open( fileName, "wb" ) ) |
|
||||||
MessageBox( hWnd, "Can't open file for writing", "Error", MB_OK | MB_ICONEXCLAMATION ); |
|
||||||
else |
|
||||||
{ |
|
||||||
/* sprintf( fileName, "%s-%d", gFont->GetFace(), gFont->GetSize() );
|
|
||||||
|
|
||||||
if( gFont->GetKey() == nil ) |
|
||||||
hsgResMgr::ResMgr()->NewKey( fileName, gFont, plLocation::kGlobalFixedLoc ); |
|
||||||
|
|
||||||
*/
|
|
||||||
gFont->WriteRaw( &stream ); |
|
||||||
stream.Close(); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
else if( LOWORD( wParam ) == IDC_PREVTEXT && HIWORD( wParam ) == EN_CHANGE ) |
|
||||||
{ |
|
||||||
IUpdateInfo( hWnd ); |
|
||||||
} |
|
||||||
return true; |
|
||||||
|
|
||||||
case WM_CLOSE: |
|
||||||
PostQuitMessage( 0 ); |
|
||||||
return true; |
|
||||||
|
|
||||||
case WM_DROPFILES: |
|
||||||
{ |
|
||||||
int i, fileCount = DragQueryFile( (HDROP)wParam, -1, nil, 0 ); |
|
||||||
char path[ MAX_PATH ]; |
|
||||||
|
|
||||||
|
|
||||||
for( i = 0; i < fileCount; i++ ) |
|
||||||
{ |
|
||||||
if( DragQueryFile( (HDROP)wParam, i, path, sizeof( path ) ) > 0 ) |
|
||||||
{ |
|
||||||
char *ext = PathFindExtension( path ); |
|
||||||
if( stricmp( ext, ".fnt" ) == 0 ) |
|
||||||
IImportFNT( hWnd, path ); |
|
||||||
else if( stricmp( ext, ".bdf" ) == 0 ) |
|
||||||
IImportBDF( hWnd, path ); |
|
||||||
else if( stricmp( ext, ".fon" ) == 0 ) |
|
||||||
IImportFON( hWnd, path ); |
|
||||||
else if( stricmp( ext, ".exe" ) == 0 ) |
|
||||||
IImportFON( hWnd, path ); |
|
||||||
else if(( stricmp( ext, ".ttf" ) == 0 ) || ( stricmp( ext, ".ttc" ) == 0 )) |
|
||||||
IImportFreeType( hWnd, path ); |
|
||||||
else if( stricmp( ext, ".p2f" ) == 0 ) |
|
||||||
IOpenP2F( hWnd, path ); |
|
||||||
else |
|
||||||
// Try using our freeType converter
|
|
||||||
IImportFreeType( hWnd, path ); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
IUpdateInfo( hWnd ); |
|
||||||
} |
|
||||||
break; |
|
||||||
|
|
||||||
} |
|
||||||
return 0;//DefWindowProc( hWnd, message, wParam, lParam );
|
|
||||||
} |
|
||||||
|
|
@ -0,0 +1,115 @@ |
|||||||
|
/*==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 "plFontPreview.h" |
||||||
|
|
||||||
|
#include "plGImage/plFont.h" |
||||||
|
#include "plGImage/plMipmap.h" |
||||||
|
|
||||||
|
#include <QPainter> |
||||||
|
#include <QPicture> |
||||||
|
|
||||||
|
#include <memory> |
||||||
|
|
||||||
|
void plFontPreview::Update(plFont *font, const QString &text) |
||||||
|
{ |
||||||
|
fFont = font; |
||||||
|
fText = text; |
||||||
|
fPreview = QImage(width(), height(), QImage::Format_ARGB32); |
||||||
|
|
||||||
|
if (fFont == nullptr) { |
||||||
|
QPainter p(&fPreview); |
||||||
|
p.fillRect(0, 0, width(), height(), Qt::white); |
||||||
|
|
||||||
|
update(); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
plString testString = text.toUtf8().constData(); |
||||||
|
|
||||||
|
// Create us a mipmap to render onto, render onto it, then copy that to our DC
|
||||||
|
plMipmap *mip = new plMipmap(width(), height(), plMipmap::kARGB32Config, 1); |
||||||
|
memset(mip->GetImage(), 0xff, mip->GetWidth() * mip->GetHeight() * 4); |
||||||
|
|
||||||
|
fFont->SetRenderColor(0xff000000); |
||||||
|
fFont->SetRenderFlag(plFont::kRenderClip, true); |
||||||
|
fFont->SetRenderClipRect(0, 0, (int16_t)width(), (int16_t)height()); |
||||||
|
uint16_t w, h, a, lastX, lastY; |
||||||
|
uint32_t firstCC; |
||||||
|
fFont->CalcStringExtents(testString, w, h, a, firstCC, lastX, lastY); |
||||||
|
|
||||||
|
int cY = ((height() - h) >> 1) + a; |
||||||
|
|
||||||
|
if (cY < 0) |
||||||
|
cY = 0; |
||||||
|
else if (cY > height() - 1) |
||||||
|
cY = height() - 1; |
||||||
|
|
||||||
|
memset(mip->GetAddr32(8, cY), 0xc0, (width() - 8) * 4); |
||||||
|
|
||||||
|
fFont->RenderString(mip, 8, cY, testString); |
||||||
|
|
||||||
|
int x, y; |
||||||
|
for (y = 0; y < height(); y++) { |
||||||
|
for (x = 0; x < width(); x++) { |
||||||
|
uint32_t color = *mip->GetAddr32(x, y); |
||||||
|
|
||||||
|
if (color != 0xffffffff && color != 0xff000000) |
||||||
|
{ |
||||||
|
int q = 0; |
||||||
|
} |
||||||
|
// One pixel at a time? Surely we can do better...
|
||||||
|
// But for now this is a pure port
|
||||||
|
fPreview.setPixel(x, y, color | 0xff000000); |
||||||
|
} |
||||||
|
} |
||||||
|
delete mip; |
||||||
|
|
||||||
|
update(); |
||||||
|
} |
||||||
|
|
||||||
|
void plFontPreview::paintEvent(QPaintEvent *event) |
||||||
|
{ |
||||||
|
QPainter painter(this); |
||||||
|
painter.drawImage(0, 0, fPreview); |
||||||
|
|
||||||
|
QFrame::paintEvent(event); |
||||||
|
} |
@ -0,0 +1,81 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<ui version="4.0"> |
||||||
|
<class>FonChooser</class> |
||||||
|
<widget class="QDialog" name="FonChooser"> |
||||||
|
<property name="geometry"> |
||||||
|
<rect> |
||||||
|
<x>0</x> |
||||||
|
<y>0</y> |
||||||
|
<width>270</width> |
||||||
|
<height>260</height> |
||||||
|
</rect> |
||||||
|
</property> |
||||||
|
<property name="windowTitle"> |
||||||
|
<string>FON Resource List</string> |
||||||
|
</property> |
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout"> |
||||||
|
<item> |
||||||
|
<layout class="QVBoxLayout" name="verticalLayout"> |
||||||
|
<item> |
||||||
|
<widget class="QLabel" name="label"> |
||||||
|
<property name="text"> |
||||||
|
<string>Choose which resource to import:</string> |
||||||
|
</property> |
||||||
|
<property name="wordWrap"> |
||||||
|
<bool>true</bool> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<widget class="QListWidget" name="fResourceList"/> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</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>FonChooser</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>FonChooser</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,137 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<ui version="4.0"> |
||||||
|
<class>FreeType</class> |
||||||
|
<widget class="QDialog" name="FreeType"> |
||||||
|
<property name="geometry"> |
||||||
|
<rect> |
||||||
|
<x>0</x> |
||||||
|
<y>0</y> |
||||||
|
<width>340</width> |
||||||
|
<height>95</height> |
||||||
|
</rect> |
||||||
|
</property> |
||||||
|
<property name="windowTitle"> |
||||||
|
<string>FreeType Import Options</string> |
||||||
|
</property> |
||||||
|
<layout class="QVBoxLayout" name="verticalLayout"> |
||||||
|
<item> |
||||||
|
<layout class="QGridLayout" name="gridLayout"> |
||||||
|
<item row="0" column="0"> |
||||||
|
<widget class="QLabel" name="label"> |
||||||
|
<property name="text"> |
||||||
|
<string>Render Point &Size:</string> |
||||||
|
</property> |
||||||
|
<property name="buddy"> |
||||||
|
<cstring>fPointSize</cstring> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="0" column="1"> |
||||||
|
<widget class="QSpinBox" name="fPointSize"> |
||||||
|
<property name="maximum"> |
||||||
|
<number>255</number> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="0" column="2"> |
||||||
|
<widget class="QLabel" name="label_3"> |
||||||
|
<property name="text"> |
||||||
|
<string>Max &Character:</string> |
||||||
|
</property> |
||||||
|
<property name="buddy"> |
||||||
|
<cstring>fMaxChar</cstring> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="0" column="3"> |
||||||
|
<widget class="QSpinBox" name="fMaxChar"> |
||||||
|
<property name="maximum"> |
||||||
|
<number>1114111</number> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="1" column="0"> |
||||||
|
<widget class="QLabel" name="label_2"> |
||||||
|
<property name="text"> |
||||||
|
<string>Screen &Resolution:</string> |
||||||
|
</property> |
||||||
|
<property name="buddy"> |
||||||
|
<cstring>fResolution</cstring> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="1" column="1"> |
||||||
|
<widget class="QSpinBox" name="fResolution"> |
||||||
|
<property name="maximum"> |
||||||
|
<number>65535</number> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="1" column="2" colspan="2"> |
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout"> |
||||||
|
<item> |
||||||
|
<widget class="QRadioButton" name="fMonochrome"> |
||||||
|
<property name="text"> |
||||||
|
<string>&Monochrome</string> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<widget class="QRadioButton" name="fGrayscale"> |
||||||
|
<property name="text"> |
||||||
|
<string>&Grayscale</string> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<widget class="QDialogButtonBox" name="fButtons"> |
||||||
|
<property name="orientation"> |
||||||
|
<enum>Qt::Horizontal</enum> |
||||||
|
</property> |
||||||
|
<property name="standardButtons"> |
||||||
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</widget> |
||||||
|
<resources/> |
||||||
|
<connections> |
||||||
|
<connection> |
||||||
|
<sender>fButtons</sender> |
||||||
|
<signal>accepted()</signal> |
||||||
|
<receiver>FreeType</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>fButtons</sender> |
||||||
|
<signal>rejected()</signal> |
||||||
|
<receiver>FreeType</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,159 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<ui version="4.0"> |
||||||
|
<class>FreeTypeBatch</class> |
||||||
|
<widget class="QDialog" name="FreeTypeBatch"> |
||||||
|
<property name="geometry"> |
||||||
|
<rect> |
||||||
|
<x>0</x> |
||||||
|
<y>0</y> |
||||||
|
<width>357</width> |
||||||
|
<height>181</height> |
||||||
|
</rect> |
||||||
|
</property> |
||||||
|
<property name="windowTitle"> |
||||||
|
<string>FreeType Import Options</string> |
||||||
|
</property> |
||||||
|
<layout class="QVBoxLayout" name="verticalLayout"> |
||||||
|
<item> |
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout"> |
||||||
|
<item> |
||||||
|
<widget class="QLabel" name="label"> |
||||||
|
<property name="text"> |
||||||
|
<string>Render Point &Sizes:</string> |
||||||
|
</property> |
||||||
|
<property name="buddy"> |
||||||
|
<cstring>fPointSizes</cstring> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<widget class="QLineEdit" name="fPointSizes"/> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<widget class="QGroupBox" name="groupBox"> |
||||||
|
<property name="title"> |
||||||
|
<string>Common Settings</string> |
||||||
|
</property> |
||||||
|
<layout class="QGridLayout" name="gridLayout"> |
||||||
|
<item row="1" column="2" colspan="2"> |
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2"> |
||||||
|
<item> |
||||||
|
<widget class="QRadioButton" name="fMonochrome"> |
||||||
|
<property name="text"> |
||||||
|
<string>&Monochrome</string> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<widget class="QRadioButton" name="fGrayscale"> |
||||||
|
<property name="text"> |
||||||
|
<string>&Grayscale</string> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</item> |
||||||
|
<item row="0" column="0"> |
||||||
|
<widget class="QLabel" name="label_4"> |
||||||
|
<property name="text"> |
||||||
|
<string>Screen &Resolution:</string> |
||||||
|
</property> |
||||||
|
<property name="buddy"> |
||||||
|
<cstring>fResolution</cstring> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="0" column="2"> |
||||||
|
<widget class="QLabel" name="label_3"> |
||||||
|
<property name="text"> |
||||||
|
<string>Max &Character:</string> |
||||||
|
</property> |
||||||
|
<property name="buddy"> |
||||||
|
<cstring>fMaxChar</cstring> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="0" column="3"> |
||||||
|
<widget class="QSpinBox" name="fMaxChar"> |
||||||
|
<property name="maximum"> |
||||||
|
<number>1114111</number> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="0" column="1"> |
||||||
|
<widget class="QSpinBox" name="fResolution"> |
||||||
|
<property name="maximum"> |
||||||
|
<number>65535</number> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_3"> |
||||||
|
<item> |
||||||
|
<widget class="QLabel" name="label_2"> |
||||||
|
<property name="text"> |
||||||
|
<string>Font &Name:</string> |
||||||
|
</property> |
||||||
|
<property name="buddy"> |
||||||
|
<cstring>fFontName</cstring> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<widget class="QLineEdit" name="fFontName"/> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<widget class="QDialogButtonBox" name="buttonBox"> |
||||||
|
<property name="orientation"> |
||||||
|
<enum>Qt::Horizontal</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>FreeTypeBatch</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>FreeTypeBatch</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,355 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<ui version="4.0"> |
||||||
|
<class>MainDialog</class> |
||||||
|
<widget class="QMainWindow" name="MainDialog"> |
||||||
|
<property name="geometry"> |
||||||
|
<rect> |
||||||
|
<x>0</x> |
||||||
|
<y>0</y> |
||||||
|
<width>384</width> |
||||||
|
<height>316</height> |
||||||
|
</rect> |
||||||
|
</property> |
||||||
|
<property name="windowTitle"> |
||||||
|
<string>plFontConverter</string> |
||||||
|
</property> |
||||||
|
<widget class="QWidget" name="centralwidget"> |
||||||
|
<layout class="QVBoxLayout" name="verticalLayout"> |
||||||
|
<property name="spacing"> |
||||||
|
<number>8</number> |
||||||
|
</property> |
||||||
|
<property name="leftMargin"> |
||||||
|
<number>8</number> |
||||||
|
</property> |
||||||
|
<property name="topMargin"> |
||||||
|
<number>8</number> |
||||||
|
</property> |
||||||
|
<property name="rightMargin"> |
||||||
|
<number>8</number> |
||||||
|
</property> |
||||||
|
<property name="bottomMargin"> |
||||||
|
<number>8</number> |
||||||
|
</property> |
||||||
|
<item> |
||||||
|
<layout class="QGridLayout" name="gridLayout"> |
||||||
|
<property name="spacing"> |
||||||
|
<number>8</number> |
||||||
|
</property> |
||||||
|
<item row="0" column="0"> |
||||||
|
<widget class="QLabel" name="label"> |
||||||
|
<property name="text"> |
||||||
|
<string>F&ace:</string> |
||||||
|
</property> |
||||||
|
<property name="alignment"> |
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
||||||
|
</property> |
||||||
|
<property name="buddy"> |
||||||
|
<cstring>fFaceName</cstring> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="0" column="1"> |
||||||
|
<widget class="QLineEdit" name="fFaceName"/> |
||||||
|
</item> |
||||||
|
<item row="0" column="2"> |
||||||
|
<widget class="QPushButton" name="fExportButton"> |
||||||
|
<property name="enabled"> |
||||||
|
<bool>false</bool> |
||||||
|
</property> |
||||||
|
<property name="text"> |
||||||
|
<string>&Export P2F...</string> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="1" column="0"> |
||||||
|
<widget class="QLabel" name="label_2"> |
||||||
|
<property name="text"> |
||||||
|
<string>&Size:</string> |
||||||
|
</property> |
||||||
|
<property name="alignment"> |
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
||||||
|
</property> |
||||||
|
<property name="buddy"> |
||||||
|
<cstring>fFontSize</cstring> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="1" column="1"> |
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout"> |
||||||
|
<item> |
||||||
|
<widget class="QSpinBox" name="fFontSize"> |
||||||
|
<property name="sizePolicy"> |
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> |
||||||
|
<horstretch>0</horstretch> |
||||||
|
<verstretch>0</verstretch> |
||||||
|
</sizepolicy> |
||||||
|
</property> |
||||||
|
<property name="maximum"> |
||||||
|
<number>255</number> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<widget class="QCheckBox" name="fBold"> |
||||||
|
<property name="text"> |
||||||
|
<string>&Bold</string> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<widget class="QCheckBox" name="fItalic"> |
||||||
|
<property name="text"> |
||||||
|
<string>&Italic</string> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<layout class="QGridLayout" name="gridLayout_2"> |
||||||
|
<property name="spacing"> |
||||||
|
<number>8</number> |
||||||
|
</property> |
||||||
|
<item row="0" column="0"> |
||||||
|
<widget class="QLabel" name="label_3"> |
||||||
|
<property name="sizePolicy"> |
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Preferred"> |
||||||
|
<horstretch>0</horstretch> |
||||||
|
<verstretch>0</verstretch> |
||||||
|
</sizepolicy> |
||||||
|
</property> |
||||||
|
<property name="text"> |
||||||
|
<string>Starting Glyph:</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="fStartingGlyph"> |
||||||
|
<property name="enabled"> |
||||||
|
<bool>false</bool> |
||||||
|
</property> |
||||||
|
<property name="sizePolicy"> |
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> |
||||||
|
<horstretch>0</horstretch> |
||||||
|
<verstretch>0</verstretch> |
||||||
|
</sizepolicy> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="0" column="2"> |
||||||
|
<widget class="QLabel" name="label_5"> |
||||||
|
<property name="text"> |
||||||
|
<string>Glyph Count:</string> |
||||||
|
</property> |
||||||
|
<property name="alignment"> |
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="0" column="3"> |
||||||
|
<widget class="QLineEdit" name="fGlyphCount"> |
||||||
|
<property name="enabled"> |
||||||
|
<bool>false</bool> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="1" column="0"> |
||||||
|
<widget class="QLabel" name="label_4"> |
||||||
|
<property name="sizePolicy"> |
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Preferred"> |
||||||
|
<horstretch>0</horstretch> |
||||||
|
<verstretch>0</verstretch> |
||||||
|
</sizepolicy> |
||||||
|
</property> |
||||||
|
<property name="text"> |
||||||
|
<string>Bitmap Width:</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="fBitmapWidth"> |
||||||
|
<property name="enabled"> |
||||||
|
<bool>false</bool> |
||||||
|
</property> |
||||||
|
<property name="sizePolicy"> |
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> |
||||||
|
<horstretch>0</horstretch> |
||||||
|
<verstretch>0</verstretch> |
||||||
|
</sizepolicy> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="1" column="2"> |
||||||
|
<widget class="QLabel" name="label_6"> |
||||||
|
<property name="sizePolicy"> |
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Preferred"> |
||||||
|
<horstretch>0</horstretch> |
||||||
|
<verstretch>0</verstretch> |
||||||
|
</sizepolicy> |
||||||
|
</property> |
||||||
|
<property name="text"> |
||||||
|
<string>Bitmap Height:</string> |
||||||
|
</property> |
||||||
|
<property name="alignment"> |
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="1" column="3"> |
||||||
|
<widget class="QLineEdit" name="fBitmapHeight"> |
||||||
|
<property name="enabled"> |
||||||
|
<bool>false</bool> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="1" column="4"> |
||||||
|
<widget class="QLabel" name="label_7"> |
||||||
|
<property name="sizePolicy"> |
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Preferred"> |
||||||
|
<horstretch>0</horstretch> |
||||||
|
<verstretch>0</verstretch> |
||||||
|
</sizepolicy> |
||||||
|
</property> |
||||||
|
<property name="text"> |
||||||
|
<string>BPP:</string> |
||||||
|
</property> |
||||||
|
<property name="alignment"> |
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="1" column="5"> |
||||||
|
<widget class="QLineEdit" name="fBPP"> |
||||||
|
<property name="enabled"> |
||||||
|
<bool>false</bool> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<widget class="plFontPreview" name="fPreview"> |
||||||
|
<property name="sizePolicy"> |
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Expanding"> |
||||||
|
<horstretch>0</horstretch> |
||||||
|
<verstretch>0</verstretch> |
||||||
|
</sizepolicy> |
||||||
|
</property> |
||||||
|
<property name="minimumSize"> |
||||||
|
<size> |
||||||
|
<width>0</width> |
||||||
|
<height>32</height> |
||||||
|
</size> |
||||||
|
</property> |
||||||
|
<property name="frameShape"> |
||||||
|
<enum>QFrame::StyledPanel</enum> |
||||||
|
</property> |
||||||
|
<property name="frameShadow"> |
||||||
|
<enum>QFrame::Sunken</enum> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<widget class="QLineEdit" name="fSampleText"> |
||||||
|
<property name="text"> |
||||||
|
<string>The quick brown fox jumped over the lazy dog! ABCabc012345;,.</string> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</widget> |
||||||
|
<widget class="QMenuBar" name="menubar"> |
||||||
|
<property name="geometry"> |
||||||
|
<rect> |
||||||
|
<x>0</x> |
||||||
|
<y>0</y> |
||||||
|
<width>384</width> |
||||||
|
<height>21</height> |
||||||
|
</rect> |
||||||
|
</property> |
||||||
|
<widget class="QMenu" name="menu_File"> |
||||||
|
<property name="title"> |
||||||
|
<string>&File</string> |
||||||
|
</property> |
||||||
|
<addaction name="fImportFNTAction"/> |
||||||
|
<addaction name="fImportBDFAction"/> |
||||||
|
<addaction name="fImportFONAction"/> |
||||||
|
<addaction name="fImportTTFAction"/> |
||||||
|
<addaction name="separator"/> |
||||||
|
<addaction name="fOpenAction"/> |
||||||
|
<addaction name="fExportAction"/> |
||||||
|
<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> |
||||||
|
<action name="fImportFNTAction"> |
||||||
|
<property name="text"> |
||||||
|
<string>Import &FNT...</string> |
||||||
|
</property> |
||||||
|
</action> |
||||||
|
<action name="fImportBDFAction"> |
||||||
|
<property name="text"> |
||||||
|
<string>Import &BDF...</string> |
||||||
|
</property> |
||||||
|
</action> |
||||||
|
<action name="fImportFONAction"> |
||||||
|
<property name="text"> |
||||||
|
<string>Import FO&N...</string> |
||||||
|
</property> |
||||||
|
</action> |
||||||
|
<action name="fOpenAction"> |
||||||
|
<property name="text"> |
||||||
|
<string>&Open P2F...</string> |
||||||
|
</property> |
||||||
|
</action> |
||||||
|
<action name="fImportTTFAction"> |
||||||
|
<property name="text"> |
||||||
|
<string>Import &TrueType...</string> |
||||||
|
</property> |
||||||
|
</action> |
||||||
|
<action name="fExportAction"> |
||||||
|
<property name="enabled"> |
||||||
|
<bool>false</bool> |
||||||
|
</property> |
||||||
|
<property name="text"> |
||||||
|
<string>&Export P2F...</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>plFontPreview</class> |
||||||
|
<extends>QFrame</extends> |
||||||
|
<header>plFontPreview.h</header> |
||||||
|
<container>1</container> |
||||||
|
</customwidget> |
||||||
|
</customwidgets> |
||||||
|
<resources/> |
||||||
|
<connections/> |
||||||
|
</ui> |
@ -0,0 +1,5 @@ |
|||||||
|
<!DOCTYPE RCC><RCC version="1.0"> |
||||||
|
<qresource> |
||||||
|
<file>icon1.ico</file> |
||||||
|
</qresource> |
||||||
|
</RCC> |
@ -1,52 +0,0 @@ |
|||||||
//{{NO_DEPENDENCIES}}
|
|
||||||
// Microsoft Developer Studio generated include file.
|
|
||||||
// Used by plFontConverter.rc
|
|
||||||
//
|
|
||||||
#define IDI_APPICON 101 |
|
||||||
#define IDR_APPMENU 102 |
|
||||||
#define IDD_MAINDIALOG 103 |
|
||||||
#define IDD_ABOUT 104 |
|
||||||
#define IDD_FONCHOOSER 105 |
|
||||||
#define IDR_ACCELERATOR1 106 |
|
||||||
#define IDD_PROGRESS 106 |
|
||||||
#define IDD_FREETYPE 107 |
|
||||||
#define IDD_FREETYPEBATCH 108 |
|
||||||
#define IDC_FACE 1002 |
|
||||||
#define IDC_FSIZE 1003 |
|
||||||
#define IDC_STARTG 1004 |
|
||||||
#define IDC_GCOUNT 1005 |
|
||||||
#define IDC_WIDTH 1006 |
|
||||||
#define IDC_HEIGHT 1007 |
|
||||||
#define IDC_BPP 1008 |
|
||||||
#define IDC_PREVIEW 1010 |
|
||||||
#define IDC_RESLIST 1011 |
|
||||||
#define IDC_BOLD 1012 |
|
||||||
#define IDC_ITALIC 1013 |
|
||||||
#define IDC_PROGRESS 1014 |
|
||||||
#define IDC_PREVTEXT 1015 |
|
||||||
#define IDC_PSIZE 1016 |
|
||||||
#define IDC_BITDEPTH 1017 |
|
||||||
#define IDC_BITDEPTH2 1018 |
|
||||||
#define IDC_RES 1019 |
|
||||||
#define IDC_MAXCHAR 1020 |
|
||||||
#define IDC_BATCH 1021 |
|
||||||
#define IDC_FONTNAME 1022 |
|
||||||
#define ID_FILE_FNT 40000 |
|
||||||
#define ID_FILE_EXPORT 40001 |
|
||||||
#define ID_FILE_EXIT 40002 |
|
||||||
#define ID_FILE_BDF 40003 |
|
||||||
#define ID_FILE_ABOUT 40004 |
|
||||||
#define ID_FILE_P2F 40005 |
|
||||||
#define ID_FILE_FON 40006 |
|
||||||
#define ID_FILE_TRUETYPE 40007 |
|
||||||
|
|
||||||
// Next default values for new objects
|
|
||||||
//
|
|
||||||
#ifdef APSTUDIO_INVOKED |
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS |
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 108 |
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40008 |
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1023 |
|
||||||
#define _APS_NEXT_SYMED_VALUE 101 |
|
||||||
#endif |
|
||||||
#endif |
|
@ -0,0 +1,133 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<ui version="4.0"> |
||||||
|
<class>AddElement</class> |
||||||
|
<widget class="QDialog" name="AddElement"> |
||||||
|
<property name="geometry"> |
||||||
|
<rect> |
||||||
|
<x>0</x> |
||||||
|
<y>0</y> |
||||||
|
<width>300</width> |
||||||
|
<height>138</height> |
||||||
|
</rect> |
||||||
|
</property> |
||||||
|
<property name="windowTitle"> |
||||||
|
<string>Add Element</string> |
||||||
|
</property> |
||||||
|
<layout class="QGridLayout" name="gridLayout"> |
||||||
|
<item row="0" column="0"> |
||||||
|
<widget class="QLabel" name="label_4"> |
||||||
|
<property name="text"> |
||||||
|
<string>Path:</string> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="0" column="1"> |
||||||
|
<widget class="QLabel" name="fPathLabel"/> |
||||||
|
</item> |
||||||
|
<item row="1" column="0"> |
||||||
|
<widget class="QLabel" name="label"> |
||||||
|
<property name="text"> |
||||||
|
<string>Parent &Age:</string> |
||||||
|
</property> |
||||||
|
<property name="buddy"> |
||||||
|
<cstring>fParentAge</cstring> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="1" column="1"> |
||||||
|
<widget class="QComboBox" name="fParentAge"> |
||||||
|
<property name="sizePolicy"> |
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> |
||||||
|
<horstretch>0</horstretch> |
||||||
|
<verstretch>0</verstretch> |
||||||
|
</sizepolicy> |
||||||
|
</property> |
||||||
|
<property name="editable"> |
||||||
|
<bool>true</bool> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="2" column="0"> |
||||||
|
<widget class="QLabel" name="label_2"> |
||||||
|
<property name="text"> |
||||||
|
<string>Parent &Set:</string> |
||||||
|
</property> |
||||||
|
<property name="buddy"> |
||||||
|
<cstring>fParentSet</cstring> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="2" column="1"> |
||||||
|
<widget class="QComboBox" name="fParentSet"> |
||||||
|
<property name="sizePolicy"> |
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> |
||||||
|
<horstretch>0</horstretch> |
||||||
|
<verstretch>0</verstretch> |
||||||
|
</sizepolicy> |
||||||
|
</property> |
||||||
|
<property name="editable"> |
||||||
|
<bool>true</bool> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="3" column="0"> |
||||||
|
<widget class="QLabel" name="label_3"> |
||||||
|
<property name="text"> |
||||||
|
<string>&Element Name:</string> |
||||||
|
</property> |
||||||
|
<property name="buddy"> |
||||||
|
<cstring>fElementName</cstring> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="3" column="1"> |
||||||
|
<widget class="QLineEdit" name="fElementName"/> |
||||||
|
</item> |
||||||
|
<item row="4" column="0" colspan="2"> |
||||||
|
<widget class="QDialogButtonBox" name="fButtons"> |
||||||
|
<property name="orientation"> |
||||||
|
<enum>Qt::Horizontal</enum> |
||||||
|
</property> |
||||||
|
<property name="standardButtons"> |
||||||
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</widget> |
||||||
|
<resources/> |
||||||
|
<connections> |
||||||
|
<connection> |
||||||
|
<sender>fButtons</sender> |
||||||
|
<signal>accepted()</signal> |
||||||
|
<receiver>AddElement</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>fButtons</sender> |
||||||
|
<signal>rejected()</signal> |
||||||
|
<receiver>AddElement</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,94 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<ui version="4.0"> |
||||||
|
<class>AddLocalization</class> |
||||||
|
<widget class="QDialog" name="AddLocalization"> |
||||||
|
<property name="geometry"> |
||||||
|
<rect> |
||||||
|
<x>0</x> |
||||||
|
<y>0</y> |
||||||
|
<width>300</width> |
||||||
|
<height>86</height> |
||||||
|
</rect> |
||||||
|
</property> |
||||||
|
<property name="windowTitle"> |
||||||
|
<string>Add Localization</string> |
||||||
|
</property> |
||||||
|
<layout class="QGridLayout" name="gridLayout"> |
||||||
|
<item row="0" column="0"> |
||||||
|
<widget class="QLabel" name="label_2"> |
||||||
|
<property name="text"> |
||||||
|
<string>Path:</string> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="0" column="1"> |
||||||
|
<widget class="QLabel" name="fPathLabel"/> |
||||||
|
</item> |
||||||
|
<item row="1" column="0"> |
||||||
|
<widget class="QLabel" name="label"> |
||||||
|
<property name="text"> |
||||||
|
<string>&Language</string> |
||||||
|
</property> |
||||||
|
<property name="buddy"> |
||||||
|
<cstring>fLanguage</cstring> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="1" column="1"> |
||||||
|
<widget class="QComboBox" name="fLanguage"> |
||||||
|
<property name="sizePolicy"> |
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> |
||||||
|
<horstretch>0</horstretch> |
||||||
|
<verstretch>0</verstretch> |
||||||
|
</sizepolicy> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="2" column="0" colspan="2"> |
||||||
|
<widget class="QDialogButtonBox" name="fButtons"> |
||||||
|
<property name="orientation"> |
||||||
|
<enum>Qt::Horizontal</enum> |
||||||
|
</property> |
||||||
|
<property name="standardButtons"> |
||||||
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</widget> |
||||||
|
<resources/> |
||||||
|
<connections> |
||||||
|
<connection> |
||||||
|
<sender>fButtons</sender> |
||||||
|
<signal>accepted()</signal> |
||||||
|
<receiver>AddLocalization</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>fButtons</sender> |
||||||
|
<signal>rejected()</signal> |
||||||
|
<receiver>AddLocalization</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,181 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<ui version="4.0"> |
||||||
|
<class>EditDialog</class> |
||||||
|
<widget class="QMainWindow" name="EditDialog"> |
||||||
|
<property name="geometry"> |
||||||
|
<rect> |
||||||
|
<x>0</x> |
||||||
|
<y>0</y> |
||||||
|
<width>800</width> |
||||||
|
<height>500</height> |
||||||
|
</rect> |
||||||
|
</property> |
||||||
|
<property name="windowTitle"> |
||||||
|
<string>plLocalizationEditor</string> |
||||||
|
</property> |
||||||
|
<widget class="QWidget" name="centralwidget"> |
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="1,3"> |
||||||
|
<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="plLocTreeView" name="fLocalizationTree"> |
||||||
|
<attribute name="headerVisible"> |
||||||
|
<bool>false</bool> |
||||||
|
</attribute> |
||||||
|
<column> |
||||||
|
<property name="text"> |
||||||
|
<string notr="true">1</string> |
||||||
|
</property> |
||||||
|
</column> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<layout class="QVBoxLayout" name="verticalLayout"> |
||||||
|
<property name="spacing"> |
||||||
|
<number>10</number> |
||||||
|
</property> |
||||||
|
<item> |
||||||
|
<widget class="QGroupBox" name="groupBox"> |
||||||
|
<property name="title"> |
||||||
|
<string>Localization Tree</string> |
||||||
|
</property> |
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout"> |
||||||
|
<item> |
||||||
|
<widget class="QPushButton" name="fAddButton"> |
||||||
|
<property name="enabled"> |
||||||
|
<bool>false</bool> |
||||||
|
</property> |
||||||
|
<property name="text"> |
||||||
|
<string>&Add</string> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<widget class="QPushButton" name="fDeleteButton"> |
||||||
|
<property name="enabled"> |
||||||
|
<bool>false</bool> |
||||||
|
</property> |
||||||
|
<property name="text"> |
||||||
|
<string>&Delete</string> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<widget class="QGroupBox" name="groupBox_2"> |
||||||
|
<property name="title"> |
||||||
|
<string>Localization Information</string> |
||||||
|
</property> |
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2"> |
||||||
|
<item> |
||||||
|
<widget class="QLabel" name="fTextPathLabel"> |
||||||
|
<property name="text"> |
||||||
|
<string>&Text:</string> |
||||||
|
</property> |
||||||
|
<property name="buddy"> |
||||||
|
<cstring>fLocalizationText</cstring> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<widget class="QPlainTextEdit" name="fLocalizationText"/> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
</layout> |
||||||
|
</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="menuFile"> |
||||||
|
<property name="title"> |
||||||
|
<string>&File</string> |
||||||
|
</property> |
||||||
|
<addaction name="fOpenAction"/> |
||||||
|
<addaction name="separator"/> |
||||||
|
<addaction name="fSaveCurrentAction"/> |
||||||
|
<addaction name="fSaveOtherAction"/> |
||||||
|
<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="menuFile"/> |
||||||
|
<addaction name="menu_Help"/> |
||||||
|
</widget> |
||||||
|
<action name="fOpenAction"> |
||||||
|
<property name="text"> |
||||||
|
<string>&Open Data Directory...</string> |
||||||
|
</property> |
||||||
|
<property name="shortcut"> |
||||||
|
<string>Ctrl+O</string> |
||||||
|
</property> |
||||||
|
</action> |
||||||
|
<action name="fSaveCurrentAction"> |
||||||
|
<property name="enabled"> |
||||||
|
<bool>false</bool> |
||||||
|
</property> |
||||||
|
<property name="text"> |
||||||
|
<string>&Save to Current Directory</string> |
||||||
|
</property> |
||||||
|
<property name="shortcut"> |
||||||
|
<string>Ctrl+S</string> |
||||||
|
</property> |
||||||
|
</action> |
||||||
|
<action name="fSaveOtherAction"> |
||||||
|
<property name="enabled"> |
||||||
|
<bool>false</bool> |
||||||
|
</property> |
||||||
|
<property name="text"> |
||||||
|
<string>S&ave to Specified Directory...</string> |
||||||
|
</property> |
||||||
|
<property name="shortcut"> |
||||||
|
<string>Ctrl+Shift+S</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>plLocTreeView</class> |
||||||
|
<extends>QTreeWidget</extends> |
||||||
|
<header>plLocTreeView.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,268 +1 @@ |
|||||||
// Microsoft Visual C++ generated resource script. |
IDI_APPICON ICON DISCARDABLE "icon1.ico" |
||||||
// |
|
||||||
#include "resource.h" |
|
||||||
|
|
||||||
#define APSTUDIO_READONLY_SYMBOLS |
|
||||||
///////////////////////////////////////////////////////////////////////////// |
|
||||||
// |
|
||||||
// Generated from the TEXTINCLUDE 2 resource. |
|
||||||
// |
|
||||||
#define APSTUDIO_HIDDEN_SYMBOLS |
|
||||||
#include "windows.h" |
|
||||||
#undef APSTUDIO_HIDDEN_SYMBOLS |
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////// |
|
||||||
#undef APSTUDIO_READONLY_SYMBOLS |
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////// |
|
||||||
// English (U.S.) resources |
|
||||||
|
|
||||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) |
|
||||||
#ifdef _WIN32 |
|
||||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US |
|
||||||
#pragma code_page(1252) |
|
||||||
#endif //_WIN32 |
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////// |
|
||||||
// |
|
||||||
// Icon |
|
||||||
// |
|
||||||
|
|
||||||
// Icon with lowest ID value placed first to ensure application icon |
|
||||||
// remains consistent on all systems. |
|
||||||
IDI_APPICON ICON "icon1.ico" |
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////// |
|
||||||
// |
|
||||||
// Menu |
|
||||||
// |
|
||||||
|
|
||||||
IDR_APPMENU MENU |
|
||||||
BEGIN |
|
||||||
POPUP "&File" |
|
||||||
BEGIN |
|
||||||
MENUITEM "&Open Data Directory...\tCtrl+O", |
|
||||||
ID_FILE_OPENDATADIRECTORY |
|
||||||
MENUITEM SEPARATOR |
|
||||||
MENUITEM "&Save to Current Directory\tCtrl+S", ID_FILE_SAVETOCUR |
|
||||||
, GRAYED |
|
||||||
MENUITEM "S&ave to Specified Directory...\tCtrl+Shift+S", |
|
||||||
ID_FILE_SAVETONEW, GRAYED |
|
||||||
MENUITEM SEPARATOR |
|
||||||
MENUITEM "E&xit", ID_FILE_EXIT |
|
||||||
END |
|
||||||
POPUP "&Help" |
|
||||||
BEGIN |
|
||||||
MENUITEM "&About ...", ID_HELP_ABOUT |
|
||||||
END |
|
||||||
END |
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////// |
|
||||||
// |
|
||||||
// Dialog |
|
||||||
// |
|
||||||
|
|
||||||
IDD_ABOUT DIALOGEX 0, 0, 275, 40 |
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | |
|
||||||
WS_SYSMENU |
|
||||||
CAPTION "About plLocalizationEditor" |
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1 |
|
||||||
BEGIN |
|
||||||
DEFPUSHBUTTON "OK",IDOK,221,6,50,14 |
|
||||||
ICON IDI_APPICON,IDC_STATIC,7,7,21,20 |
|
||||||
LTEXT "plLocalizationEditor\nA basic editor for Plasma 21 localization resource files\nCopyright (C) 2004 Cyan Worlds, Inc.", |
|
||||||
IDC_STATIC,33,7,180,26 |
|
||||||
END |
|
||||||
|
|
||||||
IDD_EDITDLG DIALOGEX 0, 0, 421, 280 |
|
||||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE |
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1 |
|
||||||
BEGIN |
|
||||||
PUSHBUTTON "Add",IDC_ADD,72,20,138,14,WS_DISABLED |
|
||||||
PUSHBUTTON "Delete",IDC_DELETE,216,20,132,14,WS_DISABLED |
|
||||||
GROUPBOX "Localization Tree",IDC_STATIC,7,7,407,32 |
|
||||||
GROUPBOX "Localization Information",IDC_STATIC,7,45,407,228 |
|
||||||
LTEXT "Text:",IDC_LOCPATH,15,57,391,8 |
|
||||||
CONTROL "",IDC_LOCALIZATIONTEXT,"RichEdit20A",ES_MULTILINE | |
|
||||||
ES_AUTOHSCROLL | WS_DISABLED | WS_BORDER | WS_VSCROLL | |
|
||||||
WS_HSCROLL | WS_TABSTOP,15,71,391,194 |
|
||||||
END |
|
||||||
|
|
||||||
IDD_ADDELEMENT DIALOGEX 0, 0, 186, 91 |
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | |
|
||||||
WS_SYSMENU |
|
||||||
CAPTION "Add Element" |
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1 |
|
||||||
BEGIN |
|
||||||
COMBOBOX IDC_PARENTAGE,57,19,122,51,CBS_DROPDOWN | CBS_SORT | |
|
||||||
WS_VSCROLL | WS_TABSTOP |
|
||||||
COMBOBOX IDC_PARENTSET,57,34,122,51,CBS_DROPDOWN | CBS_SORT | |
|
||||||
WS_VSCROLL | WS_TABSTOP |
|
||||||
EDITTEXT IDC_ELEMENTNAME,57,49,122,14,ES_AUTOHSCROLL |
|
||||||
DEFPUSHBUTTON "OK",IDOK,129,70,50,14 |
|
||||||
PUSHBUTTON "Cancel",IDCANCEL,73,70,50,14 |
|
||||||
LTEXT "Path:",IDC_PATH,7,7,172,8 |
|
||||||
LTEXT "Parent Age:",IDC_STATIC,7,22,48,8 |
|
||||||
LTEXT "Parent Set:",IDC_STATIC,7,37,38,8 |
|
||||||
LTEXT "Element Name:",IDC_STATIC,7,52,49,8 |
|
||||||
END |
|
||||||
|
|
||||||
IDD_ADDLOCALIZATION DIALOGEX 0, 0, 186, 59 |
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | |
|
||||||
WS_SYSMENU |
|
||||||
CAPTION "Add Localization" |
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1 |
|
||||||
BEGIN |
|
||||||
COMBOBOX IDC_LANGUAGE,45,19,134,65,CBS_DROPDOWNLIST | CBS_SORT | |
|
||||||
WS_VSCROLL | WS_TABSTOP |
|
||||||
DEFPUSHBUTTON "OK",IDOK,129,38,50,14 |
|
||||||
PUSHBUTTON "Cancel",IDCANCEL,73,38,50,14 |
|
||||||
LTEXT "Path:",IDC_PATH,7,7,172,8 |
|
||||||
LTEXT "Language:",IDC_STATIC,7,21,35,8 |
|
||||||
END |
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////// |
|
||||||
// |
|
||||||
// Version |
|
||||||
// |
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO |
|
||||||
FILEVERSION 1,0,0,1 |
|
||||||
PRODUCTVERSION 1,0,0,1 |
|
||||||
FILEFLAGSMASK 0x17L |
|
||||||
#ifdef _DEBUG |
|
||||||
FILEFLAGS 0x1L |
|
||||||
#else |
|
||||||
FILEFLAGS 0x0L |
|
||||||
#endif |
|
||||||
FILEOS 0x40004L |
|
||||||
FILETYPE 0x1L |
|
||||||
FILESUBTYPE 0x0L |
|
||||||
BEGIN |
|
||||||
BLOCK "StringFileInfo" |
|
||||||
BEGIN |
|
||||||
BLOCK "040904b0" |
|
||||||
BEGIN |
|
||||||
VALUE "CompanyName", "Cyan Worlds, Inc." |
|
||||||
VALUE "FileDescription", "plLocalizationEditor" |
|
||||||
VALUE "FileVersion", "1, 0, 0, 1" |
|
||||||
VALUE "InternalName", "plLocalizationEditor" |
|
||||||
VALUE "LegalCopyright", "Copyright © 2004" |
|
||||||
VALUE "OriginalFilename", "plLocalizationEditor.exe" |
|
||||||
VALUE "ProductName", "Cyan Worlds Localization Editor" |
|
||||||
VALUE "ProductVersion", "1, 0, 0, 1" |
|
||||||
END |
|
||||||
END |
|
||||||
BLOCK "VarFileInfo" |
|
||||||
BEGIN |
|
||||||
VALUE "Translation", 0x409, 1200 |
|
||||||
END |
|
||||||
END |
|
||||||
|
|
||||||
|
|
||||||
#ifdef APSTUDIO_INVOKED |
|
||||||
///////////////////////////////////////////////////////////////////////////// |
|
||||||
// |
|
||||||
// TEXTINCLUDE |
|
||||||
// |
|
||||||
|
|
||||||
1 TEXTINCLUDE |
|
||||||
BEGIN |
|
||||||
"resource.h\0" |
|
||||||
END |
|
||||||
|
|
||||||
2 TEXTINCLUDE |
|
||||||
BEGIN |
|
||||||
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n" |
|
||||||
"#include ""windows.h""\r\n" |
|
||||||
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" |
|
||||||
"\0" |
|
||||||
END |
|
||||||
|
|
||||||
3 TEXTINCLUDE |
|
||||||
BEGIN |
|
||||||
"\r\n" |
|
||||||
"\0" |
|
||||||
END |
|
||||||
|
|
||||||
#endif // APSTUDIO_INVOKED |
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////// |
|
||||||
// |
|
||||||
// DESIGNINFO |
|
||||||
// |
|
||||||
|
|
||||||
#ifdef APSTUDIO_INVOKED |
|
||||||
GUIDELINES DESIGNINFO |
|
||||||
BEGIN |
|
||||||
IDD_ABOUT, DIALOG |
|
||||||
BEGIN |
|
||||||
RIGHTMARGIN, 252 |
|
||||||
END |
|
||||||
|
|
||||||
IDD_EDITDLG, DIALOG |
|
||||||
BEGIN |
|
||||||
LEFTMARGIN, 7 |
|
||||||
RIGHTMARGIN, 414 |
|
||||||
VERTGUIDE, 15 |
|
||||||
VERTGUIDE, 72 |
|
||||||
VERTGUIDE, 210 |
|
||||||
VERTGUIDE, 216 |
|
||||||
VERTGUIDE, 348 |
|
||||||
VERTGUIDE, 406 |
|
||||||
TOPMARGIN, 7 |
|
||||||
BOTTOMMARGIN, 273 |
|
||||||
HORZGUIDE, 71 |
|
||||||
HORZGUIDE, 265 |
|
||||||
END |
|
||||||
|
|
||||||
IDD_ADDELEMENT, DIALOG |
|
||||||
BEGIN |
|
||||||
LEFTMARGIN, 7 |
|
||||||
RIGHTMARGIN, 179 |
|
||||||
TOPMARGIN, 7 |
|
||||||
BOTTOMMARGIN, 84 |
|
||||||
END |
|
||||||
|
|
||||||
IDD_ADDLOCALIZATION, DIALOG |
|
||||||
BEGIN |
|
||||||
LEFTMARGIN, 7 |
|
||||||
RIGHTMARGIN, 179 |
|
||||||
TOPMARGIN, 7 |
|
||||||
BOTTOMMARGIN, 52 |
|
||||||
END |
|
||||||
END |
|
||||||
#endif // APSTUDIO_INVOKED |
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////// |
|
||||||
// |
|
||||||
// Accelerator |
|
||||||
// |
|
||||||
|
|
||||||
IDR_ACCELERATOR1 ACCELERATORS |
|
||||||
BEGIN |
|
||||||
"O", ID_FILE_OPENDATADIRECTORY, VIRTKEY, CONTROL, NOINVERT |
|
||||||
"S", ID_FILE_SAVETOCUR, VIRTKEY, CONTROL, NOINVERT |
|
||||||
"S", ID_FILE_SAVETONEW, VIRTKEY, SHIFT, CONTROL, |
|
||||||
NOINVERT |
|
||||||
END |
|
||||||
|
|
||||||
#endif // English (U.S.) resources |
|
||||||
///////////////////////////////////////////////////////////////////////////// |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef APSTUDIO_INVOKED |
|
||||||
///////////////////////////////////////////////////////////////////////////// |
|
||||||
// |
|
||||||
// Generated from the TEXTINCLUDE 3 resource. |
|
||||||
// |
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////// |
|
||||||
#endif // not APSTUDIO_INVOKED |
|
||||||
|
|
||||||
|
@ -1,51 +0,0 @@ |
|||||||
//{{NO_DEPENDENCIES}}
|
|
||||||
// Microsoft Visual C++ generated include file.
|
|
||||||
// Used by plLocalizationEditor.rc
|
|
||||||
//
|
|
||||||
#define IDC_MYICON 2 |
|
||||||
#define IDI_APPICON 102 |
|
||||||
#define IDD_PLLOCALIZATIONEDITOR_DIALOG 102 |
|
||||||
#define IDS_APP_TITLE 103 |
|
||||||
#define IDD_ABOUTBOX 103 |
|
||||||
#define IDI_PLLOCALIZATIONEDITOR 107 |
|
||||||
#define IDI_SMALL 108 |
|
||||||
#define IDC_PLLOCALIZATIONEDITOR 109 |
|
||||||
#define IDR_APPMENU 109 |
|
||||||
#define IDD_ADDELEMENT 113 |
|
||||||
#define IDD_ADDLOCALIZATION 114 |
|
||||||
#define IDR_MAINFRAME 128 |
|
||||||
#define IDD_ABOUT 129 |
|
||||||
#define IDR_ACCELERATOR1 130 |
|
||||||
#define IDD_EDITDLG 131 |
|
||||||
#define IDC_RICHEDIT21 1000 |
|
||||||
#define IDC_LOCALIZATIONTEXT 1002 |
|
||||||
#define IDC_APPLY 1014 |
|
||||||
#define IDC_DISCARD 1015 |
|
||||||
#define IDC_LOCPATH 1019 |
|
||||||
#define IDC_ADD 1020 |
|
||||||
#define IDC_DELETE 1021 |
|
||||||
#define IDC_PATH 1023 |
|
||||||
#define IDC_PARENTSET 1026 |
|
||||||
#define IDC_ELEMENTNAME 1027 |
|
||||||
#define IDC_PARENTAGE 1028 |
|
||||||
#define IDC_LANGUAGE 1028 |
|
||||||
#define ID_FILE_EXIT 32772 |
|
||||||
#define ID_HELP_ABOUT 32773 |
|
||||||
#define ID_FILE_OPENDATADIRECTORY 32774 |
|
||||||
#define ID_FILE_SAVETOSPECIFIEDDIRECTORY 32778 |
|
||||||
#define ID_FILE_SAVETOCURRENTDIRECTORY 32779 |
|
||||||
#define ID_FILE_SAVETOCUR 32782 |
|
||||||
#define ID_FILE_SAVETONEW 32783 |
|
||||||
#define IDC_STATIC -1 |
|
||||||
|
|
||||||
// Next default values for new objects
|
|
||||||
//
|
|
||||||
#ifdef APSTUDIO_INVOKED |
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS |
|
||||||
#define _APS_NO_MFC 1 |
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 132 |
|
||||||
#define _APS_NEXT_COMMAND_VALUE 32784 |
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1001 |
|
||||||
#define _APS_NEXT_SYMED_VALUE 110 |
|
||||||
#endif |
|
||||||
#endif |
|
@ -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,575 @@ |
|||||||
|
<?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="2" column="0" colspan="4"> |
||||||
|
<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="2"> |
||||||
|
<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="3" column="1"> |
||||||
|
<widget class="QLineEdit" name="fStartPos"> |
||||||
|
<property name="readOnly"> |
||||||
|
<bool>true</bool> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="3" column="3"> |
||||||
|
<widget class="QLineEdit" name="fObjectSize"> |
||||||
|
<property name="readOnly"> |
||||||
|
<bool>true</bool> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<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="1" column="1" colspan="3"> |
||||||
|
<widget class="QLineEdit" name="fObjectClass"> |
||||||
|
<property name="readOnly"> |
||||||
|
<bool>true</bool> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</item> |
||||||
|
<item row="0" column="1" colspan="3"> |
||||||
|
<widget class="QLineEdit" name="fObjectName"> |
||||||
|
<property name="readOnly"> |
||||||
|
<bool>true</bool> |
||||||
|
</property> |
||||||
|
</widget> |
||||||
|
</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