Ejemplo n.º 1
0
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;
    }
    
}
Ejemplo n.º 2
0
/**
 * @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);
}
Ejemplo n.º 3
0
/**
 * @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);
}
Ejemplo n.º 4
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);
}