void cb_goto_key_down(Ewl_Widget *w, void *ev, void *data) { Ewl_Widget *curwidget; char temp[50]; Ewl_Event_Key_Down *e; e = (Ewl_Event_Key_Down*)ev; int k = translate_key(e); int page,totalpages; switch(k) { case K_RETURN: ewl_widget_hide(menu); totalpages=epdf_document_page_count_get(ewl_pdf_pdf_document_get(EWL_PDF(pdfwidget))); page=(int)strtol(ewl_text_text_get(EWL_TEXT(goto_entry)),NULL,10); sprintf(temp,"menuitem1"); curwidget=ewl_widget_name_find(temp); ewl_menu_collapse(EWL_MENU(curwidget)); if(page>0&&page<=totalpages) ewl_pdf_page_set(EWL_PDF(pdfwidget),page-1); break; case K_ESCAPE: sprintf(temp,"menuitem1"); curwidget=ewl_widget_name_find(temp); ewl_menu_collapse(EWL_MENU(curwidget)); ewl_widget_focus_send(menu); break; default: return; } }
/** * @param pdf: the pdf widget * @return Returns no value. * @brief go to the previous page and render it */ void ewl_pdf_page_previous(Ewl_Pdf *pdf) { int page; DENTER_FUNCTION(DLEVEL_STABLE); DCHECK_PARAM_PTR(pdf); DCHECK_TYPE(pdf, EWL_PDF_TYPE); if (!pdf->pdf_page) DRETURN(DLEVEL_STABLE); page = epdf_page_page_get(pdf->pdf_page); if (page > 0) page--; ewl_pdf_page_set(pdf, page); DLEAVE_FUNCTION(DLEVEL_STABLE); }
/** * @param pdf: the pdf widget * @return Returns no value. * @brief go to the next page and render it */ void ewl_pdf_page_next(Ewl_Pdf *pdf) { int page; DENTER_FUNCTION(DLEVEL_STABLE); DCHECK_PARAM_PTR(pdf); DCHECK_TYPE(pdf, EWL_PDF_TYPE); if (!pdf->pdf_page) DRETURN(DLEVEL_STABLE); page = epdf_page_page_get(pdf->pdf_page); if (page < (epdf_document_page_count_get(pdf->pdf_document) - 1)) page++; ewl_pdf_page_set(pdf, page); DLEAVE_FUNCTION(DLEVEL_STABLE); }
/** * @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); }