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