void main_open_window() { main_freemem_hook = freemem_alloc_hook(); char *initdir = getenv("DB101_LASTDIR"); if(initdir) strcpy(lastdir, initdir); variables_init(); console_init(); stacktrace_init(); source_init(); disassembler_init(); sourcelist_init(); pipe_init(); AppPort = IExec->AllocSysObjectTags(ASOT_PORT, TAG_DONE); /* Create the window object. */ if(( MainWinObj = WindowObject, WA_ScreenTitle, "Debug 101", WA_Title, "Debug 101 v1.1.0 BETA - secret edition ;)", WA_Width, 1024, WA_Height, 768, WA_DepthGadget, TRUE, WA_SizeGadget, TRUE, WA_DragBar, TRUE, WA_CloseGadget, TRUE, WA_Activate, TRUE, WINDOW_NewMenu, mynewmenu, WINDOW_MenuUserData, WGUD_IGNORE, WINDOW_IconifyGadget, TRUE, WINDOW_IconTitle, "Debug 101", WINDOW_AppPort, AppPort, WINDOW_Position, WPOS_CENTERSCREEN, /* there is no HintInfo array set up here, instead we define the ** strings directly when each gadget is created (OM_NEW) */ WINDOW_GadgetHelp, TRUE, WINDOW_ParentGroup, MainObj[GAD_TOPLAYOUT] = VLayoutObject, LAYOUT_AddChild, HLayoutObject, LAYOUT_AddChild, MainObj[GAD_SELECT_BUTTON] = ButtonObject, GA_ID, GAD_SELECT_BUTTON, GA_Text, "Select file", GA_RelVerify, TRUE, GA_HintInfo, "Push to select file", ButtonEnd, CHILD_WeightedWidth, 0, LAYOUT_AddChild, MainObj[GAD_RELOAD_BUTTON] = ButtonObject, GA_ID, GAD_RELOAD_BUTTON, GA_Text, "Reload", GA_RelVerify, TRUE, GA_Disabled, TRUE, GA_HintInfo, "Push to reload previously executed file", ButtonEnd, CHILD_WeightedWidth, 0, LAYOUT_AddChild, MainObj[GAD_FILENAME_STRING] = StringObject, GA_ID, GAD_FILENAME_STRING, GA_RelVerify, TRUE, GA_HintInfo, "Filename", GA_Disabled, TRUE, GA_ReadOnly, TRUE, STRINGA_MinVisible, 10, STRINGA_TextVal, "Select File", StringEnd, LAYOUT_AddChild, MainObj[GAD_ATTACH_BUTTON] = ButtonObject, GA_ID, GAD_ATTACH_BUTTON, GA_Text, "Attach", GA_RelVerify, TRUE, GA_HintInfo, "Push to attach to process", ButtonEnd, CHILD_WeightedWidth, 0, LAYOUT_AddChild, SpaceObject, SPACE_MinWidth, 24, SpaceEnd, LAYOUT_AddChild, MainObj[GAD_START_BUTTON] = ButtonObject, GA_ID, GAD_START_BUTTON, GA_RelVerify, TRUE, GA_Text, "Continue", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, LAYOUT_AddChild, MainObj[GAD_PAUSE_BUTTON] = ButtonObject, GA_ID, GAD_PAUSE_BUTTON, GA_RelVerify, TRUE, GA_Text, "Pause", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, LAYOUT_AddChild, MainObj[GAD_KILL_BUTTON] = ButtonObject, GA_ID, GAD_KILL_BUTTON, GA_RelVerify, TRUE, GA_Text, "Kill", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, #if 0 LAYOUT_AddChild, CrashButtonObj = ButtonObject, GA_ID, GAD_CRASH_BUTTON, GA_RelVerify, TRUE, GA_Text, "Crash", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, #endif LAYOUT_AddChild, MainObj[GAD_STEPOVER_BUTTON] = ButtonObject, GA_ID, GAD_STEPOVER_BUTTON, GA_RelVerify, TRUE, GA_Text, "Step Over", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, LAYOUT_AddChild, MainObj[GAD_STEPINTO_BUTTON] = ButtonObject, GA_ID, GAD_STEPINTO_BUTTON, GA_RelVerify, TRUE, GA_Text, "Step Into", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, LAYOUT_AddChild, MainObj[GAD_STEPOUT_BUTTON] = ButtonObject, GA_ID, GAD_STEPOUT_BUTTON, GA_RelVerify, TRUE, GA_Text, "Step Out", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, LAYOUT_AddChild, SpaceObject, SPACE_MinWidth, 24, SpaceEnd, LAYOUT_AddChild, MainObj[GAD_SETBREAK_BUTTON] = ButtonObject, GA_ID, GAD_SETBREAK_BUTTON, GA_RelVerify, TRUE, GA_Text, "Breaks", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, LAYOUT_AddChild, MainObj[GAD_HEX_BUTTON] = ButtonObject, GA_ID, GAD_HEX_BUTTON, GA_RelVerify, TRUE, GA_Text, "Hex", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, EndMember, CHILD_WeightedHeight, 0, LAYOUT_AddChild, HLayoutObject, LAYOUT_AddChild, MainObj[GAD_STACKTRACE_LISTBROWSER] = ListBrowserObject, GA_ID, GAD_STACKTRACE_LISTBROWSER, GA_RelVerify, TRUE, GA_TabCycle, TRUE, LISTBROWSER_AutoFit, TRUE, LISTBROWSER_Labels, &stacktrace_list, // LISTBROWSER_ColumnInfo, columninfo, LISTBROWSER_ColumnTitles, FALSE, LISTBROWSER_ShowSelected, FALSE, LISTBROWSER_Striping, LBS_ROWS, ListBrowserEnd, LAYOUT_AddChild, MainObj[GAD_VARIABLES_LISTBROWSER] = ListBrowserObject, GA_ID, GAD_VARIABLES_LISTBROWSER, GA_RelVerify, TRUE, GA_TabCycle, TRUE, LISTBROWSER_Hierarchical, TRUE, //LISTBROWSER_AutoFit, TRUE, LISTBROWSER_Labels, &variable_list, LISTBROWSER_ColumnInfo, variablescolumninfo, LISTBROWSER_ColumnTitles, TRUE, //LISTBROWSER_ShowSelected, TRUE, /* not really needed yet */ LISTBROWSER_Striping, LBS_ROWS, LISTBROWSER_SortColumn, 0, LISTBROWSER_TitleClickable, TRUE, ListBrowserEnd, EndMember, LAYOUT_AddChild, HLayoutObject, LAYOUT_AddChild, MainObj[GAD_CLICKTAB] = ClickTabObject, GA_Text, PageLabels_1, CLICKTAB_Current, 0, CLICKTAB_PageGroup, PageObject, PAGE_Add, VLayoutObject, //LAYOUT_SpaceOuter, TRUE, //LAYOUT_DeferLayout, TRUE, LAYOUT_AddChild, MainObj[GAD_SOURCE_LISTBROWSER] = ListBrowserObject, GA_ID, GAD_SOURCE_LISTBROWSER, GA_RelVerify, TRUE, GA_TabCycle, TRUE, LISTBROWSER_AutoFit, TRUE, LISTBROWSER_Labels, &source_list, LISTBROWSER_ColumnInfo, sourcecolumninfo, LISTBROWSER_ColumnTitles, TRUE, LISTBROWSER_ShowSelected, TRUE, //LISTBROWSER_Striping, LBS_ROWS, ListBrowserEnd, EndMember, PAGE_Add, VLayoutObject, LAYOUT_AddChild, MainObj[GAD_DISASSEMBLER_LISTBROWSER] = ListBrowserObject, GA_ID, GAD_DISASSEMBLER_LISTBROWSER, GA_RelVerify, TRUE, GA_TabCycle, TRUE, //GA_TextAttr, &courier_font, LISTBROWSER_AutoFit, TRUE, LISTBROWSER_Labels, &disassembly_list, LISTBROWSER_ShowSelected, TRUE, LISTBROWSER_Striping, LBS_ROWS, ListBrowserEnd, LAYOUT_AddChild, HLayoutObject, LAYOUT_AddChild, MainObj[GAD_DISASSEMBLER_STEP_BUTTON] = ButtonObject, GA_ID, GAD_DISASSEMBLER_STEP_BUTTON, GA_RelVerify, TRUE, GA_Text, "Step", ButtonEnd, CHILD_WeightedHeight, 0, LAYOUT_AddChild, MainObj[GAD_DISASSEMBLER_SKIP_BUTTON] = ButtonObject, GA_ID, GAD_DISASSEMBLER_SKIP_BUTTON, GA_RelVerify, TRUE, GA_Text, "Skip", ButtonEnd, CHILD_WeightedHeight, 0, EndMember, CHILD_WeightedHeight, 0, EndMember, PageEnd, EndMember, LAYOUT_WeightBar, TRUE, LAYOUT_AddChild, VLayoutObject, LAYOUT_AddChild, MainObj[GAD_SOURCELIST_LISTBROWSER] = ListBrowserObject, GA_ID, GAD_SOURCELIST_LISTBROWSER, GA_RelVerify, TRUE, GA_TabCycle, TRUE, LISTBROWSER_AutoFit, TRUE, LISTBROWSER_Labels, &sourcelist_list, LISTBROWSER_ShowSelected, TRUE, LISTBROWSER_Striping, LBS_ROWS, ListBrowserEnd, LAYOUT_AddChild, MainObj[GAD_IMPORT_BUTTON] = ButtonObject, GA_ID, GAD_IMPORT_BUTTON, GA_RelVerify, TRUE, GA_Text, "Import externals", ButtonEnd, CHILD_WeightedHeight, 0, EndMember, CHILD_WeightedWidth, 20, EndMember, LAYOUT_AddChild, HLayoutObject, LAYOUT_AddChild, MainObj[GAD_CONSOLE_LISTBROWSER] = ListBrowserObject, GA_ID, GAD_CONSOLE_LISTBROWSER, GA_RelVerify, TRUE, GA_TabCycle, TRUE, LISTBROWSER_AutoFit, TRUE, LISTBROWSER_Labels, &console_list, ListBrowserEnd, EndMember, LAYOUT_AddChild, HLayoutObject, LAYOUT_AddChild, MainObj[GAD_AREXX_STRING] = StringObject, GA_ID, GAD_AREXX_STRING, GA_RelVerify, TRUE, GA_Disabled, FALSE, GA_ReadOnly, FALSE, STRINGA_TextVal, "", StringEnd, LAYOUT_AddChild, MainObj[GAD_AREXX_BUTTON] = ButtonObject, GA_ID, GAD_AREXX_BUTTON, GA_RelVerify, TRUE, GA_Text, "Send", GA_Disabled, FALSE, ButtonEnd, CHILD_WeightedHeight, 0, CHILD_WeightedWidth, 0, LAYOUT_AddChild, MainObj[GAD_SIGNAL_BUTTON] = ButtonObject, GA_ID, GAD_SIGNAL_BUTTON, GA_RelVerify, TRUE, GA_Text, "Signal", GA_Disabled, FALSE, ButtonEnd, CHILD_WeightedHeight, 0, CHILD_WeightedWidth, 0, LAYOUT_AddChild, MainObj[GAD_X_BUTTON] = ButtonObject, GA_ID, GAD_X_BUTTON, GA_RelVerify, TRUE, GA_Text, "X", GA_Disabled, FALSE, ButtonEnd, CHILD_WeightedHeight, 0, CHILD_WeightedWidth, 0, EndMember, CHILD_WeightedHeight, 0, EndMember, EndWindow)) { /* Open the window. */ if( mainwin = (struct Window *) RA_OpenWindow(MainWinObj) ) { main_window_is_open = TRUE; button_set_start(); } } return; }
void cefiveui_init(CEFiveUi* prUi, CheatEngine* prEngine, SearchEngine* prSearch) { const char* sFunc = "cefiveui_init"; CEFiveUiConfig* prUiCfg = NULL; CEFiveConfig* prConfig = NULL; AppletConfig* prAppCfg = NULL; PanelConfig* prPanel = NULL; ColorConfig* prColor = NULL; ColorConfig* prSrc = NULL; HexEditor* prHex = NULL; GGame* prGame = NULL; if (prUi == NULL) { return; } int toprow = 1; int tableheight = 25; prConfig = cefiveui_get_config(prUi); prUiCfg = cefiveui_get_uiconfig(prUi); prUi->prEngine = prEngine; prColor = &prUiCfg->color; prAppCfg = cefiveui_get_appletconfig(prUi); prPanel = appletconfig_get_panelconfig(prAppCfg); prSrc = panelconfig_get_panelcolor(prPanel); colorconfig_copy(prColor, prSrc); prColor = &prUiCfg->cursor; prSrc = panelconfig_get_cursorcolor(prPanel); colorconfig_copy(prColor, prSrc); prColor = &prUiCfg->editcursor; prSrc = panelconfig_get_editcolor(prPanel); colorconfig_copy(prColor, prSrc); prColor = &prUiCfg->status; prSrc = appletconfig_get_statuscolor(prAppCfg); colorconfig_copy(prColor, prSrc); prColor = &prUiCfg->titlebar; prSrc = appletconfig_get_titlecolor(prAppCfg); colorconfig_copy(prColor, prSrc); prUi->applet = 0; prUi->splash_viewed = 0; prUi->prSearchEngine = prSearch; geelog_flog(LOG_DEBUG, sFunc, "Initializing Cheat Panel Applet."); if (init_cheatpanel(prUi) != CEFIVEUI_SUCCESS) { geelog_flog(LOG_WARN, sFunc, "Failed to initialize Cheat Panel Applet."); } geelog_flog(LOG_DEBUG, sFunc, "Initializing Cheat Editor Applet."); if (init_cheateditor(prUi) < 0) { geelog_flog(LOG_WARN, sFunc, "Failed to initialize Cheat Editor Applet."); } geelog_flog(LOG_DEBUG, sFunc, "Initializing Disassembler Applet."); Disassembler *prDasm = &prUi->disassembler; disassembler_init(prDasm, prAppCfg); geelog_flog(LOG_DEBUG, sFunc, "Initializing Applet Menu."); if (init_appletmenu(prUi) != CEFIVEUI_SUCCESS) { geelog_flog(LOG_WARN, sFunc, "Failed to Initialize Applet Menu."); } geelog_flog(LOG_DEBUG, sFunc, "Initializing Hex Editor Applet."); prHex = cefiveui_get_hexeditor(prUi); prHex->prApCfg = prAppCfg; hexeditorInit(prHex); prHex->config.color.background = prUi->config.color.background; prHex->config.color.text = prUi->config.color.text; prHex->config.cursor.background = prUi->config.cursor.background; prHex->config.cursor.text = prUi->config.cursor.text; prHex->config.address.background = (u32)0xFFA0A0A0; prHex->config.address.text = (u32)0xFF000000; prHex->config.datacolumns.background = prUi->config.color.background; prHex->config.datacolumns.text = prUi->config.color.text; prHex->config.ascii.background = prUi->config.color.background; prHex->config.ascii.text = prUi->config.color.text; prHex->config.base_address = 0x08800000; prHex->config.bytes_per_line = 16; prHex->config.max_offset = 0x49FFFFFF; prHex->config.min_offset = 0x48800000; prHex->config.position.x = 0; prHex->config.position.y = 1; prHex->config.table_pos.x = 0; prHex->config.table_pos.y = 2; prHex->config.table_size.height = 30; prHex->config.table_size.width = 0; prHex->cursor.x = 0; prHex->cursor.y = 0; prHex->dirty = 1; prHex->offset = 0x48800000; prHex->address_editor.background_color = prUi->config.editcursor.background; prHex->address_editor.text_color = prUi->config.cursor.text; prHex->address_editor.edit_color = prUi->config.editcursor.text; geelog_flog(LOG_DEBUG, sFunc, "Initializing Search Panel Applet."); SearchPanel* prSp = &(prUi->searchpanel); prSp->prApCfg = prAppCfg; searchpanel_init(prSp, prUi->prSearchEngine); prSp->config.color.background = prUi->config.color.background; prSp->config.color.text = prUi->config.color.text; prSp->config.cursor.background = prUi->config.cursor.background; prSp->config.cursor.text = prUi->config.cursor.text; prSp->config.size.height = tableheight; prSp->config.top.x = 0; prSp->config.top.y = 1; geelog_flog(LOG_DEBUG, sFunc, "Initializing Options Panel Applet."); OptionsPanel* prOp = &prUi->optionspanel; optionspanel_init(prOp, prUi->prCEConfig); geelog_flog(LOG_DEBUG, sFunc, "Initializing Game Info Applet."); GameInfo* prInfo = &prUi->gameinfo; prColor = &prUi->config.color; gameinfo_init(prInfo); gameinfo_set_appletconfig(prInfo, prAppCfg); gameinfo_set_colorconfig(prInfo, prColor); gameinfo_set_cursor(prInfo, 0, 1); geelog_flog(LOG_DEBUG, sFunc, "Initializing Game."); prGame = &prUi->game; if (ggame_init(prGame) < 0) { geelog_flog(LOG_ERROR, sFunc, "Failed to initialize Game."); } geelog_flog(LOG_DEBUG, sFunc, "Assigning Game to Disassembler."); if (disassembler_set_game(prDasm, prGame) < 0) { geelog_flog(LOG_ERROR, sFunc, "Failed to assign Game to Disassembler."); } geelog_flog(LOG_INFO, sFunc, "User Interface Initialized."); }