#include <panel_item.h>

panel& panel::caret_item(panel_item& i) { caret_item((Panel_item)i); return *this; }

panel& panel::caret_item(text_item& i) { caret_item((Panel_item)i); return *this; }

panel& panel::caret_item(int n) { window_set(w, PANEL_CARET_ITEM, ((panel_item*)item[n])->pi, 0); return *this; }

panel& panel::destroy_items(void)
{ for (int n = 1; n <= item.length(); n++)
  { panel_item* temp = (panel_item*)item[n];
    Panel_item Pi = temp->pi;
    panel_destroy_item(Pi);
    item -= (void*)item[n];
  }
  return *this;
}

panel_item panel::caret_item(void) 
{ Panel_item Pi = (Panel_item)window_get(w, PANEL_CARET_ITEM); 
  for (int n = 1; n <= item.length(); n++)
    if (&Pi == item[n]) then
      return *((panel_item*)item[n]);
// unreachable
  return *(panel_item*)0;
}

panel_item panel::first_item(void) { return *((panel_item*)item[1]); }

panel_item panel::last_item(void) { return *((panel_item*)item[item.length()]); }

int panel::caret_on_last(void) { return ((Panel_item)window_get(w, PANEL_CARET_ITEM) == *(Panel_item*)item[item.length()]); }

int panel::caret_on_item(int n) { return ((Panel_item)window_get(w, PANEL_CARET_ITEM) == *(Panel_item*)item[n]); }
