├── release_version.txt ├── icons └── main.ico ├── files └── msdia140.dll ├── .github └── FUNDING.yml ├── mascots └── PDBRipper.png ├── docs ├── screenshot_gui.jpg └── screenshot_console.jpg ├── gui_source ├── images │ └── main.png ├── resources.qrc ├── dialogoptions.ui ├── gui_source.pro ├── dialogoptions.cpp ├── dialogabout.h ├── gui_source_tr.pro ├── dialogoptions.h ├── dialogprocess.ui ├── dialogexport.h ├── dialogprocess.h ├── main_gui.cpp ├── dialogprocess.cpp ├── guimainwindow.h ├── dialogabout.ui ├── dialogabout.cpp ├── dialogexport.cpp ├── dialogexport.ui ├── guimainwindow.ui ├── guimainwindow.cpp └── translation │ ├── pdbripper_zh.ts │ ├── pdbripper_zh_TW.ts │ ├── pdbripper_ko.ts │ ├── pdbripper_ja.ts │ └── pdbripper_he.ts ├── pdbripper_source.pro ├── console_source ├── console_source.pro ├── consoleoutput.h ├── consoleoutput.cpp └── main_console.cpp ├── .gitmodules ├── changelog.txt ├── LICENSE ├── msdia ├── diaCreate.cpp └── diaCreate.h ├── README.md ├── global.h ├── pdbprocess.cpp └── pdbprocess.h /release_version.txt: -------------------------------------------------------------------------------- 1 | 2.03 -------------------------------------------------------------------------------- /icons/main.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/PDBRipper/master/icons/main.ico -------------------------------------------------------------------------------- /files/msdia140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/PDBRipper/master/files/msdia140.dll -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: horsicq 4 | -------------------------------------------------------------------------------- /mascots/PDBRipper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/PDBRipper/master/mascots/PDBRipper.png -------------------------------------------------------------------------------- /docs/screenshot_gui.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/PDBRipper/master/docs/screenshot_gui.jpg -------------------------------------------------------------------------------- /gui_source/images/main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/PDBRipper/master/gui_source/images/main.png -------------------------------------------------------------------------------- /docs/screenshot_console.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/PDBRipper/master/docs/screenshot_console.jpg -------------------------------------------------------------------------------- /pdbripper_source.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | 3 | SUBDIRS += gui_source 4 | SUBDIRS += console_source 5 | -------------------------------------------------------------------------------- /gui_source/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | images/main.png 4 | 5 | 6 | -------------------------------------------------------------------------------- /console_source/console_source.pro: -------------------------------------------------------------------------------- 1 | QT -= gui 2 | 3 | CONFIG += c++11 console 4 | CONFIG -= app_bundle 5 | 6 | TARGET = pdbripperc 7 | 8 | include(../build.pri) 9 | 10 | SOURCES += \ 11 | ../pdbprocess.cpp \ 12 | ../qwinpdb.cpp \ 13 | main_console.cpp \ 14 | consoleoutput.cpp 15 | 16 | HEADERS += \ 17 | ../pdbprocess.h \ 18 | ../qwinpdb.h \ 19 | ../qwinpdb_def.h \ 20 | consoleoutput.h 21 | 22 | INCLUDEPATH += ../msdia 23 | SOURCES += ../msdia/diaCreate.cpp 24 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "XOptions"] 2 | path = XOptions 3 | url = https://github.com/horsicq/XOptions 4 | [submodule "XShortcuts"] 5 | path = XShortcuts 6 | url = https://github.com/horsicq/XShortcuts 7 | [submodule "build_tools"] 8 | path = build_tools 9 | url = https://github.com/horsicq/build_tools 10 | [submodule "XWinPDB"] 11 | path = XWinPDB 12 | url = https://github.com/horsicq/XWinPDB 13 | [submodule "XAboutWidget"] 14 | path = XAboutWidget 15 | url = https://github.com/horsicq/XAboutWidget 16 | [submodule "XUpdate"] 17 | path = XUpdate 18 | url = https://github.com/horsicq/XUpdate 19 | [submodule "XGithub"] 20 | path = XGithub 21 | url = https://github.com/horsicq/XGithub 22 | [submodule "Formats"] 23 | path = Formats 24 | url = https://github.com/horsicq/Formats 25 | -------------------------------------------------------------------------------- /changelog.txt: -------------------------------------------------------------------------------- 1 | 2.03 2 | ----------------------------------------------------------------------- 3 | [+] Speed ​​improved 4 | [+] New sort dep algo 5 | [+] New translations 6 | [+] Many bugs have been fixed 7 | ####################################################################### 8 | 2.02 9 | ----------------------------------------------------------------------- 10 | [+] XNTSV export 11 | [+] New options widget 12 | [+] Visual Studio independent MSDIA(thx: @mrexodia) 13 | [+] Fix some crashes 14 | [+] New translations 15 | [+] Many bugs have been fixed 16 | ####################################################################### 17 | 2.01 18 | ----------------------------------------------------------------------- 19 | [+] Many bugs have been fixed 20 | ####################################################################### 21 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2012-2025 hors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /msdia/diaCreate.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "diacreate.h" 3 | 4 | typedef HRESULT(__stdcall* pDllGetClassObject)( 5 | _In_ REFCLSID rclsid, 6 | _In_ REFIID riid, 7 | _Out_ LPVOID* ppv 8 | ); 9 | 10 | 11 | HRESULT STDMETHODCALLTYPE NoRegCoCreate(const __wchar_t* dllName, 12 | REFCLSID rclsid, 13 | REFIID riid, 14 | void** ppv) 15 | { 16 | HRESULT hr; 17 | HMODULE hModule = LoadLibraryExW(dllName, nullptr, LOAD_WITH_ALTERED_SEARCH_PATH); 18 | pDllGetClassObject DllGetClassObject; 19 | if(hModule && (DllGetClassObject = (pDllGetClassObject)GetProcAddress(hModule, "DllGetClassObject"))) 20 | { 21 | IClassFactory* classFactory; 22 | hr = DllGetClassObject(rclsid, IID_IClassFactory, (LPVOID*)&classFactory); 23 | if(SUCCEEDED(hr)) 24 | { 25 | hr = classFactory->CreateInstance(nullptr, riid, ppv); 26 | classFactory->AddRef(); 27 | } 28 | } 29 | else 30 | { 31 | hr = GetLastError(); 32 | if(hr > 0) 33 | hr |= REASON_LEGACY_API; 34 | } 35 | return hr; 36 | } -------------------------------------------------------------------------------- /gui_source/dialogoptions.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | DialogOptions 4 | 5 | 6 | Qt::ApplicationModal 7 | 8 | 9 | 10 | 0 11 | 0 12 | 450 13 | 310 14 | 15 | 16 | 17 | Options 18 | 19 | 20 | true 21 | 22 | 23 | 24 | 25 | 26 | 27 | 0 28 | 0 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | XOptionsWidget 38 | QWidget 39 |
xoptionswidget.h
40 | 1 41 |
42 |
43 | 44 | 45 |
46 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NF3FBD3KHMXDN) 2 | [![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/horsicq/PDBRipper.svg)](https://github.com/horsicq/PDBRipper/releases) 3 | [![GitHub All Releases](https://img.shields.io/github/downloads/horsicq/PDBRipper/total.svg)](https://github.com/horsicq/PDBRipper/releases) 4 | 5 | PDBRipper 6 | ======= 7 | 8 | PDBRipper is an utility for extract an information from PDB-files. 9 | 10 | ![alt text](https://github.com/horsicq/PDBRipper/blob/master/mascots/PDBRipper.png "Mascot") 11 | 12 | ![alt text](https://github.com/horsicq/PDBRipper/blob/master/docs/screenshot_gui.jpg "Screenshot gui") 13 | ![alt text](https://github.com/horsicq/PDBRipper/blob/master/docs/screenshot_console.jpg "Screenshot console") 14 | 15 | 16 | How to build on Windows 17 | ======= 18 | 19 | Install Visual Studio 2013: https://github.com/horsicq/build_tools 20 | 21 | Install Qt 5.6.3 for VS2013: https://github.com/horsicq/build_tools 22 | 23 | Install 7-Zip: https://www.7-zip.org/ 24 | 25 | Clone project: git clone --recursive https://github.com/horsicq/PDBRipper.git 26 | 27 | Edit build_win32.bat ( check VS_PATH, SEVENZIP_PATH, QT_PATH variables) 28 | 29 | Run build_win32.bat 30 | 31 | ## Special Thanks 32 | 33 | - [PELock Software Protection & Reverse Engineering](https://www.pelock.com) 34 | -------------------------------------------------------------------------------- /gui_source/gui_source.pro: -------------------------------------------------------------------------------- 1 | QT += core gui 2 | 3 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 4 | 5 | TARGET = pdbripper 6 | TEMPLATE = app 7 | 8 | SOURCES +=\ 9 | ../qwinpdb.cpp \ 10 | ../pdbprocess.cpp \ 11 | dialogabout.cpp \ 12 | dialogexport.cpp \ 13 | dialogoptions.cpp \ 14 | dialogprocess.cpp \ 15 | guimainwindow.cpp \ 16 | main_gui.cpp 17 | 18 | HEADERS += \ 19 | ../global.h \ 20 | ../qwinpdb.h \ 21 | ../qwinpdb_def.h \ 22 | ../pdbprocess.h \ 23 | dialogabout.h \ 24 | dialogexport.h \ 25 | dialogoptions.h \ 26 | dialogprocess.h \ 27 | guimainwindow.h 28 | 29 | FORMS += \ 30 | dialogabout.ui \ 31 | dialogexport.ui \ 32 | dialogoptions.ui \ 33 | dialogprocess.ui \ 34 | guimainwindow.ui 35 | 36 | INCLUDEPATH += ../msdia 37 | SOURCES += ../msdia/diaCreate.cpp 38 | 39 | RC_ICONS = ../icons/main.ico 40 | 41 | include(../build.pri) 42 | 43 | !contains(XCONFIG, xoptionswidget) { 44 | XCONFIG += xoptionswidget 45 | include(../XOptions/xoptionswidget.pri) 46 | } 47 | 48 | !contains(XCONFIG, xwinpdb) { 49 | XCONFIG += xwinpdb 50 | include(../XWinPDB/xwinpdb.pri) 51 | } 52 | 53 | !contains(XCONFIG, xaboutwidget) { 54 | XCONFIG += xaboutwidget 55 | include(../XAboutWidget/xaboutwidget.pri) 56 | } 57 | 58 | RESOURCES += \ 59 | resources.qrc 60 | 61 | DISTFILES += \ 62 | ../changelog.txt \ 63 | ../release_version.txt 64 | -------------------------------------------------------------------------------- /msdia/diaCreate.h: -------------------------------------------------------------------------------- 1 | // diacreate.h - creation helper functions for DIA initialization 2 | //----------------------------------------------------------------- 3 | // 4 | // Copyright Microsoft Corporation. All Rights Reserved. 5 | // 6 | //--------------------------------------------------------------- 7 | #ifndef _DIACREATE_H_ 8 | #define _DIACREATE_H_ 9 | 10 | // 11 | // Create a dia data source object from the dia dll (by dll name - does not access the registry). 12 | // 13 | 14 | HRESULT STDMETHODCALLTYPE NoRegCoCreate(const __wchar_t* dllName, 15 | REFCLSID rclsid, 16 | REFIID riid, 17 | void** ppv); 18 | 19 | #ifndef _NATIVE_WCHAR_T_DEFINED 20 | #ifdef __cplusplus 21 | 22 | HRESULT STDMETHODCALLTYPE NoRegCoCreate(const wchar_t* dllName, 23 | REFCLSID rclsid, 24 | REFIID riid, 25 | void** ppv) 26 | { 27 | return NoRegCoCreate((const __wchar_t*)dllName, rclsid, riid, ppv); 28 | } 29 | 30 | #endif 31 | #endif 32 | 33 | 34 | 35 | // 36 | // Create a dia data source object from the dia dll (looks up the class id in the registry). 37 | // 38 | HRESULT STDMETHODCALLTYPE NoOleCoCreate(REFCLSID rclsid, 39 | REFIID riid, 40 | void** ppv); 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /global.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #ifndef GLOBAL_H 22 | #define GLOBAL_H 23 | 24 | #include 25 | 26 | #define X_APPLICATIONDISPLAYNAME "PDBRipper" 27 | #define X_APPLICATIONNAME "pdbripper" 28 | #define X_APPLICATIONVERSION "2.03" 29 | #define X_ORGANIZATIONNAME "NTInfo" 30 | #define X_ORGANIZATIONDOMAIN "ntinfo.biz" 31 | #define X_OPTIONSFILE "pdbripper.ini" 32 | 33 | #endif // GLOBAL_H 34 | -------------------------------------------------------------------------------- /gui_source/dialogoptions.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #include "dialogoptions.h" 22 | #include "ui_dialogoptions.h" 23 | 24 | DialogOptions::DialogOptions(QWidget *parent, XOptions *pOptions) : 25 | QDialog(parent), 26 | ui(new Ui::DialogOptions) 27 | { 28 | ui->setupUi(this); 29 | 30 | ui->widgetOptions->setOptions(pOptions,X_APPLICATIONDISPLAYNAME); 31 | } 32 | 33 | DialogOptions::~DialogOptions() 34 | { 35 | delete ui; 36 | } 37 | -------------------------------------------------------------------------------- /console_source/consoleoutput.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #ifndef CONSOLEOUTPUT_H 22 | #define CONSOLEOUTPUT_H 23 | 24 | #include 25 | 26 | class ConsoleOutput : public QObject 27 | { 28 | Q_OBJECT 29 | public: 30 | explicit ConsoleOutput(QObject *parent=nullptr); 31 | 32 | public slots: 33 | void infoMessage(QString sText); 34 | void errorMessage(QString sText); 35 | }; 36 | 37 | #endif // CONSOLEOUTPUT_H 38 | -------------------------------------------------------------------------------- /console_source/consoleoutput.cpp: -------------------------------------------------------------------------------- 1 | 2 | /* Copyright (c) 2020-2023 hors 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in all 12 | * copies or substantial portions of the Software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | * SOFTWARE. 21 | */ 22 | #include "consoleoutput.h" 23 | 24 | ConsoleOutput::ConsoleOutput(QObject *parent) : QObject(parent) 25 | { 26 | 27 | } 28 | 29 | void ConsoleOutput::infoMessage(QString sText) 30 | { 31 | QString _sText=sText; 32 | printf("%s\n",_sText.toUtf8().data()); 33 | } 34 | 35 | void ConsoleOutput::errorMessage(QString sText) 36 | { 37 | QString _sText=sText; 38 | printf("Error: %s\n",_sText.toUtf8().data()); 39 | } 40 | -------------------------------------------------------------------------------- /gui_source/dialogabout.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #ifndef DIALOGABOUT_H 22 | #define DIALOGABOUT_H 23 | 24 | #include 25 | #include 26 | #include "../global.h" 27 | #include "xoptions.h" 28 | 29 | namespace Ui { 30 | class DialogAbout; 31 | } 32 | 33 | class DialogAbout : public QDialog 34 | { 35 | Q_OBJECT 36 | 37 | public: 38 | explicit DialogAbout(QWidget *pParent=nullptr); 39 | ~DialogAbout(); 40 | 41 | private slots: 42 | void on_pushButtonOK_clicked(); 43 | 44 | private: 45 | Ui::DialogAbout *ui; 46 | }; 47 | 48 | #endif // DIALOGABOUT_H 49 | -------------------------------------------------------------------------------- /gui_source/gui_source_tr.pro: -------------------------------------------------------------------------------- 1 | TRANSLATIONS = \ 2 | translation/pdbripper_ar.ts \ 3 | translation/pdbripper_de.ts \ 4 | translation/pdbripper_es.ts \ 5 | translation/pdbripper_fr.ts \ 6 | translation/pdbripper_he.ts \ 7 | translation/pdbripper_id.ts \ 8 | translation/pdbripper_it.ts \ 9 | translation/pdbripper_ja.ts \ 10 | translation/pdbripper_ko.ts \ 11 | translation/pdbripper_pl.ts \ 12 | translation/pdbripper_pt_BR.ts \ 13 | translation/pdbripper_pt_PT.ts \ 14 | translation/pdbripper_ru.ts \ 15 | translation/pdbripper_tr.ts\ 16 | translation/pdbripper_uk.ts\ 17 | translation/pdbripper_vi.ts \ 18 | translation/pdbripper_zh.ts \ 19 | translation/pdbripper_zh_TW.ts 20 | 21 | FORMS += \ 22 | ../XOptions/xoptionswidget.ui \ 23 | ../XShortcuts/dialogshortcuts.ui \ 24 | dialogabout.ui \ 25 | dialogexport.ui \ 26 | dialogoptions.ui \ 27 | dialogprocess.ui \ 28 | guimainwindow.ui 29 | 30 | SOURCES += \ 31 | ../XOptions/xoptions.cpp \ 32 | ../XOptions/xoptionswidget.cpp \ 33 | ../XShortcuts/dialogshortcuts.cpp \ 34 | ../XShortcuts/xshortcuts.cpp \ 35 | ../XShortcuts/xshortcutsdialog.cpp \ 36 | ../XShortcuts/xshortcutstscrollarea.cpp \ 37 | ../XShortcuts/xshortcutswidget.cpp \ 38 | ../console_source/consoleoutput.cpp \ 39 | ../console_source/main_console.cpp \ 40 | dialogabout.cpp \ 41 | dialogexport.cpp \ 42 | dialogoptions.cpp \ 43 | dialogprocess.cpp \ 44 | guimainwindow.cpp \ 45 | main_gui.cpp \ 46 | ../msdia/diaCreate.cpp \ 47 | ../pdbprocess.cpp \ 48 | ../qwinpdb.cpp \ 49 | ../winloader_source/winloader.cpp 50 | 51 | 52 | -------------------------------------------------------------------------------- /gui_source/dialogoptions.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #ifndef DIALOGOPTIONS_H 22 | #define DIALOGOPTIONS_H 23 | 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include "../global.h" 29 | #include "xoptions.h" 30 | 31 | namespace Ui { 32 | class DialogOptions; 33 | } 34 | 35 | class DialogOptions : public QDialog 36 | { 37 | Q_OBJECT 38 | 39 | public: 40 | explicit DialogOptions(QWidget *parent,XOptions *pOptions); 41 | ~DialogOptions(); 42 | 43 | private: 44 | Ui::DialogOptions *ui; 45 | }; 46 | 47 | #endif // DIALOGOPTIONS_H 48 | -------------------------------------------------------------------------------- /pdbprocess.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #include "pdbprocess.h" 22 | 23 | PDBProcess::PDBProcess(QObject *parent, PDBDATA *pData,TYPE type) : QObject(parent) 24 | { 25 | this->g_pData=pData; 26 | this->g_type=type; 27 | 28 | connect(pData->pWinPDB,SIGNAL(completed()),this,SIGNAL(completed())); 29 | connect(pData->pWinPDB,SIGNAL(errorMessage(QString)),this,SIGNAL(errorMessage(QString))); 30 | } 31 | 32 | void PDBProcess::process() 33 | { 34 | if(g_type==TYPE_IMPORT) 35 | { 36 | g_pData->pWinPDB->getStats(&(g_pData->stats)); 37 | } 38 | else if(g_type==TYPE_EXPORT) 39 | { 40 | g_pData->pWinPDB->handleExport(&(g_pData->stats),&(g_pData->handleOptions)); 41 | } 42 | } 43 | 44 | void PDBProcess::stop() 45 | { 46 | g_pData->pWinPDB->stop(); 47 | } 48 | -------------------------------------------------------------------------------- /gui_source/dialogprocess.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | DialogProcess 4 | 5 | 6 | Qt::ApplicationModal 7 | 8 | 9 | 10 | 0 11 | 0 12 | 489 13 | 74 14 | 15 | 16 | 17 | 18 | 19 | 20 | true 21 | 22 | 23 | 24 | 25 | 26 | 0 27 | 28 | 29 | 0 30 | 31 | 32 | Qt::AlignCenter 33 | 34 | 35 | %v/%m 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 0 46 | 0 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | Cancel 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /gui_source/dialogexport.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #ifndef DIALOGEXPORT_H 22 | #define DIALOGEXPORT_H 23 | 24 | #include 25 | #include 26 | #include 27 | #include "dialogprocess.h" 28 | 29 | namespace Ui { 30 | class DialogExport; 31 | } 32 | 33 | class DialogExport : public QDialog 34 | { 35 | Q_OBJECT 36 | 37 | public: 38 | explicit DialogExport(QWidget *parent,PDBProcess::PDBDATA *pData); 39 | ~DialogExport(); 40 | 41 | private: 42 | QWinPDB::HANDLE_OPTIONS getHandleOptions(); 43 | 44 | private slots: 45 | void on_pushButtonOK_clicked(); 46 | void on_pushButtonCancel_clicked(); 47 | void errorMessage(QString sText); 48 | void infoMessage(QString sText); 49 | 50 | private: 51 | Ui::DialogExport *ui; 52 | PDBProcess::PDBDATA *pData; 53 | }; 54 | 55 | #endif // DIALOGEXPORT_H 56 | -------------------------------------------------------------------------------- /pdbprocess.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #ifndef PDBPROCESS_H 22 | #define PDBPROCESS_H 23 | 24 | #include 25 | #include 26 | #include "qwinpdb.h" 27 | 28 | class PDBProcess : public QObject 29 | { 30 | Q_OBJECT 31 | 32 | public: 33 | enum TYPE 34 | { 35 | TYPE_IMPORT=0, 36 | TYPE_EXPORT 37 | }; 38 | 39 | struct PDBDATA 40 | { 41 | QWinPDB *pWinPDB; 42 | QWinPDB::STATS stats; 43 | QWinPDB::HANDLE_OPTIONS handleOptions; 44 | QString sPDBFileName; 45 | }; 46 | 47 | explicit PDBProcess(QObject *parent,PDBDATA *pData,TYPE type); 48 | 49 | void stop(); 50 | 51 | signals: 52 | void completed(); 53 | void errorMessage(QString sText); 54 | void infoMessage(QString sText); 55 | 56 | public slots: 57 | void process(); 58 | 59 | private: 60 | PDBDATA *g_pData; 61 | TYPE g_type; 62 | }; 63 | 64 | #endif // PDBPROCESS_H 65 | -------------------------------------------------------------------------------- /gui_source/dialogprocess.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #ifndef DIALOGPROCESS_H 22 | #define DIALOGPROCESS_H 23 | 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include "../pdbprocess.h" 29 | 30 | namespace Ui 31 | { 32 | class DialogProcess; 33 | } 34 | 35 | class DialogProcess : public QDialog 36 | { 37 | Q_OBJECT 38 | 39 | public: 40 | explicit DialogProcess(QWidget *parent,PDBProcess::PDBDATA *pData,PDBProcess::TYPE type); 41 | ~DialogProcess(); 42 | 43 | private slots: 44 | void on_pushButtonCancel_clicked(); 45 | void timerSlot(); 46 | 47 | public slots: 48 | void onCompleted(); 49 | 50 | signals: 51 | void errorMessage(QString sText); 52 | void infoMessage(QString sText); 53 | 54 | private: 55 | Ui::DialogProcess *ui; 56 | QThread *pThread; 57 | PDBProcess *pPDBProcess; 58 | bool bIsRun; 59 | int nReturnCode; 60 | QTimer *g_pTimer; 61 | PDBProcess::PDBDATA *g_pData; 62 | }; 63 | 64 | #endif // DIALOGPROCESS_H 65 | -------------------------------------------------------------------------------- /gui_source/main_gui.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #include "guimainwindow.h" 22 | #include 23 | #include 24 | #include "xoptions.h" 25 | 26 | int main(int argc, char *argv[]) 27 | { 28 | #if QT_VERSION >= QT_VERSION_CHECK(5,6,0) 29 | QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 30 | #endif 31 | 32 | QCoreApplication::setOrganizationName(X_ORGANIZATIONNAME); 33 | QCoreApplication::setOrganizationDomain(X_ORGANIZATIONDOMAIN); 34 | QCoreApplication::setApplicationName(X_APPLICATIONNAME); 35 | QCoreApplication::setApplicationVersion(X_APPLICATIONVERSION); 36 | 37 | if((argc==2)&&((QString(argv[1])=="--version")||(QString(argv[1])=="-v"))) 38 | { 39 | QString sInfo=QString("%1 v%2").arg(X_APPLICATIONDISPLAYNAME,X_APPLICATIONVERSION); 40 | printf("%s\n",sInfo.toUtf8().data()); 41 | 42 | return 0; 43 | } 44 | 45 | QApplication a(argc, argv); 46 | 47 | XOptions xOptions; 48 | 49 | xOptions.setName(X_OPTIONSFILE); 50 | 51 | xOptions.addID(XOptions::ID_VIEW_STYLE,"Fusion"); 52 | // xOptions.addID(XOptions::ID_VIEW_QSS,""); 53 | xOptions.addID(XOptions::ID_VIEW_LANG,"System"); 54 | xOptions.addID(XOptions::ID_VIEW_FONT,""); 55 | 56 | xOptions.load(); 57 | 58 | XOptions::adjustApplicationView(X_APPLICATIONNAME,&xOptions); 59 | 60 | GuiMainWindow w; 61 | w.show(); 62 | 63 | return a.exec(); 64 | } 65 | -------------------------------------------------------------------------------- /gui_source/dialogprocess.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #include "dialogprocess.h" 22 | #include "ui_dialogprocess.h" 23 | 24 | DialogProcess::DialogProcess(QWidget *parent, PDBProcess::PDBDATA *pData, PDBProcess::TYPE type) : 25 | QDialog(parent), 26 | ui(new Ui::DialogProcess) 27 | { 28 | ui->setupUi(this); 29 | 30 | g_pData=pData; 31 | 32 | if(type==PDBProcess::TYPE_EXPORT) 33 | { 34 | setWindowTitle(tr("Export")); 35 | } 36 | else if(type==PDBProcess::TYPE_IMPORT) 37 | { 38 | setWindowTitle(tr("Import")); 39 | } 40 | 41 | pThread=new QThread; 42 | 43 | pPDBProcess=new PDBProcess(0,pData,type); 44 | pPDBProcess->moveToThread(pThread); 45 | 46 | connect(pPDBProcess,SIGNAL(completed()),this,SLOT(onCompleted())); 47 | 48 | connect(pPDBProcess,SIGNAL(errorMessage(QString)),this,SIGNAL(errorMessage(QString))); 49 | connect(pPDBProcess,SIGNAL(infoMessage(QString)),this,SIGNAL(infoMessage(QString))); 50 | 51 | bIsRun=true; 52 | connect(pThread, SIGNAL(started()), pPDBProcess, SLOT(process())); 53 | pThread->start(); 54 | 55 | g_pTimer=new QTimer(this); 56 | connect(g_pTimer,SIGNAL(timeout()),this,SLOT(timerSlot())); 57 | g_pTimer->start(1000); 58 | 59 | nReturnCode=QDialog::Accepted; 60 | 61 | ui->progressBarTotal->setMaximum(100); 62 | ui->progressBarTotal->setValue(0); 63 | } 64 | 65 | DialogProcess::~DialogProcess() 66 | { 67 | if(bIsRun) 68 | { 69 | pPDBProcess->stop(); 70 | } 71 | 72 | pThread->quit(); 73 | pThread->wait(); 74 | 75 | delete ui; 76 | 77 | delete pThread; 78 | delete pPDBProcess; 79 | } 80 | 81 | void DialogProcess::on_pushButtonCancel_clicked() 82 | { 83 | nReturnCode=QDialog::Rejected; 84 | 85 | if(bIsRun) 86 | { 87 | pPDBProcess->stop(); 88 | bIsRun=false; 89 | } 90 | } 91 | 92 | void DialogProcess::timerSlot() 93 | { 94 | if(g_pData) 95 | { 96 | if(g_pData->stats.nTotal) 97 | { 98 | ui->progressBarTotal->setMaximum(g_pData->stats.nTotal); 99 | ui->progressBarTotal->setValue(g_pData->stats.nCurrent); 100 | 101 | QString sStatus=g_pData->stats.sStatus.left(64); 102 | 103 | ui->labelStatus->setText(sStatus); 104 | } 105 | } 106 | } 107 | 108 | void DialogProcess::onCompleted() 109 | { 110 | done(nReturnCode); 111 | } 112 | -------------------------------------------------------------------------------- /gui_source/guimainwindow.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #ifndef GUIMAINWINDOW_H 22 | #define GUIMAINWINDOW_H 23 | 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include "../global.h" 32 | #include "dialogabout.h" 33 | #include "dialogexport.h" 34 | #include "dialogoptions.h" 35 | #include "dialogprocess.h" 36 | #include "xoptions.h" 37 | 38 | namespace Ui 39 | { 40 | class GuiMainWindow; 41 | } 42 | 43 | class GuiMainWindow : public QMainWindow 44 | { 45 | Q_OBJECT 46 | 47 | public: 48 | explicit GuiMainWindow(QWidget *pParent=0); 49 | ~GuiMainWindow(); 50 | 51 | private slots: 52 | void createMenus(); 53 | void actionOpenSlot(); 54 | void actionCloseSlot(); 55 | void actionExitSlot(); 56 | void actionCPPSlot(); 57 | void actionXNTSVSlot(); 58 | void actionOptionsSlot(); 59 | void actionAboutSlot(); 60 | 61 | void adjustWindow(); 62 | 63 | void processFile(QString sFileName); 64 | void cleanUp(); 65 | 66 | void on_lineEditSearch_textChanged(const QString &arg1); 67 | void onCurrentChanged(const QModelIndex ¤t,const QModelIndex &previous); 68 | 69 | void handle(); 70 | void on_tableViewSymbols_clicked(const QModelIndex &index); 71 | void on_checkBoxShowComments_toggled(bool checked); 72 | 73 | void setHandleOptions(QWinPDB::HANDLE_OPTIONS *pHandleOptions); 74 | QWinPDB::HANDLE_OPTIONS getHandleOptions(); 75 | 76 | void on_comboBoxFixOffsets_currentIndexChanged(int index); 77 | void on_checkBoxAddAlignment_toggled(bool checked); 78 | void on_checkBoxFixTypes_toggled(bool checked); 79 | 80 | void errorMessage(QString sText); 81 | 82 | protected: 83 | void dragEnterEvent(QDragEnterEvent *event) override; 84 | void dragMoveEvent(QDragMoveEvent *event) override; 85 | void dropEvent(QDropEvent *event) override; 86 | 87 | private: 88 | enum CBT 89 | { 90 | CBT_CLASSES=0, 91 | CBT_STRUCTS, 92 | CBT_UNIONS, 93 | CBT_INTERFACES, 94 | CBT_ENUMS 95 | }; 96 | 97 | Ui::GuiMainWindow *ui; 98 | PDBProcess::PDBDATA g_pdbData; 99 | XOptions g_xOptions; 100 | QSortFilterProxyModel *g_pFilter; 101 | }; 102 | 103 | #endif // GUIMAINWINDOW_H 104 | -------------------------------------------------------------------------------- /gui_source/dialogabout.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | DialogAbout 4 | 5 | 6 | Qt::ApplicationModal 7 | 8 | 9 | 10 | 0 11 | 0 12 | 531 13 | 337 14 | 15 | 16 | 17 | About 18 | 19 | 20 | true 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | :/images/main.png 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | Version 41 | 42 | 43 | Qt::AlignCenter 44 | 45 | 46 | 47 | 48 | 49 | 50 | <html><head/><body><p><span style=" font-weight:700;">Copyright(C) 2012-2023 hors</span></p></body></html> 51 | 52 | 53 | Qt::AlignCenter 54 | 55 | 56 | 57 | 58 | 59 | 60 | <html><head/><body><p><span style=" font-weight:600;">Bugreports</span>: <a href="mailto:horsicq@gmail.com"><span style=" text-decoration: underline; color:#ff0000;">horsicq@gmail.com</span></a></p></body></html> 61 | 62 | 63 | Qt::AlignCenter 64 | 65 | 66 | 67 | 68 | 69 | 70 | <html><head/><body><p><span style=" font-weight:600;">Website</span>: <a href="http://ntinfo.biz"><span style=" text-decoration: underline; color:#ff0000;">http://ntinfo.biz</span></a></p></body></html> 71 | 72 | 73 | Qt::AlignCenter 74 | 75 | 76 | 77 | 78 | 79 | 80 | <html><head/><body><p><span style=" font-weight:600;">Donate(Paypal): </span><a href="mailto:ntinfo.re@gmail.com"><span style=" text-decoration: underline; color:#ff0000;">ntinfo.re@gmail.com</span></a></p></body></html> 81 | 82 | 83 | Qt::AlignCenter 84 | 85 | 86 | 87 | 88 | 89 | 90 | <html><head/><body><p><span style=" font-weight:600;">Source code: </span><a href="https://github.com/horsicq/PDBRipper"><span style=" text-decoration: underline; color:#ff0000;">https://github.com/horsicq/PDBRipper</span></a></p></body></html> 91 | 92 | 93 | Qt::AlignCenter 94 | 95 | 96 | 97 | 98 | 99 | 100 | Thanks 101 | 102 | 103 | Qt::AutoText 104 | 105 | 106 | true 107 | 108 | 109 | 110 | 111 | 112 | 113 | Qt::Vertical 114 | 115 | 116 | 117 | 20 118 | 40 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | Qt::Horizontal 133 | 134 | 135 | 136 | 40 137 | 20 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | OK 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | -------------------------------------------------------------------------------- /gui_source/dialogabout.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #include "dialogabout.h" 22 | #include "ui_dialogabout.h" 23 | 24 | DialogAbout::DialogAbout(QWidget *pParent) : 25 | QDialog(pParent), 26 | ui(new Ui::DialogAbout) 27 | { 28 | ui->setupUi(this); 29 | 30 | ui->labelVersion->setText(QString("%1") 31 | .arg(XOptions::getTitle(X_APPLICATIONDISPLAYNAME,X_APPLICATIONVERSION))); 32 | 33 | ui->labelBugreports->setText(QString("

%1: horsicq@gmail.com

") 34 | .arg(tr("Bugreports"))); 35 | ui->labelWebsite->setText(QString("

%1: http://ntinfo.biz

") 36 | .arg(tr("Website"))); 37 | ui->labelDonate->setText(QString("

%1(Paypal): ntinfo.re@gmail.com

") 38 | .arg(tr("Donate"))); 39 | ui->labelSourceCode->setText(QString("

%1: https://github.com/horsicq/PDBRipper

") 40 | .arg(tr("Source code"))); 41 | ui->labelThanks->setText(QString("" 42 | "

%1:

" 43 | "

" 44 | "Fernando Mercês, " 45 | "David Zimmer, " 46 | "misonothx, " 47 | "

" 48 | "

" 49 | "FrenchYeti, " 50 | "fr0zenbag, " 51 | "Anderson Leite, " 52 | "

" 53 | "

" 54 | "Filip Navara, " 55 | "Ali Hadi, " 56 | "Duncan Ogilvie, " 57 | "

" 58 | "

" 59 | "Leandro Fróes, " 60 | "phithon, " 61 | "Seymour Guado, " 62 | "

" 63 | "

" 64 | "Christopher Layne, " 65 | "Adric Net, " 66 | "Gilad Reich" 67 | "

" 68 | "") 69 | .arg(tr("Thanks"))); 70 | } 71 | 72 | DialogAbout::~DialogAbout() 73 | { 74 | delete ui; 75 | } 76 | 77 | void DialogAbout::on_pushButtonOK_clicked() 78 | { 79 | this->close(); 80 | } 81 | -------------------------------------------------------------------------------- /gui_source/dialogexport.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #include "dialogexport.h" 22 | #include "ui_dialogexport.h" 23 | 24 | DialogExport::DialogExport(QWidget *parent,PDBProcess::PDBDATA *pData) : 25 | QDialog(parent), 26 | ui(new Ui::DialogExport) 27 | { 28 | ui->setupUi(this); 29 | 30 | this->pData=pData; 31 | 32 | ui->comboBoxExportType->setEnabled(false); 33 | 34 | if(pData->handleOptions.exportType==QWinPDB::ET_CPLUSPLUS) 35 | { 36 | ui->groupBoxSortType->setEnabled(true); 37 | ui->groupBoxOptions->setEnabled(true); 38 | } 39 | else if(pData->handleOptions.exportType==QWinPDB::ET_XNTSV) 40 | { 41 | ui->groupBoxSortType->setEnabled(false); 42 | ui->groupBoxOptions->setEnabled(false); 43 | } 44 | 45 | ui->comboBoxSortType->addItem(tr("No"),QWinPDB::ST_NO); 46 | ui->comboBoxSortType->addItem(QString("ID"),QWinPDB::ST_ID); 47 | ui->comboBoxSortType->addItem(tr("Name"),QWinPDB::ST_NAME); 48 | 49 | qint32 nCount=pData->stats.listSymbols.count(); 50 | 51 | if(nCount<100000) 52 | { 53 | ui->comboBoxSortType->addItem(tr("Dependencies"),QWinPDB::ST_DEP); 54 | } 55 | 56 | ui->comboBoxExportType->addItem(QString("C++"),QWinPDB::ET_CPLUSPLUS); 57 | ui->comboBoxExportType->addItem(QString("XNTSV"),QWinPDB::ET_XNTSV); 58 | 59 | ui->comboBoxFixOffsets->addItem(tr("No"),QWinPDB::FO_NO); 60 | ui->comboBoxFixOffsets->addItem(tr("Struct and unions"),QWinPDB::FO_STRUCTSANDUNIONS); 61 | ui->comboBoxFixOffsets->addItem(tr("All"),QWinPDB::FO_ALL); 62 | 63 | ui->checkBoxShowComments->setChecked(pData->handleOptions.bShowComments); 64 | ui->checkBoxFixTypes->setChecked(pData->handleOptions.bFixTypes); 65 | ui->checkBoxAddAlignment->setChecked(pData->handleOptions.bAddAlignment); 66 | 67 | { 68 | int nCount=ui->comboBoxFixOffsets->count(); 69 | 70 | for(int i=0;icomboBoxFixOffsets->itemData(i).toUInt()==pData->handleOptions.fixOffsets) 73 | { 74 | ui->comboBoxFixOffsets->setCurrentIndex(i); 75 | 76 | break; 77 | } 78 | } 79 | } 80 | { 81 | int nCount=ui->comboBoxSortType->count(); 82 | 83 | for(int i=0;icomboBoxSortType->itemData(i).toUInt()==pData->handleOptions.sortType) 86 | { 87 | ui->comboBoxSortType->setCurrentIndex(i); 88 | 89 | break; 90 | } 91 | } 92 | } 93 | { 94 | int nCount=ui->comboBoxExportType->count(); 95 | 96 | for(int i=0;icomboBoxExportType->itemData(i).toUInt()==pData->handleOptions.exportType) 99 | { 100 | ui->comboBoxExportType->setCurrentIndex(i); 101 | 102 | break; 103 | } 104 | } 105 | } 106 | } 107 | 108 | DialogExport::~DialogExport() 109 | { 110 | delete ui; 111 | } 112 | 113 | QWinPDB::HANDLE_OPTIONS DialogExport::getHandleOptions() 114 | { 115 | QWinPDB::HANDLE_OPTIONS result={}; 116 | 117 | result.bShowComments=ui->checkBoxShowComments->isChecked(); 118 | result.bFixTypes=ui->checkBoxFixTypes->isChecked(); 119 | result.bAddAlignment=ui->checkBoxAddAlignment->isChecked(); 120 | result.fixOffsets=(QWinPDB::FO)ui->comboBoxFixOffsets->currentData().toUInt(); 121 | result.sortType=(QWinPDB::ST)ui->comboBoxSortType->currentData().toUInt(); 122 | result.exportType=(QWinPDB::ET)ui->comboBoxExportType->currentData().toUInt(); 123 | 124 | return result; 125 | } 126 | 127 | void DialogExport::on_pushButtonOK_clicked() 128 | { 129 | pData->handleOptions=getHandleOptions(); 130 | 131 | QString sFileName=QFileInfo(pData->sPDBFileName).completeBaseName(); 132 | 133 | if(pData->handleOptions.exportType==QWinPDB::ET_CPLUSPLUS) 134 | { 135 | sFileName=QFileInfo(pData->sPDBFileName).filePath()+QDir::separator()+QString("%1.h").arg(sFileName); 136 | sFileName=QFileDialog::getSaveFileName(this,tr("Save file"),sFileName,QString("H %1 (*.h);;%2 (*)").arg(tr("Files"),tr("All files"))); 137 | } 138 | else if(pData->handleOptions.exportType==QWinPDB::ET_XNTSV) 139 | { 140 | sFileName=QFileInfo(pData->sPDBFileName).filePath()+QDir::separator()+QString("%1.json").arg(sFileName); 141 | sFileName=QFileDialog::getSaveFileName(this,tr("Save file"),sFileName,QString("JSON %1 (*.json);;%2 (*)").arg(tr("Files"),tr("All files"))); 142 | } 143 | 144 | if(!sFileName.isEmpty()) 145 | { 146 | pData->handleOptions.sResultFileName=sFileName; 147 | 148 | DialogProcess dp(this,pData,PDBProcess::TYPE_EXPORT); 149 | connect(&dp,SIGNAL(errorMessage(QString)),this,SLOT(errorMessage(QString))); 150 | connect(&dp,SIGNAL(infoMessage(QString)),this,SLOT(infoMessage(QString))); 151 | dp.exec(); 152 | 153 | this->close(); 154 | } 155 | } 156 | 157 | void DialogExport::on_pushButtonCancel_clicked() 158 | { 159 | this->close(); 160 | } 161 | 162 | void DialogExport::errorMessage(QString sText) 163 | { 164 | QMessageBox::critical(this,tr("Error"),sText); 165 | } 166 | 167 | void DialogExport::infoMessage(QString sText) 168 | { 169 | QMessageBox::information(this,tr("Information"),sText); 170 | } 171 | -------------------------------------------------------------------------------- /console_source/main_console.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #include 22 | #include 23 | #include 24 | #include "consoleoutput.h" 25 | #include "../pdbprocess.h" 26 | #include "../global.h" 27 | 28 | int main(int argc,char *argv[]) 29 | { 30 | QCoreApplication::setOrganizationName(X_ORGANIZATIONNAME); 31 | QCoreApplication::setOrganizationDomain(X_ORGANIZATIONDOMAIN); 32 | QCoreApplication::setApplicationName(X_APPLICATIONNAME); 33 | QCoreApplication::setApplicationVersion(X_APPLICATIONVERSION); 34 | 35 | QCoreApplication app(argc,argv); 36 | 37 | ConsoleOutput consoleOutput; 38 | QCommandLineParser parser; 39 | QString sDescription; 40 | sDescription.append(QString("%1 v%2\n").arg(X_APPLICATIONNAME).arg(X_APPLICATIONVERSION)); 41 | sDescription.append(QString("%1\n").arg("Copyright(C) 2012-2023 hors Web: http://ntinfo.biz")); 42 | parser.setApplicationDescription(sDescription); 43 | parser.addHelpOption(); 44 | parser.addVersionOption(); 45 | 46 | parser.addPositionalArgument("file","The file to open."); 47 | 48 | QCommandLineOption clOutputFile (QStringList()<<"o"<<"outputfile", "Output file.", "path"); 49 | QCommandLineOption clShowComments (QStringList()<<"c"<<"showcomments", "Show comments." ); 50 | QCommandLineOption clFixTypes (QStringList()<<"f"<<"fixtypes", "Fix types." ); 51 | QCommandLineOption clAddAlignment (QStringList()<<"l"<<"addalignment", "Add alignment." ); 52 | QCommandLineOption clFixOffsetsStructs (QStringList()<<"s"<<"fostructsandunions", "Fix offsets(structs and unions)." ); 53 | QCommandLineOption clFixOffsetsAll (QStringList()<<"a"<<"foall", "Fix offsets(all)." ); 54 | QCommandLineOption clSortById (QStringList()<<"i"<<"sortbyid", "Sort by ID." ); 55 | QCommandLineOption clSortByName (QStringList()<<"n"<<"sortbyname", "Sort by name." ); 56 | QCommandLineOption clSortByDeps (QStringList()<<"d"<<"sortbydeps", "Sort by dependencies." ); 57 | QCommandLineOption clExportCpp (QStringList()<<"p"<<"exportcpp", "Export C++." ); 58 | QCommandLineOption clExportXntsv (QStringList()<<"x"<<"exportxntsv", "Export XNTSV." ); 59 | 60 | parser.addOption(clOutputFile); 61 | parser.addOption(clShowComments); 62 | parser.addOption(clFixTypes); 63 | parser.addOption(clAddAlignment); 64 | parser.addOption(clFixOffsetsStructs); 65 | parser.addOption(clFixOffsetsAll); 66 | parser.addOption(clSortById); 67 | parser.addOption(clSortByName); 68 | parser.addOption(clSortByDeps); 69 | parser.addOption(clExportCpp); 70 | parser.addOption(clExportXntsv); 71 | 72 | parser.process(app); 73 | 74 | bool bProcess=false; 75 | 76 | PDBProcess::PDBDATA pdbData={}; 77 | 78 | pdbData.pWinPDB=new QWinPDB; 79 | 80 | QObject::connect(pdbData.pWinPDB,SIGNAL(infoMessage(QString)),&consoleOutput,SLOT(infoMessage(QString))); 81 | QObject::connect(pdbData.pWinPDB,SIGNAL(errorMessage(QString)),&consoleOutput,SLOT(errorMessage(QString))); 82 | 83 | pdbData.handleOptions.bAddAlignment=parser.isSet(clAddAlignment); 84 | pdbData.handleOptions.bFixTypes=parser.isSet(clFixTypes); 85 | pdbData.handleOptions.bShowComments=parser.isSet(clShowComments); 86 | 87 | if(parser.isSet(clFixOffsetsStructs)) 88 | { 89 | pdbData.handleOptions.fixOffsets=QWinPDB::FO_STRUCTSANDUNIONS; 90 | } 91 | else if(parser.isSet(clFixOffsetsAll)) 92 | { 93 | pdbData.handleOptions.fixOffsets=QWinPDB::FO_ALL; 94 | } 95 | else 96 | { 97 | pdbData.handleOptions.fixOffsets=QWinPDB::FO_NO; // Default 98 | } 99 | 100 | if(parser.isSet(clSortById)) 101 | { 102 | pdbData.handleOptions.sortType=QWinPDB::ST_ID; 103 | } 104 | else if(parser.isSet(clSortByName)) 105 | { 106 | pdbData.handleOptions.sortType=QWinPDB::ST_NAME; 107 | } 108 | else if(parser.isSet(clSortByDeps)) 109 | { 110 | pdbData.handleOptions.sortType=QWinPDB::ST_DEP; 111 | } 112 | else 113 | { 114 | pdbData.handleOptions.sortType=QWinPDB::ST_NO; // Default 115 | } 116 | 117 | if(parser.isSet(clExportCpp)) 118 | { 119 | pdbData.handleOptions.exportType=QWinPDB::ET_CPLUSPLUS; 120 | } 121 | else if(parser.isSet(clExportXntsv)) 122 | { 123 | pdbData.handleOptions.exportType=QWinPDB::ET_XNTSV; 124 | } 125 | else 126 | { 127 | pdbData.handleOptions.exportType=QWinPDB::ET_CPLUSPLUS; // Default 128 | } 129 | 130 | QString sOutputFileName=parser.value(clOutputFile); 131 | 132 | // mb TODO multifiles 133 | QList listInputFiles=parser.positionalArguments(); 134 | 135 | if(listInputFiles.count()) 136 | { 137 | pdbData.handleOptions.sResultFileName=sOutputFileName; 138 | 139 | QString sPDBFileName=listInputFiles.at(0); 140 | 141 | if(pdbData.pWinPDB->loadFromFile(sPDBFileName)) 142 | { 143 | { 144 | PDBProcess pdbProcess(nullptr,&pdbData,PDBProcess::TYPE_IMPORT); 145 | pdbProcess.process(); 146 | } 147 | { 148 | PDBProcess pdbProcess(nullptr,&pdbData,PDBProcess::TYPE_EXPORT); 149 | 150 | QObject::connect(&pdbProcess,SIGNAL(infoMessage(QString)),&consoleOutput,SLOT(infoMessage(QString))); 151 | QObject::connect(&pdbProcess,SIGNAL(errorMessage(QString)),&consoleOutput,SLOT(errorMessage(QString))); 152 | 153 | pdbProcess.process(); 154 | } 155 | 156 | if(sOutputFileName=="") 157 | { 158 | consoleOutput.infoMessage("No output file"); 159 | } 160 | } 161 | else 162 | { 163 | consoleOutput.errorMessage(QString("%1: %2").arg(QString("Cannot open file")).arg(sPDBFileName)); 164 | } 165 | 166 | bProcess=true; 167 | } 168 | 169 | if(!bProcess) 170 | { 171 | parser.showHelp(); 172 | Q_UNREACHABLE(); 173 | } 174 | 175 | return 0; 176 | } 177 | -------------------------------------------------------------------------------- /gui_source/dialogexport.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | DialogExport 4 | 5 | 6 | Qt::ApplicationModal 7 | 8 | 9 | 10 | 0 11 | 0 12 | 316 13 | 202 14 | 15 | 16 | 17 | Export 18 | 19 | 20 | true 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | Sort type 29 | 30 | 31 | 32 | 0 33 | 34 | 35 | 0 36 | 37 | 38 | 0 39 | 40 | 41 | 0 42 | 43 | 44 | 45 | 46 | 47 | 100 48 | 0 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | Qt::Horizontal 60 | 61 | 62 | 63 | 40 64 | 20 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | Export type 73 | 74 | 75 | 76 | 0 77 | 78 | 79 | 0 80 | 81 | 82 | 0 83 | 84 | 85 | 0 86 | 87 | 88 | 89 | 90 | 91 | 100 92 | 0 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | Options 106 | 107 | 108 | 109 | 0 110 | 111 | 112 | 0 113 | 114 | 115 | 0 116 | 117 | 118 | 0 119 | 120 | 121 | 122 | 123 | 124 | 125 | Show comments 126 | 127 | 128 | 129 | 130 | 131 | 132 | Fix types 133 | 134 | 135 | 136 | 137 | 138 | 139 | Add alignment 140 | 141 | 142 | 143 | 144 | 145 | 146 | Qt::Vertical 147 | 148 | 149 | 150 | 20 151 | 40 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 150 165 | 0 166 | 167 | 168 | 169 | Fix offsets 170 | 171 | 172 | 173 | 1 174 | 175 | 176 | 1 177 | 178 | 179 | 1 180 | 181 | 182 | 1 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | Qt::Vertical 194 | 195 | 196 | 197 | 20 198 | 40 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | Qt::Horizontal 214 | 215 | 216 | 217 | 40 218 | 20 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | Cancel 227 | 228 | 229 | 230 | 231 | 232 | 233 | OK 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | -------------------------------------------------------------------------------- /gui_source/guimainwindow.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | GuiMainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 801 10 | 583 11 | 12 | 13 | 14 | false 15 | 16 | 17 | MainWindow 18 | 19 | 20 | 21 | 22 | 0 23 | 24 | 25 | 0 26 | 27 | 28 | 0 29 | 30 | 31 | 0 32 | 33 | 34 | 35 | 36 | 0 37 | 38 | 39 | 40 | Symbols 41 | 42 | 43 | 44 | 0 45 | 46 | 47 | 0 48 | 49 | 50 | 0 51 | 52 | 53 | 0 54 | 55 | 56 | 57 | 58 | Qt::Horizontal 59 | 60 | 61 | 62 | 63 | 0 64 | 0 65 | 66 | 67 | 68 | 69 | 400 70 | 16777215 71 | 72 | 73 | 74 | 75 | QLayout::SetDefaultConstraint 76 | 77 | 78 | 0 79 | 80 | 81 | 0 82 | 83 | 84 | 0 85 | 86 | 87 | 0 88 | 89 | 90 | 91 | 92 | Search 93 | 94 | 95 | 96 | 1 97 | 98 | 99 | 1 100 | 101 | 102 | 1 103 | 104 | 105 | 1 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 0 118 | 0 119 | 120 | 121 | 122 | QAbstractItemView::NoEditTriggers 123 | 124 | 125 | QAbstractItemView::SingleSelection 126 | 127 | 128 | QAbstractItemView::SelectRows 129 | 130 | 131 | true 132 | 133 | 134 | false 135 | 136 | 137 | 20 138 | 139 | 140 | 20 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | Options 152 | 153 | 154 | 155 | 1 156 | 157 | 158 | 1 159 | 160 | 161 | 1 162 | 163 | 164 | 1 165 | 166 | 167 | 168 | 169 | Show comments 170 | 171 | 172 | 173 | 174 | 175 | 176 | Fix types 177 | 178 | 179 | 180 | 181 | 182 | 183 | Add alignment 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 150 192 | 0 193 | 194 | 195 | 196 | Fix offsets 197 | 198 | 199 | 200 | 1 201 | 202 | 203 | 1 204 | 205 | 206 | 1 207 | 208 | 209 | 1 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | Qt::Horizontal 221 | 222 | 223 | 224 | 198 225 | 20 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 0 238 | 0 239 | 240 | 241 | 242 | QTextEdit::NoWrap 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 0 260 | 0 261 | 801 262 | 22 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | -------------------------------------------------------------------------------- /gui_source/guimainwindow.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2020-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #include "guimainwindow.h" 22 | #include "ui_guimainwindow.h" 23 | 24 | GuiMainWindow::GuiMainWindow(QWidget *pParent) : 25 | QMainWindow(pParent), 26 | ui(new Ui::GuiMainWindow) 27 | { 28 | ui->setupUi(this); 29 | 30 | setWindowTitle(XOptions::getTitle(X_APPLICATIONDISPLAYNAME,X_APPLICATIONVERSION)); 31 | 32 | g_xOptions.setName(X_OPTIONSFILE); 33 | 34 | g_xOptions.addID(XOptions::ID_VIEW_STYLE,"Fusion"); 35 | // g_xOptions.addID(XOptions::ID_VIEW_QSS,""); 36 | g_xOptions.addID(XOptions::ID_VIEW_LANG,"System"); 37 | g_xOptions.addID(XOptions::ID_VIEW_STAYONTOP,false); 38 | g_xOptions.addID(XOptions::ID_FILE_SAVELASTDIRECTORY,true); 39 | g_xOptions.addID(XOptions::ID_FILE_SAVERECENTFILES,true); 40 | g_xOptions.addID(XOptions::ID_VIEW_FONT,""); 41 | // g_xOptions.addID(XOptions::ID_FILE_CONTEXT,".pdb"); 42 | 43 | g_xOptions.load(); 44 | 45 | connect(&g_xOptions,SIGNAL(openFile(QString)),this,SLOT(processFile(QString))); 46 | 47 | createMenus(); 48 | 49 | adjustWindow(); 50 | 51 | setAcceptDrops(true); 52 | 53 | g_pdbData.pWinPDB=0; 54 | 55 | g_pFilter=new QSortFilterProxyModel(this); 56 | ui->tableViewSymbols->setModel(g_pFilter); 57 | 58 | QSignalBlocker blocker(ui->comboBoxFixOffsets); 59 | 60 | ui->comboBoxFixOffsets->addItem(tr("No"),QWinPDB::FO_NO); 61 | ui->comboBoxFixOffsets->addItem(tr("Struct and unions"),QWinPDB::FO_STRUCTSANDUNIONS); 62 | ui->comboBoxFixOffsets->addItem(tr("All"),QWinPDB::FO_ALL); 63 | 64 | g_pdbData.handleOptions=QWinPDB::getDefaultHandleOptions(); 65 | 66 | setHandleOptions(&(g_pdbData.handleOptions)); 67 | 68 | if(QCoreApplication::arguments().count()>1) 69 | { 70 | processFile(QCoreApplication::arguments().at(1)); 71 | } 72 | } 73 | 74 | GuiMainWindow::~GuiMainWindow() 75 | { 76 | g_xOptions.save(); 77 | 78 | if(g_pdbData.pWinPDB) 79 | { 80 | delete g_pdbData.pWinPDB; 81 | g_pdbData.pWinPDB=nullptr; 82 | } 83 | 84 | delete ui; 85 | } 86 | 87 | void GuiMainWindow::createMenus() 88 | { 89 | QMenu *pMenuFile=new QMenu(tr("File"),ui->menubar); 90 | QMenu *pMenuAction=new QMenu(tr("Action"),ui->menubar); 91 | QMenu *pMenuTools=new QMenu(tr("Tools"),ui->menubar); 92 | QMenu *pMenuHelp=new QMenu(tr("Help"),ui->menubar); 93 | QMenu *pMenuExport=new QMenu(tr("Export"),ui->menubar); 94 | 95 | ui->menubar->addAction(pMenuFile->menuAction()); 96 | ui->menubar->addAction(pMenuAction->menuAction()); 97 | ui->menubar->addAction(pMenuTools->menuAction()); 98 | ui->menubar->addAction(pMenuHelp->menuAction()); 99 | 100 | QAction *pActionOpen=new QAction(tr("Open"),this); 101 | QAction *pActionClose=new QAction(tr("Close"),this); 102 | QAction *pActionExit=new QAction(tr("Exit"),this); 103 | QAction *pActionExportCPP=new QAction(QString("C++"),this); 104 | QAction *pActionExportXNTSV=new QAction(QString("XNTSV"),this); 105 | QAction *pActionOptions=new QAction(tr("Options"),this); 106 | QAction *pActionAbout=new QAction(tr("About"),this); 107 | 108 | pMenuFile->addAction(pActionOpen); 109 | pMenuFile->addMenu(g_xOptions.createRecentFilesMenu(this)); 110 | pMenuFile->addAction(pActionClose); 111 | pMenuFile->addAction(pActionExit); 112 | pMenuExport->addAction(pActionExportCPP); 113 | pMenuExport->addAction(pActionExportXNTSV); 114 | pMenuAction->addMenu(pMenuExport); 115 | pMenuTools->addAction(pActionOptions); 116 | pMenuHelp->addAction(pActionAbout); 117 | 118 | connect(pActionOpen,SIGNAL(triggered()),this,SLOT(actionOpenSlot())); 119 | connect(pActionClose,SIGNAL(triggered()),this,SLOT(actionCloseSlot())); 120 | connect(pActionExit,SIGNAL(triggered()),this,SLOT(actionExitSlot())); 121 | connect(pActionExportCPP,SIGNAL(triggered()),this,SLOT(actionCPPSlot())); 122 | connect(pActionExportXNTSV,SIGNAL(triggered()),this,SLOT(actionXNTSVSlot())); 123 | connect(pActionOptions,SIGNAL(triggered()),this,SLOT(actionOptionsSlot())); 124 | connect(pActionAbout,SIGNAL(triggered()),this,SLOT(actionAboutSlot())); 125 | } 126 | 127 | void GuiMainWindow::actionOpenSlot() 128 | { 129 | QString sDirectory=g_xOptions.getLastDirectory(); 130 | 131 | QString sFileName=QFileDialog::getOpenFileName(this,tr("Open file"),sDirectory,QString("PDB %1 (*.pdb);;%2 (*)").arg(tr("Files"),tr("All files"))); 132 | 133 | processFile(sFileName); 134 | } 135 | 136 | void GuiMainWindow::actionCloseSlot() 137 | { 138 | cleanUp(); 139 | } 140 | 141 | void GuiMainWindow::actionExitSlot() 142 | { 143 | this->close(); 144 | } 145 | 146 | void GuiMainWindow::setHandleOptions(QWinPDB::HANDLE_OPTIONS *pHandleOptions) 147 | { 148 | ui->checkBoxShowComments->setChecked(pHandleOptions->bShowComments); 149 | ui->checkBoxFixTypes->setChecked(pHandleOptions->bFixTypes); 150 | ui->checkBoxAddAlignment->setChecked(pHandleOptions->bAddAlignment); 151 | 152 | int nCount=ui->comboBoxFixOffsets->count(); 153 | 154 | for(int i=0;icomboBoxFixOffsets->itemData(i).toUInt()==pHandleOptions->fixOffsets) 157 | { 158 | ui->comboBoxFixOffsets->setCurrentIndex(i); 159 | 160 | break; 161 | } 162 | } 163 | } 164 | 165 | QWinPDB::HANDLE_OPTIONS GuiMainWindow::getHandleOptions() 166 | { 167 | QWinPDB::HANDLE_OPTIONS result={}; 168 | 169 | result.bShowComments=ui->checkBoxShowComments->isChecked(); 170 | result.bFixTypes=ui->checkBoxFixTypes->isChecked(); 171 | result.bAddAlignment=ui->checkBoxAddAlignment->isChecked(); 172 | result.fixOffsets=(QWinPDB::FO)ui->comboBoxFixOffsets->currentData().toUInt(); 173 | 174 | return result; 175 | } 176 | 177 | void GuiMainWindow::on_comboBoxFixOffsets_currentIndexChanged(int index) 178 | { 179 | Q_UNUSED(index); 180 | 181 | handle(); 182 | } 183 | 184 | void GuiMainWindow::on_checkBoxAddAlignment_toggled(bool checked) 185 | { 186 | Q_UNUSED(checked) 187 | 188 | handle(); 189 | } 190 | 191 | void GuiMainWindow::actionCPPSlot() 192 | { 193 | if(g_pdbData.pWinPDB) 194 | { 195 | g_pdbData.handleOptions.bAddAlignment=false; 196 | g_pdbData.handleOptions.bFixTypes=false; 197 | g_pdbData.handleOptions.bShowComments=false; 198 | g_pdbData.handleOptions.fixOffsets=QWinPDB::FO_NO; 199 | g_pdbData.handleOptions.sortType=QWinPDB::ST_NO; 200 | g_pdbData.handleOptions.exportType=QWinPDB::ET_CPLUSPLUS; 201 | 202 | DialogExport dialogExport(this,&g_pdbData); 203 | 204 | dialogExport.exec(); 205 | } 206 | } 207 | 208 | void GuiMainWindow::actionXNTSVSlot() 209 | { 210 | if(g_pdbData.pWinPDB) 211 | { 212 | g_pdbData.handleOptions.bAddAlignment=false; 213 | g_pdbData.handleOptions.bFixTypes=true; 214 | g_pdbData.handleOptions.bShowComments=false; 215 | g_pdbData.handleOptions.fixOffsets=QWinPDB::FO_NO; 216 | g_pdbData.handleOptions.sortType=QWinPDB::ST_NAME; 217 | g_pdbData.handleOptions.exportType=QWinPDB::ET_XNTSV; 218 | 219 | DialogExport dialogExport(this,&g_pdbData); 220 | 221 | dialogExport.exec(); 222 | } 223 | } 224 | 225 | void GuiMainWindow::actionOptionsSlot() 226 | { 227 | DialogOptions dialogOptions(this,&g_xOptions); 228 | dialogOptions.exec(); 229 | 230 | adjustWindow(); 231 | } 232 | 233 | void GuiMainWindow::actionAboutSlot() 234 | { 235 | DialogAbout dialogAbout(this); 236 | 237 | dialogAbout.exec(); 238 | } 239 | 240 | void GuiMainWindow::adjustWindow() 241 | { 242 | g_xOptions.adjustWindow(this); 243 | } 244 | 245 | void GuiMainWindow::processFile(QString sFileName) 246 | { 247 | if((sFileName!="")&&(QFileInfo(sFileName).isFile())) 248 | { 249 | g_xOptions.setLastFileName(sFileName); 250 | 251 | cleanUp(); 252 | 253 | g_pdbData.pWinPDB=new QWinPDB; 254 | 255 | connect(g_pdbData.pWinPDB,SIGNAL(errorMessage(QString)),this,SLOT(errorMessage(QString))); 256 | 257 | if(g_pdbData.pWinPDB->loadFromFile(sFileName)) 258 | { 259 | g_pdbData.sPDBFileName=sFileName; 260 | 261 | DialogProcess dp(this,&g_pdbData,PDBProcess::TYPE_IMPORT); 262 | dp.exec(); 263 | 264 | int nCount=g_pdbData.stats.listSymbols.count(); 265 | 266 | QStandardItemModel *pModel=new QStandardItemModel(nCount,2,this); 267 | 268 | pModel->setHeaderData(0,Qt::Horizontal,QString("ID")); 269 | pModel->setHeaderData(1,Qt::Horizontal,tr("Symbol")); 270 | 271 | for(int i = 0;isetData((quint32)(g_pdbData.stats.listSymbols.at(i).dwID),Qt::DisplayRole); 275 | itemID->setData((quint32)(g_pdbData.stats.listSymbols.at(i).type),Qt::UserRole+1); 276 | itemID->setTextAlignment(Qt::AlignRight); 277 | pModel->setItem(i,0,itemID); 278 | 279 | QStandardItem *itemSymbol = new QStandardItem; 280 | itemSymbol->setText(g_pdbData.stats.listSymbols.at(i).sName); 281 | pModel->setItem(i,1,itemSymbol); 282 | } 283 | 284 | // ui->tableViewSymbols->setModel(model); 285 | 286 | g_pFilter->setSourceModel(pModel); 287 | 288 | ui->tableViewSymbols->horizontalHeader()->setSectionResizeMode(0,QHeaderView::ResizeToContents); 289 | ui->tableViewSymbols->horizontalHeader()->setSectionResizeMode(1,QHeaderView::Stretch); 290 | 291 | connect(ui->tableViewSymbols->selectionModel(),SIGNAL(currentChanged(QModelIndex const&,QModelIndex const&)),this,SLOT(onCurrentChanged(QModelIndex const&,QModelIndex const&))); 292 | 293 | setWindowTitle(sFileName); 294 | } 295 | else 296 | { 297 | QMessageBox::critical(this,tr("Error"),QString("%1: %2").arg(tr("Cannot open file")).arg(sFileName)); 298 | } 299 | } 300 | } 301 | 302 | void GuiMainWindow::cleanUp() 303 | { 304 | if(g_pdbData.pWinPDB) 305 | { 306 | delete g_pdbData.pWinPDB; 307 | g_pdbData.pWinPDB=nullptr; 308 | } 309 | 310 | QAbstractItemModel *pOldModel=g_pFilter->sourceModel(); 311 | 312 | g_pFilter->setSourceModel(0); 313 | 314 | delete pOldModel; 315 | 316 | ui->lineEditSearch->clear(); 317 | ui->textBrowserResult->clear(); 318 | 319 | setWindowTitle(XOptions::getTitle(X_APPLICATIONDISPLAYNAME,X_APPLICATIONVERSION)); 320 | } 321 | 322 | void GuiMainWindow::on_lineEditSearch_textChanged(const QString &arg1) 323 | { 324 | g_pFilter->setFilterRegExp(arg1); 325 | g_pFilter->setFilterCaseSensitivity(Qt::CaseInsensitive); 326 | g_pFilter->setFilterKeyColumn(1); 327 | } 328 | 329 | void GuiMainWindow::onCurrentChanged(const QModelIndex ¤t,const QModelIndex &previous) 330 | { 331 | Q_UNUSED(current) 332 | Q_UNUSED(previous) 333 | 334 | handle(); 335 | } 336 | 337 | void GuiMainWindow::handle() 338 | { 339 | QItemSelectionModel *pSelectionModel=ui->tableViewSymbols->selectionModel(); 340 | 341 | if(pSelectionModel) 342 | { 343 | QModelIndexList list=pSelectionModel->selection().indexes(); 344 | 345 | if(list.count()) 346 | { 347 | g_pdbData.handleOptions=getHandleOptions(); 348 | quint32 nID=list.at(0).data(Qt::DisplayRole).toUInt(); 349 | 350 | QWinPDB::ELEM_INFO elemInfo=g_pdbData.pWinPDB->handleElement(nID,&(g_pdbData.handleOptions)); 351 | 352 | QString sText=elemInfo.sText; 353 | 354 | ui->textBrowserResult->setText(sText); 355 | } 356 | } 357 | } 358 | 359 | void GuiMainWindow::on_tableViewSymbols_clicked(const QModelIndex &index) 360 | { 361 | Q_UNUSED(index) 362 | 363 | handle(); 364 | } 365 | 366 | void GuiMainWindow::on_checkBoxShowComments_toggled(bool checked) 367 | { 368 | Q_UNUSED(checked) 369 | 370 | handle(); 371 | } 372 | 373 | void GuiMainWindow::on_checkBoxFixTypes_toggled(bool checked) 374 | { 375 | Q_UNUSED(checked) 376 | 377 | handle(); 378 | } 379 | 380 | void GuiMainWindow::errorMessage(QString sText) 381 | { 382 | QMessageBox::critical(this,tr("Error"),sText); 383 | } 384 | 385 | void GuiMainWindow::dragEnterEvent(QDragEnterEvent *event) 386 | { 387 | event->acceptProposedAction(); 388 | } 389 | 390 | void GuiMainWindow::dragMoveEvent(QDragMoveEvent *event) 391 | { 392 | event->acceptProposedAction(); 393 | } 394 | 395 | void GuiMainWindow::dropEvent(QDropEvent *event) 396 | { 397 | const QMimeData* mimeData=event->mimeData(); 398 | 399 | if(mimeData->hasUrls()) 400 | { 401 | QList urlList=mimeData->urls(); 402 | 403 | if(urlList.count()) 404 | { 405 | QString sFileName=urlList.at(0).toLocalFile(); 406 | 407 | QFileInfo fiLink(sFileName); 408 | 409 | if(fiLink.isSymLink()) 410 | { 411 | sFileName=fiLink.symLinkTarget(); 412 | } 413 | 414 | processFile(sFileName); 415 | } 416 | } 417 | } 418 | -------------------------------------------------------------------------------- /gui_source/translation/pdbripper_zh.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DialogAbout 6 | 7 | About 8 | 关于 9 | 10 | 11 | OK 12 | 确定 13 | 14 | 15 | Bugreports 16 | 错误报告 17 | 18 | 19 | Website 20 | 网站 21 | 22 | 23 | Donate 24 | 捐赠 25 | 26 | 27 | Source code 28 | 源代码 29 | 30 | 31 | Thanks 32 | 致谢名单 33 | 34 | 35 | 36 | DialogExport 37 | 38 | Export 39 | 导出 40 | 41 | 42 | Sort type 43 | 排序类型 44 | 45 | 46 | Export type 47 | 出口类型 48 | 49 | 50 | Options 51 | 选项 52 | 53 | 54 | Show comments 55 | 显示评论 56 | 57 | 58 | Fix types 59 | 修复类型 60 | 61 | 62 | Add alignment 63 | 添加对齐 64 | 65 | 66 | Fix offsets 67 | 修复偏移 68 | 69 | 70 | Cancel 71 | 取消 72 | 73 | 74 | OK 75 | 确定 76 | 77 | 78 | No 79 | 80 | 81 | 82 | Name 83 | 名称 84 | 85 | 86 | Dependencies 87 | 依赖关系 88 | 89 | 90 | Struct and unions 91 | 结构体和共用体 92 | 93 | 94 | All 95 | 所有 96 | 97 | 98 | Save file 99 | 保存文件 100 | 101 | 102 | Files 103 | 文件 104 | 105 | 106 | All files 107 | 所有文件 108 | 109 | 110 | Error 111 | 错误 112 | 113 | 114 | Information 115 | 信息 116 | 117 | 118 | 119 | DialogOptions 120 | 121 | Options 122 | 选项 123 | 124 | 125 | 126 | DialogProcess 127 | 128 | Cancel 129 | 取消 130 | 131 | 132 | Export 133 | 导出 134 | 135 | 136 | Import 137 | 导入表 138 | 139 | 140 | 141 | DialogShortcuts 142 | 143 | Shortcuts 144 | 快捷键 145 | 146 | 147 | Filter 148 | 过滤器 149 | 150 | 151 | Clear 152 | 清除 153 | 154 | 155 | Default 156 | 默认 157 | 158 | 159 | Close 160 | 关闭 161 | 162 | 163 | Name 164 | 名称 165 | 166 | 167 | Shortcut 168 | 快捷键 169 | 170 | 171 | Cannot set shortcut 172 | 无法设置快捷键 173 | 174 | 175 | 176 | GuiMainWindow 177 | 178 | MainWindow 179 | 主窗口 180 | 181 | 182 | Symbols 183 | 符号 184 | 185 | 186 | Search 187 | 搜索 188 | 189 | 190 | Options 191 | 选项 192 | 193 | 194 | Show comments 195 | 显示评论 196 | 197 | 198 | Fix types 199 | 修复类型 200 | 201 | 202 | Add alignment 203 | 添加对齐 204 | 205 | 206 | Fix offsets 207 | 修复偏移 208 | 209 | 210 | No 211 | 212 | 213 | 214 | Struct and unions 215 | 结构体和共用体 216 | 217 | 218 | All 219 | 所有 220 | 221 | 222 | File 223 | 文件 224 | 225 | 226 | Action 227 | 处理 228 | 229 | 230 | Tools 231 | 工具 232 | 233 | 234 | Help 235 | 帮助 236 | 237 | 238 | Export 239 | 导出 240 | 241 | 242 | Open 243 | 打开 244 | 245 | 246 | Close 247 | 关闭 248 | 249 | 250 | Exit 251 | 退出 252 | 253 | 254 | About 255 | 关于 256 | 257 | 258 | Open file 259 | 打开文件 260 | 261 | 262 | Files 263 | 文件 264 | 265 | 266 | All files 267 | 所有文件 268 | 269 | 270 | Symbol 271 | 符号 272 | 273 | 274 | Error 275 | 错误 276 | 277 | 278 | Cannot open file 279 | 无法打开文件 280 | 281 | 282 | 283 | QWinPDB 284 | 285 | Cannot load msdia library 286 | 无法加载 msdia 库 287 | 288 | 289 | Cannot load data from PDB 290 | 无法从 PDB 加载数据 291 | 292 | 293 | Cannot open session 294 | 无法打开会话 295 | 296 | 297 | Cannot get PDB name 298 | 无法获取 PDB 名称 299 | 300 | 301 | Cannot get PDB age 302 | 无法获取 PDB 年龄 303 | 304 | 305 | Get element 306 | 获取元素 307 | 308 | 309 | Sort elements 310 | 排序元素 311 | 312 | 313 | File saved 314 | 文件已保存 315 | 316 | 317 | Cannot save file 318 | 无法保存文件 319 | 320 | 321 | 322 | XOptions 323 | 324 | Automatic 325 | 自动 326 | 327 | 328 | Recent files 329 | 330 | 331 | 332 | Clear 333 | 清除 334 | 335 | 336 | 337 | XOptionsWidget 338 | 339 | Stay on top 340 | 窗口置顶 341 | 342 | 343 | Single application 344 | 单个应用程序 345 | 346 | 347 | Style 348 | 样式 349 | 350 | 351 | Language 352 | 语言 353 | 354 | 355 | Show logo 356 | 显示徽标 357 | 358 | 359 | Font 360 | 字体 361 | 362 | 363 | Save last directory 364 | 保存到上次目录 365 | 366 | 367 | Save backup 368 | 保存备份 369 | 370 | 371 | Save history 372 | 373 | 374 | 375 | Add to context menu 376 | 添加到上下文菜单 377 | 378 | 379 | Default 380 | 默认 381 | 382 | 383 | OK 384 | 确定 385 | 386 | 387 | Cancel 388 | 取消 389 | 390 | 391 | Appearance 392 | 外观 393 | 394 | 395 | File 396 | 文件 397 | 398 | 399 | Error 400 | 错误 401 | 402 | 403 | Please run the program as an administrator 404 | 请以管理员身份运行程序 405 | 406 | 407 | Information 408 | 信息 409 | 410 | 411 | Please restart the application 412 | 请重启应用程序 413 | 414 | 415 | 416 | XShortcuts 417 | 418 | Action 419 | 处理 420 | 421 | 422 | File 423 | 文件 424 | 425 | 426 | View 427 | 查看 428 | 429 | 430 | String 431 | 字符串 432 | 433 | 434 | Strings 435 | 字符串 436 | 437 | 438 | Signature 439 | 签名 440 | 441 | 442 | Signatures 443 | 签名 444 | 445 | 446 | Struct 447 | 结构 448 | 449 | 450 | Hex 451 | 十六进制 452 | 453 | 454 | Disasm 455 | 反汇编 456 | 457 | 458 | Debug 459 | 调试 460 | 461 | 462 | Debugger 463 | 调试器 464 | 465 | 466 | Register 467 | 468 | 469 | 470 | Stack 471 | 472 | 473 | 474 | Archive 475 | 存档 476 | 477 | 478 | Table 479 | 表格 480 | 481 | 482 | Process 483 | 进程 484 | 485 | 486 | Memory 487 | 内存 488 | 489 | 490 | Copy 491 | 复制 492 | 493 | 494 | Edit 495 | 编辑 496 | 497 | 498 | Find 499 | 查找 500 | 501 | 502 | Go to 503 | 转到 504 | 505 | 506 | Tools 507 | 工具 508 | 509 | 510 | Help 511 | 帮助 512 | 513 | 514 | Select 515 | 选择 516 | 517 | 518 | Follow in 519 | 520 | 521 | 522 | Show in 523 | 524 | 525 | 526 | Breakpoint 527 | 528 | 529 | 530 | Modules 531 | 模块 532 | 533 | 534 | Memory map 535 | 内存映射 536 | 537 | 538 | Value 539 | 540 | 541 | 542 | Show 543 | 显示 544 | 545 | 546 | Open 547 | 打开 548 | 549 | 550 | Save 551 | 保存 552 | 553 | 554 | Save as 555 | 556 | 557 | 558 | Close 559 | 关闭 560 | 561 | 562 | Print 563 | 打印 564 | 565 | 566 | Exit 567 | 退出 568 | 569 | 570 | Dump to file 571 | 转储到文件 572 | 573 | 574 | Address 575 | 地址 576 | 577 | 578 | Entry point 579 | 入口点 580 | 581 | 582 | Offset 583 | 偏移 584 | 585 | 586 | Size 587 | 大小 588 | 589 | 590 | Demangle 591 | 符号重组 592 | 593 | 594 | Name 595 | 名称 596 | 597 | 598 | Next 599 | 600 | 601 | 602 | All 603 | 所有 604 | 605 | 606 | Attach 607 | 608 | 609 | 610 | Detach 611 | 分离 612 | 613 | 614 | CPU 615 | 中央处理器 616 | 617 | 618 | Log 619 | 日志 620 | 621 | 622 | Breakpoints 623 | 断点 624 | 625 | 626 | Callstack 627 | 628 | 629 | 630 | Threads 631 | 线程 632 | 633 | 634 | Handles 635 | 句柄 636 | 637 | 638 | Symbols 639 | 符号 640 | 641 | 642 | Shortcuts 643 | 快捷键 644 | 645 | 646 | Options 647 | 选项 648 | 649 | 650 | About 651 | 关于 652 | 653 | 654 | File name 655 | 文件名 656 | 657 | 658 | Structs 659 | 结构 660 | 661 | 662 | Viewer 663 | 查看器 664 | 665 | 666 | Folder 667 | 668 | 669 | 670 | Run 671 | 运行 672 | 673 | 674 | Pause 675 | 暂停 676 | 677 | 678 | Step into 679 | 步进 680 | 681 | 682 | Step over 683 | 步出 684 | 685 | 686 | Stop 687 | 停止 688 | 689 | 690 | Restart 691 | 重新开始 692 | 693 | 694 | Toggle 695 | 切换 696 | 697 | 698 | Scan 699 | 扫描 700 | 701 | 702 | Entropy 703 | 信息熵 704 | 705 | 706 | Hash 707 | 哈希 708 | 709 | 710 | 711 | XShortcutsWidget 712 | 713 | Save 714 | 保存 715 | 716 | 717 | Text files 718 | 文本文件 719 | 720 | 721 | All files 722 | 所有文件 723 | 724 | 725 | Error 726 | 错误 727 | 728 | 729 | Cannot save file 730 | 无法保存文件 731 | 732 | 733 | 734 | -------------------------------------------------------------------------------- /gui_source/translation/pdbripper_zh_TW.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DialogAbout 6 | 7 | About 8 | 關於 9 | 10 | 11 | OK 12 | 確定 13 | 14 | 15 | Bugreports 16 | 錯誤報告 17 | 18 | 19 | Website 20 | 網站 21 | 22 | 23 | Donate 24 | 贊助 25 | 26 | 27 | Source code 28 | 源代碼 29 | 30 | 31 | Thanks 32 | 特別感謝 33 | 34 | 35 | 36 | DialogExport 37 | 38 | Export 39 | 出口 40 | 41 | 42 | Sort type 43 | 排序類型 44 | 45 | 46 | Export type 47 | 出口類型 48 | 49 | 50 | Options 51 | 選項 52 | 53 | 54 | Show comments 55 | 顯示評論 56 | 57 | 58 | Fix types 59 | 修復類型 60 | 61 | 62 | Add alignment 63 | 添加對齊 64 | 65 | 66 | Fix offsets 67 | 修復偏移 68 | 69 | 70 | Cancel 71 | 取消 72 | 73 | 74 | OK 75 | 確定 76 | 77 | 78 | No 79 | 80 | 81 | 82 | Name 83 | 名稱 84 | 85 | 86 | Dependencies 87 | 依賴關係 88 | 89 | 90 | Struct and unions 91 | 結構體和工會 92 | 93 | 94 | All 95 | 所有 96 | 97 | 98 | Save file 99 | 保存檔案 100 | 101 | 102 | Files 103 | 文件 104 | 105 | 106 | All files 107 | 所有檔案 108 | 109 | 110 | Error 111 | 錯誤 112 | 113 | 114 | Information 115 | 資訊 116 | 117 | 118 | 119 | DialogOptions 120 | 121 | Options 122 | 選項 123 | 124 | 125 | 126 | DialogProcess 127 | 128 | Cancel 129 | 取消 130 | 131 | 132 | Export 133 | 出口 134 | 135 | 136 | Import 137 | 進口 138 | 139 | 140 | 141 | DialogShortcuts 142 | 143 | Shortcuts 144 | 捷徑 145 | 146 | 147 | Filter 148 | 過濾 149 | 150 | 151 | Clear 152 | 清除 153 | 154 | 155 | Default 156 | 默認 157 | 158 | 159 | Close 160 | 關閉 161 | 162 | 163 | Name 164 | 名稱 165 | 166 | 167 | Shortcut 168 | 捷徑 169 | 170 | 171 | Cannot set shortcut 172 | 無法設置捷徑 173 | 174 | 175 | 176 | GuiMainWindow 177 | 178 | MainWindow 179 | 主窗口 180 | 181 | 182 | Symbols 183 | 符號 184 | 185 | 186 | Search 187 | 搜尋 188 | 189 | 190 | Options 191 | 選項 192 | 193 | 194 | Show comments 195 | 顯示評論 196 | 197 | 198 | Fix types 199 | 修復類型 200 | 201 | 202 | Add alignment 203 | 添加對齊 204 | 205 | 206 | Fix offsets 207 | 修復偏移 208 | 209 | 210 | No 211 | 212 | 213 | 214 | Struct and unions 215 | 結構體和工會 216 | 217 | 218 | All 219 | 所有 220 | 221 | 222 | File 223 | 檔案 224 | 225 | 226 | Action 227 | 行動 228 | 229 | 230 | Tools 231 | 工具 232 | 233 | 234 | Help 235 | 幫助 236 | 237 | 238 | Export 239 | 出口 240 | 241 | 242 | Open 243 | 開啟 244 | 245 | 246 | Close 247 | 關閉 248 | 249 | 250 | Exit 251 | 退出 252 | 253 | 254 | About 255 | 關於 256 | 257 | 258 | Open file 259 | 打開檔案 260 | 261 | 262 | Files 263 | 文件 264 | 265 | 266 | All files 267 | 所有檔案 268 | 269 | 270 | Symbol 271 | 象徵 272 | 273 | 274 | Error 275 | 錯誤 276 | 277 | 278 | Cannot open file 279 | 無法打開檔案 280 | 281 | 282 | 283 | QWinPDB 284 | 285 | Cannot load msdia library 286 | 無法加載 msdia 庫 287 | 288 | 289 | Cannot load data from PDB 290 | 無法從 PDB 加載數據 291 | 292 | 293 | Cannot open session 294 | 無法打開會話 295 | 296 | 297 | Cannot get PDB name 298 | 無法獲取 PDB 名稱 299 | 300 | 301 | Cannot get PDB age 302 | 無法獲取 PDB 年齡 303 | 304 | 305 | Get element 306 | 獲取元素 307 | 308 | 309 | Sort elements 310 | 排序元素 311 | 312 | 313 | File saved 314 | 文件已保存 315 | 316 | 317 | Cannot save file 318 | 無法保存檔案 319 | 320 | 321 | 322 | XOptions 323 | 324 | Automatic 325 | 自動 326 | 327 | 328 | Recent files 329 | 330 | 331 | 332 | Clear 333 | 清除 334 | 335 | 336 | 337 | XOptionsWidget 338 | 339 | Stay on top 340 | 始終在最上層 341 | 342 | 343 | Single application 344 | 單一應用程式 345 | 346 | 347 | Style 348 | 樣式 349 | 350 | 351 | Language 352 | 語言 353 | 354 | 355 | Show logo 356 | 顯示徽標 357 | 358 | 359 | Font 360 | 字體 361 | 362 | 363 | Save last directory 364 | 保存最後一個路徑 365 | 366 | 367 | Save backup 368 | 保存備份 369 | 370 | 371 | Save history 372 | 373 | 374 | 375 | Add to context menu 376 | 添加到上下文菜單 377 | 378 | 379 | Default 380 | 默認 381 | 382 | 383 | OK 384 | 確定 385 | 386 | 387 | Cancel 388 | 取消 389 | 390 | 391 | Appearance 392 | 外觀 393 | 394 | 395 | File 396 | 檔案 397 | 398 | 399 | Error 400 | 錯誤 401 | 402 | 403 | Please run the program as an administrator 404 | 請以管理員身份運行程序 405 | 406 | 407 | Information 408 | 資訊 409 | 410 | 411 | Please restart the application 412 | 請重啟應用程式 413 | 414 | 415 | 416 | XShortcuts 417 | 418 | Action 419 | 行動 420 | 421 | 422 | File 423 | 檔案 424 | 425 | 426 | View 427 | 看法 428 | 429 | 430 | String 431 | 字串 432 | 433 | 434 | Strings 435 | 字串 436 | 437 | 438 | Signature 439 | 簽章 440 | 441 | 442 | Signatures 443 | 簽章 444 | 445 | 446 | Struct 447 | 結構 448 | 449 | 450 | Hex 451 | 十六進制 452 | 453 | 454 | Disasm 455 | 反組譯 456 | 457 | 458 | Debug 459 | 除錯 460 | 461 | 462 | Debugger 463 | 除錯器 464 | 465 | 466 | Register 467 | 468 | 469 | 470 | Stack 471 | 472 | 473 | 474 | Archive 475 | 存檔記錄 476 | 477 | 478 | Table 479 | 表格 480 | 481 | 482 | Process 483 | 處理 484 | 485 | 486 | Memory 487 | 記憶 488 | 489 | 490 | Copy 491 | 複製 492 | 493 | 494 | Edit 495 | 編輯 496 | 497 | 498 | Find 499 | 搜尋 500 | 501 | 502 | Go to 503 | 跳至 504 | 505 | 506 | Tools 507 | 工具 508 | 509 | 510 | Help 511 | 幫助 512 | 513 | 514 | Select 515 | 選擇 516 | 517 | 518 | Follow in 519 | 520 | 521 | 522 | Show in 523 | 524 | 525 | 526 | Breakpoint 527 | 528 | 529 | 530 | Modules 531 | 模塊 532 | 533 | 534 | Memory map 535 | 記憶體區塊 536 | 537 | 538 | Value 539 | 540 | 541 | 542 | Show 543 | 展示 544 | 545 | 546 | Open 547 | 開啟 548 | 549 | 550 | Save 551 | 保存 552 | 553 | 554 | Save as 555 | 556 | 557 | 558 | Close 559 | 關閉 560 | 561 | 562 | Print 563 | 打印 564 | 565 | 566 | Exit 567 | 退出 568 | 569 | 570 | Dump to file 571 | 轉存到檔案 572 | 573 | 574 | Address 575 | 位址 576 | 577 | 578 | Entry point 579 | 入口點 580 | 581 | 582 | Offset 583 | 偏移 584 | 585 | 586 | Size 587 | 大小 588 | 589 | 590 | Demangle 591 | 解構 592 | 593 | 594 | Name 595 | 名稱 596 | 597 | 598 | Next 599 | 600 | 601 | 602 | All 603 | 所有 604 | 605 | 606 | Attach 607 | 608 | 609 | 610 | Detach 611 | 分離 612 | 613 | 614 | CPU 615 | 中央處理器 616 | 617 | 618 | Log 619 | 日誌 620 | 621 | 622 | Breakpoints 623 | 斷點 624 | 625 | 626 | Callstack 627 | 628 | 629 | 630 | Threads 631 | 線程 632 | 633 | 634 | Handles 635 | 把手 636 | 637 | 638 | Symbols 639 | 符號 640 | 641 | 642 | Shortcuts 643 | 捷徑 644 | 645 | 646 | Options 647 | 選項 648 | 649 | 650 | About 651 | 關於 652 | 653 | 654 | File name 655 | 檔名 656 | 657 | 658 | Structs 659 | 結構 660 | 661 | 662 | Viewer 663 | 查看器 664 | 665 | 666 | Folder 667 | 668 | 669 | 670 | Run 671 | 執行 672 | 673 | 674 | Pause 675 | 暫停 676 | 677 | 678 | Step into 679 | 步進 680 | 681 | 682 | Step over 683 | 步出 684 | 685 | 686 | Stop 687 | 停止 688 | 689 | 690 | Restart 691 | 重新開始 692 | 693 | 694 | Toggle 695 | 切換 696 | 697 | 698 | Scan 699 | 掃描 700 | 701 | 702 | Entropy 703 | 熵值 704 | 705 | 706 | Hash 707 | 雜湊值 708 | 709 | 710 | 711 | XShortcutsWidget 712 | 713 | Save 714 | 保存 715 | 716 | 717 | Text files 718 | 文本檔案 719 | 720 | 721 | All files 722 | 所有檔案 723 | 724 | 725 | Error 726 | 錯誤 727 | 728 | 729 | Cannot save file 730 | 無法保存檔案 731 | 732 | 733 | 734 | -------------------------------------------------------------------------------- /gui_source/translation/pdbripper_ko.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DialogAbout 6 | 7 | About 8 | 정보 9 | 10 | 11 | OK 12 | 확인 13 | 14 | 15 | Bugreports 16 | 버그 신고 17 | 18 | 19 | Website 20 | 웹사이트 21 | 22 | 23 | Donate 24 | 기부 25 | 26 | 27 | Source code 28 | 소스 코드 29 | 30 | 31 | Thanks 32 | 감사 33 | 34 | 35 | 36 | DialogExport 37 | 38 | Export 39 | 내보내기 40 | 41 | 42 | Sort type 43 | 정렬 유형 44 | 45 | 46 | Export type 47 | 내보내기 유형 48 | 49 | 50 | Options 51 | 옵션 52 | 53 | 54 | Show comments 55 | 댓글 표시 56 | 57 | 58 | Fix types 59 | 유형 수정 60 | 61 | 62 | Add alignment 63 | 정렬 추가 64 | 65 | 66 | Fix offsets 67 | 오프셋 수정 68 | 69 | 70 | Cancel 71 | 취소 72 | 73 | 74 | OK 75 | 확인 76 | 77 | 78 | No 79 | 아니요 80 | 81 | 82 | Name 83 | 이름 84 | 85 | 86 | Dependencies 87 | 종속성 88 | 89 | 90 | Struct and unions 91 | 구조체와 공용체 92 | 93 | 94 | All 95 | 모두 96 | 97 | 98 | Save file 99 | 파일 저장 100 | 101 | 102 | Files 103 | 파일 104 | 105 | 106 | All files 107 | 모든 파일 108 | 109 | 110 | Error 111 | 오류 112 | 113 | 114 | Information 115 | 정보 116 | 117 | 118 | 119 | DialogOptions 120 | 121 | Options 122 | 옵션 123 | 124 | 125 | 126 | DialogProcess 127 | 128 | Cancel 129 | 취소 130 | 131 | 132 | Export 133 | 내보내기 134 | 135 | 136 | Import 137 | 가져오기 138 | 139 | 140 | 141 | DialogShortcuts 142 | 143 | Shortcuts 144 | 바로가기 145 | 146 | 147 | Filter 148 | 필터 149 | 150 | 151 | Clear 152 | 지우기 153 | 154 | 155 | Default 156 | 기본 157 | 158 | 159 | Close 160 | 닫기 161 | 162 | 163 | Name 164 | 이름 165 | 166 | 167 | Shortcut 168 | 지름길 169 | 170 | 171 | Cannot set shortcut 172 | 바로가기를 설정할 수 없습니다 173 | 174 | 175 | 176 | GuiMainWindow 177 | 178 | MainWindow 179 | 메인 윈도우 180 | 181 | 182 | Symbols 183 | 기호 184 | 185 | 186 | Search 187 | 검색 188 | 189 | 190 | Options 191 | 옵션 192 | 193 | 194 | Show comments 195 | 댓글 표시 196 | 197 | 198 | Fix types 199 | 유형 수정 200 | 201 | 202 | Add alignment 203 | 정렬 추가 204 | 205 | 206 | Fix offsets 207 | 오프셋 수정 208 | 209 | 210 | No 211 | 아니요 212 | 213 | 214 | Struct and unions 215 | 구조체와 공용체 216 | 217 | 218 | All 219 | 모두 220 | 221 | 222 | File 223 | 파일 224 | 225 | 226 | Action 227 | 동작 228 | 229 | 230 | Tools 231 | 도구 232 | 233 | 234 | Help 235 | 도움말 236 | 237 | 238 | Export 239 | 내보내기 240 | 241 | 242 | Open 243 | 열기 244 | 245 | 246 | Close 247 | 닫기 248 | 249 | 250 | Exit 251 | 끝내기 252 | 253 | 254 | About 255 | 정보 256 | 257 | 258 | Open file 259 | 파일 열기 260 | 261 | 262 | Files 263 | 파일 264 | 265 | 266 | All files 267 | 모든 파일 268 | 269 | 270 | Symbol 271 | 상징 272 | 273 | 274 | Error 275 | 오류 276 | 277 | 278 | Cannot open file 279 | 파일을 열 수 없습니다 280 | 281 | 282 | 283 | QWinPDB 284 | 285 | Cannot load msdia library 286 | msdia 라이브러리를 로드할 수 없습니다. 287 | 288 | 289 | Cannot load data from PDB 290 | PDB에서 데이터를 로드할 수 없습니다. 291 | 292 | 293 | Cannot open session 294 | 세션을 열 수 없습니다 295 | 296 | 297 | Cannot get PDB name 298 | PDB 이름을 가져올 수 없습니다. 299 | 300 | 301 | Cannot get PDB age 302 | PDB 연령을 가져올 수 없습니다. 303 | 304 | 305 | Get element 306 | 요소 가져오기 307 | 308 | 309 | Sort elements 310 | 요소 정렬 311 | 312 | 313 | File saved 314 | 파일이 저장됨 315 | 316 | 317 | Cannot save file 318 | 파일을 저장할 수 없습니다 319 | 320 | 321 | 322 | XOptions 323 | 324 | Automatic 325 | 자동적 인 326 | 327 | 328 | Recent files 329 | 330 | 331 | 332 | Clear 333 | 지우기 334 | 335 | 336 | 337 | XOptionsWidget 338 | 339 | Stay on top 340 | 항상 위에 놓기 341 | 342 | 343 | Single application 344 | 단일 애플리케이션 345 | 346 | 347 | Style 348 | 스타일 349 | 350 | 351 | Language 352 | 언어 353 | 354 | 355 | Show logo 356 | 로고 표시 357 | 358 | 359 | Font 360 | 폰트 361 | 362 | 363 | Save last directory 364 | 마지막 디렉터리 저장 365 | 366 | 367 | Save backup 368 | 백업 저장 369 | 370 | 371 | Save history 372 | 373 | 374 | 375 | Add to context menu 376 | 컨텍스트 메뉴에 추가 377 | 378 | 379 | Default 380 | 기본 381 | 382 | 383 | OK 384 | 확인 385 | 386 | 387 | Cancel 388 | 취소 389 | 390 | 391 | Appearance 392 | 모양 393 | 394 | 395 | File 396 | 파일 397 | 398 | 399 | Error 400 | 오류 401 | 402 | 403 | Please run the program as an administrator 404 | 프로그램을 관리자로 실행하십시오 405 | 406 | 407 | Information 408 | 정보 409 | 410 | 411 | Please restart the application 412 | 프로그램을 재시작하세요 413 | 414 | 415 | 416 | XShortcuts 417 | 418 | Action 419 | 동작 420 | 421 | 422 | File 423 | 파일 424 | 425 | 426 | View 427 | 보다 428 | 429 | 430 | String 431 | 문자열 432 | 433 | 434 | Strings 435 | 문자열 436 | 437 | 438 | Signature 439 | 서명 440 | 441 | 442 | Signatures 443 | 서명 444 | 445 | 446 | Struct 447 | 구조체 448 | 449 | 450 | Hex 451 | 마녀 452 | 453 | 454 | Disasm 455 | Disasm 456 | 457 | 458 | Debug 459 | 디버그 460 | 461 | 462 | Debugger 463 | 디버거 464 | 465 | 466 | Register 467 | 468 | 469 | 470 | Stack 471 | 스택 472 | 473 | 474 | Archive 475 | 아카이브 476 | 477 | 478 | Table 479 | 테이블 480 | 481 | 482 | Process 483 | 프로세스 484 | 485 | 486 | Memory 487 | 메모리 488 | 489 | 490 | Copy 491 | 복사 492 | 493 | 494 | Edit 495 | 편집 496 | 497 | 498 | Find 499 | 찾기 500 | 501 | 502 | Go to 503 | 이동 504 | 505 | 506 | Tools 507 | 도구 508 | 509 | 510 | Help 511 | 도움말 512 | 513 | 514 | Select 515 | 선택 516 | 517 | 518 | Follow in 519 | 520 | 521 | 522 | Show in 523 | 524 | 525 | 526 | Breakpoint 527 | 528 | 529 | 530 | Modules 531 | 모듈 532 | 533 | 534 | Memory map 535 | 메모리 맵 536 | 537 | 538 | Value 539 | 540 | 541 | 542 | Show 543 | 보여 주다 544 | 545 | 546 | Open 547 | 열기 548 | 549 | 550 | Save 551 | 저장 552 | 553 | 554 | Save as 555 | 556 | 557 | 558 | Close 559 | 닫기 560 | 561 | 562 | Print 563 | 인쇄 564 | 565 | 566 | Exit 567 | 끝내기 568 | 569 | 570 | Dump to file 571 | 파일로 덤프 572 | 573 | 574 | Address 575 | 주소 576 | 577 | 578 | Entry point 579 | 진입 지점 580 | 581 | 582 | Offset 583 | 오프셋 584 | 585 | 586 | Size 587 | 크기 588 | 589 | 590 | Demangle 591 | 디망글 592 | 593 | 594 | Name 595 | 이름 596 | 597 | 598 | Next 599 | 600 | 601 | 602 | All 603 | 모두 604 | 605 | 606 | Attach 607 | 붙이다 608 | 609 | 610 | Detach 611 | 분리하다 612 | 613 | 614 | CPU 615 | CPU 616 | 617 | 618 | Log 619 | 로그 620 | 621 | 622 | Breakpoints 623 | 중단점 624 | 625 | 626 | Callstack 627 | 628 | 629 | 630 | Threads 631 | 스레드 632 | 633 | 634 | Handles 635 | 핸들 636 | 637 | 638 | Symbols 639 | 기호 640 | 641 | 642 | Shortcuts 643 | 바로가기 644 | 645 | 646 | Options 647 | 옵션 648 | 649 | 650 | About 651 | 정보 652 | 653 | 654 | File name 655 | 파일 이름 656 | 657 | 658 | Structs 659 | 구조체 660 | 661 | 662 | Viewer 663 | 뷰어 664 | 665 | 666 | Folder 667 | 668 | 669 | 670 | Run 671 | 운영 672 | 673 | 674 | Pause 675 | 정지시키다 676 | 677 | 678 | Step into 679 | 들어가다 680 | 681 | 682 | Step over 683 | 넘어가다 684 | 685 | 686 | Stop 687 | 중지 688 | 689 | 690 | Restart 691 | 재시작 692 | 693 | 694 | Toggle 695 | 비녀장 696 | 697 | 698 | Scan 699 | 검색 700 | 701 | 702 | Entropy 703 | 엔트로피 704 | 705 | 706 | Hash 707 | 해시 708 | 709 | 710 | 711 | XShortcutsWidget 712 | 713 | Save 714 | 저장 715 | 716 | 717 | Text files 718 | 텍스트 파일 719 | 720 | 721 | All files 722 | 모든 파일 723 | 724 | 725 | Error 726 | 오류 727 | 728 | 729 | Cannot save file 730 | 파일을 저장할 수 없습니다 731 | 732 | 733 | 734 | -------------------------------------------------------------------------------- /gui_source/translation/pdbripper_ja.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DialogAbout 6 | 7 | About 8 | 情報 9 | 10 | 11 | OK 12 | OK 13 | 14 | 15 | Bugreports 16 | バグレポート 17 | 18 | 19 | Website 20 | Webサイト 21 | 22 | 23 | Donate 24 | 寄付 25 | 26 | 27 | Source code 28 | ソース コード 29 | 30 | 31 | Thanks 32 | Thanks 33 | 34 | 35 | 36 | DialogExport 37 | 38 | Export 39 | エクスポート 40 | 41 | 42 | Sort type 43 | ソートタイプ 44 | 45 | 46 | Export type 47 | エクスポートタイプ 48 | 49 | 50 | Options 51 | 設定 52 | 53 | 54 | Show comments 55 | コメントを表示 56 | 57 | 58 | Fix types 59 | タイプを修正 60 | 61 | 62 | Add alignment 63 | 配置を追加 64 | 65 | 66 | Fix offsets 67 | オフセットを修正 68 | 69 | 70 | Cancel 71 | キャンセル 72 | 73 | 74 | OK 75 | OK 76 | 77 | 78 | No 79 | 番号 80 | 81 | 82 | Name 83 | 名前 84 | 85 | 86 | Dependencies 87 | 依存関係 88 | 89 | 90 | Struct and unions 91 | 構造体と共用体 92 | 93 | 94 | All 95 | すべて 96 | 97 | 98 | Save file 99 | 保存 100 | 101 | 102 | Files 103 | ファイル 104 | 105 | 106 | All files 107 | すべてのファイル 108 | 109 | 110 | Error 111 | エラー 112 | 113 | 114 | Information 115 | インフォメーション 116 | 117 | 118 | 119 | DialogOptions 120 | 121 | Options 122 | 設定 123 | 124 | 125 | 126 | DialogProcess 127 | 128 | Cancel 129 | キャンセル 130 | 131 | 132 | Export 133 | エクスポート 134 | 135 | 136 | Import 137 | インポート 138 | 139 | 140 | 141 | DialogShortcuts 142 | 143 | Shortcuts 144 | ショートカット 145 | 146 | 147 | Filter 148 | フィルター 149 | 150 | 151 | Clear 152 | クリア 153 | 154 | 155 | Default 156 | ディフォルト 157 | 158 | 159 | Close 160 | 閉じる 161 | 162 | 163 | Name 164 | 名前 165 | 166 | 167 | Shortcut 168 | ショートカット 169 | 170 | 171 | Cannot set shortcut 172 | ショートカットの設定に失敗 173 | 174 | 175 | 176 | GuiMainWindow 177 | 178 | MainWindow 179 | MainWindow 180 | 181 | 182 | Symbols 183 | シンボル 184 | 185 | 186 | Search 187 | 検索 188 | 189 | 190 | Options 191 | 設定 192 | 193 | 194 | Show comments 195 | コメントを表示 196 | 197 | 198 | Fix types 199 | タイプを修正 200 | 201 | 202 | Add alignment 203 | 配置を追加 204 | 205 | 206 | Fix offsets 207 | オフセットを修正 208 | 209 | 210 | No 211 | 番号 212 | 213 | 214 | Struct and unions 215 | 構造体と共用体 216 | 217 | 218 | All 219 | すべて 220 | 221 | 222 | File 223 | ファイル名 224 | 225 | 226 | Action 227 | 動作 228 | 229 | 230 | Tools 231 | ツール 232 | 233 | 234 | Help 235 | ヘルプ 236 | 237 | 238 | Export 239 | エクスポート 240 | 241 | 242 | Open 243 | 開く 244 | 245 | 246 | Close 247 | 閉じる 248 | 249 | 250 | Exit 251 | 終了 252 | 253 | 254 | About 255 | 情報 256 | 257 | 258 | Open file 259 | ファイルを開く 260 | 261 | 262 | Files 263 | ファイル 264 | 265 | 266 | All files 267 | すべてのファイル 268 | 269 | 270 | Symbol 271 | シンボル 272 | 273 | 274 | Error 275 | エラー 276 | 277 | 278 | Cannot open file 279 | ファイルを開けません 280 | 281 | 282 | 283 | QWinPDB 284 | 285 | Cannot load msdia library 286 | msdiaライブラリを読み込めません 287 | 288 | 289 | Cannot load data from PDB 290 | PDBからデータを読み込めません 291 | 292 | 293 | Cannot open session 294 | セッションを開くことができません 295 | 296 | 297 | Cannot get PDB name 298 | PDB名を取得できません 299 | 300 | 301 | Cannot get PDB age 302 | PDBの年齢を取得できません 303 | 304 | 305 | Get element 306 | 要素を取得 307 | 308 | 309 | Sort elements 310 | 要素を並べ替える 311 | 312 | 313 | File saved 314 | 保存されたファイル 315 | 316 | 317 | Cannot save file 318 | ファイルを保存できません 319 | 320 | 321 | 322 | XOptions 323 | 324 | Automatic 325 | 自動 326 | 327 | 328 | Recent files 329 | 330 | 331 | 332 | Clear 333 | クリア 334 | 335 | 336 | 337 | XOptionsWidget 338 | 339 | Stay on top 340 | 常に最前面表示 341 | 342 | 343 | Single application 344 | 単一のアプリケーション 345 | 346 | 347 | Style 348 | スタイル 349 | 350 | 351 | Language 352 | 言語 353 | 354 | 355 | Show logo 356 | ロゴを表示する 357 | 358 | 359 | Font 360 | フォント 361 | 362 | 363 | Save last directory 364 | 最後に使用したディレクトリを保持 365 | 366 | 367 | Save backup 368 | バックアップを保存 369 | 370 | 371 | Save history 372 | 373 | 374 | 375 | Add to context menu 376 | コンテキストメニューに追加 377 | 378 | 379 | Default 380 | ディフォルト 381 | 382 | 383 | OK 384 | OK 385 | 386 | 387 | Cancel 388 | キャンセル 389 | 390 | 391 | Appearance 392 | 外観 393 | 394 | 395 | File 396 | ファイル名 397 | 398 | 399 | Error 400 | エラー 401 | 402 | 403 | Please run the program as an administrator 404 | 管理者としてプログラムを実行してください 405 | 406 | 407 | Information 408 | インフォメーション 409 | 410 | 411 | Please restart the application 412 | プログラムを再起動してください 413 | 414 | 415 | 416 | XShortcuts 417 | 418 | Action 419 | 動作 420 | 421 | 422 | File 423 | ファイル名 424 | 425 | 426 | View 427 | 意見 428 | 429 | 430 | String 431 | 文字列 432 | 433 | 434 | Strings 435 | 文字列 436 | 437 | 438 | Signature 439 | 署名 440 | 441 | 442 | Signatures 443 | 署名 444 | 445 | 446 | Struct 447 | 構造体 448 | 449 | 450 | Hex 451 | 16 進数 452 | 453 | 454 | Disasm 455 | Disasm 456 | 457 | 458 | Debug 459 | デバッグ 460 | 461 | 462 | Debugger 463 | デバッガ 464 | 465 | 466 | Register 467 | 468 | 469 | 470 | Stack 471 | スタック 472 | 473 | 474 | Archive 475 | アーカイブ 476 | 477 | 478 | Table 479 | テーブル 480 | 481 | 482 | Process 483 | プロセス 484 | 485 | 486 | Memory 487 | メモリー 488 | 489 | 490 | Copy 491 | コピー 492 | 493 | 494 | Edit 495 | 編集 496 | 497 | 498 | Find 499 | 検索 500 | 501 | 502 | Go to 503 | 移動 504 | 505 | 506 | Tools 507 | ツール 508 | 509 | 510 | Help 511 | ヘルプ 512 | 513 | 514 | Select 515 | 選択 516 | 517 | 518 | Follow in 519 | 520 | 521 | 522 | Show in 523 | 524 | 525 | 526 | Breakpoint 527 | 528 | 529 | 530 | Modules 531 | モジュール 532 | 533 | 534 | Memory map 535 | メモリ マップ 536 | 537 | 538 | Value 539 | 540 | 541 | 542 | Show 543 | 見せる 544 | 545 | 546 | Open 547 | 開く 548 | 549 | 550 | Save 551 | 保存 552 | 553 | 554 | Save as 555 | 556 | 557 | 558 | Close 559 | 閉じる 560 | 561 | 562 | Print 563 | 印刷 564 | 565 | 566 | Exit 567 | 終了 568 | 569 | 570 | Dump to file 571 | ファイルにダンプ 572 | 573 | 574 | Address 575 | アドレス 576 | 577 | 578 | Entry point 579 | エントリ ポイント 580 | 581 | 582 | Offset 583 | オフセット 584 | 585 | 586 | Size 587 | サイズ 588 | 589 | 590 | Demangle 591 | デマングル 592 | 593 | 594 | Name 595 | 名前 596 | 597 | 598 | Next 599 | 600 | 601 | 602 | All 603 | すべて 604 | 605 | 606 | Attach 607 | 添付 608 | 609 | 610 | Detach 611 | デタッチ 612 | 613 | 614 | CPU 615 | CPU 616 | 617 | 618 | Log 619 | ログ 620 | 621 | 622 | Breakpoints 623 | ブレークポイント 624 | 625 | 626 | Callstack 627 | 628 | 629 | 630 | Threads 631 | スレッド 632 | 633 | 634 | Handles 635 | ハンドル 636 | 637 | 638 | Symbols 639 | シンボル 640 | 641 | 642 | Shortcuts 643 | ショートカット 644 | 645 | 646 | Options 647 | 設定 648 | 649 | 650 | About 651 | 情報 652 | 653 | 654 | File name 655 | ファイル名 656 | 657 | 658 | Structs 659 | 構造体 660 | 661 | 662 | Viewer 663 | ビューア 664 | 665 | 666 | Folder 667 | 668 | 669 | 670 | Run 671 | 実行 672 | 673 | 674 | Pause 675 | 一時停止 676 | 677 | 678 | Step into 679 | ステップ イン 680 | 681 | 682 | Step over 683 | ステップ オーバー 684 | 685 | 686 | Stop 687 | 停止 688 | 689 | 690 | Restart 691 | 再起動 692 | 693 | 694 | Toggle 695 | トグル 696 | 697 | 698 | Scan 699 | スキャン 700 | 701 | 702 | Entropy 703 | エントロピー 704 | 705 | 706 | Hash 707 | ハッシュ 708 | 709 | 710 | 711 | XShortcutsWidget 712 | 713 | Save 714 | 保存 715 | 716 | 717 | Text files 718 | テキスト ファイル 719 | 720 | 721 | All files 722 | すべてのファイル 723 | 724 | 725 | Error 726 | エラー 727 | 728 | 729 | Cannot save file 730 | ファイルを保存できません 731 | 732 | 733 | 734 | -------------------------------------------------------------------------------- /gui_source/translation/pdbripper_he.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DialogAbout 6 | 7 | About 8 | אודות 9 | 10 | 11 | OK 12 | אישור 13 | 14 | 15 | Bugreports 16 | דיווחי שגיאות 17 | 18 | 19 | Website 20 | אתר אינטרנט 21 | 22 | 23 | Donate 24 | תרום 25 | 26 | 27 | Source code 28 | קוד מקור 29 | 30 | 31 | Thanks 32 | תודה 33 | 34 | 35 | 36 | DialogExport 37 | 38 | Export 39 | יצא 40 | 41 | 42 | Sort type 43 | סוג מיון 44 | 45 | 46 | Export type 47 | סוג ייצוא 48 | 49 | 50 | Options 51 | אפשרויות 52 | 53 | 54 | Show comments 55 | הצג הערות 56 | 57 | 58 | Fix types 59 | תקן סוגים 60 | 61 | 62 | Add alignment 63 | הוסף יישור 64 | 65 | 66 | Fix offsets 67 | תיקון קיזוזים 68 | 69 | 70 | Cancel 71 | בטל 72 | 73 | 74 | OK 75 | אישור 76 | 77 | 78 | No 79 | לא 80 | 81 | 82 | Name 83 | שם 84 | 85 | 86 | Dependencies 87 | תלות 88 | 89 | 90 | Struct and unions 91 | מבנה ואיגודים 92 | 93 | 94 | All 95 | הכל 96 | 97 | 98 | Save file 99 | שמור קובץ 100 | 101 | 102 | Files 103 | קבצים 104 | 105 | 106 | All files 107 | כל הקבצים 108 | 109 | 110 | Error 111 | שגיאה 112 | 113 | 114 | Information 115 | מידע 116 | 117 | 118 | 119 | DialogOptions 120 | 121 | Options 122 | אפשרויות 123 | 124 | 125 | 126 | DialogProcess 127 | 128 | Cancel 129 | בטל 130 | 131 | 132 | Export 133 | יצא 134 | 135 | 136 | Import 137 | פונקציות מיובאות 138 | 139 | 140 | 141 | DialogShortcuts 142 | 143 | Shortcuts 144 | קיצורי דרך 145 | 146 | 147 | Filter 148 | סינון 149 | 150 | 151 | Clear 152 | נקה 153 | 154 | 155 | Default 156 | בְּרִירַת מֶחדָל 157 | 158 | 159 | Close 160 | סגור 161 | 162 | 163 | Name 164 | שם 165 | 166 | 167 | Shortcut 168 | קיצור 169 | 170 | 171 | Cannot set shortcut 172 | לא ניתן להגדיר קיצור דרך 173 | 174 | 175 | 176 | GuiMainWindow 177 | 178 | MainWindow 179 | חלון ראשי 180 | 181 | 182 | Symbols 183 | סמלים 184 | 185 | 186 | Search 187 | חפש 188 | 189 | 190 | Options 191 | אפשרויות 192 | 193 | 194 | Show comments 195 | הצג הערות 196 | 197 | 198 | Fix types 199 | תקן סוגים 200 | 201 | 202 | Add alignment 203 | הוסף יישור 204 | 205 | 206 | Fix offsets 207 | תיקון קיזוזים 208 | 209 | 210 | No 211 | לא 212 | 213 | 214 | Struct and unions 215 | מבנה ואיגודים 216 | 217 | 218 | All 219 | הכל 220 | 221 | 222 | File 223 | קובץ 224 | 225 | 226 | Action 227 | פעולה 228 | 229 | 230 | Tools 231 | כלים 232 | 233 | 234 | Help 235 | עזרה 236 | 237 | 238 | Export 239 | יצא 240 | 241 | 242 | Open 243 | פתח 244 | 245 | 246 | Close 247 | סגור 248 | 249 | 250 | Exit 251 | יציאה 252 | 253 | 254 | About 255 | אודות 256 | 257 | 258 | Open file 259 | פתח קובץ 260 | 261 | 262 | Files 263 | קבצים 264 | 265 | 266 | All files 267 | כל הקבצים 268 | 269 | 270 | Symbol 271 | סֵמֶל 272 | 273 | 274 | Error 275 | שגיאה 276 | 277 | 278 | Cannot open file 279 | לא ניתן לפתוח את הקובץ 280 | 281 | 282 | 283 | QWinPDB 284 | 285 | Cannot load msdia library 286 | לא ניתן לטעון את ספריית msdia 287 | 288 | 289 | Cannot load data from PDB 290 | לא ניתן לטעון נתונים מ- PDB 291 | 292 | 293 | Cannot open session 294 | לא ניתן לפתוח את ההפעלה 295 | 296 | 297 | Cannot get PDB name 298 | לא ניתן לקבל שם PDB 299 | 300 | 301 | Cannot get PDB age 302 | לא ניתן לקבל גיל PDB 303 | 304 | 305 | Get element 306 | קבל אלמנט 307 | 308 | 309 | Sort elements 310 | מיין אלמנטים 311 | 312 | 313 | File saved 314 | הקובץ נשמר 315 | 316 | 317 | Cannot save file 318 | לא ניתן לשמור את הקובץ 319 | 320 | 321 | 322 | XOptions 323 | 324 | Automatic 325 | אוֹטוֹמָטִי 326 | 327 | 328 | Recent files 329 | 330 | 331 | 332 | Clear 333 | נקה 334 | 335 | 336 | 337 | XOptionsWidget 338 | 339 | Stay on top 340 | השאר בקידמה 341 | 342 | 343 | Single application 344 | יישום יחיד 345 | 346 | 347 | Style 348 | סגנון 349 | 350 | 351 | Language 352 | שפה 353 | 354 | 355 | Show logo 356 | הצג לוגו 357 | 358 | 359 | Font 360 | גוֹפָן 361 | 362 | 363 | Save last directory 364 | שמור תיקייה אחרונה 365 | 366 | 367 | Save backup 368 | שמור גיבוי 369 | 370 | 371 | Save history 372 | 373 | 374 | 375 | Add to context menu 376 | הוסף לתפריט ההקשר 377 | 378 | 379 | Default 380 | בְּרִירַת מֶחדָל 381 | 382 | 383 | OK 384 | אישור 385 | 386 | 387 | Cancel 388 | בטל 389 | 390 | 391 | Appearance 392 | מראה 393 | 394 | 395 | File 396 | קובץ 397 | 398 | 399 | Error 400 | שגיאה 401 | 402 | 403 | Please run the program as an administrator 404 | אנא הפעל את התוכנית כמנהל מערכת 405 | 406 | 407 | Information 408 | מידע 409 | 410 | 411 | Please restart the application 412 | אנא הפעל את התוכנית מחדש 413 | 414 | 415 | 416 | XShortcuts 417 | 418 | Action 419 | פעולה 420 | 421 | 422 | File 423 | קובץ 424 | 425 | 426 | View 427 | נוף 428 | 429 | 430 | String 431 | מחרוזת 432 | 433 | 434 | Strings 435 | מחרוזות 436 | 437 | 438 | Signature 439 | חתימה 440 | 441 | 442 | Signatures 443 | חתימות 444 | 445 | 446 | Struct 447 | מבנים 448 | 449 | 450 | Hex 451 | הקס 452 | 453 | 454 | Disasm 455 | פירוק לפקודות 456 | 457 | 458 | Debug 459 | לנפות 460 | 461 | 462 | Debugger 463 | מנפה שגיאות 464 | 465 | 466 | Register 467 | 468 | 469 | 470 | Stack 471 | לַעֲרוֹם 472 | 473 | 474 | Archive 475 | ארכיון 476 | 477 | 478 | Table 479 | טבלה 480 | 481 | 482 | Process 483 | תהליך 484 | 485 | 486 | Memory 487 | זיכרון 488 | 489 | 490 | Copy 491 | העתק 492 | 493 | 494 | Edit 495 | עריכה 496 | 497 | 498 | Find 499 | חפש 500 | 501 | 502 | Go to 503 | מעבר אל 504 | 505 | 506 | Tools 507 | כלים 508 | 509 | 510 | Help 511 | עזרה 512 | 513 | 514 | Select 515 | בחר 516 | 517 | 518 | Follow in 519 | 520 | 521 | 522 | Show in 523 | 524 | 525 | 526 | Breakpoint 527 | 528 | 529 | 530 | Modules 531 | מודולים 532 | 533 | 534 | Memory map 535 | מפת זיכרון 536 | 537 | 538 | Value 539 | ערך 540 | 541 | 542 | Show 543 | הופעה 544 | 545 | 546 | Open 547 | פתח 548 | 549 | 550 | Save 551 | שמור 552 | 553 | 554 | Save as 555 | 556 | 557 | 558 | Close 559 | סגור 560 | 561 | 562 | Print 563 | הדפס 564 | 565 | 566 | Exit 567 | יציאה 568 | 569 | 570 | Dump to file 571 | יצא כקובץ הרצה לקובץ 572 | 573 | 574 | Address 575 | כתובת 576 | 577 | 578 | Entry point 579 | כתובת תחילת הריצה 580 | 581 | 582 | Offset 583 | היסט 584 | 585 | 586 | Size 587 | גודל 588 | 589 | 590 | Demangle 591 | להסיר 592 | 593 | 594 | Name 595 | שם 596 | 597 | 598 | Next 599 | 600 | 601 | 602 | All 603 | הכל 604 | 605 | 606 | Attach 607 | לְצַרֵף 608 | 609 | 610 | Detach 611 | לנתק 612 | 613 | 614 | CPU 615 | מעבד 616 | 617 | 618 | Log 619 | יומן אירועים 620 | 621 | 622 | Breakpoints 623 | נקודות שבירה 624 | 625 | 626 | Callstack 627 | 628 | 629 | 630 | Threads 631 | שרשורים 632 | 633 | 634 | Handles 635 | ידיות 636 | 637 | 638 | Symbols 639 | סמלים 640 | 641 | 642 | Shortcuts 643 | קיצורי דרך 644 | 645 | 646 | Options 647 | אפשרויות 648 | 649 | 650 | About 651 | אודות 652 | 653 | 654 | File name 655 | שם קובץ 656 | 657 | 658 | Structs 659 | מבנים 660 | 661 | 662 | Viewer 663 | צוֹפֶה 664 | 665 | 666 | Folder 667 | 668 | 669 | 670 | Run 671 | לָרוּץ 672 | 673 | 674 | Pause 675 | הַפסָקָה 676 | 677 | 678 | Step into 679 | להכנס ל 680 | 681 | 682 | Step over 683 | לדרוך מעל 684 | 685 | 686 | Stop 687 | עצור 688 | 689 | 690 | Restart 691 | אתחול 692 | 693 | 694 | Toggle 695 | לְמַתֵג 696 | 697 | 698 | Scan 699 | סרוק 700 | 701 | 702 | Entropy 703 | אנטרופיה 704 | 705 | 706 | Hash 707 | פונקציית גיבוב 708 | 709 | 710 | 711 | XShortcutsWidget 712 | 713 | Save 714 | שמור 715 | 716 | 717 | Text files 718 | קבצי טקסט 719 | 720 | 721 | All files 722 | כל הקבצים 723 | 724 | 725 | Error 726 | שגיאה 727 | 728 | 729 | Cannot save file 730 | לא ניתן לשמור את הקובץ 731 | 732 | 733 | 734 | --------------------------------------------------------------------------------