OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.0/] [gdb/] [tui/] [tuiCommand.c] - Diff between revs 107 and 1765

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 107 Rev 1765
/*
/*
   ** tuiCommand.c
   ** tuiCommand.c
   **     This module contains functions specific to command window processing.
   **     This module contains functions specific to command window processing.
 */
 */
 
 
 
 
#include "defs.h"
#include "defs.h"
#include "tui.h"
#include "tui.h"
#include "tuiData.h"
#include "tuiData.h"
#include "tuiWin.h"
#include "tuiWin.h"
#include "tuiIO.h"
#include "tuiIO.h"
 
 
 
 
/*****************************************
/*****************************************
** STATIC LOCAL FUNCTIONS FORWARD DECLS    **
** STATIC LOCAL FUNCTIONS FORWARD DECLS    **
******************************************/
******************************************/
 
 
 
 
 
 
/*****************************************
/*****************************************
** PUBLIC FUNCTIONS                        **
** PUBLIC FUNCTIONS                        **
******************************************/
******************************************/
 
 
/*
/*
   ** tuiDispatchCtrlChar().
   ** tuiDispatchCtrlChar().
   **        Dispatch the correct tui function based upon the control character.
   **        Dispatch the correct tui function based upon the control character.
 */
 */
unsigned int
unsigned int
#ifdef __STDC__
#ifdef __STDC__
tuiDispatchCtrlChar (
tuiDispatchCtrlChar (
                      unsigned int ch)
                      unsigned int ch)
#else
#else
tuiDispatchCtrlChar (ch)
tuiDispatchCtrlChar (ch)
     unsigned int ch;
     unsigned int ch;
#endif
#endif
{
{
  TuiWinInfoPtr winInfo = tuiWinWithFocus ();
  TuiWinInfoPtr winInfo = tuiWinWithFocus ();
 
 
  /*
  /*
     ** If the command window has the logical focus, or no-one does
     ** If the command window has the logical focus, or no-one does
     ** assume it is the command window; in this case, pass the
     ** assume it is the command window; in this case, pass the
     ** character on through and do nothing here.
     ** character on through and do nothing here.
   */
   */
  if (winInfo == (TuiWinInfoPtr) NULL || winInfo == cmdWin)
  if (winInfo == (TuiWinInfoPtr) NULL || winInfo == cmdWin)
    return ch;
    return ch;
  else
  else
    {
    {
      unsigned int c = 0, chCopy = ch;
      unsigned int c = 0, chCopy = ch;
      register int i;
      register int i;
      char *term;
      char *term;
 
 
      /* If this is an xterm, page next/prev keys aren't returned
      /* If this is an xterm, page next/prev keys aren't returned
         ** by keypad as a single char, so we must handle them here.
         ** by keypad as a single char, so we must handle them here.
         ** Seems like a bug in the curses library?
         ** Seems like a bug in the curses library?
       */
       */
      term = (char *) getenv ("TERM");
      term = (char *) getenv ("TERM");
      for (i = 0; (term && term[i]); i++)
      for (i = 0; (term && term[i]); i++)
        term[i] = toupper (term[i]);
        term[i] = toupper (term[i]);
      if ((strcmp (term, "XTERM") == 0) && m_isStartSequence (ch))
      if ((strcmp (term, "XTERM") == 0) && m_isStartSequence (ch))
        {
        {
          unsigned int pageCh = 0, tmpChar;
          unsigned int pageCh = 0, tmpChar;
 
 
          tmpChar = 0;
          tmpChar = 0;
          while (!m_isEndSequence (tmpChar))
          while (!m_isEndSequence (tmpChar))
            {
            {
              tmpChar = (int) wgetch (cmdWin->generic.handle);
              tmpChar = (int) wgetch (cmdWin->generic.handle);
              if (!tmpChar)
              if (!tmpChar)
                break;
                break;
              if (tmpChar == 53)
              if (tmpChar == 53)
                pageCh = KEY_PPAGE;
                pageCh = KEY_PPAGE;
              else if (tmpChar == 54)
              else if (tmpChar == 54)
                pageCh = KEY_NPAGE;
                pageCh = KEY_NPAGE;
            }
            }
          chCopy = pageCh;
          chCopy = pageCh;
        }
        }
 
 
      switch (chCopy)
      switch (chCopy)
        {
        {
        case KEY_NPAGE:
        case KEY_NPAGE:
          tuiScrollForward (winInfo, 0);
          tuiScrollForward (winInfo, 0);
          break;
          break;
        case KEY_PPAGE:
        case KEY_PPAGE:
          tuiScrollBackward (winInfo, 0);
          tuiScrollBackward (winInfo, 0);
          break;
          break;
        case KEY_DOWN:
        case KEY_DOWN:
        case KEY_SF:
        case KEY_SF:
          tuiScrollForward (winInfo, 1);
          tuiScrollForward (winInfo, 1);
          break;
          break;
        case KEY_UP:
        case KEY_UP:
        case KEY_SR:
        case KEY_SR:
          tuiScrollBackward (winInfo, 1);
          tuiScrollBackward (winInfo, 1);
          break;
          break;
        case KEY_RIGHT:
        case KEY_RIGHT:
          tuiScrollLeft (winInfo, 1);
          tuiScrollLeft (winInfo, 1);
          break;
          break;
        case KEY_LEFT:
        case KEY_LEFT:
          tuiScrollRight (winInfo, 1);
          tuiScrollRight (winInfo, 1);
          break;
          break;
        case '\f':
        case '\f':
          tuiRefreshAll ();
          tuiRefreshAll ();
          break;
          break;
        default:
        default:
          c = chCopy;
          c = chCopy;
          break;
          break;
        }
        }
      return c;
      return c;
    }
    }
}                               /* tuiDispatchCtrlChar */
}                               /* tuiDispatchCtrlChar */
 
 
 
 
/*
/*
   ** tuiIncrCommandCharCountBy()
   ** tuiIncrCommandCharCountBy()
   **     Increment the current character count in the command window,
   **     Increment the current character count in the command window,
   **     checking for overflow.  Returns the new value of the char count.
   **     checking for overflow.  Returns the new value of the char count.
 */
 */
int
int
#ifdef __STDC__
#ifdef __STDC__
tuiIncrCommandCharCountBy (
tuiIncrCommandCharCountBy (
                            int count)
                            int count)
#else
#else
tuiIncrCommandCharCountBy (count)
tuiIncrCommandCharCountBy (count)
     int count;
     int count;
#endif
#endif
{
{
  if (tui_version)
  if (tui_version)
    {
    {
      if ((count + cmdWin->detail.commandInfo.curch) >= cmdWin->generic.width)
      if ((count + cmdWin->detail.commandInfo.curch) >= cmdWin->generic.width)
        cmdWin->detail.commandInfo.curch =
        cmdWin->detail.commandInfo.curch =
          (count + cmdWin->detail.commandInfo.curch) - cmdWin->generic.width;
          (count + cmdWin->detail.commandInfo.curch) - cmdWin->generic.width;
      else
      else
        cmdWin->detail.commandInfo.curch += count;
        cmdWin->detail.commandInfo.curch += count;
    }
    }
 
 
  return cmdWin->detail.commandInfo.curch;
  return cmdWin->detail.commandInfo.curch;
}                               /* tuiIncrCommandCharCountBy */
}                               /* tuiIncrCommandCharCountBy */
 
 
 
 
/*
/*
   ** tuiDecrCommandCharCountBy()
   ** tuiDecrCommandCharCountBy()
   **     Decrement the current character count in the command window,
   **     Decrement the current character count in the command window,
   **     checking for overflow.  Returns the new value of the char count.
   **     checking for overflow.  Returns the new value of the char count.
 */
 */
int
int
#ifdef __STDC__
#ifdef __STDC__
tuiDecrCommandCharCountBy (
tuiDecrCommandCharCountBy (
                            int count)
                            int count)
#else
#else
tuiDecrCommandCharCountBy (count)
tuiDecrCommandCharCountBy (count)
     int count;
     int count;
#endif
#endif
{
{
  if (tui_version)
  if (tui_version)
    {
    {
      if ((cmdWin->detail.commandInfo.curch - count) < 0)
      if ((cmdWin->detail.commandInfo.curch - count) < 0)
        cmdWin->detail.commandInfo.curch =
        cmdWin->detail.commandInfo.curch =
          cmdWin->generic.width + (cmdWin->detail.commandInfo.curch - count);
          cmdWin->generic.width + (cmdWin->detail.commandInfo.curch - count);
      else
      else
        cmdWin->detail.commandInfo.curch -= count;
        cmdWin->detail.commandInfo.curch -= count;
    }
    }
 
 
  return cmdWin->detail.commandInfo.curch;
  return cmdWin->detail.commandInfo.curch;
}                               /* tuiDecrCommandCharCountBy */
}                               /* tuiDecrCommandCharCountBy */
 
 
 
 
/*
/*
   ** tuiSetCommandCharCountTo()
   ** tuiSetCommandCharCountTo()
   **     Set the character count to count.
   **     Set the character count to count.
 */
 */
int
int
#ifdef __STDC__
#ifdef __STDC__
tuiSetCommandCharCountTo (
tuiSetCommandCharCountTo (
                           int count)
                           int count)
#else
#else
tuiSetCommandCharCountTo (count)
tuiSetCommandCharCountTo (count)
     int count;
     int count;
#endif
#endif
{
{
  if (tui_version)
  if (tui_version)
    {
    {
      if (count > cmdWin->generic.width - 1)
      if (count > cmdWin->generic.width - 1)
        {
        {
          cmdWin->detail.commandInfo.curch = 0;
          cmdWin->detail.commandInfo.curch = 0;
          tuiIncrCommandCharCountBy (count);
          tuiIncrCommandCharCountBy (count);
        }
        }
      else
      else
        cmdWin->detail.commandInfo.curch -= count;
        cmdWin->detail.commandInfo.curch -= count;
    }
    }
 
 
  return cmdWin->detail.commandInfo.curch;
  return cmdWin->detail.commandInfo.curch;
}                               /* tuiSetCommandCharCountTo */
}                               /* tuiSetCommandCharCountTo */
 
 
 
 
 
 
/*
/*
   ** tuiClearCommandCharCount()
   ** tuiClearCommandCharCount()
   **     Clear the character count to count.
   **     Clear the character count to count.
 */
 */
int
int
#ifdef __STDC__
#ifdef __STDC__
tuiClearCommandCharCount (void)
tuiClearCommandCharCount (void)
#else
#else
tuiClearCommandCharCount ()
tuiClearCommandCharCount ()
#endif
#endif
{
{
  if (tui_version)
  if (tui_version)
    cmdWin->detail.commandInfo.curch = 0;
    cmdWin->detail.commandInfo.curch = 0;
 
 
  return cmdWin->detail.commandInfo.curch;
  return cmdWin->detail.commandInfo.curch;
}                               /* tuiClearCommandCharCount */
}                               /* tuiClearCommandCharCount */
 
 
 
 
 
 
/*****************************************
/*****************************************
** STATIC LOCAL FUNCTIONS                 **
** STATIC LOCAL FUNCTIONS                 **
******************************************/
******************************************/
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.