Exemple #1
0
void menu_events( struct IntuiMessage *IntuiMsg)
{
	ULONG menucode = IntuiMsg->Code;

	if (menucode != MENUNULL)
	{
		while (menucode != MENUNULL)
		{
			struct MenuItem  *item = ItemAddress(menu,menucode);

			select_menu[ MENUNUM(menucode) ] ( menucode );

			/* Handle multiple selection */
			menucode = item->NextSelect;
		}
	}
}
Exemple #2
0
int get_key (UWORD * qualifier_addr, int c, int wait)
{
  struct IntuiMessage *imsg;
  ULONG class;
  UWORD code, qualifier;
  int old_height;

  os_flush ();
  while (1)
  {
    while (imsg = (struct IntuiMessage *) GetMsg (Window->UserPort))
    {
      class = imsg->Class;
      code = imsg->Code;
      qualifier = imsg->Qualifier;
      ReplyMsg ((struct Message *) imsg);
      if (qualifier_addr)
	*qualifier_addr = qualifier;
      switch (class)
      {
      case IDCMP_RAWKEY:
	switch (code)
	{
	case 0x4C:
	  return 129;
	case 0x4D:
	  return 130;
	case 0x4F:
	  return 131;
	case 0x4E:
	  return 132;
	case 0x5F:
	  help ();
	  break;
	}
	break;
      case IDCMP_VANILLAKEY:
	switch (code)
	{
	case 8:
	  return 127;
	case 13:
	  return 13;
	case 127:
	  return 260;
	default:
	  if (code >= 32 && code <= 126)
	    return code;
	  break;
	}
	break;
      case IDCMP_CLOSEWINDOW:
	exit (0);
	break;
      case IDCMP_CHANGEWINDOW:
	old_height = DisplayHeight;
	DisplayHeight = ((Window->Height - Window->BorderTop - Window->BorderBottom) / RastPort->TxHeight) - 1;

	if (PreviousHeight > DisplayHeight)
	{
	  rect (Window->BorderLeft,
		Window->BorderTop + (DisplayHeight * RastPort->TxHeight),
		Window->Width - Window->BorderRight - 1,
		Window->Height - Window->BorderBottom - 1, 0);

	  if (RastPort->cp_y + RastPort->TxHeight > Window->Height - Window->BorderBottom)
	  {
	    Move (RastPort, RastPort->cp_x, Window->BorderTop + (DisplayHeight * RastPort->TxHeight));
	    rect (Window->BorderLeft, RastPort->cp_y,
		  Window->Width - Window->BorderRight - 1,
		  RastPort->cp_y + RastPort->TxHeight - 1, 0);
	    PreviousHeight = DisplayHeight;
	    return 264;
	  }
	}
	PreviousHeight = DisplayHeight;
	break;
      case IDCMP_MENUPICK:
	if (code != MENUNULL)
	{
	  if (MENUNUM (code) == 0)
	  {
	    switch (ITEMNUM (code))
	    {
	    case 0:
	      if (c != -1)
	      {
		cursor (c);
		SetAPen (RastPort, 1);
		int r = newgame (0);
		SetAPen (RastPort, 2);
		cursor (c);
		if (r != 0)
		  return r;
	      }
	      break;
	    case 2:
	      if (c != -1)
		return -2;
	      break;
	    case 3:
	      if (c != -1)
		return -3;
	      break;
	    case 5:
	      help ();
	      break;
	    case 6:
	      about ();
	      break;
	    case 8:
	      exit (0);
	      break;
	    }
	  }
	}
	break;
      }
    }
    if (wait)
      WaitPort (Window->UserPort);
    else
      return 0;
  }
}
Exemple #3
0
void main_event_handler()
{
	ULONG result;
    UWORD Code;
    static char *strinfo, *args;
	static char *path;
	int line=0;
	int *iptr;
    struct Node *node;
	uint32 addr;
	struct Process *pr;

    while ((result = RA_HandleInput(MainWinObj, &Code)) != WMHI_LASTMSG && done != TRUE)
    {
		switch (result & WMHI_CLASSMASK)
        {
        	case WMHI_CLOSEWINDOW:
            	done = TRUE;
                break;
				
			case WMHI_ICONIFY:
				if( RA_Iconify(MainWinObj) )
				mainwin = NULL;
				break;

			case WMHI_UNICONIFY:
				mainwin = RA_Uniconify(MainWinObj);
				if( !mainwin )
					done = TRUE;
				break;

			case WMHI_MENUPICK:
				if (Code != MENUNULL)
				switch (MENUNUM(Code))
				{
					case MENU_FILE:
						switch(ITEMNUM(Code))
						{
							case MENU_PREFS:
								preferences_open_window();
								break;
							case MENU_MODULES:
								modules_open_window();
								break;
							case MENU_ABOUT:
								show_about();
								break;
							case MENU_QUIT:
								done = TRUE;
								break;
						}
				}
				break;
			
            case WMHI_GADGETUP:
            switch(result & WMHI_GADGETMASK)
            {
				case GAD_SELECT_BUTTON:

					strinfo = request_file(mainwin, &path);
					if (!strinfo)
						break;

					strcpy (filename, strinfo);
					if (strlen(path) > 0)
					{
						strcpy (childpath, path);
					}

					if(!request_arguments(&args))
					{
						console_printf(OUTPUT_WARNING, "User aborted!");
						break;
					}

					main_load (strinfo, path, args);
									
                    break;
                                    
				case GAD_RELOAD_BUTTON:
								
					main_load(strinfo, path, args);
					break;
									
				case GAD_ATTACH_BUTTON:

					if(!isattached)
					{
						pr = attach_select_process();
						if(main_attach (pr))
							button_set_detach();
					}
					else
					{
						console_printf(OUTPUT_SYSTEM, "Detaching from external process...");
						detach();
						stabs_free_stabs();
						button_set_attach();
						enable(TRUE, GAD_SELECT_BUTTON, TAG_END);
						enable(FALSE, GAD_START_BUTTON, GAD_PAUSE_BUTTON, GAD_KILL_BUTTON, GAD_STEPOVER_BUTTON,
										GAD_STEPINTO_BUTTON, GAD_STEPOUT_BUTTON, GAD_SETBREAK_BUTTON, GAD_HEX_BUTTON, TAG_END);
						console_printf(OUTPUT_SYSTEM, "Done!");
					}
						
					break;

				case GAD_START_BUTTON:

					main_play();
					break;

				case GAD_PAUSE_BUTTON:

					main_pause();
					break;

				case GAD_STEPOVER_BUTTON:

					main_step();
					break;

				case GAD_STEPINTO_BUTTON:
				
					main_into();
					break;

				case GAD_STEPOUT_BUTTON:
				
					main_out();
					break;

				case GAD_KILL_BUTTON:

					main_kill();
					break;
#if 0
				case GAD_CRASH_BUTTON:

					crash();
					break;
#endif
				case GAD_SETBREAK_BUTTON:

					breakpoints_open_window();
					break;

				case GAD_VARIABLES_LISTBROWSER:
								
					variables_handle_input();
					break;

				case GAD_SIGNAL_BUTTON:
				
					sigwin_open_window();
					break;

				case GAD_IMPORT_BUTTON:
				
					import_open_window();
					break;

				case GAD_X_BUTTON:

					console_clear();
					break;

				case GAD_HEX_BUTTON:

					hex_open_window();
					break;

				case GAD_DISASSEMBLER_LISTBROWSER:
					disassembler_show_selected();
					break;
									
				case GAD_DISASSEMBLER_STEP_BUTTON:
					asmstep();
					should_continue = FALSE;
					asm_trace = TRUE;
					break;
									
				case GAD_DISASSEMBLER_SKIP_BUTTON:
					asmskip();
					disassembler_makelist();
					break;

				case GAD_SOURCE_LISTBROWSER:
					source_handle_input();
					source_show_currentline();
					break;
				
				case GAD_SOURCELIST_LISTBROWSER:
					sourcelist_handle_input();
					break;
					
				case GAD_AREXX_BUTTON:
				case GAD_AREXX_STRING:
				{
					char *str;
									
                    IIntuition->GetAttrs( MainObj[GAD_AREXX_STRING], STRINGA_TextVal, &str, TAG_DONE );
					strcpy (arexxcommandstring, str);

					arexxexecute.MethodID = AM_EXECUTE;
					arexxexecute.ape_CommandString = arexxcommandstring;
					arexxexecute.ape_PortName = "AREXXDB101";
					arexxexecute.ape_IO = (BPTR)NULL;

                    IIntuition->SetAttrs( MainObj[GAD_AREXX_STRING], STRINGA_TextVal, "", TAG_DONE );
					IIntuition->RefreshGadgets ((struct Gadget *)MainObj[GAD_AREXX_STRING], mainwin, NULL);

					console_printf(OUTPUT_AREXX, arexxcommandstring);
					IIntuition->IDoMethodA(arexx_obj, (Msg)&arexxexecute);
	
					//IIntuition->ActivateGadget((struct Gadget *)MainObj[GAD_AREXX_STRING], mainwin, NULL);
					ILayout->ActivateLayoutGadget((struct Gadget *)MainObj[GAD_TOPLAYOUT], mainwin, NULL, (uint32)MainObj[GAD_AREXX_STRING]);
					break;
				}
			}
			break;
		}
	}
	return;
}
Exemple #4
0
AMI_ILBM_Action AMI_ILBM_handleScreenActions(char **filename)
{
    AMI_ILBM_Action action = ACTION_ERROR;
    int showTitleStatus = TRUE;
    
    while(action == ACTION_ERROR)
    {
	struct IntuiMessage *msg;
	
	/* Wait for a message from the window's user port */
        Wait(1 << viewerDisplay.window->UserPort->mp_SigBit);
	
	/* Handle all the messages stored in the message queue */
        while((msg = (struct IntuiMessage*)GetMsg(viewerDisplay.window->UserPort)) != NULL)
        {
	    UWORD menuSelection;
	
	    switch(msg->Class)
	    {
	        case IDCMP_MENUPICK: /* Handle menu events */
		    menuSelection = msg->Code;
		    
		    if(menuSelection != MENUNULL)
		    {
		        UWORD menuNum = MENUNUM(menuSelection); /* Retrieve the number of the menu of the selected menu item */
		        UWORD itemNum = ITEMNUM(menuSelection); /* Retrieve the number of the menuitem in the selected menu */
			
			/* Determine which action to execute */
		        if(menuNum == 0)
		        {
			    switch(itemNum)
			    {
				case 0:
				    *filename = AMI_ILBM_openILBMFile(viewerDisplay.window, "");
				
				    if(*filename != NULL)
				        action = ACTION_OPEN;
				
				    break;
				    
				case 1:
				    action = ACTION_PREVIOUS;
				    break;
				
				case 2:
				    action = ACTION_NEXT;
				    break;
				
				case 3:
				    showTitleStatus = !showTitleStatus;
				    ShowTitle(viewerDisplay.image.intuitionScreen, showTitleStatus);
				    break;
				
				case 4:
				    viewerDisplay.cycleModeEnabled = !viewerDisplay.cycleModeEnabled;
				    break;
				
				case 5:
				    action = ACTION_QUIT;
				    break;
			    }
			}
		    }
		
		    break;
	    }
	
	    /* Reply the message, so that it's removed from the message queue */
	    ReplyMsg((struct Message*)msg);
	}
    }
    
    /* Return the resulting action from the user */
    return action;
}