Пример #1
0
int w_scrollbuffer_set_boxstyle (w_object_t *object, FRAME_SHAPE shape, FRAME_SHADOW shadow)
{
	w_scrollbuffer_t *sb;
	sb = object->data[OBJECT_SCROLLBUFFER];
	w_frame_set_style(sb->vertical->box->object, shape, shadow);
	w_object_draw(sb->vertical->box->object);
	return 0;
}
Пример #2
0
int w_clistbox_set_active_style (w_object_t *object, unsigned int shape, unsigned int shadow)
{
	w_clistbox_t *lb;
	w_clistbox_item_t *li;
	lb = object->data[OBJECT_CLISTBOX];
	lb->activeshape = shape;
	lb->activeshadow = shadow;
	li = w_clistbox_item_active_get(object);
	if (li) {
		w_frame_set_style(li->frame->object, lb->activeshape, lb->activeshadow);
		w_object_draw(li->frame->object);
	}
	return 0;
}
Пример #3
0
void code_generate_object_frame (s_hashtable_t *htable, s_xml_node_t *node)
{
	w_frame_t *frame;
	s_xml_node_t *tmp;
	code_priv_t *priv;
	w_object_t *pobject;
	w_object_t *wobject;
	s_xml_node_t *window = s_xml_node_get_parent(node, "window");
	wobject = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(window, "id"));
	pobject = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(node->parent, "id"));
	w_frame_init(wobject->window, &frame, 0, pobject);
	s_hashtable_add(htable, s_xml_node_get_attr_value(node, "id"), frame->object);
	while ((tmp = s_xml_node_get_path(node, "style")) != NULL) {
		FRAME_SHAPE fshape;
		FRAME_SHADOW fshadow;
		code_get_style(htable, tmp, &fshape, &fshadow);
		w_frame_set_style(frame->object, fshape, fshadow); 
		tmp->dontparse = 1;
	}
	while ((tmp = s_xml_node_get_path(node, "image")) != NULL) {
		char **var;
		unsigned int count;
		unsigned int style;
		unsigned int rotate;
		code_get_image(htable, tmp, &style, &rotate, &count, &var);
		if (var != NULL) {
			w_frame_set_image(frame->object, style, rotate, count, var);
			while (count--) s_free(var[count]);
			s_free(var);
		}
		tmp->dontparse = 1;
	}
	priv = (code_priv_t *) s_malloc(sizeof(code_priv_t));
	memset(priv, 0, sizeof(code_priv_t));
	if ((tmp = s_xml_node_get_path(node, "effect")) != NULL) {
		EFFECT effect;
		code_get_effect(htable, tmp, &effect);
		frame->object->effect->effect = effect;
		tmp->dontparse = 1;
	}
	if ((tmp = s_xml_node_get_path(node, "draw")) != NULL) {
		priv->draw = strdup(tmp->value);
		if (g_engine) frame->object->draw = g_engine->object_draw;
		tmp->dontparse = 1;
	}
	frame->object->priv = priv;
}
Пример #4
0
int w_scrollbuffer_set_style (w_object_t *object, FRAME_SHAPE shape, FRAME_SHADOW shadow)
{
	w_frame_set_style(object, shape, shadow);
	return 0;
}
Пример #5
0
int w_clistbox_set_style (w_object_t *object, FRAME_SHAPE shape, FRAME_SHADOW shadow)
{
	return w_frame_set_style(object, shape, shadow);
}
Пример #6
0
void w_clistbox_draw (w_object_t *object)
{
	int x;
	int y;
	int h;
	int w;
	int pos;
	w_clistbox_t *lb;
	w_clistbox_item_t *li;
	lb = object->data[OBJECT_CLISTBOX];
	x = object->content->x;
	w = object->content->w;
	h = lb->itemheight;
	lb->height = lb->items->nb_elt * h;
	lb->yoffset = MAX(lb->yoffset, object->content->h - lb->height);
	lb->yoffset = MIN(0, lb->yoffset);
	y = object->content->y + lb->yoffset;
	if (object->surface->vbuf == NULL) {
		goto end;
	}
	if (lb->scrollbuffer) {
		if (((lb->active + 1) * h) + lb->yoffset > lb->object->content->h) {
			w_scrollbuffer_slide(lb->scrollbuffer, (((lb->active + 1) * h) + lb->yoffset) - lb->object->content->h, 0);
			return;
		}
		if ((lb->active * h) + lb->yoffset < 0) {
			w_scrollbuffer_slide(lb->scrollbuffer, ((lb->active * h) + lb->yoffset), 0);
			return;
		}
	}
	w_frame_draw(object);
	for (pos = 0; !s_list_eol(lb->items, pos); pos++, y += h) {
		li = (w_clistbox_item_t *) s_list_get(lb->items, pos);
		if (!(pos == lb->active || pos == lb->pactive) &&
		    (li->frame->object->surface->buf->x == x &&
		     li->frame->object->surface->buf->y == y &&
		     li->frame->object->surface->buf->w == w &&
		     li->frame->object->surface->buf->h == h)) {
#if 0
			printf("pos %d, active: %d, pactive: %d\n"
			       "%d %d %d %d, %d %d %d %d\n",
			       pos, lb->active, lb->pactive, x, y, w, h,
			       li->frame->object->surface->buf->x, li->frame->object->surface->buf->y,
			       li->frame->object->surface->buf->w, li->frame->object->surface->buf->h);
#endif
			continue;
		}
		if (pos == lb->active) {
			w_frame_set_style(li->frame->object, lb->activeshape, lb->activeshadow);
			w_frame_draw(li->frame->object);
		} else {
			w_frame_set_style(li->frame->object, lb->inactiveshape, lb->inactiveshadow);
			w_frame_draw(li->frame->object);
		}
		w_object_move_silent(li->frame->object, x, y, w, h);
	}
	if (lb->pactive != lb->active) {
		if (lb->changed != NULL) {
			lb->changed(object, lb->active);
		}
		lb->pactive = lb->active;
	}
	w_object_update(lb->object, lb->object->surface->win);
end:	return;
}