Exemplo n.º 1
0
static void ui_msgwin_poll_logfile(void)
{
  FILE *logfp = archdep_get_default_log_file();

  if (logfp != NULL)
  {
    size_t curPos = ftell(logfp);

    if (curPos != 0)
    {
      text_window_t *tw = MsgWindows[msg_win_log].tw;

      /* safeguard in case the message window hasn't been created yet for some reason */
      if (tw != NULL)
      {
        char *text = (char*)lib_malloc(curPos + 1);

        if (text != NULL)
        {
          fseek(logfp, 0, SEEK_SET);
          fread(text, 1, curPos, logfp);
          text[curPos] = '\0';
          textwin_add_text(tw, text);
          if (FullScreenMode == 0)
          {
            int block[WindowB_WFlags+1];
            block[WindowB_Handle] = MsgWindows[msg_win_log].win->Handle;
            Wimp_GetWindowState(block);
            if ((block[WindowB_WFlags] & (1<<16)) != 0)
              textwin_caret_to_end(tw);
          }
          lib_free(text);
        }
      }
      fseek(logfp, 0, SEEK_SET);
    }
  }
}
Exemplo n.º 2
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;
        }
    }

}
Exemplo n.º 3
0
int ui_message_window_open(message_window_e mwin, const char *title, const char *message, int cols, int rows)
{
  text_window_t *tw;
  message_window_t *mw;

  switch (mwin)
  {
    case msg_win_monitor:
      Wimp_GetCaretPosition(&LastCaret);
      tw = MsgWinDescs;
      mw = MsgWindows;
      if (mw->win == NULL)
      {
        mw->win = wimp_window_clone(MessageWindow);
        wimp_window_create((int*)(mw->win), title);
      }
      if (mw->tw == NULL)
      {
        mw->tw = tw;
        ui_msgwin_set_dimensions(mw, cols, rows);
        textwin_init(tw, mw->win, message, NULL);
        (tw->Events)[WimpEvt_CloseWin] = MsgCloseEvents[msg_win_monitor];
      }
      textwin_open_centered(tw, tw->MaxWidth, 1024, ScreenMode.resx, ScreenMode.resy);
      textwin_set_caret(tw, 0, 0);
      MsgWindows[mwin].Flags |= MSGWIN_FLAG_OPEN;
      break;
    case msg_win_license:
    case msg_win_warranty:
    case msg_win_contrib:
    case msg_win_log:
      tw = MsgWinDescs + mwin;
      mw = MsgWindows + mwin;
      if (mw->win == NULL)
      {
        mw->win = wimp_window_clone(MessageWindow);
        wimp_window_create((int*)(mw->win), title);
      }
      if (mw->tw == NULL)
      {
        mw->tw = tw;
        ui_msgwin_set_dimensions(mw, cols, rows);
        textwin_init(tw, mw->win, message, NULL);
        (tw->Events)[WimpEvt_CloseWin] = MsgCloseEvents[mwin];
      }

      if (mwin == msg_win_log)
      {
        int block[WindowB_WFlags+1];

        /* if already opened then raise, otherwise open in bottom left corner */
        block[WindowB_Handle] = mw->win->Handle;
        Wimp_GetWindowState(block);
        block[WindowB_Stackpos] = -1;
        if ((block[WindowB_WFlags] & (1<<16)) == 0)
        {
          /* open in the bottom left corner, but leave room below for the icon bar */
          textwin_open(tw, tw->MaxWidth, tw->MinHeight, 0, 160 + tw->MinHeight);
        }
        else
        {
          /* just raise */
          Wimp_OpenWindow(block);
        }
        /* always set caret at end */
        textwin_caret_to_end(tw);
      }
      else
      {
        textwin_open_centered(tw, tw->MaxWidth, 1024, ScreenMode.resx, ScreenMode.resy);
      }

      MsgWindows[mwin].Flags |= MSGWIN_FLAG_OPEN;
      break;
    default:
      return -1;
  }
  return 0;
}