#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