vmprotect-3.5.1/VMProtect/mainwindow.h

321 lines
8.6 KiB
C++

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
class GUILog;
class FunctionBundle;
class FunctionPropertyManager;
class CorePropertyManager;
class SectionPropertyManager;
class SegmentPropertyManager;
class ImportPropertyManager;
class ExportPropertyManager;
class ResourcePropertyManager;
class LoadCommandPropertyManager;
class AddressCalculator;
class ProjectNode;
class IArchitecture;
class Core;
class WatermarksModel;
class TemplatesModel;
class ProjectModel;
class SearchModel;
class DirectoryModel;
class LogModel;
class FunctionsModel;
class InfoModel;
class DumpModel;
class DisasmModel;
class TabWidget;
class TreePropertyEditor;
class SearchLineEdit;
class ScriptEdit;
class License;
class LicensePropertyManager;
class InternalFilePropertyManager;
class AssemblyPropertyManager;
class FindWidget;
class ElidedAction;
class ToolButtonElided;
using namespace Scintilla;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
~MainWindow();
protected:
virtual void closeEvent(QCloseEvent *event);
virtual void dragEnterEvent(QDragEnterEvent *event);
virtual void dropEvent(QDropEvent *event);
private slots:
void notify(MessageType type, IObject *sender, const QString &message);
void projectFilterChanged();
void projectItemChanged();
void treeItemDoubleClicked(const QModelIndex &index);
void open();
void loadFile(const QString &filenameOrBundle);
bool save();
void saveAs();
void saveLicenses();
bool closeFile();
void projectTabMoved();
void projectTabClicked();
void scriptNotify(SCNotification *scn);
void undo();
void redo();
void copy();
void cut();
void paste();
void addFunction();
void addFolder();
void addFunctionFolder();
void rename();
void excludeFromCompilation();
void block();
void del();
void homePage();
void help();
void about();
void projectModified();
void projectNodeRemoved(ProjectNode *node);
void projectObjectRemoved(void *object);
void compile();
void execute();
void executeOriginal();
void executeProtected();
void projectContextMenu(const QPoint &p);
void scriptContextMenu(const QPoint &p);
void functionContextMenu(const QPoint &p);
void functionExtAddress();
void functionEndAddress();
void functionDel();
void loadFileFromHistory();
void loadFileFromBoot();
void addLicense();
void addFileFolder();
void addFile();
void createKeyPair();
void exportKeyPair();
void useOtherProject();
void importLicense();
void importProject();
void examples();
void watermarks();
void settings();
void showFile();
void logItemDoubleClicked(const QModelIndex &index);
void functionItemDoubleClicked(const QModelIndex &index);
void disasmItemDoubleClicked(const QModelIndex &index);
void goTo();
void search();
void showProtected();
void contextFindNext();
void contextFindPrevious();
void contextFind(const QString &ttf, bool forward, bool incremental);
void contextFindClosed();
void scriptModeClicked();
void templatesShow();
void templatesSave();
void templatesEdit();
void templateSelect();
void updateEditActions();
void treeSectionClicked(int index);
void recentFileContextMenu(const QPoint &p);
void openRecentFile();
void removeRecentFile();
void fileChanged(const QString & path);
private:
bool isContextSearchApplicable();
bool findInScript(const QString &ttf, bool forward, bool incremental);
bool findInView(QAbstractItemView *tv, const QString &ttf, bool forward, bool incremental);
void showCurrentObject();
void addRecentFile(int index, const QString file_name);
void saveRecentFiles();
bool internalLoadFile(const QString &filename);
bool internalCompile();
QTreeView *currentTreeView() const;
ProjectNode *currentProjectNode(bool focusedTree = false) const;
void updateCaption();
void executeFile(const QString &fileName);
void localize();
void goToAddress(IArchitecture *file, uint64_t address);
void goToDump(IArchitecture *file, uint64_t address, bool mode = false);
#ifdef ULTIMATE
void createLicense(License *license);
void updateLicensingActions();
#endif
void updateTemplates();
QString caption_;
GUILog *log_;
Core *core_;
FunctionBundle *temp_function_;
WatermarksModel *watermarks_model_;
TemplatesModel *templates_model_;
ProjectModel *project_model_;
SearchModel *search_model_;
DirectoryModel *directory_model_;
LogModel *log_model_;
FunctionPropertyManager *function_property_manager_;
CorePropertyManager *core_property_manager_;
#ifndef LITE
FunctionsModel *functions_model_;
InfoModel *info_model_;
DumpModel *dump_model_;
DisasmModel *disasm_model_;
SectionPropertyManager *section_property_manager_;
SegmentPropertyManager *segment_property_manager_;
ImportPropertyManager *import_property_manager_;
ExportPropertyManager *export_property_manager_;
ResourcePropertyManager *resource_property_manager_;
LoadCommandPropertyManager *loadcommand_property_manager_;
AddressCalculator *address_calculator_manager_;
QTreeView *info_tree_;
#endif
#ifdef ULTIMATE
LicensePropertyManager *license_property_manager_;
InternalFilePropertyManager *internal_file_property_manager_;
AssemblyPropertyManager *assembly_property_manager_;
#endif
QFileSystemWatcher fs_watcher_;
QAction *open_act_;
QAction *save_act_;
QAction *save_as_act_;
QAction *close_act_;
QAction *exit_act_;
QAction *undo_act_;
QAction *redo_act_;
QAction *cut_act_;
QAction *copy_act_;
QAction *paste_act_;
QAction *cut_act2_;
QAction *copy_act2_;
QAction *paste_act2_;
#ifdef LITE
QAction *show_act_;
#else
QAction *add_function_act_;
QAction *add_function_act2_;
QAction *add_folder_act_;
QAction *goto_act_;
QAction *goto_act2_;
QAction *watermarks_act_;
#endif
#ifdef ULTIMATE
QAction *save_licenses_act_;
QAction *add_license_act_;
QAction *add_license_act2_;
QAction *add_file_act_;
QAction *add_file_act2_;
QAction *import_license_act_;
QAction *import_project_act_;
QAction *export_key_act_;
#endif
QAction *block_act_;
QAction *exclude_act_;
QAction *rename_act_;
QAction *delete_act_;
QAction *project_filter_act_;
QAction *compile_act_;
QAction *execute_act_;
ElidedAction *execute_original_act_;
ElidedAction *execute_protected_act_;
QWidgetAction *execute_parameters_act_;
QAction *function_ext_address_act_;
QAction *function_end_address_act_;
QAction *function_del_act_;
QAction *help_act_;
QAction *home_page_act_;
QAction *about_act_;
QAction *history_separator_;
QAction *project_separator_;
QAction *settings_act_;
QAction *search_act_;
QMenu *file_menu_;
QMenu *edit_menu_;
QMenu *project_menu_;
#ifdef ULTIMATE
QMenu *import_menu_;
#endif
QMenu *help_menu_;
QMenu *script_menu_;
QMenu *tools_menu_;
QStackedWidget *desktop_page_;
QFrame *boot_frame_;
QFrame *boot_panel_;
QFrame *project_frame_;
TabWidget *project_tab_;
QTreeView *project_tree_;
QTreeView *search_tree_;
QTreeView *directory_tree_;
QRadioButton *icon_project_;
QStatusBar *status_bar_;
#ifndef LITE
QMenu *add_menu_;
QRadioButton *icon_functions_;
QRadioButton *icon_details_;
QTreeView *functions_tree_;
QFrame *dump_page_;
QTableView *dump_view_;
QTableView *disasm_view_;
TreePropertyEditor *section_property_editor_;
TreePropertyEditor *segment_property_editor_;
TreePropertyEditor *import_property_editor_;
TreePropertyEditor *export_property_editor_;
TreePropertyEditor *resource_property_editor_;
TreePropertyEditor *loadcommand_property_editor_;
TreePropertyEditor *address_calculator_;
#endif
SearchLineEdit *project_filter_;
QStackedWidget *project_page_;
ScriptEdit *script_editor_;
QLabel *project_file_name_;
QLabel *script_line_;
QLabel *script_column_;
QLabel *script_mode_;
FindWidget *context_find_;
TreePropertyEditor *function_property_editor_;
TreePropertyEditor *core_property_editor_;
#ifdef ULTIMATE
TreePropertyEditor *license_property_editor_;
TreePropertyEditor *internal_file_property_editor_;
TreePropertyEditor *assembly_property_editor_;
QFrame *licensing_parameters_page_;
QLabel *licensing_parameters_help_;
QLabel *key_algo_label_;
QLabel *key_len_label_;
QComboBox *key_len_;
QPushButton *create_key_button_;
QPushButton *use_other_project_button_;
#endif
ToolButtonElided *spacer_;
QWidget *project_separator_widget_;
QTreeView *log_tree_;
QMenu *execute_menu_;
QLineEdit *parameters_edit_;
QBoxLayout *recent_files_layout_;
QToolButton *open_button_;
QToolButton *examples_button_;
QToolButton *help_button_;
QLabel *recent_files_label_;
QLabel *quick_start_label_;
QLabel *welcome_label_;
QAction *templates_act_;
QAction *templates_save_act_;
QAction *templates_edit_act_;
QMenu *templates_menu_;
QAction *recent_file_open_act_;
QAction *recent_file_remove_act_;
int recent_file_;
QMenu *recent_file_menu_;
bool fileChanged_;
};
#endif