Esempio n. 1
0
char* iupMatrixGetMarkAttrib(Ihandle* ih, int lin, int col)
{
  if (ih->data->mark_mode == IMAT_MARK_NO)
    return "0";

  if (lin >= 0 && col >= 0)  /* both are specified */
  {
    if (!iupMatrixCheckCellPos(ih, lin, col))
      return NULL;

    if (ih->data->mark_mode == IMAT_MARK_CELL)
    {
      if (lin == 0 || col == 0)  /* title can NOT have a mark */
        return NULL;

      if (ih->data->callback_mode)
      {
        IFnii mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB");
        if (mark_cb)
        {
          if (mark_cb(ih, lin, col))
            return "1";
          else
            return "0";
        }
        else
          return NULL;  /* check the hash table */
      }
      else
      {
        if (ih->data->cells[lin][col].flags & IMAT_IS_MARKED)
          return "1";
        else
          return "0";
      }
    }
    else
    {
      if (ih->data->mark_mode & IMAT_MARK_LIN && 
          lin>0 && 
          ih->data->lines.dt[lin].flags & IMAT_IS_MARKED)
        return "1";

      if (ih->data->mark_mode & IMAT_MARK_COL && 
          col>0 && 
          ih->data->columns.dt[col].flags & IMAT_IS_MARKED)
        return "1";

      return "0";
    }
  }

  return NULL;
}
Esempio n. 2
0
char* iupMatrixGetMarkAttrib(Ihandle* ih, const char* name_id)
{
  int lin = 0, col = 0;

  if (ih->data->mark_mode == IMAT_MARK_NO)
    return "0";

  if (iupStrToIntInt(name_id, &lin, &col, ':') == 2)
  {
    if (!iupMatrixCheckCellPos(ih, lin, col))
      return NULL;

    if (ih->data->mark_mode == IMAT_MARK_CELL)
    {
      if (lin == 0 || col == 0) /* title can NOT have a mark */
        return NULL;

      if (ih->data->callback_mode)
      {
        IFnii mark_cb = (IFnii)IupGetCallback(ih, "MARK_CB");
        if (mark_cb)
        {
          if (mark_cb(ih, lin, col))
            return "1";
          else
            return "0";
        }
        else
          return NULL;  /* let check the hash table */
      }
      else
      {
        if (ih->data->cells[lin][col].flags & IUPMAT_MARK)
          return "1";
        else
          return "0";
      }
    }
    else
    {
      if (ih->data->mark_mode & IMAT_MARK_LIN && lin!=0 && ih->data->lines.flags[lin] & IUPMAT_MARK)
        return "1";

      if (ih->data->mark_mode & IMAT_MARK_COL && col!=0 && ih->data->columns.flags[col] & IUPMAT_MARK)
        return "1";

      return "0";
    }
  }

  return NULL;
}