Enlightenment CVS committal

Author  : davemds
Project : e17
Module  : proto/edje_editor

Dir     : e17/proto/edje_editor/src/bin


Modified Files:
        callbacks.c callbacks.h inout.c inout.h interface.c 
        interface.h main.c main.h 


Log Message:
 * Better save routines
   not yet finished, have to fix engrave_edc_output() to return correct values.
   the same on engrave_load_edc())
 * Remove unused play_dialog functions

===================================================================
RCS file: /cvs/e/e17/proto/edje_editor/src/bin/callbacks.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- callbacks.c 3 Aug 2007 19:53:29 -0000       1.26
+++ callbacks.c 11 Aug 2007 19:33:15 -0000      1.27
@@ -58,7 +58,7 @@
       case TOOLBAR_SAVE:
          printf("Clicked signal on Toolbar Button 'Save' EMITTED\n");
          if (Cur.open_file_name)
-            engrave_edj_output(Cur.ef,Cur.open_file_name);
+            SaveEDJ(Cur.open_file_name);
          else
             ShowFilechooser(FILECHOOSER_SAVE_EDJ);
          break;
@@ -177,6 +177,7 @@
    }
 }
 
+
 /* Tree callbacks */
 void
 on_PartsTree_row_selected(Etk_Object *object, Etk_Tree_Row *row, void *data)
@@ -1324,8 +1325,7 @@
          break;
          case FILECHOOSER_SAVE_EDJ:
             printf("SAVE EDJ\n");
-            engrave_edj_output(Cur.ef,
-            (char*)etk_entry_text_get(ETK_ENTRY(UI_FilechooserFileNameEntry)));
+            
SaveEDJ(etk_entry_text_get(ETK_ENTRY(UI_FilechooserFileNameEntry)));
          break;
          case FILECHOOSER_SAVE_EDC:
             printf("SAVE EDC\n");
@@ -1412,26 +1412,8 @@
    etk_object_destroy(ETK_OBJECT(str));
 }
 
-void on_PlayDialog_response(Etk_Dialog *dialog, int response_id, void *data){
-/*    GString *command = g_string_new("");
-   if (response_id == ETK_RESPONSE_OK){
-      printf("TEST IN VIEWER\n");
-      g_string_printf(command,"edje_viewer %s",EDCFile->str);
-      command->str[command->len - 1] = 'j';
-      command = g_string_append(command," &");
-      printf("TEST IN VIEWER %s\n",command->str);
-      system(command->str);
-      etk_widget_hide(UI_PlayDialog);
-   }
-   else{
-      etk_widget_hide(ETK_WIDGET(dialog));
-   }
-   g_string_free(command,TRUE); */
-}
-
 void 
 on_AlertDialog_response(Etk_Dialog *dialog, int response_id, void *data)
 {
    etk_widget_hide(ETK_WIDGET(dialog));
 }
-
===================================================================
RCS file: /cvs/e/e17/proto/edje_editor/src/bin/callbacks.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- callbacks.h 13 Jul 2007 16:54:57 -0000      1.12
+++ callbacks.h 11 Aug 2007 19:33:15 -0000      1.13
@@ -22,8 +22,6 @@
 void on_TextEntry_text_changed         (Etk_Object *object, void *data);
 void on_FileChooser_response           (Etk_Dialog *dialog, int response_id,
                                        void *data);
-void on_PlayDialog_response            (Etk_Dialog *dialog, int response_id,
-                                       void *data);
 void on_BorderSpinner_value_changed    (Etk_Range *range, double value, void 
*data);
 void on_RelSpinner_value_changed       (Etk_Range *range, double value, void 
*data);
 void on_RelOffsetSpinner_value_changed (Etk_Range *range, double value, void 
*data);
===================================================================
RCS file: /cvs/e/e17/proto/edje_editor/src/bin/inout.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- inout.c     4 Aug 2007 21:33:30 -0000       1.2
+++ inout.c     11 Aug 2007 19:33:15 -0000      1.3
@@ -1,7 +1,349 @@
 #include <string.h>
-#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
 #include <Etk.h>
 #include "main.h"
-#include "interface.h"
 #include "inout.h"
 
+
+#define MAIN_EDC_NAME "edje_editor_link.edc"
+
+Etk_Widget *Load_TextView;
+Etk_Widget *Load_ProgBar;
+Etk_Widget *Load_Win;
+Etk_Widget *Save_ProgBar;
+Etk_Widget *Save_TextView;
+Ecore_Timer *progress_bar_timer;
+
+
+void 
+etk_textview_append(Etk_Widget *tv, char *str)
+{
+   Etk_Textblock_Iter *iter;
+   iter = etk_text_view_cursor_get (ETK_TEXT_VIEW(tv));
+   etk_textblock_insert_markup(ETK_TEXT_VIEW(tv)->textblock, iter, 
+                              str, strlen(str));
+}
+
+void
+create_load_window()
+{
+   Etk_Widget *vbox;
+   Etk_Widget *scrolled_view;
+   Etk_Widget *button;
+   Etk_Widget *label;
+   
+   //Load Win
+   Load_Win = etk_window_new();
+   etk_widget_size_request_set(Load_Win, 400, 300);
+   etk_window_title_set(ETK_WINDOW(Load_Win), "Loading...");
+   etk_signal_connect("destroyed", ETK_OBJECT(Load_Win), 
ETK_CALLBACK(etk_main_quit), NULL);
+ 
+   vbox = etk_vbox_new(ETK_FALSE, 0);
+   etk_container_add(ETK_CONTAINER(Load_Win), vbox);
+   
+   label = etk_label_new("<font_size=20><b>Loading file</b></>");
+   etk_object_properties_set (ETK_OBJECT(label), "xalign",0.5,NULL);
+   etk_box_append(ETK_BOX(vbox), label, ETK_BOX_START, ETK_BOX_NONE, 5);
+   
+   //Progress bar
+   Load_ProgBar = etk_progress_bar_new_with_text("Working...");
+   etk_progress_bar_pulse_step_set(ETK_PROGRESS_BAR(Load_ProgBar), 0.03);
+   etk_box_append(ETK_BOX(vbox), Load_ProgBar, ETK_BOX_START, ETK_BOX_NONE, 5);
+ 
+   //Text_view
+   Load_TextView = etk_text_view_new ();
+   
//etk_textblock_object_cursor_visible_set(ETK_TEXT_VIEW(LS_TextView)->textblock,
 ETK_FALSE); //TODO questa riga non funziona
+   scrolled_view = etk_scrolled_view_new();
+   etk_scrolled_view_policy_set(ETK_SCROLLED_VIEW(scrolled_view), 
ETK_POLICY_HIDE, ETK_POLICY_SHOW);
+   etk_bin_child_set( ETK_BIN(scrolled_view), Load_TextView);
+   etk_box_append(ETK_BOX(vbox), scrolled_view, ETK_BOX_START, 
ETK_BOX_EXPAND_FILL, 5);
+ 
+   //buttons
+   button = etk_button_new_from_stock(ETK_STOCK_DIALOG_CLOSE);
+   etk_box_append(ETK_BOX(vbox), button, ETK_BOX_START, ETK_BOX_NONE, 5);
+   etk_signal_connect("clicked", ETK_OBJECT(button), 
ETK_CALLBACK(etk_main_quit), NULL);
+   
+   etk_widget_show_all(Load_Win);
+}
+
+void 
+create_save_window()
+{
+   Etk_Widget *Save_Win;
+   Etk_Widget *vbox;
+   Etk_Widget *scrolled_view;
+   Etk_Widget *button;
+   Etk_Widget *label;
+   
+   //Save Win
+   Save_Win = etk_window_new();
+   etk_widget_size_request_set(Save_Win, 400, 300);
+   etk_window_title_set(ETK_WINDOW(Save_Win), "Saving...");
+   //etk_signal_connect("delete_event_signal", ETK_OBJECT(Save_Win), 
ETK_CALLBACK(NULL), NULL);
+ 
+   vbox = etk_vbox_new(ETK_FALSE, 0);
+   etk_container_add(ETK_CONTAINER(Save_Win), vbox);
+   
+   label = etk_label_new("<font_size=20><b>Saving file</b></>");
+   etk_object_properties_set (ETK_OBJECT(label), "xalign",0.5,NULL);
+   etk_box_append(ETK_BOX(vbox), label, ETK_BOX_START, ETK_BOX_NONE, 5);
+   
+   //Progress bar
+   Save_ProgBar = etk_progress_bar_new_with_text("Working...");
+   etk_progress_bar_pulse_step_set(ETK_PROGRESS_BAR(Save_ProgBar), 0.03);
+   etk_box_append(ETK_BOX(vbox), Save_ProgBar, ETK_BOX_START, ETK_BOX_NONE, 5);
+ 
+   //Text_view
+   Save_TextView = etk_text_view_new ();
+   
//etk_textblock_object_cursor_visible_set(ETK_TEXT_VIEW(LS_TextView)->textblock,
 ETK_FALSE); //TODO questa riga non funziona
+   scrolled_view = etk_scrolled_view_new();
+   etk_scrolled_view_policy_set(ETK_SCROLLED_VIEW(scrolled_view), 
ETK_POLICY_HIDE, ETK_POLICY_SHOW);
+   etk_bin_child_set( ETK_BIN(scrolled_view), Save_TextView);
+   etk_box_append(ETK_BOX(vbox), scrolled_view, ETK_BOX_START, 
ETK_BOX_EXPAND_FILL, 5);
+ 
+   //buttons
+   button = etk_button_new_from_stock(ETK_STOCK_DIALOG_CLOSE);
+   etk_box_append(ETK_BOX(vbox), button, ETK_BOX_START, ETK_BOX_NONE, 5);
+   etk_signal_connect_swapped("clicked", ETK_OBJECT(button), 
ETK_CALLBACK(etk_widget_hide), Save_Win);
+
+   etk_widget_show_all(Save_Win); 
+}
+
+char*
+backup_file(char *file_name)
+{
+   char bkname[4096];
+   if (!ecore_file_exists(file_name))
+      return 0;
+   
+   snprintf(bkname,4095,"%s.bkp",file_name);
+   
+   if (ecore_file_cp(file_name,bkname))
+      return &bkname;
+   else
+      return NULL;
+}
+
+int
+SaveEDJ(char *file_name)
+{
+   char tmpn[1024];
+   char ipart[1024], fpart[1024];
+   char buf[4096];
+   char cmd[2048];
+   int fd = 0;
+   const char *imgdir, *fontdir;
+   
+   create_save_window();
+   
+   //Start progress_bar
+   progress_bar_timer = 
+      ecore_timer_add(0.025, (int(*)(void *data))etk_progress_bar_pulse, 
Save_ProgBar);
+   
+   //backup existing file
+   backup_file(file_name);
+   
+   //Create tmp file
+   strcpy(tmpn, "/tmp/edje_editor_tmp.edc-XXXXXX");
+   fd = mkstemp(tmpn);
+   if (fd < 0)
+   {
+      snprintf(buf,4096,"<font color=#FF0000><b>Can't create temp file:</b> 
%s\n<b>Error:</b> %s</font>\n",tmpn,strerror(errno));
+      etk_textview_append(Save_TextView,buf);
+      stop_bar(Save_ProgBar);
+      return 0;
+   }
+   close(fd);
+   snprintf(buf,4096,"<b>Create temp file:</b> %s\n",tmpn);
+   etk_textview_append(Save_TextView,buf);
+
+   //TODO check engrave success
+   engrave_edc_output(Cur.ef, tmpn);
+
+   //Get image and font directory
+   imgdir = engrave_file_image_dir_get(Cur.ef);
+   fontdir = engrave_file_font_dir_get(Cur.ef);
+   snprintf(buf,4096,"<b>Image dir:</b> %s\n<b>Font dir:</b> 
%s\n",imgdir,fontdir);
+   etk_textview_append(Save_TextView,buf);
+   
+   if (imgdir) snprintf(ipart, sizeof(ipart), "-id %s", imgdir);
+   else ipart[0] = '\0';
+
+   if (fontdir) snprintf(fpart, sizeof(fpart), "-fd %s", fontdir);
+   else fpart[0] = '\0';
+
+   //Create edje_cc command line
+   snprintf(cmd, sizeof(cmd), "edje_cc -v %s %s %s \"%s\"", 
+                                      ipart, fpart, tmpn, file_name);
+   snprintf(buf,4096,"<b>Executing: </b>%s\n",cmd);
+   etk_textview_append(Save_TextView, buf);
+   
+   //Execute edje_cc through a pipe
+   Ecore_Exe* exe;
+   ecore_event_handler_add(ECORE_EXE_EVENT_DATA, exe_data, Save_TextView);
+   ecore_event_handler_add(ECORE_EXE_EVENT_DEL, exe_exit, NULL);
+   exe = ecore_exe_pipe_run(cmd,
+      ECORE_EXE_PIPE_READ | 
ECORE_EXE_PIPE_READ_LINE_BUFFERED,(void*)SAVE_WIN); 
+   
+   return 1; //1 means success
+}
+
+void
+LoadEDJ(char *file)
+{
+   create_load_window();
+   
+   ecore_timer_add(0.1,Decompile,file);
+   
+   etk_main();
+   etk_widget_hide(Load_Win);
+}
+
+int Decompile(void *data) //data is the name of the file to open
+{
+   char *file = (char*)data;
+   char buf[4096];
+   char tmpn[4096];
+   char cmd[4096];
+   char *old_fname;
+   char *ptr;
+   char *work_dir = NULL;
+
+   progress_bar_timer = 
+      ecore_timer_add(0.025, (int(*)(void *data))etk_progress_bar_pulse, 
Load_ProgBar);
+
+   //TODO Check source integrity (is an edje file?)
+   Cur.open_file_name = strdup(file);
+   
+   //Create working dir
+   memset(tmpn, '\0', sizeof(tmpn));
+   strcpy(tmpn, "/tmp/edje_editor-tmp-XXXXXX");
+#if defined (__SVR4) && defined (__sun)
+   if (mkdir(tmpn, S_IRWXU | S_IRWXG) == NULL)
+#else 
+   if (mkdtemp(tmpn) == NULL)
+#endif
+   {
+      snprintf(buf,4096,"<font color=#FF0000><b>Can't create working dir:</b> 
%s\n<b>Error:</b> %s</font>\n",tmpn,strerror(errno));
+      etk_textview_append(Load_TextView,buf);
+      stop_bar(Load_ProgBar);
+      return 0;
+   }
+   work_dir = strdup(tmpn);
+   
+   //Change to the working dir
+   snprintf(buf,4096,"<b>Change to working dir:</b> %s\n",work_dir);
+   etk_textview_append(Load_TextView,buf);
+   getcwd(tmpn, sizeof(tmpn));
+   if (chdir(work_dir) == -1) {
+      snprintf(buf,4096,"<font color=#FF0000><b>Can't change to dir:</b> 
%s\n<b>Error: </b> %s</font>\n",work_dir,strerror(errno));
+      etk_textview_append(Load_TextView, buf);
+      stop_bar(Load_ProgBar);
+      return 0;
+   }
+   
+   //Calculate Cur.source_dir, image_dir, font_dir, main_source_file
+   old_fname = strdup(file);
+   ptr = strstr(old_fname, ".edj");
+   *ptr = '\0';
+   ptr = strrchr(old_fname, '/');
+   if (ptr == NULL) ptr = old_fname;
+   snprintf(buf,4096,"%s%s",work_dir,ptr);
+   Cur.source_dir = strdup(buf);
+   snprintf(buf,4096,"%s/"MAIN_EDC_NAME,Cur.source_dir);
+   Cur.main_source_file = strdup(buf);
+   
+   //Execute edje_decc through a pipe
+   snprintf(cmd, 4096, "edje_decc \"%s\" -main-out "MAIN_EDC_NAME, file);
+   snprintf(buf,4096,"<b>Executing: </b>%s\n",cmd);
+   etk_textview_append(Load_TextView, buf);
+   
+   Ecore_Exe* exe;
+   ecore_event_handler_add(ECORE_EXE_EVENT_DATA, exe_data, Load_TextView);
+   ecore_event_handler_add(ECORE_EXE_EVENT_DEL, exe_exit, NULL);
+   exe = ecore_exe_pipe_run(cmd,
+      ECORE_EXE_PIPE_READ | 
ECORE_EXE_PIPE_READ_LINE_BUFFERED,(void*)LOAD_WIN); 
+   
+   return 0; //Stop executing timer
+}
+
+int 
+exe_data(void *data, int ev_type, void *ev) // Data is Load_TextView or 
Save_TextView
+{
+   Ecore_Exe_Event_Data *e;
+   e = (Ecore_Exe_Event_Data *)ev;
+   Etk_Widget* text_view = data;
+
+   if (e->lines)
+   {
+      int i;
+      for (i = 0; e->lines[i].line != NULL; i++)
+      {
+         //printf("++ %d %s\n", e->lines[i].size, e->lines[i].line);
+         //Don't show edje_cc malicious warnings
+         if (strcmp(e->lines[i].line,"*** CAUTION ***"))
+         {
+            etk_textview_append(text_view,"<font color=#0000FF>");
+            etk_textview_append(text_view,e->lines[i].line);
+            etk_textview_append(text_view,"</font>\n");
+         }
+         else
+            i++;
+      }
+      
//etk_textblock_object_yoffset_set(ETK_TEXT_VIEW(LS_TextView)->textblock, -200 
);
+   }
+   
+   return 1;
+}
+
+int 
+exe_exit(void *data, int ev_type, void *ev) // Data is Load_TextView or 
Save_TextView
+{
+   char buf[1024];
+   Ecore_Exe_Event_Del *e = (Ecore_Exe_Event_Del *)ev;
+   
+   if (e->exit_code){
+      snprintf(buf,1024,"<font color=#FF0000><b>Error in edje_cc/decc, exit 
code: </b> %d</font>\n",e->exit_code);
+      etk_textview_append(data,buf);
+      return 1;
+   }
+  
+   if (ecore_exe_data_get(e->exe) == (void*)LOAD_WIN) //if Load Win
+   {
+      Cur.ef = engrave_load_edc(Cur.main_source_file, Cur.source_dir, 
Cur.source_dir);
+      
+      etk_textview_append(Load_TextView,"<font color=#00AA00><b>Operation 
completed.</b>\n");
+      
+      snprintf(buf,1024,"<b>Main source file:</b> %s\n",Cur.main_source_file);
+      etk_textview_append(Load_TextView, buf);
+
+      snprintf(buf,1024,"<b>Source dir:</b> %s\n",Cur.source_dir);
+      etk_textview_append(Load_TextView, buf);
+
+      snprintf(buf,1024,"<b>Image dir:</b> 
%s\n",engrave_file_image_dir_get(Cur.ef));
+      etk_textview_append(Load_TextView, buf);
+
+      snprintf(buf,1024,"<b>Font dir:</b> 
%s</font>\n",engrave_file_font_dir_get(Cur.ef));
+      etk_textview_append(Load_TextView, buf);
+      
+      stop_bar(Load_ProgBar);
+   }
+   else
+   {
+      stop_bar(Save_ProgBar);
+      etk_textview_append(Save_TextView,"<font color=#00AA00><b>Operation 
completed.</b>\n");
+   }
+   
+   //TODO Check engrave load success
+   return 0;
+}
+
+void
+stop_bar(Etk_Widget* pbar)
+{
+   ecore_timer_del(progress_bar_timer);
+   etk_progress_bar_text_set (ETK_PROGRESS_BAR(pbar), "Done!");
+   etk_progress_bar_fraction_set (ETK_PROGRESS_BAR(pbar), 1.0);
+}
===================================================================
RCS file: /cvs/e/e17/proto/edje_editor/src/bin/inout.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- inout.h     4 Aug 2007 21:22:21 -0000       1.1
+++ inout.h     11 Aug 2007 19:33:15 -0000      1.2
@@ -1,2 +1,8 @@
 #include "main.h"
 
+void  LoadEDJ     (char *file);
+int   SaveEDJ     (char *file_name);
+int   Decompile   (void *data); //data is the name of the file to open
+int   exe_data    (void *data, int ev_type, void *ev);
+int   exe_exit    (void *data, int ev_type, void *ev);
+void  stop_bar    (Etk_Widget * pbar);
===================================================================
RCS file: /cvs/e/e17/proto/edje_editor/src/bin/interface.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -3 -r1.33 -r1.34
--- interface.c 3 Aug 2007 19:53:29 -0000       1.33
+++ interface.c 11 Aug 2007 19:33:15 -0000      1.34
@@ -953,44 +953,6 @@
 
 /* functions to create interface*/
 Etk_Widget*
-create_play_dialog(void)
-{
-   Etk_Widget *dialog;
-   Etk_Widget *label;
-   Etk_Widget *vbox;
-
-   //Dialog
-   dialog = etk_dialog_new();
-   //etk_container_border_width_set (dialog,5);        //TODO Can't exec this 
line(don't show the dialog). Etk bug?
-   etk_dialog_has_separator_set (ETK_DIALOG(dialog), ETK_FALSE);
-   etk_signal_connect("delete-event", ETK_OBJECT(dialog), 
ETK_CALLBACK(etk_window_hide_on_delete), NULL);
-   etk_signal_connect("response", ETK_OBJECT(dialog), 
ETK_CALLBACK(on_PlayDialog_response), NULL);
-   etk_widget_size_request_set(dialog, 400, 300);
-
-   vbox = etk_vbox_new(ETK_FALSE, 10);
-   etk_dialog_pack_in_main_area(ETK_DIALOG(dialog), vbox,
-      ETK_BOX_START, ETK_BOX_EXPAND_FILL,0);
-
-   label = etk_label_new("<b>Executing_edje_cc</>");
-   etk_object_properties_set (ETK_OBJECT(label), "xalign",0.5,NULL);
-   etk_box_append(ETK_BOX(vbox), label, ETK_BOX_START, ETK_BOX_NONE, 0);
-
-   //Text_view
-   UI_PlayTextView = etk_text_view_new ();
-   etk_box_append(ETK_BOX(vbox), UI_PlayTextView, ETK_BOX_START, 
ETK_BOX_EXPAND_FILL, 0);
-   //etk_textblock_object_cursor_visible_set 
(ETK_TEXT_VIEW(UI_PlayTextView)->textblock, ETK_FALSE); //TODO questa riga non 
funziona
-
-   
//etk_dialog_button_add_from_stock(ETK_DIALOG(dialog),ETK_STOCK_DOCUMENT_OPEN 
,ETK_RESPONSE_OK );
-   etk_dialog_button_add_from_stock(ETK_DIALOG(dialog),ETK_STOCK_DIALOG_CLOSE 
,ETK_RESPONSE_CLOSE);
-   etk_dialog_button_add (ETK_DIALOG(dialog), "Test!", ETK_RESPONSE_OK);
-
-   etk_widget_show_all(dialog);
-   etk_widget_hide(dialog);
-
-   return dialog;
-}
-
-Etk_Widget*
 create_filechooser_dialog(void)
 {
    Etk_Widget *dialog = NULL;
@@ -2221,8 +2183,6 @@
    etk_tooltips_enable();
 
    UI_FileChooserDialog = create_filechooser_dialog();
-
-   UI_PlayDialog = create_play_dialog();
 
    //Alert Dialog
    UI_AlertDialog = etk_message_dialog_new (ETK_MESSAGE_DIALOG_INFO, 
ETK_MESSAGE_DIALOG_OK, "Hallo world!");
===================================================================
RCS file: /cvs/e/e17/proto/edje_editor/src/bin/interface.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- interface.h 3 Aug 2007 19:53:29 -0000       1.16
+++ interface.h 11 Aug 2007 19:33:15 -0000      1.17
@@ -57,7 +57,6 @@
 Etk_Widget *UI_BorderRightSpinner;
 Etk_Widget *UI_FileChooser;
 Etk_Widget *UI_FileChooserDialog;
-Etk_Widget *UI_PlayDialog;
 Etk_Widget *UI_PlayTextView;
 Etk_Widget *UI_FilechooserFileNameEntry;
 Etk_Widget *UI_FilechooserFileNameLabel;
===================================================================
RCS file: /cvs/e/e17/proto/edje_editor/src/bin/main.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- main.c      25 Jul 2007 17:01:02 -0000      1.12
+++ main.c      11 Aug 2007 19:33:15 -0000      1.13
@@ -1,18 +1,15 @@
 #include "config.h"
-#include <errno.h>
-#include <unistd.h>
-#include <stdlib.h>
 #include <string.h>
 #include <Edje.h>
 #include <Etk.h>
 #include <Engrave.h>
+#include <Ecore_Str.h>
 
 #include "evas.h"
 #include "interface.h"
+#include "inout.h"
 #include "main.h"
 
-#define MAIN_EDC_NAME "edje_editor_link.edc"
-
 Evas_Object *EdjeTest_bg;
 Evas_Object *EdjeTest_edje;
 
@@ -37,7 +34,7 @@
  */
 /*EAPI*/ void
 PROTO_engrave_part_state_image_tween_remove_nth(Engrave_Part_State *eps,
-                                      int tween_num)
+                                       int tween_num)
 {
    Evas_List *l;
 
@@ -176,7 +173,8 @@
    engrave_group_parent_set(eg, NULL);
 }
 
-void DebugInfo(int full)
+void
+DebugInfo(int full)
 {
    Engrave_Group *gro;
    Engrave_Part *par;
@@ -240,254 +238,6 @@
 
    printf(" *********************** E N D *****************************\n\n");
 }
-
-
-
-
-//Etk_Widget *LABEL;
-Etk_Widget *UI_LoadTextView;
-Etk_Widget *UI_LoadPBar;
-Ecore_Timer *progress_bar_timer;
-
-
-void 
-etk_textview_append(Etk_Widget *tv, char *str)
-{
-   Etk_Textblock_Iter *iter;
-   iter = etk_text_view_cursor_get (ETK_TEXT_VIEW(tv));
-       etk_textblock_insert_markup(ETK_TEXT_VIEW(tv)->textblock, iter, 
-                              str, strlen(str));
-}
-
-int 
-exe_data(void *data, int ev_type, void *ev)
-{
-   Ecore_Exe_Event_Data *e;
-   e = (Ecore_Exe_Event_Data *)ev;
-   
-   if (e->lines)
-   {
-      int i;
-      for (i = 0; e->lines[i].line != NULL; i++)
-      {
-         //printf("++ %d %s\n", e->lines[i].size, e->lines[i].line);
-         etk_textview_append(UI_LoadTextView,e->lines[i].line);
-         etk_textview_append(UI_LoadTextView,"\n");
-      }
-      
//etk_textblock_object_yoffset_set(ETK_TEXT_VIEW(UI_LoadTextView)->textblock, 
-200 );
-   }
-   
-   return 1;
-}
-
-void
-stop_bar(void)
-{
-   ecore_timer_del(progress_bar_timer);
-   etk_progress_bar_text_set (ETK_PROGRESS_BAR(UI_LoadPBar), "Done!");
-   etk_progress_bar_fraction_set (ETK_PROGRESS_BAR(UI_LoadPBar), 1.0);
-}
-
-int 
-exe_exit(void *data, int ev_type, void *ev)
-{
-   char buf[1024];
-   Ecore_Exe_Event_Del *e = (Ecore_Exe_Event_Del *)ev;
-  
-   stop_bar();
-   if (e->exit_code){
-      snprintf(buf,1024,"<b>Error in edje_decc, exit code: </b> 
%d\n",e->exit_code);
-      etk_textview_append(UI_LoadTextView,buf);
-      return 1;
-   }
-   
-   etk_textview_append(UI_LoadTextView,"<b>Decompile complete.</b>\n");
-   
-   
-   Cur.ef = engrave_load_edc(Cur.main_source_file, Cur.source_dir, 
Cur.source_dir);
-   
-   snprintf(buf,1024,"<b>Main source file:</b> %s\n",Cur.main_source_file);
-   etk_textview_append(UI_LoadTextView, buf);
-   
-   snprintf(buf,1024,"<b>Source dir:</b> %s\n",Cur.source_dir);
-   etk_textview_append(UI_LoadTextView, buf);
-   
-   snprintf(buf,1024,"<b>Image dir:</b> 
%s\n",engrave_file_image_dir_get(Cur.ef));
-   etk_textview_append(UI_LoadTextView, buf);
-   
-   snprintf(buf,1024,"<b>Font dir:</b> 
%s\n",engrave_file_font_dir_get(Cur.ef));
-   etk_textview_append(UI_LoadTextView, buf);
-   
-   
-   
-   //TODO Check engrave load success
-   etk_main_quit();
-   return 0;
-}
-
-
-int Decompile(void *data) //data is the name of the file to open
-{
-   char buf[4096];
-   char tmpn[4096];
-   char cmd[4096];
-   char *file = (char*)data;
-   char *old_fname;
-   char *ptr;
-   char *work_dir = NULL;
-
-   
-   progress_bar_timer = 
-      ecore_timer_add(0.025, etk_progress_bar_pulse, UI_LoadPBar);
-
-   //TODO Check source integrity (is an edje file?
-   Cur.open_file_name = strdup(file);
-   
-   //Create working dir
-   memset(tmpn, '\0', sizeof(tmpn));
-   strcpy(tmpn, "/tmp/edje_editor-tmp-XXXXXX");
-#if defined (__SVR4) && defined (__sun)
-  if (mkdir(tmpn, S_IRWXU | S_IRWXG) == NULL) {
-#else 
-  if (mkdtemp(tmpn) == NULL) {
-#endif
-      snprintf(buf,4096,"<font color=#FF0000><b>Can't create working dir:</b> 
%s\n<b>Error:</b> %s</font>\n",tmpn,strerror(errno));
-      etk_textview_append(UI_LoadTextView,buf);
-      stop_bar();
-      return 0;
-   }
-   work_dir = strdup(tmpn);
-   
-   //Change to the working dir
-   snprintf(buf,4096,"<b>Change to working dir:</b> %s\n",work_dir);
-   etk_textview_append(UI_LoadTextView,buf);
-   getcwd(tmpn, sizeof(tmpn));
-   if (chdir(work_dir) == -1) {
-      snprintf(buf,4096,"<font color=#FF0000><b>Can't change to dir:</b> 
%s\n<b>Error: </b> %s</font>\n",work_dir,strerror(errno));
-      etk_textview_append(UI_LoadTextView, buf);
-      stop_bar();
-      return 0;
-   }
-   
-   //Calculate Cur.source_dir, image_dir, font_dir, main_source_file
-   old_fname = strdup(file);
-   ptr = strstr(old_fname, ".edj");
-   *ptr = '\0';
-   ptr = strrchr(old_fname, '/');
-   if (ptr == NULL) ptr = old_fname;
-   snprintf(buf,4096,"%s%s",work_dir,ptr);
-   Cur.source_dir = strdup(buf);
-   snprintf(buf,4096,"%s/"MAIN_EDC_NAME,Cur.source_dir);
-   Cur.main_source_file = strdup(buf);
-   
-   //Execute edje_decc through a pipe
-   snprintf(cmd, 4096, "edje_decc \"%s\" -main-out "MAIN_EDC_NAME, file);
-   snprintf(buf,4096,"<b>Executing: </b>%s\n",cmd);
-   etk_textview_append(UI_LoadTextView, buf);
-   
-   Ecore_Exe* exe;
-   Ecore_Event_Handler *handler1 = NULL;
-   Ecore_Event_Handler *handler2 = NULL;
-   handler1 = ecore_event_handler_add(ECORE_EXE_EVENT_DATA, exe_data, NULL);
-   handler2 = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, exe_exit, NULL);
-   exe = ecore_exe_pipe_run(cmd,ECORE_EXE_PIPE_READ | 
ECORE_EXE_PIPE_READ_LINE_BUFFERED,"test"); 
-   
-   /* if (!(pipe = popen(cmd, "r"))){
-      etk_textview_append(UI_LoadTextView,"<font color=#FF0000>Error executing 
edje_decc</font>\n");
-               return 0;
-       }
-       while (fgets(pbuf, 4096, pipe) != NULL){
-       etk_textview_append(UI_LoadTextView, pbuf);
-       }
-       pclose(pipe);
-    */
-
-   /* we need the info on the work dir to pass the cpp so it can
-   * include files correctly 
-   */
-/*    ptr = strstr(old_fname, ".edj");
-   *ptr = '\0';
-    
-   ptr = strrchr(old_fname, '/');
-   if (ptr == NULL)
-      ptr = old_fname;
-   
-   
-   len = strlen(ptr) + strlen(work_dir) + 2;
-   out_dir = (char *)calloc(len, sizeof(char));
-   snprintf(out_dir, len, "%s/%s", work_dir, ptr);
-   etk_textview_append(UI_LoadTextView, "<b>Out dir:</b> ");
-   etk_textview_append(UI_LoadTextView, out_dir);
-   etk_textview_append(UI_LoadTextView, "\n");
-
-   len = strlen(out_dir) + strlen(MAIN_EDC_NAME) + 2;
-   new_fname = (char *)calloc(len, sizeof(char));
-   snprintf(new_fname, len, "%s/%s", out_dir, MAIN_EDC_NAME);
-   //FREE(old_fname);
-   etk_textview_append(UI_LoadTextView, "<b>Main edc:</b> ");
-   etk_textview_append(UI_LoadTextView, new_fname);
-   etk_textview_append(UI_LoadTextView, "\n");
-
-   
-   Cur.ef = engrave_load_edc(new_fname, out_dir, out_dir);
-   
- */
-   //ecore_timer_add(0,cb,NULL);
-   return 0;
-}
-void
-LoadEDJ(char *file)
-{
-   Etk_Widget *win;
-   Etk_Widget *vbox;
-   Etk_Widget *scrolled_view;
-   Etk_Widget *button;
-   Etk_Widget *label;
-   
-   
-   //Load Win
-   win = etk_window_new();
-   etk_widget_size_request_set(win, 400, 300);
-   etk_window_title_set(ETK_WINDOW(win), "Loading...");
-   etk_signal_connect("destroyed", ETK_OBJECT(win), 
ETK_CALLBACK(etk_main_quit), NULL);
-  // etk_signal_connect("show", ETK_OBJECT(win), 
ETK_CALLBACK(on_LoadWin_realize), NULL);
- 
-   vbox = etk_vbox_new(ETK_FALSE, 0);
-   etk_container_add(ETK_CONTAINER(win), vbox);
-   
-   label = etk_label_new("<font_size=20><b>Loading</b></>");
-   etk_object_properties_set (ETK_OBJECT(label), "xalign",0.5,NULL);
-   etk_box_append(ETK_BOX(vbox), label, ETK_BOX_START, ETK_BOX_NONE, 5);
-   
-   UI_LoadPBar = etk_progress_bar_new_with_text("Loading...");
-   etk_progress_bar_pulse_step_set(ETK_PROGRESS_BAR(UI_LoadPBar), 0.03);
-   
-   etk_box_append(ETK_BOX(vbox), UI_LoadPBar, ETK_BOX_START, ETK_BOX_NONE, 5);
- 
-   //Text_view
-   UI_LoadTextView = etk_text_view_new ();
-   
//etk_textblock_object_cursor_visible_set(ETK_TEXT_VIEW(UI_LoadTextView)->textblock,
 ETK_FALSE); //TODO questa riga non funziona
-   scrolled_view = etk_scrolled_view_new();
-   etk_scrolled_view_policy_set(ETK_SCROLLED_VIEW(scrolled_view), 
ETK_POLICY_HIDE, ETK_POLICY_SHOW);
-   etk_bin_child_set( ETK_BIN(scrolled_view), UI_LoadTextView);
-   etk_box_append(ETK_BOX(vbox), scrolled_view, ETK_BOX_START, 
ETK_BOX_EXPAND_FILL, 5);
- 
-   //buttons
-   button = etk_button_new_from_stock(ETK_STOCK_DIALOG_CLOSE);
-   etk_box_append(ETK_BOX(vbox), button, ETK_BOX_START, ETK_BOX_NONE, 5);
-   etk_signal_connect("clicked", ETK_OBJECT(button), 
ETK_CALLBACK(etk_main_quit), NULL);
-   
-   
-   etk_widget_show_all(win);
-   
-   ecore_timer_add(0.1,Decompile,file);
-   printf("MAIN\n");
-   //etk_progress_bar_pulse(ETK_PROGRESS_BAR(UI_LoadPBar));
-   etk_main();
-   etk_widget_hide(win);
-}
-
-
 void
 TestEdjeGroup(char *File,char *Group)
 {
@@ -624,10 +374,9 @@
          printf("File not exists: '%s'\n",argv[1]);
          return 1;
       }
-      if (strstr(file, ".edj"))
-         //Cur.ef = engrave_load_edj(file);
+      if (ecore_str_has_suffix(file, ".edj"))
          LoadEDJ(file);
-      if (strstr(file, ".edc"))
+      else if (ecore_str_has_suffix(file, ".edc"))
       {
          char *edc_dir =  ecore_file_dir_get(file);
          if (argc == 2)
@@ -643,9 +392,7 @@
    if (!Cur.ef)
       Cur.ef = engrave_file_new();
 
-
    engrave_canvas_file_set (engrave_canvas, Cur.ef);
-
 
    //Populate Interface
    PopulateTree();
===================================================================
RCS file: /cvs/e/e17/proto/edje_editor/src/bin/main.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- main.h      15 Jul 2007 05:01:04 -0000      1.11
+++ main.h      11 Aug 2007 19:33:15 -0000      1.12
@@ -88,7 +88,9 @@
    IMAGE_TWEEN_DELETE,
    IMAGE_TWEEN_RADIO,
    IMAGE_NORMAL_RADIO,
-   SAVE_SCRIPT
+   SAVE_SCRIPT,
+   LOAD_WIN,
+   SAVE_WIN
 };
 
 struct Current_State



-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to