示例#1
0
static void handler_set_char (s_window_t *window, osk_char_t *chr)
{
    s_event_t *evt;
    s_event_init(&evt);
    evt->type = KEYBD_EVENT | KEYBD_PRESSED;
    evt->keybd->ascii = chr->ascii;
    evt->keybd->button = chr->button;
    evt->keybd->keycode = chr->button;
    evt->keybd->scancode = chr->scancode;
    s_socket_request(window, SOC_DATA_EVENT, evt);
    evt->type = KEYBD_EVENT | KEYBD_RELEASED;
    s_socket_request(window, SOC_DATA_EVENT, evt);
    s_event_uninit(evt);
}
示例#2
0
文件: window.c 项目: jetlive/xynth
int s_window_new (s_window_t *window, s_window_type_t type, s_window_t *parent)
{
	if (!(type & (WINDOW_TYPE_MAIN | WINDOW_TYPE_CHILD | WINDOW_TYPE_TEMP | WINDOW_TYPE_POPUP))) {
		goto err;
	}
	window->type = type;
	if (window->surface->width <= 0) {
		window->surface->width = window->surface->linear_buf_width;
	}
	if (window->surface->height <= 0) {
		window->surface->height = window->surface->linear_buf_height;
	}
	if (window->type & (WINDOW_TYPE_TEMP | WINDOW_TYPE_CHILD)) {
		window->parent = parent;
	} else {
		window->parent = NULL;
	}

	s_socket_request(window, SOC_DATA_NEW);
	window->surface->vbuf = (unsigned char *) s_calloc(sizeof(char), window->surface->width *
	                                                                 window->surface->height *
	                                                                 window->surface->bytesperpixel);

	return 0;
err:	return 1;
}
示例#3
0
文件: window.c 项目: d33tah/whitix
int s_window_new (s_window_t *window, S_WINDOW type, s_window_t *parent)
{
    if (!(type & (WINDOW_MAIN | WINDOW_CHILD | WINDOW_TEMP))) {
        goto err;
    }
    window->type = type;
    if (window->surface->width <= 0) {
        window->surface->width = window->surface->linear_buf_width;
    }
    if (window->surface->height <= 0) {
        window->surface->height = window->surface->linear_buf_height;
    }
    if (window->type & (WINDOW_TEMP | WINDOW_CHILD)) {
        window->parent = parent;
    } else {
        window->parent = NULL;
    }

    s_socket_request(window, SOC_DATA_NEW);
//	window->surface->need_expose = SURFACE_NEEDSTREAM;
    s_surface_attach(window);

    s_fillbox(window->surface, 0, 0, window->surface->width,
              window->surface->height, s_rgbcolor(window->surface, 0xD4, 0xD0, 0xC8));

    return 0;
err:
    return 1;
}
示例#4
0
文件: window.c 项目: jetlive/xynth
void s_window_form_draw (s_window_t *window)
{
	if (window->type & WINDOW_TYPE_NOFORM) {
		return;
	}
	s_socket_request(window, SOC_DATA_FORMDRAW);
}
示例#5
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);
	}
}
示例#6
0
文件: window.c 项目: jetlive/xynth
void s_window_set_title (s_window_t *window, const char *fmt, ...)
{
        int n;
        va_list ap;
        int size = 1;

	if (window->title != NULL) {
		s_free(window->title);
	}
	window->title = (char *) s_malloc(sizeof(char) * size);

	while (1) {
		va_start(ap, fmt);
		n = vsnprintf(window->title, size, fmt, ap);
		va_end(ap);
		if ((n > -1) && (n < size)) {
			break;
		}
		if (n > -1) {
			size = n + 1;
		} else {
			size *= 2;
		}
		window->title = (char *) s_realloc(window->title, size);
	}

	s_socket_request(window, SOC_DATA_CONFIGURE, WINDOW_TYPE_NOFORM);
}
示例#7
0
文件: window.c 项目: jetlive/xynth
void * s_window_loop_event (void *arg)
{
	s_event_t *event;
	s_window_t *window;

	window = (s_window_t *) arg;

	while (window->running > 0) {
		if (s_eventq_wait(window, &event) != 0) {
			continue;
		}
        	if (window->atevent != NULL) {
			window->atevent(window, event);
		}
		switch (event->type & EVENT_TYPE_MASK) {
//			case EVENT_TYPE_QUIT:   window->running = 0;                      break;
			case EVENT_TYPE_QUIT:
				 s_socket_request(window, SOC_DATA_CLOSE);
				 s_event_uninit(event);
				 return NULL;
				 break;
			case EVENT_TYPE_MOUSE:    s_event_parse_mouse(window, event);  break;
			case EVENT_TYPE_KEYBOARD: s_event_parse_keybd(window, event);  break;
			case EVENT_TYPE_EXPOSE:   s_event_parse_expos(window, event);  break;
			case EVENT_TYPE_CONFIG:   s_event_parse_config(window, event); break;
			case EVENT_TYPE_TIMER:    s_event_parse_timer(window, event);  break;
			case EVENT_TYPE_FOCUS:                                         break;
			case EVENT_TYPE_MAP:                                           break;
			case EVENT_TYPE_DESKTOP:				       break;
		}
		s_event_uninit(event);
	}

	return NULL;
}
示例#8
0
文件: window.c 项目: d33tah/whitix
void s_window_set_cursor (s_window_t *window, S_MOUSE_CURSOR cursor)
{
    if ((cursor >= 0) &&
            (cursor < MOUSE_CURSOR_MAX)) {
        window->cursor = cursor;
        s_socket_request(window, SOC_DATA_CONFIGURE, WINDOW_NOFORM);
    }
}
示例#9
0
文件: window.c 项目: d33tah/whitix
void s_window_set_max_size(s_window_t* window, int w, int h)
{
    /* TODO: Check. */
    window->max_w = w;
    window->max_h = h;

    s_socket_request(window, SOC_DATA_CONFIGURE, WINDOW_NOFORM);
}
示例#10
0
文件: window.c 项目: jetlive/xynth
void s_window_set_cursor (s_window_t *window, s_cursor_type_t cursor)
{
	if ((cursor >= 0) &&
	    (cursor < CURSOR_TYPE_MAX)) {
		window->cursor = cursor;
		s_socket_request(window, SOC_DATA_CONFIGURE, WINDOW_TYPE_NOFORM);
	}
}
示例#11
0
文件: window.c 项目: d33tah/whitix
void s_window_set_coor (s_window_t *window, int form, int x, int y, int w, int h)
{
    window->surface->buf->x = x;
    window->surface->buf->y = y;
    window->surface->buf->w = w;
    window->surface->buf->h = h;
    s_socket_request(window, SOC_DATA_CONFIGURE, form);
}
示例#12
0
文件: window.c 项目: d33tah/whitix
void * s_window_loop_event (void *arg)
{
    s_event_t *event;
    s_window_t *window;

    window = (s_window_t *) arg;

    while (window->running > 0) {
        if (s_eventq_wait(window, &event) != 0) {
            continue;
        }

        if (window->atevent != NULL) {
            window->atevent(window, event);
        }

        switch (event->type & EVENT_MASK) {
        case QUIT_EVENT:
            s_socket_request(window, SOC_DATA_CLOSE);
            s_event_uninit(event);
            return NULL;
            break;
        case MOUSE_EVENT:
            s_event_parse_mouse(window, event);
            break;
        case KEYBD_EVENT:
            s_event_parse_keybd(window, event);
            break;
        case EXPOSE_EVENT:
            s_event_parse_expos(window, event);
            break;
        case CONFIG_EVENT:
            s_event_parse_config(window, event);
            break;
        case TIMER_EVENT:
            s_event_parse_timer(window, event);
            break;
        case FOCUS_EVENT:
            break;
        case DESKTOP_EVENT:
            break;
        }
        s_event_uninit(event);
    }

    return NULL;
}
示例#13
0
文件: window.c 项目: jetlive/xynth
int s_window_init (s_window_t **window)
{
	s_window_t *w;

	w = (s_window_t *) s_calloc(1, sizeof(s_window_t));
	if (s_pollfds_init(w))       { goto err1; }
	if (s_timers_init(w))        { goto err2; }
	if (s_socket_init(w))        { goto err3; }
        if (s_handlers_init(w))      { goto err4; }
	if (s_childs_init(w))        { goto err5; }
	if (s_eventq_init(w))        { goto err6; }
	if (s_event_init(&w->event)) { goto err7; }

	w->running = 1;
	w->id = -1;
	w->pri = -1;
	w->mapped = -1;
	w->viewable = -1;
	w->resizeable = 1;
	w->alwaysontop = 0;
	w->cursor = CURSOR_TYPE_ARROW;
	w->mouse_entered = 0;
	*window = w;

	if (s_surface_init(w))                     { goto err8; }
	if (s_socket_request(w, SOC_DATA_DISPLAY)) { goto err9; }
	if (s_surface_attach(w))                   { goto err10; }

	return 0;
err10:
err9:	s_surface_uninit(w);
err8:	s_event_uninit(w->event);
err7:	s_eventq_uninit(w);
err6:	s_childs_uninit(w);
err5:	s_handlers_uninit(w);
err4:
err3:	s_timers_uninit(w);
err2:	s_pollfds_uninit(w);
err1:	s_free(w);
	debugf(DCLI | DFAT, "Cannot connect to server");
	return -1;
}
示例#14
0
文件: window.c 项目: jetlive/xynth
void s_window_set_alwaysontop (s_window_t *window, int alwaysontop)
{
	window->alwaysontop = alwaysontop;
	s_socket_request(window, SOC_DATA_CONFIGURE, WINDOW_TYPE_NOFORM);
}
示例#15
0
文件: window.c 项目: jetlive/xynth
void s_window_set_resizeable (s_window_t *window, int resizeable)
{
	window->resizeable = resizeable;
	s_socket_request(window, SOC_DATA_CONFIGURE, WINDOW_TYPE_NOFORM);
}
示例#16
0
文件: window.c 项目: jetlive/xynth
void s_window_set_coor (s_window_t *window, int form, int x, int y, int w, int h)
{
	s_surface_set_coor(window, x, y, w, h);
	s_socket_request(window, SOC_DATA_CONFIGURE, form);
}
示例#17
0
文件: window.c 项目: jetlive/xynth
void s_window_show (s_window_t *window)
{
	s_socket_request(window, SOC_DATA_SHOW, window->id, NULL, 0);
	window->surface->mode |= SURFACE_REAL;
}
示例#18
0
文件: window.c 项目: jetlive/xynth
void s_window_hide (s_window_t *window)
{
	s_socket_request(window, SOC_DATA_SHOW, window->id, NULL, -1);
//	window->surface->mode &= ~SURFACE_REAL;
}
示例#19
0
static void xynthlogout_logout (s_window_t *window, s_event_t *event, s_handler_t *handler)
{
	s_socket_request(window, SOC_DATA_CLOSE_SERVER);
}
示例#20
0
文件: window.c 项目: d33tah/whitix
int s_window_init (s_window_t **window)
{
    s_window_t *w;

    w = (s_window_t *) s_calloc(1, sizeof(s_window_t));
    if (s_surface_init(w))       {
        goto err1;
    }
    if (s_pollfds_init(w))       {
        goto err2;
    }
    if (s_timers_init(w))        {
        goto err3;
    }
    if (s_socket_init(w))        {
        goto err4;
    }
    if (s_handlers_init(w))      {
        goto err4;
    }
    if (s_childs_init(w))        {
        goto err5;
    }
    if (s_eventq_init(w))        {
        goto err6;
    }
    if (s_event_init(&w->event)) {
        goto err7;
    }
    if (s_gettext_init(w))       {
        goto err8;
    }

    w->running = 1;
    w->id = -1;
    w->pri = -1;
    w->resizeable = 1;

    /* -1 means no limits on width or height. */
    w->min_w = w->min_h = w->max_w = w->max_h = -1;

    w->alwaysontop = 0;
    w->cursor = MOUSE_CURSOR_ARROW;
    w->mouse_entered = 0;
    *window = w;

    if (s_socket_request(w, SOC_DATA_DISPLAY)) {
        goto err9;
    }

    return 0;
err9:
    s_gettext_uninit(w);
err8:
    s_event_uninit(w->event);
err7:
    s_eventq_uninit(w);
err6:
    s_childs_uninit(w);
err5:
    s_handlers_uninit(w);
err4:
    s_timers_uninit(w);
err3:
    s_pollfds_uninit(w);
err2:
    s_free(w->surface);
err1:
    s_free(w);
    debugf(DCLI | DFAT, "Cannot connect to server");
    return -1;
}