| 
     
      
      
      From: <enl...@li...> - 2006-03-16 17:01:39
      
     
   | 
Enlightenment CVS committal
Author  : codewarrior
Project : e17
Module  : proto
Dir     : e17/proto/enity/src/bin
Modified Files:
	enity.c enity.h 
Log Message:
- add "--progress" option
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/enity/src/bin/enity.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- enity.c	16 Mar 2006 13:14:30 -0000	1.9
+++ enity.c	16 Mar 2006 17:01:35 -0000	1.10
@@ -2,6 +2,23 @@
 
 static int _en_retval = 0;
 static Evas_List *_en_checked_rows = NULL;
+static Ecore_Fd_Handler *_en_fd_stdin_handler = NULL;
+
+int _en_fd_stdin_cb (void *data, Ecore_Fd_Handler *fd_handler)
+{
+   char input[32];
+   int len;
+   int percent;
+   
+   len = read(1, &input, sizeof(input));
+   if(len > 0)
+     percent = atoi(input);
+   if(percent <= 0)
+     etk_progress_bar_fraction_set(ETK_PROGRESS_BAR(data), 0.0);
+   else
+     etk_progress_bar_fraction_set(ETK_PROGRESS_BAR(data), ((double)percent/100.0));
+   return 1;
+}
 
 static Etk_Bool _en_window_delete_cb(void *data)
 {
@@ -49,6 +66,11 @@
 	     _en_retval = 0;
 	     break;
 	  }
+	else if(ETK_IS_PROGRESS_BAR(data))
+	  {
+	     printf("%d\n", (int)(etk_progress_bar_fraction_get(ETK_PROGRESS_BAR(data)) * 100.0));
+	     break;
+	  }
 	else if(ETK_IS_SLIDER(data))
 	  {
 	     printf("%d\n", (int)etk_range_value_get(ETK_RANGE(data)));
@@ -469,6 +491,41 @@
    etk_widget_show_all(dialog);
 }
 
+static void _en_progress_cb(Etk_Argument *args, int index)
+{
+   Etk_Widget *dialog;   
+   Etk_Widget *label;
+   Etk_Widget *progress;
+   Evas_List *data;
+   
+   dialog = etk_dialog_new();
+   etk_signal_connect("delete_event", ETK_OBJECT(dialog), ETK_CALLBACK(_en_window_delete_cb), NULL);
+   
+   if((data = _en_arg_data_get(args, "text")) != NULL)
+     label = etk_label_new(data->data);
+   else
+     label = etk_label_new(_("Running..."));
+   
+   progress = etk_progress_bar_new();
+      
+   etk_dialog_pack_in_main_area(ETK_DIALOG(dialog), label, ETK_TRUE, ETK_TRUE, 3, ETK_FALSE);
+   etk_dialog_pack_in_main_area(ETK_DIALOG(dialog), progress, ETK_TRUE, ETK_TRUE, 3, ETK_FALSE);
+   etk_dialog_button_add_from_stock(ETK_DIALOG(dialog), ETK_STOCK_DIALOG_OK, ETK_RESPONSE_OK);
+   etk_dialog_button_add_from_stock(ETK_DIALOG(dialog), ETK_STOCK_DIALOG_CANCEL, ETK_RESPONSE_CANCEL);
+   etk_signal_connect("response", ETK_OBJECT(dialog), ETK_CALLBACK(_en_ok_print_stdout_cb), progress);
+   
+   etk_container_border_width_set(ETK_CONTAINER(dialog), 4);
+   
+   if((data = _en_arg_data_get(args, "title")) != NULL)
+     etk_window_title_set(ETK_WINDOW(dialog), data->data);
+   else
+     etk_window_title_set(ETK_WINDOW(dialog), _("Progress"));
+   
+   _en_fd_stdin_handler = ecore_main_fd_handler_add(1, ECORE_FD_READ, _en_fd_stdin_cb, progress, NULL, NULL);
+   
+   etk_widget_show_all(dialog);   
+}
+
 static void _en_scale_step_cb(Etk_Argument *args, int index)
 {
    /* do any changes / fixes / checks here */
@@ -527,6 +584,10 @@
      { "checklist", ' ', NULL, _en_list_check_cb, NULL, ETK_ARGUMENT_FLAG_OPTIONAL, "Use check boxes for first column" },
      { "column", ' ', NULL, _en_list_column_cb, NULL, ETK_ARGUMENT_FLAG_OPTIONAL|ETK_ARGUMENT_FLAG_VALUE_REQUIRED|ETK_ARGUMENT_FLAG_MULTIVALUE, "Set the column header" },
      { "list", ' ', NULL, _en_list_cb, NULL, ETK_ARGUMENT_FLAG_OPTIONAL, "Display list dialog" },
+
+     /* --progress options */
+     { "progress", ' ', NULL, _en_progress_cb, NULL, ETK_ARGUMENT_FLAG_OPTIONAL, "Display progress indication dialog" },
+   
      /* terminator */
      { NULL, -1,  NULL, NULL, NULL, ETK_ARGUMENT_FLAG_NONE, " " }
 };  
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/enity/src/bin/enity.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- enity.h	15 Mar 2006 12:39:14 -0000	1.3
+++ enity.h	16 Mar 2006 17:01:35 -0000	1.4
@@ -3,6 +3,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <unistd.h>
 #include <string.h>
 #include <limits.h>
 
 |