Example #1
0
static int
set_source(glw_view_eval_context_t *ec, const token_attrib_t *a,
	   struct token *t)
{
  glw_t *w = ec->w;

  switch(t->type) {
  case TOKEN_VOID:
    if(w->glw_class->gc_set_source != NULL)
      w->glw_class->gc_set_source(w, NULL);
    break;

  case TOKEN_CSTRING:
    if(w->glw_class->gc_set_source != NULL)
      w->glw_class->gc_set_source(w, t->t_cstring);
    break;

  case TOKEN_RSTRING:
  case TOKEN_LINK:
    if(w->glw_class->gc_set_source != NULL)
      w->glw_class->gc_set_source(w, rstr_get(t->t_rstring));
    break;

  default:
    return glw_view_seterr(ec->ei, t, 
			    "Attribute '%s' expects a string or scalar not %s",
			   a->name, token2name(t));
  }
  return 0;
}
Example #2
0
static int
set_path(glw_view_eval_context_t *ec, const token_attrib_t *a,
	 struct token *t)
{
  glw_t *w = ec->w;

  rstr_t *r;

  void (*fn)(glw_t *w, rstr_t *r) = a->fn;

  switch(t->type) {
  case TOKEN_VOID:
    fn(w, NULL);
    return 0;

  case TOKEN_RSTRING:
  case TOKEN_LINK:
    r = t->t_rstring;
    break;

  default:
    return glw_view_seterr(ec->ei, t, 
			    "Attribute '%s' expects a string or scalar not %s",
			   a->name, token2name(t));
  }

  r = fa_absolute_path(r, t->file);
  fn(w, r);
  rstr_release(r);
  return 0;
}
Example #3
0
static int
set_float3(glw_view_eval_context_t *ec, const token_attrib_t *a, 
	   struct token *t)
{
  const float *vec3;
  float v[3];

  switch(t->type) {
  case TOKEN_VECTOR_FLOAT:

    switch(t->t_elements) {

    case 3:
      vec3 = t->t_float_vector_int;
      break;

    default:
      return glw_view_seterr(ec->ei, t,
			     "Attribute '%s': invalid vector size %d",
			     a->name, t->t_elements);
    }
    break;

  case TOKEN_FLOAT:
    v[0] = v[1] = v[2] = t->t_float;
    vec3 = v;
    break;

  case TOKEN_INT:
    v[0] = v[1] = v[2] = t->t_int;
    vec3 = v;
    break;

  case TOKEN_VOID:
    v[0] = v[1] = v[2] = 0;
    vec3 = v;
    break;
  default:
    return glw_view_seterr(ec->ei, t, "Attribute '%s' expects a vec3, got %s",
			   a->name, token2name(t));
  }

  glw_t *w = ec->w;
  const glw_class_t *gc = w->glw_class;

  int r = gc->gc_set_float3 ? gc->gc_set_float3(w, a->attrib, vec3) : -1;

  if(r == -1) {
    TRACE(TRACE_DEBUG, "GLW",
          "Widget %s at %s:%d does not respond to attribute %s",
          gc->gc_name, rstr_get(t->file), t->line, a->name);
    return 0;
  }
  if(r)
    attr_need_refresh(w->glw_root, t, a, r);

  return 0;
}
Example #4
0
static int
set_propref(glw_view_eval_context_t *ec, const token_attrib_t *a,
	   struct token *t)
{
  if(t->type != TOKEN_PROPERTY_REF)
    return glw_view_seterr(ec->ei, t,
			   "Attribute '%s' expects a property ref, got %s",
			   a->name, token2name(t));

  glw_set(ec->w, a->attrib, t->t_prop, NULL);
  return 0;
}
Example #5
0
static int
set_int16_4(glw_view_eval_context_t *ec, const token_attrib_t *a, 
	   struct token *t)
{
  int16_t v[4];

  switch(t->type) {
  case TOKEN_VECTOR_FLOAT:

    switch(t->t_elements) {

    case 4:
      v[0] = t->t_float_vector_int[0];
      v[1] = t->t_float_vector_int[1];
      v[2] = t->t_float_vector_int[2];
      v[3] = t->t_float_vector_int[3];
      break;

    case 2:
      v[0] = t->t_float_vector_int[0];
      v[1] = t->t_float_vector_int[1];
      v[2] = t->t_float_vector_int[0];
      v[3] = t->t_float_vector_int[1];
      break;

    default:
      return glw_view_seterr(ec->ei, t,
			     "Attribute '%s': invalid vector size %d",
			     a->name, t->t_elements);
    }
    break;

  case TOKEN_FLOAT:
    v[0] = v[1] = v[2] = v[3] = t->t_float;
    break;

  case TOKEN_INT:
    v[0] = v[1] = v[2] = v[3] = t->t_int;
    break;

  case TOKEN_VOID:
    v[0] = v[1] = v[2] = v[3] = 0;
    break;

  default:
    return glw_view_seterr(ec->ei, t, "Attribute '%s' expects a vec4, got %s",
			   a->name, token2name(t));
  }

  void (*fn)(struct glw *w, const int16_t *v4) = a->fn;
  fn(ec->w, v);
  return 0;
}
Example #6
0
void
glw_view_print_tree(token_t *f, int indent)
{
  token_t *c = f;

  while(c != NULL) {
    printf("%*.s%s %p\n", indent, "", token2name(c), c);
    
    if(c->child != NULL) {
      glw_view_print_tree(c->child, indent + 4);
    }
    c = c->next;
  }
}
Example #7
0
static int
set_caption(glw_view_eval_context_t *ec, const token_attrib_t *a,
	    struct token *t)
{
  char buf[30];
  const char *str;
  prop_str_type_t type = 0;

  switch(t->type) {
  case TOKEN_VOID:
    str = NULL;
    break;

  case TOKEN_CSTRING:
    str = t->t_cstring;
    break;

  case TOKEN_RSTRING:
    type = t->t_rstrtype;
    /* FALLTHRU */
  case TOKEN_LINK:
    str = rstr_get(t->t_rstring);
    break;

  case TOKEN_INT:
    snprintf(buf, sizeof(buf), "%d", t->t_int);
    str = buf;
    break;

  case TOKEN_FLOAT:
    snprintf(buf, sizeof(buf), "%f", t->t_float);
    str = buf;
    break;

  default:
    return glw_view_seterr(ec->ei, t, 
			   "Attribute '%s' expects a string or scalar, got %s",
			   a->name, token2name(t));
  }

  if(ec->w->glw_class->gc_set_caption != NULL)
    ec->w->glw_class->gc_set_caption(ec->w, str, type);
  return 0;
}
Example #8
0
static int
set_rstring(glw_view_eval_context_t *ec, const token_attrib_t *a,
            struct token *t)
{
  rstr_t *rstr;
  char buf[30];
  void (*fn)(struct glw *w, rstr_t *str) = a->fn;

  switch(t->type) {
  case TOKEN_VOID:
    buf[0] = 0;
    break;

  case TOKEN_CSTRING:
    rstr = rstr_alloc(t->t_cstring);
    fn(ec->w, rstr);
    rstr_release(rstr);
    return 0;

  case TOKEN_RSTRING:
  case TOKEN_LINK:
    fn(ec->w, t->t_rstring);
    return 0;

  case TOKEN_INT:
    snprintf(buf, sizeof(buf), "%d", t->t_int);
    break;

  case TOKEN_FLOAT:
    snprintf(buf, sizeof(buf), "%f", t->t_float);
    break;

  default:
    return glw_view_seterr(ec->ei, t, 
			   "Attribute '%s' expects a string or scalar, got %s",
			   a->name, token2name(t));
  }

  rstr = rstr_alloc(buf);
  fn(ec->w, rstr);
  rstr_release(rstr);
  return 0;
}
Example #9
0
static int
set_float3(glw_view_eval_context_t *ec, const token_attrib_t *a, 
	   struct token *t)
{
  const float *vec3;
  float v[3];

  switch(t->type) {
  case TOKEN_VECTOR_FLOAT:

    switch(t->t_elements) {

    case 3:
      vec3 = t->t_float_vector;
      break;

    default:
      return glw_view_seterr(ec->ei, t,
			     "Attribute '%s': invalid vector size %d",
			     a->name, t->t_elements);
    }
    break;

  case TOKEN_FLOAT:
    v[0] = v[1] = v[2] = t->t_float;
    vec3 = v;
    break;

  case TOKEN_INT:
    v[0] = v[1] = v[2] = t->t_int;
    vec3 = v;
    break;
  default:
    return glw_view_seterr(ec->ei, t, "Attribute '%s' expects a vec3, got %s",
			   a->name, token2name(t));
  }


  void (*fn)(struct glw *w, const float *v3) = a->fn;
  fn(ec->w, vec3);
  return 0;
}
Example #10
0
static int
set_string(glw_view_eval_context_t *ec, const token_attrib_t *a,
	   struct token *t)
{
  char buf[30];
  const char *str;

  switch(t->type) {
  case TOKEN_VOID:
    str = "";
    break;

  case TOKEN_CSTRING:
    str = t->t_cstring;
    break;

  case TOKEN_RSTRING:
  case TOKEN_LINK:
    str = rstr_get(t->t_rstring);
    break;

  case TOKEN_INT:
    snprintf(buf, sizeof(buf), "%d", t->t_int);
    str = buf;
    break;

  case TOKEN_FLOAT:
    snprintf(buf, sizeof(buf), "%f", t->t_float);
    str = buf;
    break;

  default:
    return glw_view_seterr(ec->ei, t, 
			   "Attribute '%s' expects a string or scalar, got %s",
			   a->name, token2name(t));
  }

  void (*fn)(struct glw *w, const char *str) = a->fn;
  fn(ec->w, str);
  return 0;
}
Example #11
0
static int
set_number(glw_view_eval_context_t *ec, const token_attrib_t *a,
           struct token *t)
{
  int v;

  switch(t->type) {
  case TOKEN_CSTRING:
    v = atoi(t->t_cstring);
    set_number_int(ec->w, a, t, v);
    break;

  case TOKEN_RSTRING:
  case TOKEN_LINK:
    v = atoi(rstr_get(t->t_rstring));
    set_number_int(ec->w, a, t, v);
    break;

  case TOKEN_FLOAT:
    set_number_float(ec->w, a, t, t->t_float);
    break;

  case TOKEN_INT:
    set_number_int(ec->w, a, t, t->t_int);
    break;

  case TOKEN_VOID:
    set_number_int(ec->w, a, t, 0);
    break;

  default:
    return glw_view_seterr(ec->ei, t, "Attribute '%s' expects a scalar, got %s",
			   a->name, token2name(t));
  }



  return 0;
}
Example #12
0
static int
set_int(glw_view_eval_context_t *ec, const token_attrib_t *a, 
	  struct token *t)
{
  int v;

  switch(t->type) {
  case TOKEN_CSTRING:
    v = atoi(t->t_cstring);
    break;
    
  case TOKEN_RSTRING:
  case TOKEN_LINK:
    v = atoi(rstr_get(t->t_rstring));
    break;

  case TOKEN_FLOAT:
    v = t->t_float;
    break;

  case TOKEN_INT:
    v = t->t_int;
    break;

  case TOKEN_VOID:
    v = 0;
    break;
  default:
    return glw_view_seterr(ec->ei, t, "Attribute '%s' expects a scalar, got %s",
			   a->name, token2name(t));
  }

  void (*fn)(struct glw *w, int v) = a->fn;
  if(fn)
    fn(ec->w, v);
  else
    glw_set(ec->w, a->attrib, v, NULL);
  return 0;
}