#include "config.h"
#ifdef HAVE_NCURSES_H
#include <ncurses.h>
#else
#ifdef HAVE_CURSES_H
#include <curses.h>
#endif
#endif
#include "defs.h"
#include "tui.h"
#include "tuiData.h"
#include "tuiGeneralWin.h"
#include "tuiRegs.h"
int
tuiFirstDataItemDisplayed (void)
{
int elementNo = (-1);
int i;
for (i = 0; (i < dataWin->generic.contentSize && elementNo < 0); i++)
{
TuiGenWinInfoPtr dataItemWin;
dataItemWin = &((TuiWinContent)
dataWin->generic.content)[i]->whichElement.dataWindow;
if (dataItemWin->handle != (WINDOW *) NULL && dataItemWin->isVisible)
elementNo = i;
}
return elementNo;
}
int
tuiFirstDataElementNoInLine (int lineNo)
{
int firstElementNo = (-1);
if ((firstElementNo = tuiFirstRegElementNoInLine (lineNo)) == -1)
{
}
return firstElementNo;
}
void
tuiDeleteDataContentWindows (void)
{
int i;
TuiGenWinInfoPtr dataItemWinPtr;
for (i = 0; (i < dataWin->generic.contentSize); i++)
{
dataItemWinPtr = &((TuiWinContent)
dataWin->generic.content)[i]->whichElement.dataWindow;
tuiDelwin (dataItemWinPtr->handle);
dataItemWinPtr->handle = (WINDOW *) NULL;
dataItemWinPtr->isVisible = FALSE;
}
return;
}
void
tuiEraseDataContent (char *prompt)
{
werase (dataWin->generic.handle);
checkAndDisplayHighlightIfNeeded (dataWin);
if (prompt != (char *) NULL)
{
int halfWidth = (dataWin->generic.width - 2) / 2;
int xPos;
if (strlen (prompt) >= halfWidth)
xPos = 1;
else
xPos = halfWidth - strlen (prompt);
mvwaddstr (dataWin->generic.handle,
(dataWin->generic.height / 2),
xPos,
prompt);
}
wrefresh (dataWin->generic.handle);
return;
}
void
tuiDisplayAllData (void)
{
if (dataWin->generic.contentSize <= 0)
tuiEraseDataContent (NO_DATA_STRING);
else
{
tuiEraseDataContent ((char *) NULL);
tuiDeleteDataContentWindows ();
checkAndDisplayHighlightIfNeeded (dataWin);
tuiDisplayRegistersFrom (0);
if (dataWin->detail.dataDisplayInfo.dataContent !=
(TuiWinContent) NULL &&
dataWin->detail.dataDisplayInfo.dataContentCount > 0)
{
}
}
return;
}
void
tuiDisplayDataFromLine (int lineNo)
{
int _lineNo = lineNo;
if (lineNo < 0)
_lineNo = 0;
checkAndDisplayHighlightIfNeeded (dataWin);
if (dataWin->detail.dataDisplayInfo.dataContentCount <= 0)
tuiDisplayRegistersFromLine (_lineNo, TRUE);
else
{
int elementNo, startLineNo;
int regsLastLine = tuiLastRegsLineNo ();
if (tuiDisplayRegistersFromLine (_lineNo, FALSE) < 0)
{
if (regsLastLine < _lineNo)
{
}
}
else
{
}
}
return;
}
void
tuiDisplayDataFrom (int elementNo, int reuseWindows)
{
int firstLine = (-1);
if (elementNo < dataWin->detail.dataDisplayInfo.regsContentCount)
firstLine = tuiLineFromRegElementNo (elementNo);
else
{
}
if (firstLine >= 0)
{
tuiEraseDataContent ((char *) NULL);
if (!reuseWindows)
tuiDeleteDataContentWindows ();
tuiDisplayDataFromLine (firstLine);
}
return;
}
void
tuiRefreshDataWin (void)
{
tuiEraseDataContent ((char *) NULL);
if (dataWin->generic.contentSize > 0)
{
int firstElement = tuiFirstDataItemDisplayed ();
if (firstElement >= 0)
tuiDisplayDataFrom (firstElement, TRUE);
}
return;
}
void
tuiCheckDataValues (struct frame_info *frame)
{
tuiCheckRegisterValues (frame);
if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible)
{
int i;
for (i = 0; dataWin->detail.dataDisplayInfo.dataContentCount; i++)
{
#ifdef LATER
TuiDataElementPtr dataElementPtr;
TuiGenWinInfoPtr dataItemWinPtr;
Opaque newValue;
dataItemPtr = &dataWin->detail.dataDisplayInfo.
dataContent[i]->whichElement.dataWindow;
dataElementPtr = &((TuiWinContent)
dataItemWinPtr->content)[0]->whichElement.data;
if value
has changed (dataElementPtr, frame, &newValue)
{
dataElementPtr->value = newValue;
update the display with the new value, hiliting it.
}
#endif
}
}
}
void
tuiVerticalDataScroll (TuiScrollDirection scrollDirection, int numToScroll)
{
int firstElementNo;
int firstLine = (-1);
firstElementNo = tuiFirstDataItemDisplayed ();
if (firstElementNo < dataWin->detail.dataDisplayInfo.regsContentCount)
firstLine = tuiLineFromRegElementNo (firstElementNo);
else
{
}
if (firstLine >= 0)
{
int lastElementNo, lastLine;
if (scrollDirection == FORWARD_SCROLL)
firstLine += numToScroll;
else
firstLine -= numToScroll;
tuiEraseDataContent ((char *) NULL);
tuiDeleteDataContentWindows ();
tuiDisplayDataFromLine (firstLine);
}
return;
}