Slots in pvserver

Yes we know we have no signals/slots in pvserver, like we have in Qt. But we have something similar.

// here are our slots, we know they are not the same as in qt :-)
// You may insert them in your mask.
// But you may also generate them with your tools and
// #include "slots_mask1.cpp"

static int slotDefineMask(PARAM *p, DATA *d);
{
  if(p == NULL || d == NULL) return 1;
  return 0;
}

static int slotNullEvent(PARAM *p, DATA *d)
{
  if(p == NULL || d == NULL) return 1;
  return 0;
}

static int slotButtonEvent(PARAM *p, int id, DATA *d)
{
  if(p == NULL || id < 0 || d == NULL) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotButtonPressedEvent(PARAM *p, int id, DATA *d)
{
  if(p == NULL || id < 0 || d == NULL) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotButtonReleasedEvent(PARAM *p, int id, DATA *d)
{
  if(p == NULL || id < 0 || d == NULL) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotTextEvent(PARAM *p, int id, DATA *d, const char *text)
{
  if(p == NULL || id < 0 || d == NULL || text == NULL) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotSliderEvent(PARAM *p, int id, DATA *d, int val)
{
  if(p == NULL || id < 0 || d == NULL || val < 0) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotCheckboxEvent(PARAM *p, int id, DATA *d, const char *text)
{
  if(p == NULL || id < 0 || d == NULL || text == NULL) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotRadioButtonEvent(PARAM *p, int id, DATA *d, const char *text)
{
  if(p == NULL || id < 0 || d == NULL || text == NULL) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotGlInitializeEvent(PARAM *p, int id, DATA *d)
{
  if(p == NULL || id < 0 || d == NULL) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotGlPaintEvent(PARAM *p, int id, DATA *d)
{
  if(p == NULL || id < 0 || d == NULL) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotGlResizeEvent(PARAM *p, int id, DATA *d, int w, int h)
{
  if(p == NULL || id < 0 || d == NULL || w < 0 || h < 0) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotGlIdleEvent(PARAM *p, int id, DATA *d)
{
  if(p == NULL || id < 0 || d == NULL) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotTabEvent(PARAM *p, int id, DATA *d, int val)
{
  if(p == NULL || id < 0 || d == NULL || val < 0) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotTableTextEvent(PARAM *p, int id, DATA *d, int x, int y, const char *str1)
{
  if(p == NULL || id < 0 || d == NULL || x < -1 || y < -1 || str1 == NULL) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotTableClickedEvent(PARAM *p, int id, DATA *d, int x, int y, int button)
{
  if(p == NULL || id < 0 || d == NULL || x < -1 || y < -1 || button < 0) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotSelectionEvent(PARAM *p, int id, DATA *d, int val, const char *str1)
{
  if(p == NULL || id < 0 || d == NULL || val < 0 || str1 == NULL) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotClipboardEvent(PARAM *p, int id, DATA *d, int val)
{
  if(p == NULL || id < 0 || d == NULL || val < 0) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotRightMouseEvent(PARAM *p, int id, DATA *d, const char *text)
{
  if(p == NULL || id < 0 || d == NULL || text == NULL) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotKeyboardEvent(PARAM *p, int id, DATA *d, int val)
{
  if(p == NULL || id < 0 || d == NULL || val < 0) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotMouseMovedEvent(PARAM *p, int id, DATA *d, float xval, float yval)
{
  if(p == NULL || id < 0 || d == NULL || xval < 0.0f || yval < 0.0f) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotMousePressedEvent(PARAM *p, int id, DATA *d, float xval, float yval)
{
  if(p == NULL || id < 0 || d == NULL || xval < 0.0f || yval < 0.0f) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotMouseReleasedEvent(PARAM *p, int id, DATA *d, float xval, float yval)
{
  if(p == NULL || id < 0 || d == NULL || xval < 0.0f || yval < 0.0f) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

static int slotUserEvent(PARAM *p, int id, DATA *d, const char *text)
{
  if(p == NULL || id < 0 || d == NULL || text == NULL) return 1;
  switch(id) // id = id of widget
  {
    default:
      break;
  }
  return 0;
}

int show_mask1(PARAM *p)
{
  DATA d;
  char event[MAX_EVENT_LENGTH];
  char text[MAX_EVENT_LENGTH];
  char str1[MAX_EVENT_LENGTH];
  int  i,w,h,val,x,y,button;
  float xval, yval;

  memset(&d,0,sizeof(DATA));
  defineMask(p);
  slotDefineMask(p,&d);
  readData(&d); // from shared memory, database or something else
  showData(p,&d);
  while(1)
  {
    pvPollEvent(p,event);
    switch(pvParseEvent(event, &i, text))
    {
      case NULL_EVENT:
        readData(&d); // from shared memory, database or something else
        showData(p,&d);
        slotNullEvent(p,&d);
        break;
      case BUTTON_EVENT:
        slotButtonEvent(p,i,&d);
        printf("BUTTON_EVENT id=%d\n",i);
        break;
      case BUTTON_PRESSED_EVENT:
        slotButtonPressedEvent(p,i,&d);
        printf("BUTTON_PRESSED_EVENT id=%d\n",i);
        break;
      case BUTTON_RELEASED_EVENT:
        slotButtonReleasedEvent(p,i,&d);
        printf("BUTTON_RELEASED_EVENT id=%d\n",i);
        break;
      case TEXT_EVENT:
        slotTextEvent(p,i,&d,text);
        printf("TEXT_EVENT id=%d %s\n",i,text);
        break;
      case SLIDER_EVENT:
        sscanf(text,"(%d)",&val);
        slotSliderEvent(p,i,&d,val);
        printf("SLIDER_EVENT val=%d\n",val);
        break;
      case CHECKBOX_EVENT:
        slotCheckboxEvent(p,i,&d,text);
        printf("CHECKBOX_EVENT id=%d %s\n",i,text);
        break;
      case RADIOBUTTON_EVENT:
        slotRadioButtonEvent(p,i,&d,text);
        printf("RADIOBUTTON_EVENT id=%d %s\n",i,text);
        break;
      case GL_INITIALIZE_EVENT:
        slotGlInitializeEvent(p,i,&d);
        printf("you have to call initializeGL()\n");
        break;
      case GL_PAINT_EVENT:
        slotGlPaintEvent(p,i,&d);
        printf("you have to call paintGL()\n");
        break;
      case GL_RESIZE_EVENT:
        sscanf(text,"(%d,%d)",&w,&h);
        slotGlResizeEvent(p,i,&d,w,h);
        printf("you have to call resizeGL(w,h)\n");
        break;
      case GL_IDLE_EVENT:
        slotGlIdleEvent(p,i,&d);
        break;
      case TAB_EVENT:
        sscanf(text,"(%d)",&val);
        slotTabEvent(p,i,&d,val);
        printf("TAB_EVENT(%d,page=%d)\n",i,val);
        break;
      case TABLE_TEXT_EVENT:
        sscanf(text,"(%d,%d,",&x,&y);
        pvGetText(text,str1);
        slotTableTextEvent(p,i,&d,x,y,str1);
        printf("TABLE_TEXT_EVENT(%d,%d,\"%s\")\n",x,y,str1);
        break;
      case TABLE_CLICKED_EVENT:
        sscanf(text,"(%d,%d,%d)",&x,&y,&button);
        slotTableClickedEvent(p,i,&d,x,y,button);
        printf("TABLE_CLICKED_EVENT(%d,%d,button=%d)\n",x,y,button);
        break;
      case SELECTION_EVENT:
        sscanf(text,"(%d,",&val);
        pvGetText(text,str1);
        slotSelectionEvent(p,i,&d,val,str1);
        printf("SELECTION_EVENT(column=%d,\"%s\")\n",val,str1);
        break;
      case CLIPBOARD_EVENT:
        sscanf(text,"(%d",&val);
        slotClipboardEvent(p,i,&d,val);
        printf("CLIPBOARD_EVENT(id=%d)\n",val);
        printf("clipboard = \n%s\n",p->clipboard);
        break;
      case RIGHT_MOUSE_EVENT:
        printf("RIGHT_MOUSE_EVENT id=%d text=%s\n",i,text);
        slotRightMouseEvent(p,i,&d,text);
        //pvPopupMenu(p,-1,"Menu1,Menu2,,Menu3");
        break;
      case KEYBOARD_EVENT:
        sscanf(text,"(%d",&val);
        slotKeyboardEvent(p,i,&d,val);
        printf("KEYBOARD_EVENT modifier=%d key=%d\n",i,val);
        break;
      case PLOT_MOUSE_MOVED_EVENT:
        sscanf(text,"(%f,%f)",&xval,&yval);
        slotMouseMovedEvent(p,i,&d,xval,yval);
        printf("PLOT_MOUSE_MOVE %f %f\n",xval,yval);
        break;
      case PLOT_MOUSE_PRESSED_EVENT:
        sscanf(text,"(%f,%f)",&xval,&yval);
        slotMousePressedEvent(p,i,&d,xval,yval);
        printf("PLOT_MOUSE_PRESSED %f %f\n",xval,yval);
        break;
      case PLOT_MOUSE_RELEASED_EVENT:
        sscanf(text,"(%f,%f)",&xval,&yval);
        slotMouseReleasedEvent(p,i,&d,xval,yval);
        printf("PLOT_MOUSE_RELEASED %f %f\n",xval,yval);
        break;
      case USER_EVENT:
        slotUserEvent(p,i,&d,text);
        printf("USER_EVENT id=%d %s\n",i,text);
        break;
      default:
        printf("UNKNOWN_EVENT id=%d %s\n",i,text);
        break;
    }
  }
}