示例#1
0
static int
set_page(glw_view_eval_context_t *ec, const token_attrib_t *a,
	   struct token *t)
{
  const char *str;

  switch(t->type) {
  default:
    glw_set(ec->w, GLW_ATTRIB_PAGE_BY_ID, NULL, NULL);
    break;

  case TOKEN_CSTRING:
    glw_set(ec->w, GLW_ATTRIB_PAGE_BY_ID, t->t_cstring, NULL);
    break;

  case TOKEN_RSTRING:
  case TOKEN_LINK:
    str = rstr_get(t->t_rstring);
    glw_set(ec->w, GLW_ATTRIB_PAGE_BY_ID, str, NULL);
    break;

  case TOKEN_INT:
    glw_set(ec->w, GLW_ATTRIB_PAGE, t->t_int, NULL);
    break;

  case TOKEN_FLOAT:
    glw_set(ec->w, GLW_ATTRIB_PAGE, (int)t->t_float, NULL);
    break;
  }
  return 0;
}
示例#2
0
static int
set_propref(glw_view_eval_context_t *ec, const token_attrib_t *a,
	   struct token *t)
{
  if(t->type == TOKEN_VOID) {
    glw_set(ec->w, a->attrib, NULL, NULL);
    return 0;
  }
  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;
}
示例#3
0
static int
set_args(glw_view_eval_context_t *ec, const token_attrib_t *a,
	   struct token *t)
{
  if(t->type == TOKEN_PROPERTY_OWNER ||
     t->type == TOKEN_PROPERTY_REF)
    glw_set(ec->w, GLW_ATTRIB_ARGS, t->t_prop, NULL);
  return 0;
}
示例#4
0
static int
set_transition_effect(glw_view_eval_context_t *ec, const token_attrib_t *a, 
		      struct token *t)
{
  int v;
  if(t->type != TOKEN_IDENTIFIER || (v = str2val(rstr_get(t->t_rstring),
						 transitiontab)) < 0)
    return glw_view_seterr(ec->ei, t, "Invalid assignment for attribute %s",
			    a->name);
  glw_set(ec->w, GLW_ATTRIB_TRANSITION_EFFECT, v, NULL);
  return 0;
}
示例#5
0
static int
set_args(glw_view_eval_context_t *ec, const token_attrib_t *a,
	   struct token *t)
{
  if(t->type != TOKEN_PROPERTY_OWNER &&
     t->type != TOKEN_PROPERTY_REF)
    return glw_view_seterr(ec->ei, t,
			   "Attribute '%s' expects a property, got %s",
			   a->name, token2name(t));

  glw_set(ec->w, GLW_ATTRIB_ARGS, t->t_prop, NULL);
  return 0;
}
示例#6
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;
}