Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto
Dir : e17/proto/extrackt/src/bin/etk_fe Modified Files: gui.c Log Message: - replace our fake combo boxes with real ones =================================================================== RCS file: /cvs/e/e17/proto/extrackt/src/bin/etk_fe/gui.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- gui.c 5 Mar 2006 01:02:49 -0000 1.4 +++ gui.c 3 Apr 2006 23:36:09 -0000 1.5 @@ -47,14 +47,12 @@ Etk_Tree_Col *tracks_rip_col; Etk_Widget *encoder_combo; - Etk_Widget *encoder_menu; Etk_Widget *encoder_executable_entry; Etk_Widget *encoder_command_line_entry; Etk_Widget *encoder_file_format_entry; Etk_Widget *encoder_wav_delete; Etk_Widget *ripper_combo; - Etk_Widget *ripper_menu; Etk_Widget *ripper_executable_entry; Etk_Widget *ripper_command_line_entry; Etk_Widget *ripper_file_format_entry; @@ -244,34 +242,56 @@ } void -_etk_fe_gui_combo_popup_cb(Etk_Object *obj, void *data) +_etk_fe_gui_encoder_combo_changed_cb(Etk_Object *object, void *data) { - etk_menu_popup(ETK_MENU(data)); -} - -void -_etk_fe_gui_combo_popup2_cb(Etk_Object *obj, void *data) -{ - etk_menu_popup(ETK_MENU(data)); -} - -void -_etk_fe_gui_encoder_select_cb(Etk_Object *obj, void *data) -{ - Etk_Menu_Item *mi; Ex_Config_Exe *ecx; - E_Gui_Etk *gui; + E_Gui_Etk *gui; + Etk_Combobox *combobox; + Etk_Combobox_Item *active_item; + char *label; + + if (!(combobox = ETK_COMBOBOX(object))) + return; + if (!(active_item = etk_combobox_active_item_get(combobox))) + return; + if (!(label = etk_combobox_item_data_get(active_item))) + return; gui = data; - mi = ETK_MENU_ITEM(obj); - if(!ex_command_encode_set(gui->ex,mi->label)) + if(!ex_command_encode_set(gui->ex, label)) return; ecx = gui->ex->encode.encoder; etk_entry_text_set(ETK_ENTRY(gui->encoder_executable_entry),ecx->exe); etk_entry_text_set(ETK_ENTRY(gui->encoder_command_line_entry),ecx->command_line_opts); etk_entry_text_set(ETK_ENTRY(gui->encoder_file_format_entry),ecx->file_format); - etk_button_label_set(ETK_BUTTON(gui->encoder_combo), ecx->name); +} + +void +_etk_fe_gui_ripper_combo_changed_cb(Etk_Object *object, void *data) +{ + + Ex_Config_Exe *ecx; + E_Gui_Etk *gui; + Etk_Combobox *combobox; + Etk_Combobox_Item *active_item; + char *label; + + if (!(combobox = ETK_COMBOBOX(object))) + return; + if (!(active_item = etk_combobox_active_item_get(combobox))) + return; + if (!(label = etk_combobox_item_data_get(active_item))) + return; + + gui = data; + if(!ex_command_rip_set(gui->ex, label)) + return; + + ecx = gui->ex->rip.ripper; + etk_entry_text_set(ETK_ENTRY(gui->ripper_executable_entry),ecx->exe); + etk_entry_text_set(ETK_ENTRY(gui->ripper_command_line_entry),ecx->command_line_opts); + etk_entry_text_set(ETK_ENTRY(gui->ripper_file_format_entry),ecx->file_format); } static void @@ -304,25 +324,6 @@ } } -void -_etk_fe_gui_ripper_select_cb(Etk_Object *obj, void *data) -{ - Etk_Menu_Item *mi; - Ex_Config_Exe *ecx; - E_Gui_Etk *gui; - - gui = data; - mi = ETK_MENU_ITEM(obj); - if(!ex_command_rip_set(gui->ex,mi->label)) - return; - - ecx = gui->ex->rip.ripper; - etk_entry_text_set(ETK_ENTRY(gui->ripper_executable_entry),ecx->exe); - etk_entry_text_set(ETK_ENTRY(gui->ripper_command_line_entry),ecx->command_line_opts); - etk_entry_text_set(ETK_ENTRY(gui->ripper_file_format_entry),ecx->file_format); - etk_button_label_set(ETK_BUTTON(gui->ripper_combo), ecx->name); -} - /* FIXME this function is exactly the same as the rip callback * just sets the encoder on, we should reuse the other */ void @@ -489,10 +490,6 @@ en = enhance_new(); gui->en = en; - - /* create those before anything else since we need to use them */ - gui->encoder_menu = etk_menu_new(); - gui->ripper_menu = etk_menu_new(); enhance_callback_data_set(en, "_etk_fe_gui_window_deleted_cb", gui); enhance_callback_data_set(en, "_etk_fe_gui_rip_enc_cb", gui); @@ -504,8 +501,8 @@ enhance_callback_data_set(en, "_etk_fe_gui_config_restore_cb", gui); /* FIXME i cant set the same callback on two buttons */ - enhance_callback_data_set(en, "_etk_fe_gui_combo_popup_cb", gui->encoder_menu); - enhance_callback_data_set(en, "_etk_fe_gui_combo_popup2_cb", gui->ripper_menu); + enhance_callback_data_set(en, "_etk_fe_gui_encoder_combo_changed_cb", gui); + enhance_callback_data_set(en, "_etk_fe_gui_ripper_combo_changed_cb", gui); enhance_file_load(en, "window1", GUI_FILE); @@ -520,7 +517,7 @@ gui->encoder_file_format_entry = enhance_var_get(en, "encoder_file_format_entry"); gui->encoder_wav_delete = enhance_var_get(en, "encoder_wav_delete"); - gui->ripper_combo = enhance_var_get(en, "ripper_combo"); + gui->ripper_combo = enhance_var_get(en, "ripper_combo"); gui->ripper_executable_entry = enhance_var_get(en, "ripper_executable_entry"); gui->ripper_command_line_entry = enhance_var_get(en, "ripper_command_line_entry"); gui->ripper_file_format_entry = enhance_var_get(en, "ripper_file_format_entry"); @@ -558,6 +555,11 @@ etk_statusbar_push(ETK_STATUSBAR(gui->statusbar1), "Rip: Idle", 0); etk_statusbar_push(ETK_STATUSBAR(gui->statusbar2), "Encode: Idle", 0); + etk_combobox_column_add(ETK_COMBOBOX(gui->ripper_combo), ETK_COMBOBOX_LABEL, 75, ETK_TRUE, ETK_FALSE, ETK_FALSE, 0.0, 0.5); + etk_combobox_build(ETK_COMBOBOX(gui->ripper_combo)); + etk_combobox_column_add(ETK_COMBOBOX(gui->encoder_combo), ETK_COMBOBOX_LABEL, 75, ETK_TRUE, ETK_FALSE, ETK_FALSE, 0.0, 0.5); + etk_combobox_build(ETK_COMBOBOX(gui->encoder_combo)); + /* create tree for holding track names, times, and rip status */ etk_widget_size_request_set(gui->tracks_tree, 320, 350); @@ -639,11 +641,16 @@ ece = gui->ex->config.encode; ENC_IF_TOGGLE(wav_delete, encoder_wav_delete); - + for(l = ece->encoders; l; l=l->next) { + Etk_Combobox_Item *item; + ecx = (Ex_Config_Exe *)l->data; - _etk_fe_gui_menu_item_new(E_GUI_MENU_ITEM_NORMAL, _(ecx->name), ETK_MENU_SHELL(gui->encoder_menu), ETK_CALLBACK(_etk_fe_gui_encoder_select_cb), gui); + item = etk_combobox_item_append(ETK_COMBOBOX(gui->encoder_combo), _(ecx->name)); + etk_combobox_item_data_set_full(item, strdup(_(ecx->name)), free); + if(!l->prev) + etk_combobox_active_item_set(ETK_COMBOBOX(gui->encoder_combo), item); } /* FIXME we should save the last selected * fill the values for the first */ @@ -651,7 +658,6 @@ etk_entry_text_set(ETK_ENTRY(gui->encoder_executable_entry),ecx->exe); etk_entry_text_set(ETK_ENTRY(gui->encoder_command_line_entry),ecx->command_line_opts); etk_entry_text_set(ETK_ENTRY(gui->encoder_file_format_entry),ecx->file_format); - etk_button_label_set(ETK_BUTTON(gui->encoder_combo), ecx->name); } /* ripper tab */ @@ -659,10 +665,16 @@ { Evas_List *l; Ex_Config_Exe *ecx; + for(l = gui->ex->config.rippers; l; l=l->next) { - ecx = (Ex_Config_Exe *)l->data; - _etk_fe_gui_menu_item_new(E_GUI_MENU_ITEM_NORMAL, _(ecx->name), ETK_MENU_SHELL(gui->ripper_menu), ETK_CALLBACK(_etk_fe_gui_ripper_select_cb), gui); + Etk_Combobox_Item *item; + + ecx = (Ex_Config_Exe *)l->data; + item = etk_combobox_item_append(ETK_COMBOBOX(gui->ripper_combo), _(ecx->name)); + etk_combobox_item_data_set_full(item, strdup(_(ecx->name)), free); + if(!l->prev) + etk_combobox_active_item_set(ETK_COMBOBOX(gui->ripper_combo), item); } /* FIXME we should save the last selected * fill the values for the first */ @@ -670,7 +682,6 @@ etk_entry_text_set(ETK_ENTRY(gui->ripper_executable_entry),ecx->exe); etk_entry_text_set(ETK_ENTRY(gui->ripper_command_line_entry),ecx->command_line_opts); etk_entry_text_set(ETK_ENTRY(gui->ripper_file_format_entry),ecx->file_format); - etk_button_label_set(ETK_BUTTON(gui->ripper_combo), ecx->name); } /* discdb tab */ @@ -687,7 +698,7 @@ static void _etk_fe_config_save(E_Gui_Etk *gui) { - char *tmp; + const char *tmp; if(!gui->ex->config.cd) return; @@ -738,10 +749,23 @@ Ex_Config_Exe *exe; for(l = gui->ex->config.rippers; l; l = l->next) - { + { + Etk_Combobox_Item *active_item; + exe = l->data; - if(!strcmp(exe->name, etk_button_label_get(ETK_BUTTON(gui->ripper_combo)))) - break; + + if((active_item = etk_combobox_active_item_get(ETK_COMBOBOX(gui->ripper_combo)))) + { + char *selection = NULL; + + selection = etk_combobox_item_data_get(active_item); + if(selection) + { + if(!strcmp(exe->name, selection)) + break; + } + } + exe = NULL; } @@ -759,10 +783,23 @@ Ex_Config_Exe *exe; for(l = gui->ex->config.encode->encoders; l; l = l->next) - { + { + Etk_Combobox_Item *active_item; + exe = l->data; - if(!strcmp(exe->name, etk_button_label_get(ETK_BUTTON(gui->encoder_combo)))) - break; + + if((active_item = etk_combobox_active_item_get(ETK_COMBOBOX(gui->encoder_combo)))) + { + char *selection = NULL; + + selection = etk_combobox_item_data_get(active_item); + if(selection) + { + if(!strcmp(exe->name, selection)) + break; + } + } + exe = NULL; } ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs