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; }
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; }
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; }
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; } } }