Ejemplo n.º 1
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);
}
Ejemplo n.º 2
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);
}
Ejemplo n.º 3
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);
}