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); }
/** * @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); }
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); }
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); }
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); }
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; }
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)
/** * @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); }
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); }