Enlightenment CVS committal Author : doursse Project : e17 Module : proto
Dir : e17/proto/exorcist/src/bin Modified Files: etk_main_window.c ewl_main_window.c ewl_main_window.h etk_main_window.h Log Message: put the pdf in a scroll(view/pane), fix a leak in etk gui, fix policy in etk ad ewl gui =================================================================== RCS file: /cvs/e/e17/proto/exorcist/src/bin/etk_main_window.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- etk_main_window.c 25 Apr 2006 07:07:07 -0000 1.4 +++ etk_main_window.c 14 May 2006 15:29:52 -0000 1.5 @@ -39,9 +39,9 @@ static void _exo_etk_quit_cb (Etk_Object *object, void *user_data); static Etk_Bool _exo_etk_delete_cb (Etk_Object *object, void *user_data); +static Etk_Bool _exo_etk_index_delete_cb (Etk_Object *object, void *user_data); static void _exo_etk_menu_popup_cb (Etk_Object *object, void *event_info, void *data); static void _change_page_cb (Etk_Object *object, Etk_Tree_Row *row, void *data); -static void _exo_etk_row_data_free_cb (Etk_Object *object); static void _exo_etk_document_info_cb (Etk_Object *object, void *user_data); static Etk_Bool _exo_etk_document_info_delete_cb (Etk_Object *object, void *user_data); static void _exo_etk_document_info_response_cb (Etk_Object *object, int res, void *user_data); @@ -49,6 +49,7 @@ static Etk_Bool _exo_etk_search_delete_cb (Etk_Object *object, void *user_data); static void _exo_etk_search_response_cb (Etk_Object *object, int res, void *user_data); static void _exo_etk_index_show_cb (Etk_Object *object, void *user_data); +static void _exo_etk_row_data_free_cb (void *data); static void _exo_etk_orientation_landscape_cb (Etk_Object *object, void *user_data); static void _exo_etk_orientation_upsidedown_cb (Etk_Object *object, void *user_data); @@ -88,10 +89,8 @@ num = (int *)malloc (sizeof (int)); *num = epdf_index_item_page_get (etk_pdf_pdf_document_get (pdf), item); - etk_tree_row_data_set (prow, num); + etk_tree_row_data_set_full (prow, num, _exo_etk_row_data_free_cb); free (buf); - /* etk_signal_connect ("destroyed", ETK_OBJECT (row), */ - /* ETK_CALLBACK(_exo_etk_row_data_free_cb), NULL); */ c = epdf_index_item_children_get (item); if (c) { _exo_etk_tree_fill (pdf, tree, col, prow, c); @@ -100,24 +99,69 @@ } static void +_exo_etk_row_data_free_cb (void *data) +{ + if (data) + free (data); +} + +static void _exo_etk_update_document (Exo_Etk *data, Etk_Tree_Col *col_pages, Etk_Tree_Col *col_index) { Epdf_Document *document; Ecore_List *index; + char *file; int page_count; int i; + int l1; + int l2; if (!data || !data->filename) return; -/* etk_container_reset (ETK_CONTAINER (data->list_pages)); */ -/* etk_container_reset (ETK_CONTAINER (data->list_index)); */ + etk_tree_clear (ETK_TREE (data->list_pages)); + etk_tree_clear (ETK_TREE (data->list_index)); - printf ("page : %d %s\n", etk_pdf_page_get (ETK_PDF (data->pdf)), data->filename); - etk_pdf_file_set (ETK_PDF (data->pdf), data->filename); + l1 = strlen (data->path); + l2 = strlen (data->filename); + if (!data->path || (data->path[0] == '\0')) + etk_pdf_file_set (ETK_PDF (data->pdf), data->filename); + else { + file = (char *)malloc (sizeof (char) * (l1 + l2 + 2)); + memcpy (file, data->path, l1); + file[l1] = '/'; + memcpy (file + l1 + 1, data->filename, l2); + file [l1 + l2 + 1] = '\0'; + etk_pdf_file_set (ETK_PDF (data->pdf), file); + free (file); + } document = etk_pdf_pdf_document_get (ETK_PDF (data->pdf)); - if (!document) return; + if (!document) { + char buf[1024]; + Etk_Widget *dialog_error; + Etk_Widget *label; + + dialog_error = etk_dialog_new (); + etk_window_title_set (ETK_WINDOW (dialog_error), "Exorcist - Error"); + etk_window_wmclass_set (ETK_WINDOW (dialog_error), "Exorcist - Error", "Exorcist - Error"); + etk_container_border_width_set (ETK_CONTAINER (dialog_error), ETK_TRUE); + + etk_dialog_button_add (ETK_DIALOG (dialog_error), + etk_stock_label_get (ETK_STOCK_DIALOG_OK), ETK_RESPONSE_OK); + etk_signal_connect ("response", ETK_OBJECT (dialog_error), + ETK_CALLBACK (etk_object_destroy), NULL); + + snprintf (buf, 1024, "Error: Can not open file<br>%s", etk_pdf_file_get (ETK_PDF (data->pdf))); + label = etk_label_new (buf); + etk_dialog_pack_in_main_area (ETK_DIALOG (dialog_error), label, ETK_TRUE, ETK_TRUE, 0, ETK_FALSE); + etk_widget_show (label); + + + etk_widget_show (dialog_error); + + return; + } page_count = epdf_document_page_count_get (document); etk_tree_freeze (ETK_TREE (data->list_pages)); @@ -128,9 +172,7 @@ row = etk_tree_append (ETK_TREE (data->list_pages), col_pages, i + 1, NULL); num = (int *)malloc (sizeof (int)); *num = i; - etk_tree_row_data_set (row, num); - /* etk_signal_connect ("destroyed", ETK_OBJECT (row), */ - /* ETK_CALLBACK(_exo_etk_row_data_free_cb), NULL); */ + etk_tree_row_data_set_full (row, num, _exo_etk_row_data_free_cb); } etk_tree_thaw (ETK_TREE (data->list_pages)); @@ -141,16 +183,19 @@ void _exo_etk_index_window (Exo_Etk *data) { - char title[4096]; + char title[4096]; snprintf (title, 4096, "Exorcist - %s - Index", data->filename); data->win_index = etk_window_new (); etk_window_title_set (ETK_WINDOW (data->win_index), title); etk_window_wmclass_set (ETK_WINDOW (data->win_index), title, title); + etk_widget_size_request_set (data->win_index, 150, 200); + etk_signal_connect ("delete_event", ETK_OBJECT (data->win_index), + ETK_CALLBACK (_exo_etk_index_delete_cb), data); -/* etk_tree_headers_visible_set (ETK_TREE (data->list_index), ETK_FALSE); */ etk_container_add (ETK_CONTAINER (data->win_index), data->list_index); + etk_widget_size_request_set (data->list_index, 150, 150); etk_widget_show (data->list_index); } @@ -319,7 +364,7 @@ } void -exo_etk_main_window (char *filename) +exo_etk_main_window (const char *filename) { Etk_Widget *window; Etk_Widget *vbox; @@ -334,8 +379,21 @@ data = (Exo_Etk *)calloc (sizeof (Exo_Etk), 1); if (!data) return; - if (filename) - data->filename = strdup (filename); + if (filename) { + char *tmp; + int l; + + tmp = strrchr (filename, '/'); + if (tmp) { + l = tmp - filename; + data->path = (char *)malloc (sizeof (char) * (l + 1)); + memcpy (data->path, filename, l); + data->path[l] = '\0'; + data->filename = strdup (tmp + 1); + } + else + data->filename = strdup (filename); + } data->pdf = etk_pdf_new (); data->list_pages = etk_tree_new (); data->list_index = etk_tree_new (); @@ -343,6 +401,7 @@ window = etk_window_new (); etk_window_title_set (ETK_WINDOW (window), "Exorcist"); etk_window_wmclass_set (ETK_WINDOW (window), "Exorcist", "Exorcist"); +/* etk_widget_size_request_set (window, 300, 400); */ etk_signal_connect ("delete_event", ETK_OBJECT (window), ETK_CALLBACK (_exo_etk_delete_cb), data); @@ -355,7 +414,7 @@ etk_widget_show (menu_bar); hbox = etk_hbox_new (ETK_FALSE, 0); - etk_box_pack_start (ETK_BOX (vbox), hbox, ETK_FALSE, ETK_FALSE, 0); + etk_box_pack_start (ETK_BOX (vbox), hbox, ETK_TRUE, ETK_TRUE, 0); etk_widget_show (hbox); etk_tree_headers_visible_set (ETK_TREE (data->list_pages), ETK_FALSE); @@ -367,16 +426,16 @@ etk_tree_model_int_new (ETK_TREE (data->list_pages)), 60); etk_tree_build (ETK_TREE (data->list_pages)); - etk_box_pack_start (ETK_BOX (hbox), data->list_pages, ETK_FALSE, ETK_FALSE, 0); + etk_box_pack_start (ETK_BOX (hbox), data->list_pages, ETK_FALSE, ETK_TRUE, 0); etk_widget_show (data->list_pages); popup = _exo_etk_menu_options (data); scrollview = etk_scrolled_view_new (); - etk_box_pack_start (ETK_BOX (hbox), scrollview, ETK_FALSE, ETK_FALSE, 0); + etk_box_pack_start (ETK_BOX (hbox), scrollview, ETK_TRUE, ETK_TRUE, 0); etk_widget_show (scrollview); - etk_container_add (ETK_CONTAINER (scrollview), data->pdf); + etk_scrolled_view_add_with_viewport (ETK_SCROLLED_VIEW (scrollview), data->pdf); etk_signal_connect("mouse_down", ETK_OBJECT(data->pdf), ETK_CALLBACK(_exo_etk_menu_popup_cb), popup); etk_widget_show (data->pdf); @@ -385,12 +444,15 @@ etk_widget_size_request_set (data->list_index, 60, -1); etk_tree_mode_set (ETK_TREE (data->list_index), ETK_TREE_MODE_TREE); col_index = etk_tree_col_new (ETK_TREE (data->list_index), "", - etk_tree_model_int_new (ETK_TREE (data->list_index)), + etk_tree_model_text_new (ETK_TREE (data->list_index)), 60); + etk_tree_build (ETK_TREE (data->list_index)); if (data->filename) _exo_etk_update_document (data, col_pages, col_index); - etk_widget_show (window); + etk_widget_show_all (window); + + printf ("%d\n", evas_object_visible_get(data->pdf->smart_object)); _exo_etk_index_window (data); } @@ -401,8 +463,16 @@ Exo_Etk *data; data = (Exo_Etk *)user_data; + if (data->list_pages) + etk_tree_clear (ETK_TREE (data->list_pages)); +/* if (data->list_index) */ + etk_tree_clear (ETK_TREE (data->list_index)); + etk_object_destroy (object); etk_main_quit (); + + if (data->path) + free (data->path); if (data->filename) free (data->filename); free (data); @@ -415,13 +485,27 @@ { Exo_Etk *data; - etk_main_quit (); data = (Exo_Etk *)user_data; + etk_tree_clear (ETK_TREE (data->list_pages)); + etk_tree_clear (ETK_TREE (data->list_index)); + + etk_main_quit (); + + if (data->path) + free (data->path); if (data->filename) free (data->filename); free (data); } +static Etk_Bool +_exo_etk_index_delete_cb (Etk_Object *object, void *user_data __UNUSED__) +{ + etk_widget_hide (ETK_WIDGET (object)); + + return ETK_TRUE; +} + static void _exo_etk_menu_popup_cb (Etk_Object *object __UNUSED__, void *event_info __UNUSED__, void *data) { @@ -442,17 +526,6 @@ } static void -_exo_etk_row_data_free_cb (Etk_Object *object) -{ - int *row_number; - - if (!object) - return; - row_number = (int *)etk_tree_row_data_get ((Etk_Tree_Row *)object); - if (row_number) free (row_number); -} - -static void _exo_etk_document_info_cb (Etk_Object *object __UNUSED__, void *user_data) { Exo_Etk *data; @@ -962,7 +1035,7 @@ Etk_Widget *table; Etk_Widget *label; char *tmp; - char *filename; + const char *filename; char *psfilename; int l; int page_count; =================================================================== RCS file: /cvs/e/e17/proto/exorcist/src/bin/ewl_main_window.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ewl_main_window.c 25 Apr 2006 07:07:07 -0000 1.4 +++ ewl_main_window.c 14 May 2006 15:29:52 -0000 1.5 @@ -160,16 +160,30 @@ { Epdf_Document *document; Ecore_List *index; + char *file; int page_count; int i; + int l1; + int l2; if (!data || !data->filename) return; ewl_container_reset (EWL_CONTAINER (data->list_pages)); ewl_container_reset (EWL_CONTAINER (data->list_index)); - printf ("page : %d %s\n", ewl_pdf_page_get (EWL_PDF (data->pdf)), data->filename); - ewl_pdf_file_set (EWL_PDF (data->pdf), data->filename); + l1 = strlen (data->path); + l2 = strlen (data->filename); + if (!data->path || (data->path[0] == '\0')) + ewl_pdf_file_set (EWL_PDF (data->pdf), data->filename); + else { + file = (char *)malloc (sizeof (char) * (l1 + l2 + 2)); + memcpy (file, data->path, l1); + file[l1] = '/'; + memcpy (file + l1 + 1, data->filename, l2); + file [l1 + l2 + 1] = '\0'; + ewl_pdf_file_set (EWL_PDF (data->pdf), file); + free (file); + } document = ewl_pdf_pdf_document_get (EWL_PDF (data->pdf)); if (!document) return; @@ -423,19 +437,33 @@ } void -exo_ewl_main_window (char *filename) +exo_ewl_main_window (const char *filename) { Ewl_Widget *window; Ewl_Widget *vbox; Ewl_Widget *menu_bar; Ewl_Widget *hbox; + Ewl_Widget *scrollpane; Exo_Ewl *data; data = (Exo_Ewl *)calloc (sizeof (Exo_Ewl), 1); if (!data) return; - if (filename) - data->filename = strdup (filename); + if (filename) { + char *tmp; + int l; + + tmp = strrchr (filename, '/'); + if (tmp) { + l = tmp - filename; + data->path = (char *)malloc (sizeof (char) * (l + 1)); + memcpy (data->path, filename, l); + data->path[l] = '\0'; + data->filename = strdup (tmp + 1); + } + else + data->filename = strdup (filename); + } data->pdf = ewl_pdf_new (); data->list_pages = ewl_tree_new (1); ewl_tree_expandable_rows_set (EWL_TREE (data->list_pages), 0); @@ -464,14 +492,25 @@ hbox = ewl_hbox_new (); ewl_box_homogeneous_set (EWL_BOX (hbox), FALSE); + ewl_object_fill_policy_set(EWL_OBJECT(hbox), + EWL_FLAG_FILL_SHRINK); ewl_container_child_append (EWL_CONTAINER (vbox), hbox); ewl_widget_show (hbox); ewl_tree_headers_visible_set (EWL_TREE (data->list_pages), FALSE); + ewl_object_fill_policy_set(EWL_OBJECT(data->list_pages), + EWL_FLAG_FILL_HSHRINK | EWL_FLAG_FILL_VFILL); ewl_container_child_append (EWL_CONTAINER (hbox), data->list_pages); ewl_widget_show (data->list_pages); - ewl_container_child_append (EWL_CONTAINER (hbox), data->pdf); + scrollpane = ewl_scrollpane_new (); + ewl_container_child_append (EWL_CONTAINER (hbox), scrollpane); + ewl_scrollpane_hscrollbar_flag_set (EWL_SCROLLPANE (scrollpane), EWL_SCROLLPANE_FLAG_AUTO_VISIBLE); + ewl_scrollpane_vscrollbar_flag_set (EWL_SCROLLPANE (scrollpane), EWL_SCROLLPANE_FLAG_AUTO_VISIBLE); + ewl_widget_show (scrollpane); + + + ewl_container_child_append (EWL_CONTAINER (scrollpane), data->pdf); ewl_widget_show (data->pdf); data->popup = _exo_ewl_menu_options (data); @@ -633,21 +672,20 @@ data = (Exo_Ewl *)user_data; resp = *(unsigned int *)ev_data; switch (resp) { - case EWL_STOCK_OPEN: + case EWL_STOCK_OK: if (data->path) free (data->path); if (data->filename) free (data->filename); - data->path = (char *)ewl_filedialog_directory_get (filedialog); + data->path = strdup (ewl_filedialog_directory_get (filedialog)); data->filename = ewl_filedialog_selected_file_get (filedialog); _exo_ewl_update_document (data); - ewl_widget_destroy (widget); break; case EWL_STOCK_CANCEL: default: - ewl_widget_destroy (widget); break; } + ewl_widget_destroy (widget); } static void @@ -663,7 +701,7 @@ Ewl_Widget *label; Exo_Ps_Data *ps_data; char *tmp; - char *filename; + const char *filename; char *psfilename; int l; int page_count; @@ -984,7 +1022,7 @@ ewl_widget_show (list); row_text[0] = "File name"; - row_text[1] = epdf_document_filename_get (doc); + row_text[1] = (char *)epdf_document_filename_get (doc); ewl_tree_text_row_add (EWL_TREE (list), NULL, row_text); row_text[0] = "Title"; =================================================================== RCS file: /cvs/e/e17/proto/exorcist/src/bin/ewl_main_window.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- ewl_main_window.h 21 Mar 2006 07:36:02 -0000 1.1 +++ ewl_main_window.h 14 May 2006 15:29:52 -0000 1.2 @@ -2,7 +2,7 @@ #define __EXO_EWL_MAIN_WINDOW_H__ -void exo_ewl_main_window (char *filename); +void exo_ewl_main_window (const char *filename); #endif /* __EXO_EWL_MAIN_WINDOW_H__ */ =================================================================== RCS file: /cvs/e/e17/proto/exorcist/src/bin/etk_main_window.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- etk_main_window.h 21 Mar 2006 07:36:02 -0000 1.1 +++ etk_main_window.h 14 May 2006 15:29:52 -0000 1.2 @@ -2,7 +2,7 @@ #define __EXO_ETK_MAIN_WINDOW_H__ -void exo_etk_main_window (char *filename); +void exo_etk_main_window (const char *filename); #endif /* __EXO_ETK_MAIN_WINDOW_H__ */ ------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs