Ejemplo n.º 1
0
int ui_message_window_close(message_window_e mwin)
{
  switch (mwin)
  {
    case msg_win_monitor:
      /* This function should only be called from the console (i.e. monitor-internal).
         External functions should close by calling ui_message_window_close_request(). */
      msgwin_monitor_close();
      break;
    case msg_win_license:
    case msg_win_warranty:
    case msg_win_contrib:
      if (MsgWindows[mwin].tw != NULL)
      {
        textwin_close(MsgWindows[mwin].tw);
        MsgWindows[mwin].Flags &= ~MSGWIN_FLAG_OPEN;
      }
      break;
    case msg_win_log:
      if (MsgWindows[mwin].win != NULL)
      {
        Wimp_CloseWindow((int*)(MsgWindows[mwin].win));
        MsgWindows[mwin].Flags &= ~MSGWIN_FLAG_OPEN;
      }
      break;
    default:
      return -1;
  }
  return 0;
}
Ejemplo n.º 2
0
static int msgwin_close_log(text_window_t *tw, int *block)
{
  /* just close, but don't delete */
  Wimp_CloseWindow(block);
  MsgWindows[msg_win_log].Flags &= ~MSGWIN_FLAG_OPEN;
  return 0;
}
Ejemplo n.º 3
0
int main( int argc, char *argv[] )
{
    event_pollmask mask;

    if ( argc > 1 && !stricmp(argv[1],"-iconbar") )
        iconbar = TRUE;

    mask.value = 0;
    mask.data.null = 1;

    wimpinit();

    while (!quitapp)
    {
        if (ackpending)
            mask.data.null = 0;
        else
            mask.data.null = 1;

        Wimp_Poll(mask,&e);

        switch (e.type)
        {
        case event_NULL:
       	    if (ackpending)
            {
                ackpending = FALSE;
                _kernel_oscli("delete <Wimp$Scrap>");
                Error_Report2( 0, "Data transfer failed - receiver died" );
            }
            break;
        case event_OPEN:
            Wimp_OpenWindow( &e.data.openblock );
            break;
        case event_CLOSE:
            if ( e.data.openblock.window == wh && !iconbar )
                quitapp = TRUE;
            else if ( e.data.openblock.window == palh )
                palette_open = FALSE;
            else if ( e.data.openblock.window == spropth )
                spropt_open = FALSE;
            Wimp_CloseWindow( e.data.openblock.window );
            break;
        case event_KEY:
            if ( e.data.key.caret.window == wh
                 && e.data.key.caret.icon == igicon_SAVENAME
                 && e.data.key.code == 13 )
                SaveFile( savename );
            else if ( e.data.key.caret.window == wCFSI
                      && e.data.key.code == 13 )
            {
                GetCFSIData();
                Wimp_CloseWindow( wCFSI );
                cfsi_open = FALSE;
            }
            else
                Wimp_ProcessKey( e.data.key.code );
            break;
        case event_BUTTON:
            WimpButton();
            break;
        case event_MENU:
            MenuSelection( e.data.selection );
            break;
        case event_USERDRAG:
            if (draggingfile)
            {
                mouse_block mb;

                DragASprite_Stop();
                draggingfile = FALSE;
                Wimp_GetPointerInfo( &mb );
                e.type = event_SEND;
                e.data.message.header.action = message_DATASAVE;
                e.data.message.header.yourref = 0;
                e.data.message.header.size = 256;
                e.data.message.data.datasave.window = mb.window;
                e.data.message.data.datasave.icon = mb.icon;
                e.data.message.data.datasave.pos = mb.pos;
                e.data.message.data.datasave.estsize = 0;
                e.data.message.data.datasave.filetype = 0x695;
        	strcpy( e.data.message.data.datasave.leafname,
        		Leaf( savename ) );
        	Wimp_SendMessage( event_SEND, &e.data.message,
        	                  (message_destinee) mb.window,
        	    		  mb.icon );
            }
            break;
	case event_SEND:
	case event_SENDWANTACK:
            switch (e.data.message.header.action)
            {
            case message_DATASAVEACK:
        	SaveFile( e.data.message.data.datasaveack.filename );
        	break;
            case message_DATALOAD:
                if ( e.data.message.data.dataload.filetype == 0xFED
                          && e.data.message.data.dataload.window == palh )
                {
                    LoadPalette( e.data.message.data.dataload.filename );
                }
                else if ( e.data.message.data.dataload.filetype == 0xFF9
                     || e.data.message.data.dataload.filetype == 0xC2A
                     || e.data.message.data.dataload.filetype == 0x695
                     || e.data.message.data.dataload.filetype == 0xAFF
                     || cfsi )
                {
                    if ( e.data.message.data.dataload.window < 0 )
                        OpenMainWindow();
                    LoadFile( e.data.message.data.dataload.filename,
                              e.data.message.data.dataload.filetype );
                }
        	break;
            case message_DATALOADACK:
        	ackpending = FALSE;
        	break;
            case message_QUIT:
        	quitapp=TRUE;
        	break;
            }
            break;
        }
    }
    Wimp_CloseDown(me);
    return 0;
}
Ejemplo n.º 4
0
static void WimpButton( void )
{
    if ( iconbar && (e.data.mouse.window < 0) )
    {
        if ( e.data.mouse.button.data.menu )
            Menu_Show( &Menu_iconbar, e.data.mouse.pos.x, -1 );
        else if ( e.data.mouse.button.data.select )
            OpenMainWindow();
    }
    else if ( e.data.mouse.window == palh && e.data.mouse.button.data.select )
    {
        switch ( e.data.mouse.icon )
        {
        case palicon_KEEP:
        case palicon_256:
        case palicon_216:
        case palicon_FILE:
        case palicon_OPTIMISE:
            DoPaletteRadio();
            break;
        case palicon_OK:
            GetPaletteData();
            /* fall through */
        case palicon_CANCEL:
            Wimp_CloseWindow( palh );
            palette_open = FALSE;
            break;
        }
        return;
    }
    else if ( e.data.mouse.window == spropth && e.data.mouse.button.data.select )
    {
        switch ( e.data.mouse.icon )
        {
        case spropticon_FORCENEW:
            DoSprOptRadio();
            break;
        case spropticon_OK:
            GetSprOptData();
            /* fall through */
        case spropticon_CANCEL:
            Wimp_CloseWindow( spropth );
            spropt_open = FALSE;
            break;
        }
        return;
    }
    else if ( e.data.mouse.window == wCFSI && e.data.mouse.button.data.select )
    {
        switch ( e.data.mouse.icon )
        {
        case cfsiicon_CFSI:
            Icon_SetShade( wCFSI, cfsiicon_OPTIONS,
                           !Icon_GetSelect( wCFSI, cfsiicon_CFSI ) );
            break;
        case cfsiicon_OK:
            GetCFSIData();
            /* fall through */
        case cfsiicon_CANCEL:
            Wimp_CloseWindow( wCFSI );
            cfsi_open = FALSE;
            break;
        }
        return;
    }

    if ( e.data.mouse.window != wh )
        return;

    if ( e.data.mouse.button.data.select )
    {
        switch ( e.data.mouse.icon )
        {
        case igicon_TRANS_FORCE:
        case igicon_TRANS_USE:
        case igicon_TRANS_NONE:
            Icon_SetShade( wh, igicon_TRANS_VALUE,
                           !Icon_GetSelect( wh, igicon_TRANS_FORCE ) );
            break;
#if 0
            /* fall through */
        case igicon_INTERLACED:
            if ( !Icon_GetSelect( wh, igicon_TRANS_NONE )
                 && Icon_GetSelect( wh, igicon_INTERLACED ) )
                Icon_SetSelect( wh, igicon_TRIM, TRUE );
            break;
#endif
        case igicon_DELAY_USE:
            Icon_SetShade( wh, igicon_DELAY,
                           !Icon_GetSelect( wh, igicon_DELAY_USE ) );
            break;
        case igicon_HELP_FILE:
            _kernel_oscli( "Filer_Run <InterGif$Dir>.!Help" );
            break;
        case igicon_HELP_WEB:
            Internet_OpenURL( "http://utter.chaos.org.uk/~pdh/software/intergif.htm" );
            break;
        case igicon_OUT_GIF:
        case igicon_OUT_SPRITE:
            {
                BOOL bSprite = Icon_GetSelect( wh, igicon_OUT_SPRITE );

                strcpy( saveicon, bSprite ? "Sfile_ff9" : "Sfile_695" );
                Wimp_SetIconState( wh, igicon_DRAGGABLE, 0, 0 );
                Icon_SetShade( wh, igicon_INTERLACED, bSprite );
                Icon_SetShade( wh, igicon_LOOP,       bSprite );
                Icon_SetShade( wh, igicon_DELAY,
                               bSprite
                                || !Icon_GetSelect( wh, igicon_DELAY_USE ) );
                Icon_SetShade( wh, igicon_DELAY_USE,  bSprite );
                Icon_SetShade( wh, igicon_SPROPTIONS,  !bSprite );
            }
            break;
        case igicon_SAVE:
            SaveFile( savename );
            break;
        case igicon_PALETTE:
            OpenPaletteWindow();
            break;
        case igicon_SPROPTIONS:
            OpenSprOptWindow();
            break;
        case igicon_CFSI:
            OpenCFSIWindow();
            break;
        }
    }
    else if ( e.data.mouse.button.data.adjust )
    {
        if ( e.data.mouse.icon == igicon_TRANS_FORCE )
            Icon_SetShade( wh, igicon_TRANS_VALUE,
                           !Icon_GetSelect( wh, igicon_TRANS_FORCE ) );
    }
    else if ( e.data.mouse.button.data.dragselect )
    {
        if ( e.data.mouse.icon == igicon_DRAGGABLE && *loadname )
        {
            icon_block *pib = (icon_block*) ((&Template_intergif)+1);
            window_state ws;

            Wimp_GetWindowState( wh, &ws );
            pib += igicon_DRAGGABLE;
            ws.openblock.screenrect.min.x += pib->workarearect.min.x;
            ws.openblock.screenrect.max.x = ws.openblock.screenrect.min.x + 68;
            ws.openblock.screenrect.max.y += pib->workarearect.max.y;
            ws.openblock.screenrect.min.y = ws.openblock.screenrect.max.y - 68;
            DragASprite_Start( 0xC5, (void*)1, saveicon+1,
                               &ws.openblock.screenrect, NULL );
            draggingfile = TRUE;
        }
    }

}