Пример #1
0
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;
}
Пример #2
0
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.");
}