Exemple #1
0
static EWL_CALLBACK_DEFN(fg_mouse_in)
{
	Ewler_Widget *ewler_w = user_data;
	Ewl_Embed *embed;

	ewler_w->mouse.state |= EWLER_WIDGET_MOUSE_IN;

	embed = ewl_embed_widget_find(w);
	evas_event_feed_mouse_in(embed->evas, 0, NULL);
}
Exemple #2
0
/**
 * @param dvi: the dvi widget to change the displayed dvi
 * @param filename: the path to the new dvi to be displayed by @a dvi
 * @return Returns no value.
 * @brief Change the dvi file displayed by an dvi widget
 *
 * Set the dvi displayed by @a dvi to the one found at the path @a filename. If an
 * edje is used, a minimum size should be specified in the edje or the code.
 */
int
ewl_dvi_file_set(Ewl_Dvi *dvi, const char *filename)
{
        Ewl_Widget *w;
        Ewl_Embed *emb;

        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR_RET(dvi, FALSE);
        DCHECK_TYPE(dvi, EWL_DVI_TYPE);

        w = EWL_WIDGET(dvi);
        emb = ewl_embed_widget_find(w);

        if (!filename || (filename[0] == '\0'))
                DRETURN_INT(FALSE, DLEVEL_STABLE);

        if (dvi->filename != filename) {
                IF_FREE(dvi->filename);
        }

        if (dvi->dvi_page) {
                edvi_page_delete(dvi->dvi_page);
                dvi->dvi_page = NULL;
        }

        if (dvi->dvi_document) {
                edvi_document_delete(dvi->dvi_document);
                dvi->dvi_document = NULL;
        }

        dvi->filename = strdup(filename);

        /*
         * Load the new dvi if widget has been realized
         */

        dvi->dvi_document = edvi_document_new(dvi->filename, dvi->dvi_device, dvi->dvi_property);
        if (!dvi->dvi_document)
                DRETURN_INT(FALSE, DLEVEL_STABLE);

        dvi->dvi_page = edvi_page_new(dvi->dvi_document);
        if (!dvi->dvi_page) {
                edvi_document_delete(dvi->dvi_document);
                dvi->dvi_document = NULL;
                DRETURN_INT(FALSE, DLEVEL_STABLE);
        }

        if (REALIZED(w)) {
                ewl_widget_obscure(w);
                ewl_widget_reveal(w);
        }

        DRETURN_INT(TRUE, DLEVEL_STABLE);
}
Exemple #3
0
static EWL_CALLBACK_DEFN(fg_mouse_out)
{
	Ewler_Widget *ewler_w = user_data;
	Ewl_Embed *embed;

	if( !(ewler_w->mouse.state & EWLER_WIDGET_MOUSE_DOWN) )
		ewler_w->mouse.state = 0;

	embed = ewl_embed_widget_find(w);
	evas_event_feed_mouse_out(embed->evas, 0, NULL);
}
Exemple #4
0
static EWL_CALLBACK_DEFN(fg_mouse_down)
{
	Ewler_Widget *ewler_w = user_data;
	Ewl_Embed *embed;
	Ewl_Event_Mouse_Down *ev = ev_data;
	bool multi;

	if( !ewler_w->selectable ||
			widget_under_cursor )
		return;

	widget_under_cursor = true;

	ewler_w->mouse.state |= EWLER_WIDGET_MOUSE_DOWN;
	ewler_w->mouse.button = ev->button;
	ewler_w->mouse.state_x = ev->x;
	ewler_w->mouse.state_y = ev->y;

	ewler_w->corners.x = CURRENT_X(w);
	ewler_w->corners.y = CURRENT_Y(w);
	ewler_w->corners.u = CURRENT_X(w) + CURRENT_W(w);
	ewler_w->corners.v = CURRENT_Y(w) + CURRENT_H(w);

	if( ev->modifiers & (EWL_KEY_MODIFIER_CTRL | EWL_KEY_MODIFIER_SHIFT) )
		multi = true;
	else
		multi = false;

	if( ev->button == 1 && multi ) {
		form_toggle(ewler_w);
	} else if( ev->button == 1 ||
						 (!multi && !ecore_list_count(form_selected())) ) {
		Ecore_List *selected;

		selected = form_selected();
		if( selected &&
				(ecore_list_count(selected) != 1 ||
				 ecore_list_first_goto(selected) != ewler_w) ) {
			form_deselect_all();
			form_select(ewler_w);
		}
	}

	IF_FREE(ewler_w->source);

	embed = ewl_embed_widget_find(w);
	evas_event_feed_mouse_down(embed->evas, ev->button, EVAS_BUTTON_NONE,
														 0, NULL);
}
Exemple #5
0
static EWL_CALLBACK_DEFN(fg_mouse_up)
{
	Ewler_Widget *ewler_w = user_data;
	Ewl_Embed *embed;
	Ewl_Event_Mouse_Up *ev = ev_data;

	ewler_w->mouse.state &= ~EWLER_WIDGET_MOUSE_DOWN;
	ewler_w->mouse.button = ev->button;
	ewler_w->mouse.state_x = ev->x;
	ewler_w->mouse.state_y = ev->y;

	IF_FREE(ewler_w->source);

	embed = ewl_embed_widget_find(w);
	evas_event_feed_mouse_up(embed->evas, ev->button, EVAS_BUTTON_NONE, 0, NULL);
}
Exemple #6
0
static void display_hint(double scroll_amount)
{
    if(!scroll_hint) {
        Ewl_Embed *emb = ewl_embed_widget_find(pdfwidget);
        scroll_hint = evas_object_line_add(emb->canvas);
        evas_object_color_set(scroll_hint, 0, 200, 0, 255);
    }

    int y_coord = round(scroll_amount);
    if(y_coord < 0) {
        y_coord += CURRENT_H(scrollpane);
    }
    evas_object_line_xy_set(scroll_hint,
            0, y_coord, CURRENT_W(scrollpane), y_coord);
    evas_object_show(scroll_hint);

    if(hint_timer) { // previously set, did not fire
        ecore_timer_del(hint_timer);
    }
    hint_timer = ecore_timer_add(2.0, hide_hint, NULL);
}
static int
create_test(Ewl_Container *box)
{
        Ewl_Widget *vbox, *o;
        Ewl_Embed *emb;

        vbox = ewl_vbox_new();
        ewl_container_child_append(box, vbox);
        ewl_widget_show(vbox);

        o = ewl_button_new();
        ewl_button_label_set(EWL_BUTTON(o), "button");
        ewl_container_child_append(EWL_CONTAINER(vbox), o);
        ewl_callback_append(o, EWL_CALLBACK_CLICKED, ewl_widget_cb_click, NULL);
        ewl_widget_show(o);

        emb = ewl_embed_widget_find(EWL_WIDGET(box));
        ewl_window_fullscreen_set(EWL_WINDOW(emb), TRUE);

        return 1;
}
Exemple #8
0
ewl_dvi_reveal_cb(Ewl_Widget *w,
                  void       *ev_data __UNUSED__,
                  void       *user_data __UNUSED__)
{
        Ewl_Dvi   *dvi;
        Ewl_Embed *emb;
        double     mag;
        int        ow;
        int        oh;

        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR(w);
        DCHECK_TYPE(w, EWL_WIDGET_TYPE);

        dvi = EWL_DVI(w);
        emb = ewl_embed_widget_find(w);
        if (!emb)
                DRETURN(DLEVEL_STABLE);

        if (!dvi->image)
          dvi->image = ewl_embed_object_request(emb, "dvi");
        if (!dvi->image)
          dvi->image = evas_object_image_add(emb->canvas);
        if (!dvi->image)
          DRETURN(DLEVEL_STABLE);

        evas_object_smart_member_add(dvi->image, w->smart_object);
        if (w->fx_clip_box)
                evas_object_stack_below(dvi->image, w->fx_clip_box);

        if (w->fx_clip_box)
Exemple #9
0
/**
 * @param pdf: the pdf to change the scale
 * @return 1 if the text is found, 0 otherwise.
 * @brief Set the case of the search
 *
 * Start the search of text in the @p pdf document. The
 * text to search should have been set by ewl_pdf_search_text_set().
 * It is @c NULL by default. The first page from which the search
 * starts is set by ewl_pdf_search_first_page_set(). It is 0 by default.
 * The search can be case sensitive or not. It is set by
 * ewl_pdf_search_is_case_sensitive() and it is case insensitive by
 * default.
 *
 * Several call of that function can be done to search several occurences
 * of the text in the document. When a text is found,
 * epdf_page_page_set() is called.
 */
int
ewl_pdf_search_next(Ewl_Pdf *pdf)
{
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR_RET(pdf, FALSE);
        DCHECK_TYPE_RET(pdf, EWL_PDF_TYPE, FALSE);

        if (!pdf->search.text)
                DRETURN_INT(FALSE, DLEVEL_STABLE);

        if (!pdf->search.o) {
                Ewl_Embed *emb;

                emb = ewl_embed_widget_find(EWL_WIDGET(pdf));
                pdf->search.o = evas_object_rectangle_add(emb->canvas);
                if (!pdf->search.o)
                        DRETURN_INT(FALSE, DLEVEL_STABLE);
                evas_object_color_set(pdf->search.o, 0, 128, 0, 128);
                evas_object_hide(pdf->search.o);
        }

 next_page:
        /* no list, we search one */
        while (!pdf->search.list &&
               pdf->search.page < epdf_document_page_count_get(pdf->pdf_document)) {
                Epdf_Page *page;

                pdf->search.page++;
                printf("page : %d\n", pdf->search.page);
                epdf_page_page_set(pdf->pdf_page, pdf->search.page);
                pdf->search.list = epdf_page_text_find(page,
                                                       pdf->search.text,
                                                       pdf->search.is_case_sensitive);
                if (pdf->search.list)
                        ecore_list_first_goto(pdf->search.list);
                epdf_page_delete(page);
        }

        /* an already existing list or a newly one */
        if (pdf->search.list) {
                Epdf_Rectangle *rect;

                if ((rect = (Epdf_Rectangle *)ecore_list_next(pdf->search.list))) {
                  if (pdf->search.page != epdf_page_page_get(pdf->pdf_page)) {
                          ewl_pdf_page_set(pdf, pdf->search.page);
                          ewl_callback_call(EWL_WIDGET(pdf), EWL_CALLBACK_REVEAL);
                  }
                        evas_object_move(pdf->search.o,
                                         CURRENT_X(EWL_WIDGET(pdf)) + round(rect->x1 - 1),
                                         CURRENT_Y(EWL_WIDGET(pdf)) + round(rect->y1 - 1));
                        evas_object_resize(pdf->search.o,
                                           round(rect->x2 - rect->x1 + 1),
                                           round(rect->y2 - rect->y1));
                        if (!evas_object_visible_get(pdf->search.o))
                                evas_object_show(pdf->search.o);
                        /* we leave... */
                        DRETURN_INT(TRUE, DLEVEL_STABLE);
                }
                else { /* no more word to find. We destroy the list */
                        ecore_list_destroy(pdf->search.list);
                        pdf->search.list = NULL;
                        /* we search a new one */
                printf("page0 : %d\n", pdf->search.page);
                        goto next_page;
                }
        }
        evas_object_hide(pdf->search.o);

        if (pdf->search.is_circular) {
                pdf->search.page = -1;
                DRETURN_INT(TRUE, DLEVEL_STABLE);
        }
        else
                DRETURN_INT(FALSE, DLEVEL_STABLE);
}
Exemple #10
0
static EWL_CALLBACK_DEFN(fg_mouse_move)
{
	Ewler_Widget *ewler_w = user_data;
	Ewl_Embed *embed;
	Ewl_Event_Mouse_Move *ev = ev_data;

	if( ewler_w->mouse.state & EWLER_WIDGET_MOUSE_DOWN &&
			ewler_w->mouse.button == 1 ) {
		int	dx = ev->x - ewler_w->mouse.state_x;
		int	dy = ev->y - ewler_w->mouse.state_y;
		
		if( ewler_w->source ) {
			int *x, *y, *u, *v;

			x = &ewler_w->corners.x;
			y = &ewler_w->corners.y;
			u = &ewler_w->corners.u;
			v = &ewler_w->corners.v;

			if( strstr( ewler_w->source, "left" ) )
				*x += dx;
			if( strstr( ewler_w->source, "right" ) )
				*u += dx;
			if( strstr( ewler_w->source, "top" ) ) {
				if( ev->modifiers & EWL_KEY_MODIFIER_CTRL )
					*y = *v - *u + *x;
				else
					*y += dy;
			}
			if( strstr( ewler_w->source, "bottom" ) ) {
				if( ev->modifiers & EWL_KEY_MODIFIER_CTRL )
					*v = *y + *u - *x;
				else
					*v += dy;
			}

			if( *u < *x )
				*u = *x;
			if( *v < *y )
				*v = *y;

			ewl_object_preferred_inner_size_set(EWL_OBJECT(ewler_w->fg),
																					*u - *x, *v - *y);
			ewl_object_minimum_size_set(EWL_OBJECT(ewler_w->fg), *u - *x, *v - *y);
			ewl_object_geometry_request(EWL_OBJECT(ewler_w->fg),
																	*x, *y, *u - *x, *v - *y);
			ewl_object_preferred_inner_size_set(EWL_OBJECT(ewler_w->bg),
																					*u - *x, *v - *y);
			ewl_object_minimum_size_set(EWL_OBJECT(ewler_w->fg), *u - *x, *v - *y);
			ewl_object_geometry_request(EWL_OBJECT(ewler_w->fg),
																	*x, *y, *u - *x, *v - *y);
			ewl_object_preferred_inner_size_set(EWL_OBJECT(ewler_w->w),
																					*u - *x, *v - *y);
			ewl_object_minimum_size_set(EWL_OBJECT(ewler_w->w), *u - *x, *v - *y);
			ewl_object_geometry_request(EWL_OBJECT(ewler_w->w),
																	*x, *y, *u - *x, *v - *y);

			ewler_w->mouse.state_x = ev->x;
			ewler_w->mouse.state_y = ev->y;
		} else {
			Ecore_List *selected;

			selected = form_selected();

			if( selected ) {
				ecore_list_first_goto(selected);

				while( (ewler_w = ecore_list_next(selected)) ) {
					ewl_object_position_request(EWL_OBJECT(ewler_w->bg),
																			CURRENT_X(ewler_w->bg) + dx,
																			CURRENT_Y(ewler_w->bg) + dy);
					ewl_object_position_request(EWL_OBJECT(ewler_w->fg),
																			CURRENT_X(ewler_w->fg) + dx,
																			CURRENT_Y(ewler_w->fg) + dy);
					ewl_object_position_request(EWL_OBJECT(ewler_w->w),
																			CURRENT_X(ewler_w->w) + dx,
																			CURRENT_Y(ewler_w->w) + dy);

					ewler_w->mouse.state_x = ev->x;
					ewler_w->mouse.state_y = ev->y;
				}
			}
		}
	}

	embed = ewl_embed_widget_find(w);
	if( embed )
		evas_event_feed_mouse_move(embed->evas, ev->x, ev->y, 0, NULL);
}