Enlightenment CVS committal

Author  : chaos
Project : e17
Module  : proto

Dir     : e17/proto/entropy/src/dialogs


Modified Files:
        etk_mime_dialog_main.c 


Log Message:
* Enable MIME-application editing (not just remove/add)

===================================================================
RCS file: /cvs/e/e17/proto/entropy/src/dialogs/etk_mime_dialog_main.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- etk_mime_dialog_main.c      14 Apr 2006 02:20:17 -0000      1.10
+++ etk_mime_dialog_main.c      22 May 2006 03:15:37 -0000      1.11
@@ -7,6 +7,8 @@
 static Etk_Widget* mime_dialog_add_edit_window = NULL;
 static Etk_Widget* mime_dialog_add_edit_application_window = NULL;
 
+static Entropy_Config_Mime_Binding_Action* edit_action = NULL;
+
 static Etk_Widget* etk_mime_mime_entry;
 static Etk_Widget* etk_mime_desc_entry;
 
@@ -24,7 +26,7 @@
 void etk_mime_dialog_add_edit_create();
 void etk_mime_dialog_create();
 void etk_mime_dialog_tree_populate();
-void etk_mime_dialog_application_create(char* mime, int pos);
+void etk_mime_dialog_application_create(char* mime, 
Entropy_Config_Mime_Binding_Action*);
 void _entropy_etk_mime_dialog_app_add_edit_final_cb(Etk_Object* w, void* 
user_data);
 void etk_mime_dialog_populate_nth_binding_apps(int record);
 
@@ -98,14 +100,23 @@
        const char *args = 
etk_entry_text_get(ETK_ENTRY(etk_mime_app_args_entry)); 
        const char *mime = user_data;
 
-       if (mime && args && exe && name)
-               entropy_core_mime_application_add((char*)mime, (char*)name, 
(char*)exe, (char*)args);
+       if (!edit_action) {
+               if (mime && args && exe && name)
+                       entropy_core_mime_application_add((char*)mime, 
(char*)name, (char*)exe, (char*)args);
+       } else {
+               if (edit_action->app_description) 
free(edit_action->app_description);
+               if (name) edit_action->app_description = strdup(name);
+               if (edit_action->executable) free(edit_action->executable);
+               if (exe) edit_action->executable = strdup(exe);
+               if (edit_action->args) free(edit_action->args);
+               if (args) edit_action->args = strdup(args);
+       }
+
+       etk_mime_dialog_populate_nth_binding_apps(_mime_current_binding);
 
        etk_object_destroy(ETK_OBJECT(mime_dialog_add_edit_application_window));
        mime_dialog_add_edit_application_window = NULL;
 
-
-       etk_mime_dialog_populate_nth_binding_apps(_mime_current_binding);
 }
 
 
@@ -180,14 +191,26 @@
        Etk_Tree_Col* col2;
        Etk_Tree_Row* row;
        char* mime_type = NULL;
+       Entropy_Config_Mime_Binding_Action* action = NULL;
+
 
        col2 = etk_tree_nth_col_get(ETK_TREE(_etk_mime_dialog_main_tree), 1);
        row = etk_tree_selected_row_get(ETK_TREE(_etk_mime_dialog_main_tree));
 
        if (row) {
+               int isedit = (int)user_data;
+
+               if (isedit) {
+                       Etk_Tree_Row* app_row = 
etk_tree_selected_row_get(ETK_TREE(_etk_mime_dialog_sub_tree));
+                       edit_action = etk_tree_row_data_get(app_row);
+                       action = edit_action;
+               } else {
+                       edit_action = NULL;
+               }
+               
                etk_tree_row_fields_get(row, col2, &mime_type, NULL);
                if (mime_type) {
-                       etk_mime_dialog_application_create(mime_type,-1);       
+                       etk_mime_dialog_application_create(mime_type,action);   
                }
        }
 }
@@ -361,7 +384,7 @@
 
 
 
-void etk_mime_dialog_application_create(char* mime, int pos) {
+void etk_mime_dialog_application_create(char* mime, 
Entropy_Config_Mime_Binding_Action* action) {
        Etk_Widget* table;
        Etk_Widget* label;
        Etk_Widget* button;
@@ -388,10 +411,6 @@
                                ETK_FILL_POLICY_HFILL | ETK_FILL_POLICY_VFILL | 
ETK_FILL_POLICY_HEXPAND);
 
        etk_mime_app_name_entry = etk_entry_new();
-       /*if (mime) {
-               printf("Setting mime to '%s'...\n", mime);
-               etk_entry_text_set(ETK_ENTRY(etk_mime_mime_entry), mime);
-       }*/
        etk_table_attach(ETK_TABLE(table), etk_mime_app_name_entry,1,1,0,0,
                                0,0,
                                ETK_FILL_POLICY_HFILL | ETK_FILL_POLICY_VFILL | 
ETK_FILL_POLICY_HEXPAND);
@@ -423,22 +442,26 @@
        etk_table_attach(ETK_TABLE(table), button,0,0,3,3,
                                0,0,
                                ETK_FILL_POLICY_HFILL | ETK_FILL_POLICY_VFILL | 
ETK_FILL_POLICY_HEXPAND);
-       etk_signal_connect("pressed", ETK_OBJECT(button), 
ETK_CALLBACK(_entropy_etk_mime_dialog_app_add_edit_final_cb), 
-                               mime );
+       etk_signal_connect("pressed", ETK_OBJECT(button), 
+                       
ETK_CALLBACK(_entropy_etk_mime_dialog_app_add_edit_final_cb), mime );
 
        button = etk_button_new_with_label("Cancel");
        etk_table_attach(ETK_TABLE(table), button,1,1,3,3,
                                0,0,
                                ETK_FILL_POLICY_HFILL | ETK_FILL_POLICY_VFILL | 
ETK_FILL_POLICY_HEXPAND);
-       etk_signal_connect("pressed", ETK_OBJECT(button), 
ETK_CALLBACK(_entropy_etk_mime_dialog_app_add_edit_cancel_cb), 
-                               NULL );
+       etk_signal_connect("pressed", ETK_OBJECT(button), 
+                       
ETK_CALLBACK(_entropy_etk_mime_dialog_app_add_edit_cancel_cb), NULL );
 
        etk_container_add(ETK_CONTAINER(window), table);
 
-
-
        etk_widget_show_all(window);
 
+       if (action) {
+               etk_entry_text_set(ETK_ENTRY(etk_mime_app_name_entry), 
action->app_description);
+               etk_entry_text_set(ETK_ENTRY(etk_mime_app_exe_entry), 
action->executable);
+               etk_entry_text_set(ETK_ENTRY(etk_mime_app_args_entry), 
action->args);
+       }
+
 }
 
 void etk_mime_dialog_create()
@@ -537,6 +560,7 @@
        //
        button = etk_button_new_with_label("Edit");
        etk_box_pack_start(ETK_BOX(hbox), button, ETK_FALSE, ETK_FALSE, 0);
+       etk_signal_connect("pressed", ETK_OBJECT(button), 
ETK_CALLBACK(_entropy_etk_mime_dialog_application_add_cb), (int*)1);
 
        button = etk_button_new_with_label("Remove");
        etk_box_pack_start(ETK_BOX(hbox), button, ETK_FALSE, ETK_FALSE, 0);




-------------------------------------------------------
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

Reply via email to