Enlightenment CVS committal Author : ningerso Project : e17 Module : libs/ewl
Dir : e17/libs/ewl/src/lib Modified Files: Ewl.h Makefile.am ewl_combo.c ewl_filepicker.c ewl_list.c ewl_mvc.c ewl_mvc.h ewl_tree2.c Added Files: ewl_filelist_tree.c ewl_filelist_tree.h Log Message: Add model data to selections to make selections easier to work with. Initial framework for tree based filelist, non-functional so far. =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/Ewl.h,v retrieving revision 1.22 retrieving revision 1.23 diff -u -3 -r1.22 -r1.23 --- Ewl.h 4 Jan 2007 05:09:46 -0000 1.22 +++ Ewl.h 18 Jan 2007 10:24:59 -0000 1.23 @@ -305,6 +305,7 @@ #include <ewl_filelist_list.h> #include <ewl_filelist_icon.h> #include <ewl_filelist_column.h> +#include <ewl_filelist_tree.h> #include <ewl_filepicker.h> #include <ewl_filedialog.h> =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/Makefile.am,v retrieving revision 1.45 retrieving revision 1.46 diff -u -3 -r1.45 -r1.46 --- Makefile.am 1 Jan 2007 20:53:34 -0000 1.45 +++ Makefile.am 18 Jan 2007 10:24:59 -0000 1.46 @@ -38,6 +38,7 @@ ewl_events.h \ ewl_floater.h \ ewl_filelist.h \ + ewl_filelist_tree.h\ ewl_filelist_list.h\ ewl_filelist_icon.h \ ewl_filelist_column.h \ @@ -121,6 +122,7 @@ ewl_events.c \ ewl_floater.c \ ewl_filelist.c \ + ewl_filelist_tree.c \ ewl_filelist_list.c \ ewl_filelist_icon.c \ ewl_filelist_column.c \ =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_combo.c,v retrieving revision 1.43 retrieving revision 1.44 diff -u -3 -r1.43 -r1.44 --- ewl_combo.c 4 Jan 2007 05:09:46 -0000 1.43 +++ ewl_combo.c 18 Jan 2007 10:24:59 -0000 1.44 @@ -254,7 +254,7 @@ combo = data; i = ewl_container_child_index_get(EWL_CONTAINER(combo->popup), w); - ewl_mvc_selected_set(EWL_MVC(combo), i, -1); + ewl_mvc_selected_set(EWL_MVC(combo), ewl_mvc_data_get(EWL_MVC(combo)), i, -1); ewl_widget_hide(combo->popup); ewl_widget_state_set(combo->button, "collapsed", =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_filepicker.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -3 -r1.21 -r1.22 --- ewl_filepicker.c 4 Jan 2007 05:09:47 -0000 1.21 +++ ewl_filepicker.c 18 Jan 2007 10:24:59 -0000 1.22 @@ -149,7 +149,7 @@ ewl_mvc_model_set(EWL_MVC(fp->type_combo), model); ewl_mvc_view_set(EWL_MVC(fp->type_combo), view); ewl_mvc_data_set(EWL_MVC(fp->type_combo), fp); - ewl_mvc_selected_set(EWL_MVC(fp->type_combo), 0, 0); + ewl_mvc_selected_set(EWL_MVC(fp->type_combo), fp, 0, 0); ewl_combo_editable_set(EWL_COMBO(fp->type_combo), TRUE); ewl_callback_append(fp->type_combo, EWL_CALLBACK_VALUE_CHANGED, ewl_filepicker_cb_type_change, fp); =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_list.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- ewl_list.c 4 Jan 2007 05:09:47 -0000 1.13 +++ ewl_list.c 18 Jan 2007 10:24:59 -0000 1.14 @@ -4,7 +4,7 @@ #include "ewl_macros.h" #include "ewl_private.h" -static Ewl_Widget *ewl_list_widget_at(Ewl_MVC *mvc, int row, int column); +static Ewl_Widget *ewl_list_widget_at(Ewl_MVC *mvc, void *data, int row, int column); /** * @return Returns a new Ewl_Widget on success or NULL on failure @@ -170,7 +170,8 @@ ewl_highlight_follow_get(EWL_HIGHLIGHT(w))); } - ewl_mvc_handle_click(EWL_MVC(data), row, -1); + ewl_mvc_handle_click(EWL_MVC(data), ewl_mvc_data_get(EWL_MVC(data)), + row, -1); DLEAVE_FUNCTION(DLEVEL_STABLE); } @@ -194,7 +195,7 @@ } static Ewl_Widget * -ewl_list_widget_at(Ewl_MVC *mvc, int row, int column __UNUSED__) +ewl_list_widget_at(Ewl_MVC *mvc, void *data, int row, int column __UNUSED__) { Ewl_Widget *w; =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_mvc.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- ewl_mvc.c 4 Jan 2007 05:09:47 -0000 1.13 +++ ewl_mvc.c 18 Jan 2007 10:24:59 -0000 1.14 @@ -293,6 +293,7 @@ /** * @param mvc: The MVC to work with + * @param data: The parent data containing the index selection * @param list: The list of items to set selected. * @return Returns no value * @brief Sets the list of items to select. This will remove any items it @@ -351,6 +352,7 @@ /** * @param mvc: The MVC to set the list into + * @param data: The parent data containing the index selection * @param srow: The start row * @param scolumn: The start column * @param erow: The end row @@ -359,7 +361,7 @@ * @brief Sets the given range, inclusive, as selected in the mvc */ void -ewl_mvc_selected_range_add(Ewl_MVC *mvc, int srow, int scolumn, +ewl_mvc_selected_range_add(Ewl_MVC *mvc, void *data, int srow, int scolumn, int erow, int ecolumn) { Ewl_Selection *sel; @@ -388,10 +390,10 @@ } if (mvc->selection_mode == EWL_SELECTION_MODE_SINGLE) - sel = ewl_mvc_selection_index_new(srow, scolumn); + sel = ewl_mvc_selection_index_new(data, srow, scolumn); else - sel = ewl_mvc_selection_range_new(srow, scolumn, erow, ecolumn); + sel = ewl_mvc_selection_range_new(data, srow, scolumn, erow, ecolumn); ecore_list_append(mvc->selected, sel); ewl_mvc_selected_change_notify(mvc); @@ -401,13 +403,14 @@ /** * @param mvc: The MVC to work with + * @param data: The parent data containing the index selection * @param row: The row to set * @param column: The column to set * @return Returns no value * @brief Sets the given index as selected */ void -ewl_mvc_selected_set(Ewl_MVC *mvc, int row, int column) +ewl_mvc_selected_set(Ewl_MVC *mvc, void *data, int row, int column) { Ewl_Selection *sel; @@ -421,20 +424,21 @@ while ((sel = ecore_list_remove_first(mvc->selected))) ewl_mvc_cb_sel_free(sel); - ewl_mvc_selected_add(mvc, row, column); + ewl_mvc_selected_add(mvc, data, row, column); DLEAVE_FUNCTION(DLEVEL_STABLE); } /** * @param mvc: The MVC to work with + * @param data: The parent data containing the index selection * @param row: The row to add * @param column: The column to add * @return Returns no value * @brief Adds the given index to the selected list */ void -ewl_mvc_selected_add(Ewl_MVC *mvc, int row, int column) +ewl_mvc_selected_add(Ewl_MVC *mvc, void *data, int row, int column) { Ewl_Selection *si; @@ -445,7 +449,7 @@ if (mvc->selection_mode == EWL_SELECTION_MODE_NONE) DRETURN(DLEVEL_STABLE); - si = ewl_mvc_selection_index_new(row, column); + si = ewl_mvc_selection_index_new(data, row, column); ecore_list_append(mvc->selected, si); ewl_mvc_selected_change_notify(mvc); @@ -498,13 +502,14 @@ /** * @param mvc: The MVC to work with + * @param data: The parent data containing the index selection * @param row: The row to remove * @param column: The column to remove * @return Returns no value * @brief Removes the given index from the list of selected indices */ void -ewl_mvc_selected_rm(Ewl_MVC *mvc, int row, int column) +ewl_mvc_selected_rm(Ewl_MVC *mvc, void *data, int row, int column) { Ewl_Selection *sel; @@ -610,7 +615,7 @@ * @brief Checks if the given index is selected or not. */ unsigned int -ewl_mvc_selected_is(Ewl_MVC *mvc, int row, int column) +ewl_mvc_selected_is(Ewl_MVC *mvc, void *data, int row, int column) { Ewl_Selection *sel; int ret = FALSE; @@ -656,13 +661,14 @@ } /** + * @param data: The parent data containing the index selection * @param row: The row to create the index selection for * @param column: The column to create the index for * @return Returns a new Ewl_Selection_Idx based on the @a row and @a column * @brief Creates a new index selection based on given values */ Ewl_Selection * -ewl_mvc_selection_index_new(int row, int column) +ewl_mvc_selection_index_new(void *data, int row, int column) { Ewl_Selection_Idx *sel; @@ -670,6 +676,7 @@ sel = NEW(Ewl_Selection_Idx, 1); sel->sel.type = EWL_SELECTION_TYPE_INDEX; + sel->sel.data = data; sel->row = row; sel->column = column; @@ -685,7 +692,7 @@ * @brief Creates a new range selection based on given values */ Ewl_Selection * -ewl_mvc_selection_range_new(int srow, int scolumn, int erow, int ecolumn) +ewl_mvc_selection_range_new(void *data, int srow, int scolumn, int erow, int ecolumn) { Ewl_Selection_Range *sel; @@ -693,6 +700,8 @@ sel = NEW(Ewl_Selection_Range, 1); sel->sel.type = EWL_SELECTION_TYPE_RANGE; + /* FIXME: Need to scan the data and split on branches */ + sel->sel.data = data; sel->start.row = srow; sel->start.column = scolumn; sel->end.row = erow; @@ -710,7 +719,7 @@ * @brief Handles the click of the given cell */ void -ewl_mvc_handle_click(Ewl_MVC *mvc, int row, int column) +ewl_mvc_handle_click(Ewl_MVC *mvc, void *data, int row, int column) { unsigned int modifiers; int multi_select = FALSE; @@ -729,6 +738,7 @@ if (ewl_mvc_selected_count_get(mvc) > 0) { Ewl_Selection *sel; + void *sdata; int srow, scolumn; /* A shift will add the current position into a @@ -741,6 +751,7 @@ Ewl_Selection_Idx *idx; idx = EWL_SELECTION_IDX(sel); + sdata = sel->data; srow = idx->row; scolumn = idx->column; @@ -753,6 +764,7 @@ int i, k; idx = EWL_SELECTION_RANGE(sel); + sdata = sel->data; srow = idx->start.row; scolumn = idx->start.column; @@ -777,8 +789,8 @@ { for (k = scolumn; k <= column; k++) { - if (ewl_mvc_selected_is(mvc, i, k)) - ewl_mvc_selected_rm(mvc, i, k); + if (ewl_mvc_selected_is(mvc, data, i, k)) + ewl_mvc_selected_rm(mvc, data, i, k); } } @@ -786,21 +798,21 @@ ecore_list_remove(mvc->selected); - ewl_mvc_selected_range_add(mvc, srow, scolumn, + ewl_mvc_selected_range_add(mvc, data, srow, scolumn, row, column); } else - ewl_mvc_selected_set(mvc, row, column); + ewl_mvc_selected_set(mvc, data, row, column); } else if (multi_select && (modifiers & EWL_KEY_MODIFIER_CTRL)) { - if (ewl_mvc_selected_is(mvc, row, column)) - ewl_mvc_selected_rm(mvc, row, column); + if (ewl_mvc_selected_is(mvc, data, row, column)) + ewl_mvc_selected_rm(mvc, data, row, column); else - ewl_mvc_selected_add(mvc, row, column); + ewl_mvc_selected_add(mvc, data, row, column); } else - ewl_mvc_selected_set(mvc, row, column); + ewl_mvc_selected_set(mvc, data, row, column); DLEAVE_FUNCTION(DLEVEL_STABLE); } @@ -816,7 +828,7 @@ */ void ewl_mvc_highlight(Ewl_MVC *mvc, Ewl_Container *c, - Ewl_Widget *(*widget)(Ewl_MVC *mvc, int row, int column)) + Ewl_Widget *(*widget)(Ewl_MVC *mvc, void *data, int row, int column)) { Ewl_Selection *sel; @@ -841,7 +853,7 @@ Ewl_Selection_Idx *idx; idx = EWL_SELECTION_IDX(sel); - w = widget(mvc, idx->row, idx->column); + w = widget(mvc, sel->data, idx->row, idx->column); if (w) ewl_mvc_highlight_do(mvc, c, sel, w); } else @@ -855,7 +867,7 @@ for (k = idx->start.column; k <= idx->end.column; k++) { - w = widget(mvc, i, k); + w = widget(mvc, sel->data, i, k); if (w) ewl_mvc_highlight_do(mvc, c, sel, w); } @@ -994,11 +1006,13 @@ /* one item left in the grouping */ if ((((si->start.row - erow) + 1) * ((si->start.column - si->end.column) + 1)) == 1) - n = ewl_mvc_selection_index_new(si->start.row, + n = ewl_mvc_selection_index_new(sel->data, + si->start.row, si->start.column); else - n = ewl_mvc_selection_range_new(si->start.row, + n = ewl_mvc_selection_range_new(sel->data, + si->start.row, si->start.column, erow, si->end.column); @@ -1014,10 +1028,10 @@ ecolumn = (column - 1); if ((((si->end.row - row) + 1) * ((si->start.column - ecolumn) + 1)) == 1) - n = ewl_mvc_selection_index_new(row, si->start.column); + n = ewl_mvc_selection_index_new(sel->data, row, si->start.column); else - n = ewl_mvc_selection_range_new(row, si->start.column, + n = ewl_mvc_selection_range_new(sel->data, row, si->start.column, si->end.row, ecolumn); ecore_list_append(mvc->selected, n); @@ -1032,10 +1046,10 @@ scolumn = column + 1; if ((((si->end.row - row) + 1) * ((scolumn - si->end.column) + 1)) == 1) - n = ewl_mvc_selection_index_new(row, si->end.column); + n = ewl_mvc_selection_index_new(sel->data, row, si->end.column); else - n = ewl_mvc_selection_range_new(row, scolumn, + n = ewl_mvc_selection_range_new(sel->data, row, scolumn, si->end.row, si->end.column); @@ -1051,10 +1065,10 @@ srow = row + 1; if ((((srow - si->end.row) + 1) * ((column - column) + 1)) == 1) - n = ewl_mvc_selection_index_new(si->end.row, column); + n = ewl_mvc_selection_index_new(sel->data, si->end.row, column); else - n = ewl_mvc_selection_range_new(srow, column, + n = ewl_mvc_selection_range_new(sel->data, srow, column, si->end.row, column); ecore_list_append(mvc->selected, n); =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_mvc.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- ewl_mvc.h 4 Jan 2007 05:09:47 -0000 1.11 +++ ewl_mvc.h 18 Jan 2007 10:24:59 -0000 1.12 @@ -36,6 +36,7 @@ { Ewl_Selection_Type type; /**< The type of selection */ void *highlight; /**< highlight widgets for the MVC */ + void *data; /**< Data containing the selection */ }; /** @@ -143,25 +144,25 @@ void ewl_mvc_selected_list_set(Ewl_MVC *mvc, Ecore_List *list); Ecore_List *ewl_mvc_selected_list_get(Ewl_MVC *mvc); -void ewl_mvc_selected_range_add(Ewl_MVC *mvc, +void ewl_mvc_selected_range_add(Ewl_MVC *mvc, void *data, int srow, int scolumn, int erow, int ecolumn); -void ewl_mvc_selected_set(Ewl_MVC *mvc, int row, int column); -void ewl_mvc_selected_add(Ewl_MVC *mvc, int row, int column); +void ewl_mvc_selected_set(Ewl_MVC *mvc, void *data, int row, int column); +void ewl_mvc_selected_add(Ewl_MVC *mvc, void *data, int row, int column); Ewl_Selection_Idx *ewl_mvc_selected_get(Ewl_MVC *mvc); -void ewl_mvc_selected_rm(Ewl_MVC *mvc, int row, int column); +void ewl_mvc_selected_rm(Ewl_MVC *mvc, void *data, int row, int column); int ewl_mvc_selected_count_get(Ewl_MVC *mvc); -unsigned int ewl_mvc_selected_is(Ewl_MVC *mvc, int row, int column); +unsigned int ewl_mvc_selected_is(Ewl_MVC *mvc, void *data, int row, int column); -Ewl_Selection *ewl_mvc_selection_index_new(int row, int column); -Ewl_Selection *ewl_mvc_selection_range_new(int srow, int scolumn, +Ewl_Selection *ewl_mvc_selection_index_new(void *data, int row, int column); +Ewl_Selection *ewl_mvc_selection_range_new(void *data, int srow, int scolumn, int erow, int ecolumn); void ewl_mvc_highlight(Ewl_MVC *mvc, Ewl_Container *c, Ewl_Widget *(*widget)(Ewl_MVC *mvc, - int row, int column)); + void *data, int row, int column)); /* * internal @@ -171,7 +172,7 @@ void ewl_mvc_cb_destroy(Ewl_Widget *w, void *ev, void *data); -void ewl_mvc_handle_click(Ewl_MVC *mvc, int row, int column); +void ewl_mvc_handle_click(Ewl_MVC *mvc, void *data, int row, int column); /** * @} =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_tree2.c,v retrieving revision 1.50 retrieving revision 1.51 diff -u -3 -r1.50 -r1.51 --- ewl_tree2.c 15 Jan 2007 02:24:40 -0000 1.50 +++ ewl_tree2.c 18 Jan 2007 10:24:59 -0000 1.51 @@ -24,7 +24,7 @@ static void ewl_tree2_cb_row_clicked(Ewl_Widget *w, void *ev, void *data); static void ewl_tree2_cb_cell_clicked(Ewl_Widget *w, void *ev, void *data); static void ewl_tree2_cb_selected_change(Ewl_MVC *mvc); -static Ewl_Widget *ewl_tree2_widget_at(Ewl_MVC *mvc, int row, int column); +static Ewl_Widget *ewl_tree2_widget_at(Ewl_MVC *mvc, void *data, int row, int column); static void ewl_tree2_create_expansions_hash(Ewl_Tree2 *tree); @@ -913,7 +913,8 @@ row = ewl_container_child_index_get(EWL_CONTAINER(tree->rows), EWL_WIDGET(data)); - ewl_mvc_handle_click(EWL_MVC(tree), row, -1); + ewl_mvc_handle_click(EWL_MVC(tree), ewl_mvc_data_get(EWL_MVC(tree)), + row, -1); DLEAVE_FUNCTION(DLEVEL_STABLE); } @@ -938,7 +939,8 @@ EWL_WIDGET(data)); column = ewl_container_child_index_get(EWL_CONTAINER(row), w); - ewl_mvc_handle_click(EWL_MVC(tree), r, column); + ewl_mvc_handle_click(EWL_MVC(tree), ewl_mvc_data_get(EWL_MVC(tree)), + r, column); DLEAVE_FUNCTION(DLEVEL_STABLE); } @@ -957,7 +959,7 @@ } static Ewl_Widget * -ewl_tree2_widget_at(Ewl_MVC *mvc, int row, int column) +ewl_tree2_widget_at(Ewl_MVC *mvc, void *data, int row, int column) { Ewl_Widget *r, *w; Ewl_Tree2 *tree; ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs