예제 #1
0
파일: xynth.c 프로젝트: jetlive/xynth
static void lxynth_shutdown_driver (void)
{
	DEBUGF ("%s (%s:%d)\n", __FUNCTION__, __FILE__, __LINE__);

        if (lxynth_root->running) {
		lxynth_root->running = 0;
		s_window_quit(lxynth_root->window);
		s_thread_join(lxynth_root->tid, NULL);
		kill_timer(lxynth_root->timerid);
	}

	while (!s_list_eol(lxynth_root->eventq->list, 0)) {
		s_event_t *event = s_list_get(lxynth_root->eventq->list, 0);
		s_list_remove(lxynth_root->eventq->list, 0);
		s_event_uninit(event);
	}
	s_free(lxynth_root->eventq->list);
	s_thread_mutex_destroy(lxynth_root->eventq->mut);
	s_free(lxynth_root->eventq);

	while (!s_list_eol(lxynth_root->gd->list, 0)) {
		struct graphics_device *gd = s_list_get(lxynth_root->gd->list, 0);
		lxynth_device_t *wd = (lxynth_device_t *) gd->driver_data;
		s_list_remove(lxynth_root->gd->list, 0);
		s_free(wd->title);
		s_surface_destroy(wd->surface);
		s_free(wd);
		s_free(gd);
	}
	s_free(lxynth_root->gd->list);
	s_thread_mutex_destroy(lxynth_root->gd->mut);
	s_free(lxynth_root->gd);

	s_free(lxynth_root);
}
예제 #2
0
파일: taskbar.c 프로젝트: jetlive/xynth
void taskbar_atevent (s_window_t *window, s_event_t *event)
{
        int pos = 0;
        tbar_data_t *tbar_data;
        tbar_progs_t *tbar_progs;
        s_desktop_client_t *desktopc;
	
	if (event->type & EVENT_TYPE_MOUSE_EXIT) {
	}

	if (!(event->type & EVENT_TYPE_DESKTOP)) {
		return;
	}

        tbar_data = (tbar_data_t *) window->data;
        tbar_progs = (tbar_progs_t *) tbar_data->tbar_progs;

	while (!s_list_eol(tbar_progs->desktop->clients, 0)) {
		desktopc = (s_desktop_client_t *) s_list_get(tbar_progs->desktop->clients, 0);
		s_list_remove(tbar_progs->desktop->clients, 0);
		s_free(desktopc->title);
		s_free(desktopc);
	}
	while (!s_list_eol(event->desktop->clients, pos)) {
		desktopc = (s_desktop_client_t *) s_list_get(event->desktop->clients, pos);
		if ((desktopc->id != window->id) &&
		    (desktopc->id != window->parent->id)) {
			s_list_remove(event->desktop->clients, pos);
			s_list_add(tbar_progs->desktop->clients, desktopc, -1);
		} else {
			pos++;
		}
	}
	taskbar_progs_draw(window);
}
예제 #3
0
파일: clistbox.c 프로젝트: jetlive/xynth
int w_clistbox_item_del (w_object_t *object, w_clistbox_item_t *item)
{
	int p;
	w_clistbox_t *lb;
	w_clistbox_item_t *active;
	lb = object->data[OBJECT_CLISTBOX];
	active = s_list_get(lb->items, lb->active);
	p = s_list_get_pos(lb->items, item);
	s_list_remove(lb->items, p);
	w_clistbox_item_uninit(item);
	if (lb->active == p) {
		active = s_list_get(lb->items, p);
		if (active == NULL) {
			active = s_list_get(lb->items, p - 1);
		} else {
			lb->pactive = -1;
		}
	}
	if (active == NULL) {
		lb->active = 0;
	} else {
		lb->active = s_list_get_pos(lb->items, active);
	}
	if (lb->active < 0) {
		lb->active = 0;
	}
	lb->dirty = 1;
	w_object_draw(object);
	return 0;
}
예제 #4
0
파일: event.c 프로젝트: d33tah/whitix
void s_event_parse_mouse (s_window_t *window, s_event_t *event)
{
        int pos;
	s_handler_t *work;
        pos = 0;
	s_thread_mutex_lock(window->handlers->mut);
	while (!s_list_eol(window->handlers->list, pos)) {
		work = (s_handler_t *) s_list_get(window->handlers->list, pos++);
		if (work->type != MOUSE_HANDLER) {
			continue;
		}
		if (s_event_parse_handler_over(window, event, work) == 0) {
			break;
		}
	}
	pos = 0;
	while (!s_list_eol(window->handlers->list, pos)) {
		work = (s_handler_t *) s_list_get(window->handlers->list, pos++);
		if (work->type != MOUSE_HANDLER) {
			continue;
		}
		if (s_event_parse_handler_notover(window, event, work) == 0) {
			break;
		}
	}
	s_thread_mutex_unlock(window->handlers->mut);
	
	return;
}
예제 #5
0
파일: dir.c 프로젝트: alperakcan/srcprs
int s_dir_print (s_dir_t *dir)
{
        int i;
        int j;
        int l;
        s_dir_t *d;
        s_file_t *f;
        
        l = s_dir_get_level(dir);
        if (l == 0) {
		printf("+ %s\n", dir->path);
	} else {
		for (i = 0; i < l - 1; i++) {
			if (s_dir_has_trailer(dir, i)) {
				printf("|   ");
			} else {
				printf("    ");
			}
		}
		printf("|---+ %s\n", dir->name);
	}
        
        i = 0;
        while (!s_list_eol(dir->dirs, i)) {
		d = (s_dir_t *) s_list_get(dir->dirs, i);
		s_dir_print(d);
		i++;
	}

        i = 0;
        while (!s_list_eol(dir->files, i)) {
		f = (s_file_t *) s_list_get(dir->files, i);
		for (j = 0; j < l; j++) {
			if (s_dir_has_trailer(dir, j)) {
				printf("|   ");
			} else {
				printf("    ");
			}
		}
		printf("|---- %s\n", f->name);
		i++;
	}

	if (dir->dirs->nb_elt || dir->files->nb_elt) {
		for (i = 0; i < l; i++) {
			if (s_dir_has_trailer(dir, i)) {
				printf("|   ");
			} else {
				printf("    ");
			}
		}
		printf("\n");
	}
	
	return 0;
}
예제 #6
0
파일: eventq.c 프로젝트: jetlive/xynth
int s_eventq_wait (s_window_t *window, s_event_t **event)
{
        int ret;
        s_event_t *e;

	s_thread_mutex_lock(window->eventq->mut);

	while (window->eventq->queue->nb_elt <= 0) {
		if (s_thread_cond_wait(window->eventq->cond, window->eventq->mut)) {
			debugf(DSYS, "s_thread_cond_wait failed");
			return -1;
		}
	}

	e = (s_event_t *) s_list_get(window->eventq->queue, 0);
	if (e == NULL) {
		ret = -1;
	} else {
		s_list_remove(window->eventq->queue, 0);
		*event = e;
		ret = 0;
	}

	s_thread_mutex_unlock(window->eventq->mut);

	return ret;
}
예제 #7
0
파일: frame.c 프로젝트: d33tah/whitix
int w_frame_set_image (w_object_t *object, unsigned int style, unsigned int rotation, unsigned int nimgs, char **imgs)
{
	int pos;
	char *file;
        w_frame_t *frame;
	w_frame_image_t *fimg;
        frame = (w_frame_t *) object->data[OBJECT_FRAME];
	for (pos = 0; !s_list_eol(frame->images, pos); pos++) {
		fimg = (w_frame_image_t *) s_list_get(frame->images, pos);
		if (fimg->style == style) {
			s_list_remove(frame->images, pos);
			w_frame_image_uninit(fimg);
			break;
		}
	}
	for (pos = 0; pos < nimgs; pos++) {
		if (access(imgs[pos], R_OK)) {
			return -1;
		}
	}
	w_frame_image_init(&fimg);
	fimg->style = style;
	fimg->rotation = rotation;
	for (pos = 0; pos < nimgs; pos++) {
		file = imgs[pos];
#if defined(WIDGET_OPTIMIZE_MEMORY) && WIDGET_OPTIMIZE_MEMORY >= 1
#else
		w_window_image_add(object->window, file);
#endif
		s_list_add(fimg->names, strdup(file), -1);
	}
	s_list_add(frame->images, fimg, -1);
	return 0;
}
예제 #8
0
파일: header.c 프로젝트: d33tah/whitix
void header_generate_function (s_xml_node_t *node, FILE *g_header)
{
	int p;
	s_xml_node_t *tmp;
	if (strcmp(node->name, "draw") == 0) {
		fprintf(g_header, "void %s (w_object_t *object);\n", node->value);
	} else if (strcmp(node->name, "event") == 0) {
		fprintf(g_header, "void %s (w_object_t *object, s_event_t *event);\n", node->value);
	} else if (strcmp(node->name, "onload") == 0) {
		fprintf(g_header, "void %s (w_object_t *object);\n", node->value);
	} else if (strcmp(node->name, "unload") == 0) {
		fprintf(g_header, "void %s (w_object_t *object);\n", node->value);
	} else if (strcmp(node->name, "pressed") == 0) {
		fprintf(g_header, "void %s (w_object_t *object, int button);\n", node->value);
	} else if (strcmp(node->name, "released") == 0) {
		fprintf(g_header, "void %s (w_object_t *object, int button);\n", node->value);
	} else if (strcmp(node->name, "changed") == 0) {
		fprintf(g_header, "void %s (w_object_t *object, int state);\n", node->value);
	}
	p = 0;
	while (!s_list_eol(node->nodes, p)) {
		tmp = (s_xml_node_t *) s_list_get(node->nodes, p);
		header_generate_function(tmp, g_header);
		p++;
	}
}
예제 #9
0
파일: taskbar.c 프로젝트: jetlive/xynth
void taskbar_progs_draw (s_window_t *window)
{
        int x;
        int pos;
        int w = 0;
        s_surface_t *srf;
        tbar_data_t *tbar_data;
        tbar_progs_t *tbar_progs;
        s_desktop_client_t *desktopc;

        pos = 0;
        tbar_data = (tbar_data_t *) window->data;
        tbar_progs = (tbar_progs_t *) tbar_data->tbar_progs;

	if (tbar_progs->desktop->clients->nb_elt > 0) {
		w = ((tbar_progs->rect.w / tbar_progs->desktop->clients->nb_elt) > 125) ? 125 : (tbar_progs->rect.w / tbar_progs->desktop->clients->nb_elt);
	}

	if (s_surface_create(&srf, tbar_progs->rect.w, tbar_progs->rect.h, window->surface->bitsperpixel)) {
		return;
	}

	for (x = 0; x <= tbar_progs->rect.w; x++) {
		s_putboxpart(srf, x, 0, 1, tbar_progs->rect.h, 1, 30, tbar_progs->tbar_img->buf, 0, tbar_progs->rect.y);
	}

	while (!s_list_eol(tbar_progs->desktop->clients, pos)) {
		desktopc = (s_desktop_client_t *) s_list_get(tbar_progs->desktop->clients, pos);
		taskbar_progs_draw_client(tbar_progs, srf, desktopc, w * pos, 0, w, tbar_progs->rect.h);
		pos++;
	}

        s_putbox(window->surface, tbar_progs->rect.x, tbar_progs->rect.y, tbar_progs->rect.w, tbar_progs->rect.h, srf->vbuf);
        s_surface_destroy(srf);
}
예제 #10
0
파일: taskbar.c 프로젝트: jetlive/xynth
void taskbar_atexit (s_window_t *window)
{
        tbar_data_t *tbar_data;
        tbar_progs_t *tbar_progs;
        tbar_clock_t *tbar_clock;
        s_desktop_client_t *desktopc;

        tbar_data = (tbar_data_t *) window->data;
        tbar_progs = (tbar_progs_t *) tbar_data->tbar_progs;
        tbar_clock = (tbar_clock_t *) tbar_data->tbar_clock;

        s_font_uninit(tbar_clock->font);
        s_font_uninit(tbar_progs->prog_font);
        s_image_uninit(tbar_progs->tbar_img);
        s_image_uninit(tbar_progs->prog_img[0]);
        s_image_uninit(tbar_progs->prog_img[1]);

	while (!s_list_eol(tbar_progs->desktop->clients, 0)) {
		desktopc = (s_desktop_client_t *) s_list_get(tbar_progs->desktop->clients, 0);
		s_list_remove(tbar_progs->desktop->clients, 0);
		s_free(desktopc->title);
		s_free(desktopc);
	}
	s_free(tbar_progs->desktop->clients);
	s_free(tbar_progs->desktop);
	s_free(tbar_progs);
	s_free(tbar_data->tbar_clock);
	taskbar_clean_smenu(tbar_data->tbar_smenu->progs);
	s_image_uninit(tbar_data->tbar_smenu->img);
	s_free(tbar_data->tbar_smenu);

	s_free(tbar_data);
}
예제 #11
0
파일: taskbar.c 프로젝트: jetlive/xynth
void taskbar_progs_handler_r (s_window_t *window, s_event_t *event, s_handler_t *handler)
{
        int w;
        int px;
        int py;
        int pos;
        tbar_data_t *tbar_data;
        tbar_progs_t *tbar_progs;
        s_desktop_client_t *desktopc;

        tbar_data = (tbar_data_t *) window->data;
        tbar_progs = (tbar_progs_t *) tbar_data->tbar_progs;

	px = event->mouse->x - tbar_progs->rect.x;
	py = event->mouse->y - tbar_progs->rect.y;
	if (tbar_progs->desktop->clients->nb_elt <= 0) {
		return;
	}
	w = ((tbar_progs->rect.w / tbar_progs->desktop->clients->nb_elt) > 125) ? 125 : (tbar_progs->rect.w / tbar_progs->desktop->clients->nb_elt);

	if ((px > 0) && (px < w * tbar_progs->desktop->clients->nb_elt)) {
		pos = px / w;
	} else {
		return;
	}

	desktopc = (s_desktop_client_t *) s_list_get(tbar_progs->desktop->clients, pos);
	if (desktopc != NULL) {
		s_socket_request(window, SOC_DATA_SHOW, desktopc->id, NULL, 0);
	}
}
예제 #12
0
파일: xynth.c 프로젝트: jetlive/xynth
static void lxynth_timer (void *arg)
{
        int x = 0;
        int y = 0;
        int k = 0;
        int flag = 0;
        s_event_t *event;

	s_thread_mutex_lock(lxynth_root->eventq->mut);
        while (!s_list_eol(lxynth_root->eventq->list, 0)) {
		event = (s_event_t *) s_list_get(lxynth_root->eventq->list, 0);
		s_list_remove(lxynth_root->eventq->list, 0);
                switch (event->type & EVENT_MASK) {
			case QUIT_EVENT:	break;
			case MOUSE_EVENT:	lxynth_event_parse_mouse(event);	break;
			case KEYBD_EVENT:	lxynth_event_parse_keybd(event);	break;
			case CONFIG_EVENT:	lxynth_event_parse_config(event);	break;
		}
		s_event_uninit(event);
	}
	s_thread_mutex_unlock(lxynth_root->eventq->mut);

        if (lxynth_root->running) {
		lxynth_root->timerid = install_timer(20, lxynth_timer, NULL);
	}
}
예제 #13
0
파일: xynth.c 프로젝트: jetlive/xynth
static void lxynth_shutdown_device (struct graphics_device *dev)
{
        int acc = 0;
        int pos = 0;
	lxynth_device_t *wd;
	struct graphics_device *gd;

	DEBUGF ("%s (%s:%d)\n", __FUNCTION__, __FILE__, __LINE__);

	s_thread_mutex_lock(lxynth_root->gd->mut);
	while (!s_list_eol(lxynth_root->gd->list, pos)) {
		gd = (struct graphics_device *) s_list_get(lxynth_root->gd->list, pos);
		if (gd == dev) {
			s_list_remove(lxynth_root->gd->list, pos);
			if (lxynth_root->gd->list->nb_elt > 0) {
				lxynth_root->gd->active = (struct graphics_device *) s_list_get(lxynth_root->gd->list, 0);
				acc = 1;
			} else {
				lxynth_root->gd->active = NULL;
			}
			break;
		}
		pos++;
	}
	unregister_bottom_half(lxynth_surface_register_update, dev);
	wd = (lxynth_device_t *) dev->driver_data;
	s_free(wd->title);
	s_surface_destroy(wd->surface);
	s_free(wd);
	s_free(dev);
	s_thread_mutex_unlock(lxynth_root->gd->mut);

	if (acc && lxynth_root->running) {
		char *title;
		struct rect r;
		r.x1 = 0;
		r.y1 = 0;
		r.x2 = lxynth_root->window->surface->buf->w;
		r.y2 = lxynth_root->window->surface->buf->h;
		title = strdup(((lxynth_device_t *) lxynth_root->gd->active->driver_data)->title);
		lxynth_set_title(lxynth_root->gd->active, title);
		lxynth_root->gd->active->resize_handler(lxynth_root->gd->active);
		lxynth_root->gd->active->redraw_handler(lxynth_root->gd->active, &r);
		s_free(title);
	}
}
예제 #14
0
파일: event.c 프로젝트: d33tah/whitix
int s_event_parse_handler_over (s_window_t *window, s_event_t *event, s_handler_t *work)
{
	switch (s_event_mouse_handler_state(window, event, &(work->mouse), 1)) {
		case MOUSE_OVER:
			if (work->mouse.o != NULL) {
				s_thread_mutex_unlock(window->handlers->mut);
				work->mouse.o(window, event, work);
				s_thread_mutex_lock(window->handlers->mut);
			}
			goto not_over;
		case MOUSE_PRESSED:
			if (work->mouse.p != NULL) {
				s_thread_mutex_unlock(window->handlers->mut);
				work->mouse.p(window, event, work);
				s_thread_mutex_lock(window->handlers->mut);
			}
			goto not_over;
		case MOUSE_CLICKED:
			if (work->mouse.c != NULL) {
				s_thread_mutex_unlock(window->handlers->mut);
				work->mouse.c(window, event, work);
				s_thread_mutex_lock(window->handlers->mut);
				work = (s_handler_t *) s_list_get(window->handlers->list, s_list_get_pos(window->handlers->list, work));
				if (work == NULL) {
					goto not_over;
				}
			}
			/* no break */
		case MOUSE_RELEASED:
			if (work->mouse.r != NULL) {
				s_thread_mutex_unlock(window->handlers->mut);
				work->mouse.r(window, event, work);
				s_thread_mutex_lock(window->handlers->mut);
			}
			goto not_over;
		case (MOUSE_RELEASED | MOUSE_HINT):
			/* mouse button released, but the prev. press was not on us */
			if (work->mouse.hr != NULL) {
				s_thread_mutex_unlock(window->handlers->mut);
				work->mouse.hr(window, event, work);
				s_thread_mutex_lock(window->handlers->mut);
			}
			goto not_over;
		case (MOUSE_OVER | MOUSE_HINT):
			/* on over, but mouse button is still pressed */
			if (work->mouse.ho != NULL) {
				s_thread_mutex_unlock(window->handlers->mut);
				work->mouse.ho(window, event, work);
				s_thread_mutex_lock(window->handlers->mut);
			}
			goto not_over;
	}
	return -1;
not_over:
	return 0;
}
예제 #15
0
파일: frame.c 프로젝트: d33tah/whitix
int w_frame_image_uninit (w_frame_image_t *fimg)
{
	char *name;
	s_image_t *img;
	while (!s_list_eol(fimg->images, 0)) {
		img = (s_image_t *) s_list_get(fimg->images, 0);
		s_list_remove(fimg->images, 0);
		s_image_uninit(img);
	}
	s_list_uninit(fimg->images);
	while (!s_list_eol(fimg->names, 0)) {
		name = (char *) s_list_get(fimg->names, 0);
		s_list_remove(fimg->names, 0);
		s_free(name);
	}
	s_list_uninit(fimg->names);
	s_free(fimg);
	return 0;
}
예제 #16
0
파일: dir.c 프로젝트: alperakcan/srcprs
int s_dir_sort (s_dir_t *dir)
{
	int i;
	int j;

        s_dir_t *d;
	s_dir_t *di;
	s_dir_t *dj;

	s_file_t *fi;
	s_file_t *fj;

	for (i = 0; i < dir->dirs->nb_elt - 1; i++) {
		for (j = 0; j < dir->dirs->nb_elt - 1; j++) {
			di = (s_dir_t *) s_list_get(dir->dirs, j);
			dj = (s_dir_t *) s_list_get(dir->dirs, j + 1);
			if (strcmp(dj->path, di->path) < 0) {
				s_list_remove(dir->dirs, j);
				s_list_add(dir->dirs, di, j + 1);
			}
		}
	}

	for (i = 0; i < dir->files->nb_elt - 1; i++) {
		for (j = 0; j < dir->files->nb_elt - 1; j++) {
			fi = (s_file_t *) s_list_get(dir->files, j);
			fj = (s_file_t *) s_list_get(dir->files, j + 1);
			if (strcmp(fj->path, fi->path) < 0) {
				s_list_remove(dir->files, j);
				s_list_add(dir->files, fi, j + 1);
			}
		}
	}

	i = 0;
	while (!s_list_eol(dir->dirs, i)) {
		d = (s_dir_t *) s_list_get(dir->dirs, i);
		s_dir_sort(d);
		i++;
	}

	return 0;
}
예제 #17
0
파일: config.c 프로젝트: anarsoul/libxynth
int s_config_uninit (s_config_t *cfg)
{
        while (!s_list_eol(cfg->category, 0)) {
		s_config_cat_t *cat = (s_config_cat_t *) s_list_get(cfg->category, 0);
		s_list_remove(cfg->category, 0);
		s_config_category_uninit(cat);
	}
        s_list_uninit(cfg->category);
	s_free(cfg);
	return 0;
}
예제 #18
0
파일: config.c 프로젝트: anarsoul/libxynth
int s_config_category_uninit (s_config_cat_t *cat)
{
        while (!s_list_eol(cat->variable, 0)) {
		s_config_var_t *var = (s_config_var_t *) s_list_get(cat->variable, 0);
		s_list_remove(cat->variable, 0);
		s_config_variable_uninit(var);
	}
        s_list_uninit(cat->variable);
        s_free(cat->name);
	s_free(cat);
	return 0;
}
예제 #19
0
파일: clistbox.c 프로젝트: d33tah/whitix
void w_clistbox_uninit (w_object_t *object)
{
	w_clistbox_t *lb;
	w_clistbox_item_t *li;
	w_clistbox_item_image_t *ii;
	lb = object->data[OBJECT_CLISTBOX];
	while (!s_list_eol(lb->items, 0)) {
		li = (w_clistbox_item_t *) s_list_get(lb->items, 0);
		s_list_remove(lb->items, 0);
		w_clistbox_item_uninit(li);
	}
	while (!s_list_eol(lb->item_images, 0)) {
		ii = (w_clistbox_item_image_t *) s_list_get(lb->item_images, 0);
		s_list_remove(lb->item_images, 0);
		w_clistbox_item_image_uninit(ii);
	}
	s_list_uninit(lb->item_images);
	s_list_uninit(lb->items);
	w_frame_uninit(object);
	s_free(lb);
}
예제 #20
0
파일: object.c 프로젝트: jetlive/xynth
static void button0_pressed (w_object_t *object, int buttonp)
{
	int i;
	w_object_t *obj;
	area_hide = (area_hide + 1) % 2;
	if (area_hide) {
		for (i = 0; !s_list_eol(object->parent->childs, i); i++) {
			obj = (w_object_t *) s_list_get(object->parent->childs, i);
			if (obj != object) {
				w_object_hide(obj);
			}
		}
	} else {
		for (i = 0; !s_list_eol(object->parent->childs, i); i++) {
			obj = (w_object_t *) s_list_get(object->parent->childs, i);
			if (obj != object) {
				w_object_show(obj);
			}
		}
	}
}
예제 #21
0
파일: object.c 프로젝트: jetlive/xynth
static void button2_pressed (w_object_t *object, int button)
{
	int r;
	int show;
	w_object_t *obj;
	r = rand();
	if (r == 0) {
		r++;
	}
	show = r % area->object->childs->nb_elt;
	obj = (w_object_t *) s_list_get(area->object->childs, show);
	w_object_show(obj);
}
예제 #22
0
파일: dir.c 프로젝트: alperakcan/srcprs
int s_files_uninit (s_list_t *files)
{
	s_file_t *file;

	while (!s_list_eol(files, 0)) {
		file = (s_file_t *) s_list_get(files, 0);
		s_list_remove(files, 0);
		s_file_uninit(file);
	}
	free(files);

	return 0;
}
예제 #23
0
파일: dir.c 프로젝트: alperakcan/srcprs
int s_dirs_uninit (s_list_t *dirs)
{
	s_dir_t *dir;

	while (!s_list_eol(dirs, 0)) {
		dir = (s_dir_t *) s_list_get(dirs, 0);
		s_list_remove(dirs, 0);
		s_dir_uninit(dir);
	}
	free(dirs);

	return 0;
}
예제 #24
0
파일: code.c 프로젝트: jetlive/xynth
void code_parse_element (s_xml_node_t *node, s_xml_node_t *style)
{
	int p;
	s_xml_node_t *tmp;
	s_xml_node_t *dmp;
	s_xml_node_t *chl;
	s_xml_node_attr_t *sid;
	s_xml_node_attr_t *stype;
	s_xml_node_attr_t *ntype;
	if (style == NULL) {
		return;
	}
	for (p = 0; !s_list_eol(node->nodes, p); p++) {
    		tmp = (s_xml_node_t *) s_list_get(node->nodes, p);
    		code_parse_element(tmp, style);
	}
	ntype = s_xml_node_get_attr(node, "type");
	if (strcmp(node->name, "element") == 0 && ntype && ntype->value != NULL) {
	    	for (p = 0; !s_list_eol(style->nodes, p); p++) {
	    		tmp = (s_xml_node_t *) s_list_get(style->nodes, p);
	    		sid = s_xml_node_get_attr(tmp, "id");
	    		stype = s_xml_node_get_attr(tmp, "type");
	    		if (strcmp(tmp->name, "element") == 0 && sid && strcmp(sid->value, ntype->value) == 0) {
	    		    	s_xml_node_dublicate(tmp, &dmp);
	    		    	s_free(node->name);
	    		    	s_free(ntype->value);
	    		    	node->name = strdup("object");
	    		    	ntype->value = (stype->value) ? strdup(stype->value) : NULL;
	    		    	while (!s_list_eol(dmp->nodes, 0)) {
	    		    		chl = (s_xml_node_t *) s_list_get(dmp->nodes, dmp->nodes->nb_elt - 1);
	    		    		chl->parent = node;
	    		    		s_list_add(node->nodes, chl, 0);
	    		    		s_list_remove(dmp->nodes, dmp->nodes->nb_elt - 1);
	    		    	}
	    		    	s_xml_node_uninit(dmp);
	    		}
	    	}
	}
}
예제 #25
0
파일: object.c 프로젝트: jetlive/xynth
static void button0_draw (w_object_t *object)
{
	w_object_t *obj;
	w_button_draw(object);
	obj = (w_object_t *) s_list_get(object->childs, 0);
	if (obj == NULL) {
		return;
	}
	if (area_hide) {
		w_textbox_set_str(obj, "show area");
	} else {
		w_textbox_set_str(obj, "hide area");
	}
}
예제 #26
0
파일: frame.c 프로젝트: d33tah/whitix
void w_frame_uninit (w_object_t *object)
{
	w_frame_t *frame;
	w_frame_image_t *fimg;
	frame = (w_frame_t *) object->data[OBJECT_FRAME];
	w_object_uninit(object);
	while (!s_list_eol(frame->images, 0)) {
		fimg = s_list_get(frame->images, 0);
		s_list_remove(frame->images, 0);
		w_frame_image_uninit(fimg);
	}
	s_list_uninit(frame->images);
	s_free(frame);
}
예제 #27
0
파일: image.c 프로젝트: anarsoul/libxynth
int s_image_layers_uninit (s_image_t *img)
{
	s_image_t *img_;

	while (!s_list_eol(img->layers, 0)) {
		img_ = (s_image_t *) s_list_get(img->layers, 0);
		s_list_remove(img->layers, 0);
		s_image_layer_uninit(img_);
	}
	s_list_uninit(img->layers);
	img->layers = NULL;

	return 0;
}
예제 #28
0
파일: object.c 프로젝트: jetlive/xynth
static void button1_pressed (w_object_t *object, int button)
{
	int i;
	int w;
	int h;
	w_object_t *obj;
	w = object->window->window->surface->buf->w;
	h = object->window->window->surface->buf->h;
	for (i = 0; !s_list_eol(area->object->childs, i); i++) {
		obj = (w_object_t *) s_list_get(area->object->childs, i);
		w_object_move(obj, (rand() + 1) % (w - 10), (rand() + 1) % (h - 100),
		                   (rand() + 1) % (w - 10), (rand() + 1) % (h - 100));
	}
	w_signal_send(object, object, button1_signal_func, NULL);
}
예제 #29
0
파일: clistbox.c 프로젝트: d33tah/whitix
int w_clistbox_item_add (w_object_t *object, w_clistbox_item_t *item)
{
	w_clistbox_t *lb;
	w_clistbox_item_t *active;
	lb = object->data[OBJECT_CLISTBOX];
	active = s_list_get(lb->items, lb->active);
	s_list_add(lb->items, item, -1);
	if (active == NULL) {
		lb->active = 0;
	} else {
		lb->active = s_list_get_pos(lb->items, active);
	}
//	w_object_draw(object);
	return 0;
}
예제 #30
0
파일: taskbar.c 프로젝트: jetlive/xynth
void taskbar_clean_smenu (s_list_t *list)
{
	smenu_prog_t *p;
	while (!s_list_eol(list, 0)) {
		p = s_list_get(list, 0);
		s_list_remove(list, 0);
		s_free(p->name);
		s_free(p->icon);
		s_free(p->menu);
		s_free(p->exec);
		taskbar_clean_smenu(p->progs);
		s_free(p);
	}
	s_free(list);
}