Enlightenment CVS committal
Author : jethomas
Project : e17
Module : libs/ewl
Dir : e17/libs/ewl/src/lib
Modified Files:
ewl_filelist.c ewl_filelist.h
Log Message:
Use ecore_file_monitor in the filelist.
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_filelist.c,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -3 -r1.61 -r1.62
--- ewl_filelist.c 20 May 2008 23:47:00 -0000 1.61
+++ ewl_filelist.c 23 Jun 2008 23:37:27 -0000 1.62
@@ -24,7 +24,9 @@
static void ewl_filelist_setup(Ewl_Filelist *fl);
static void ewl_filelist_view_setup(Ewl_Filelist *fl);
static void ewl_filelist_cb_clicked(Ewl_Widget *w, void *ev,
- void *data __UNUSED__);
+ void *data);
+void ewl_filelist_monitor_event(void *data, Ecore_File_Monitor *em,
+ Ecore_File_Event event, const char *path);
/**
* @return Returns a new Ewl_Filelist widget or NULL on failure
@@ -268,20 +270,17 @@
}
else if ((!fl->directory) || (strcmp(dir, fl->directory)))
{
- Ewl_Filelist_Directory *data;
Ewl_Event_Action_Response ev_data;
IF_FREE(fl->directory);
fl->directory = strdup(dir);
- data = ewl_mvc_data_get(EWL_MVC(fl->controller));
- if (data) ewl_filelist_model_data_unref(data);
-
- data = ewl_filelist_model_directory_new(fl->directory,
- fl->show_dot, TRUE,
fl->filter);
- ewl_mvc_data_set(EWL_MVC(fl->controller), data);
- ewl_mvc_dirty_set(EWL_MVC(fl->controller), TRUE);
+ if (fl->fm)
+ ecore_file_monitor_del(fl->fm);
+ fl->fm = ecore_file_monitor_add(fl->directory,
+ ewl_filelist_monitor_event, fl);
+ ewl_filelist_refresh(fl);
ev_data.response = EWL_FILELIST_EVENT_DIR_CHANGE;
ewl_callback_call_with_event_data(EWL_WIDGET(fl),
EWL_CALLBACK_VALUE_CHANGED, &ev_data);
@@ -291,6 +290,35 @@
}
/**
+ * @param fl: The filelist to work with
+ * @return Returns no value
+ * @brief Refreshes the filelist when the directory shown is know to have
+ * changed
+ */
+void
+ewl_filelist_refresh(Ewl_Filelist *fl)
+{
+ Ewl_Filelist_Directory *data;
+
+ DENTER_FUNCTION(DLEVEL_STABLE);
+ DCHECK_PARAM_PTR(fl);
+ DCHECK_TYPE(fl, EWL_FILELIST_TYPE);
+
+ if (!fl->directory)
+ DRETURN(DLEVEL_STABLE);
+
+ data = ewl_mvc_data_get(EWL_MVC(fl->controller));
+ if (data) ewl_filelist_model_data_unref(data);
+
+ data = ewl_filelist_model_directory_new(fl->directory,
+ fl->show_dot, TRUE, fl->filter);
+ ewl_mvc_data_set(EWL_MVC(fl->controller), data);
+ ewl_mvc_dirty_set(EWL_MVC(fl->controller), TRUE);
+
+ DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+/**
* @param fl: The filelist to get the current directory from
* @return Returns the current directory
* @brief Retrieves the current directory set on the filelist
@@ -1273,5 +1301,14 @@
ewl_filelist_selected_files_change_notify(fl);
DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+void ewl_filelist_monitor_event(void *data, Ecore_File_Monitor *em __UNUSED__,
+ Ecore_File_Event event __UNUSED__,
+ const char *path __UNUSED__)
+{
+ Ewl_Filelist *fl = data;
+
+ ewl_filelist_refresh(fl);
}
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_filelist.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- ewl_filelist.h 7 May 2008 13:38:23 -0000 1.25
+++ ewl_filelist.h 23 Jun 2008 23:37:27 -0000 1.26
@@ -8,6 +8,7 @@
#include "ewl_text.h"
#include "ewl_model.h"
#include "ewl_view.h"
+#include <Ecore_File.h>
/**
* @addtogroup Ewl_Filelist Ewl_Filelist: The base widget for the filelists
@@ -73,24 +74,25 @@
*/
struct Ewl_Filelist
{
- Ewl_Box box; /**< Inherits from Ewl_Box */
- Ewl_Widget *controller; /**< Must inherit from mvc **/
+ Ewl_Box box; /**< Inherits from Ewl_Box */
+ Ewl_Widget *controller; /**< Must inherit from mvc **/
- Ewl_View *view; /**< The view for mvc */
- Ewl_Model *model; /**< The model for the mvc */
+ Ewl_View *view; /**< The view for mvc */
+ Ewl_Model *model; /**< The model for the mvc */
- char *directory; /**< The directory to display */
- Ewl_Filelist_Filter *filter; /**< The file filter to
employ */
+ char *directory; /**< The directory to display */
+ Ewl_Filelist_Filter *filter; /**< The file filter to employ */
- unsigned char multiselect:1; /**< Allow multiple file selctions
*/
+ unsigned char multiselect:1; /**< Allow multiple file selctions */
unsigned char show_dot:1; /**< Show . files */
- Ewl_Filelist_View view_flag; /**< The view to use for
controller */
+ Ewl_Filelist_View view_flag; /**< The view to use for controller */
struct
{ Ewl_Scrollpane_Flags h; /**< Horizontal scroll flag */
- Ewl_Scrollpane_Flags v; /**< Vertical scroll flag */
- } scroll_flags; /**< Flags to modify a containing
scrollpane */
+ Ewl_Scrollpane_Flags v; /**< Vertical scroll flag */
+ } scroll_flags; /**< Flags to modify a containing
scrollpane */
+ Ecore_File_Monitor *fm; /**< File monitor */
};
/**
@@ -153,62 +155,63 @@
unsigned int num_files;
};
-Ewl_Widget *ewl_filelist_new(void);
+Ewl_Widget *ewl_filelist_new(void);
-int ewl_filelist_init(Ewl_Filelist *fl);
+int ewl_filelist_init(Ewl_Filelist *fl);
-void ewl_filelist_directory_set(Ewl_Filelist *fl,
+void ewl_filelist_directory_set(Ewl_Filelist *fl,
const char *dir);
-const char *ewl_filelist_directory_get(Ewl_Filelist *fl);
+const char *ewl_filelist_directory_get(Ewl_Filelist *fl);
+void ewl_filelist_refresh(Ewl_Filelist *fl);
-void ewl_filelist_filter_set(Ewl_Filelist *fl,
+void ewl_filelist_filter_set(Ewl_Filelist *fl,
Ewl_Filelist_Filter
*filter);
-Ewl_Filelist_Filter *ewl_filelist_filter_get(Ewl_Filelist *fl);
+Ewl_Filelist_Filter *ewl_filelist_filter_get(Ewl_Filelist *fl);
-void ewl_filelist_view_set(Ewl_Filelist *fl,
+void ewl_filelist_view_set(Ewl_Filelist *fl,
Ewl_Filelist_View view);
-Ewl_Filelist_View *ewl_filelist_view_get(Ewl_Filelist *fl);
+Ewl_Filelist_View *ewl_filelist_view_get(Ewl_Filelist *fl);
-void ewl_filelist_multiselect_set(Ewl_Filelist *fl,
+void ewl_filelist_multiselect_set(Ewl_Filelist *fl,
unsigned int ms);
-unsigned int ewl_filelist_multiselect_get(Ewl_Filelist *fl);
+unsigned int ewl_filelist_multiselect_get(Ewl_Filelist *fl);
-void ewl_filelist_show_dot_files_set(Ewl_Filelist *fl,
+void ewl_filelist_show_dot_files_set(Ewl_Filelist *fl,
unsigned int dot);
-unsigned int ewl_filelist_show_dot_files_get(Ewl_Filelist *fl);
+unsigned int ewl_filelist_show_dot_files_get(Ewl_Filelist *fl);
-void ewl_filelist_selected_file_set(Ewl_Filelist *fl,
+void ewl_filelist_selected_file_set(Ewl_Filelist *fl,
const char *file);
-char *ewl_filelist_selected_file_get(Ewl_Filelist *fl);
-char *ewl_filelist_size_get(off_t st_size);
-char *ewl_filelist_perms_get(mode_t st_mode);
-char *ewl_filelist_username_get(uid_t st_uid);
-char *ewl_filelist_groupname_get(gid_t st_gid);
-char *ewl_filelist_modtime_get(time_t modtime);
-Ewl_Widget *ewl_filelist_selected_file_preview_get(Ewl_Filelist *fl,
+char *ewl_filelist_selected_file_get(Ewl_Filelist *fl);
+char *ewl_filelist_size_get(off_t st_size);
+char *ewl_filelist_perms_get(mode_t st_mode);
+char *ewl_filelist_username_get(uid_t st_uid);
+char *ewl_filelist_groupname_get(gid_t st_gid);
+char *ewl_filelist_modtime_get(time_t modtime);
+Ewl_Widget *ewl_filelist_selected_file_preview_get(Ewl_Filelist
*fl,
const char *path);
-Ewl_Widget *ewl_filelist_multi_select_preview_get(Ewl_Filelist *fl);
+Ewl_Widget *ewl_filelist_multi_select_preview_get(Ewl_Filelist
*fl);
-void ewl_filelist_selected_files_set(Ewl_Filelist *fl,
+void ewl_filelist_selected_files_set(Ewl_Filelist *fl,
Ecore_List *files);
-Ecore_List *ewl_filelist_selected_files_get(Ewl_Filelist *fl);
-void ewl_filelist_selected_files_change_notify(Ewl_Filelist
*fl);
+Ecore_List *ewl_filelist_selected_files_get(Ewl_Filelist *fl);
+void
ewl_filelist_selected_files_change_notify(Ewl_Filelist *fl);
-void ewl_filelist_selected_signal_all(Ewl_Filelist *fl,
+void ewl_filelist_selected_signal_all(Ewl_Filelist *fl,
const char *signal);
-void ewl_filelist_vscroll_flag_set(Ewl_Filelist *fl,
+void ewl_filelist_vscroll_flag_set(Ewl_Filelist *fl,
Ewl_Scrollpane_Flags v);
-Ewl_Scrollpane_Flags ewl_filelist_vscroll_flag_get(Ewl_Filelist *fl);
+Ewl_Scrollpane_Flags ewl_filelist_vscroll_flag_get(Ewl_Filelist *fl);
-void ewl_filelist_hscroll_flag_set(Ewl_Filelist *fl,
+void ewl_filelist_hscroll_flag_set(Ewl_Filelist *fl,
Ewl_Scrollpane_Flags h);
-Ewl_Scrollpane_Flags ewl_filelist_hscroll_flag_get(Ewl_Filelist *fl);
+Ewl_Scrollpane_Flags ewl_filelist_hscroll_flag_get(Ewl_Filelist *fl);
-const char *ewl_filelist_stock_icon_get(const char *path);
+const char *ewl_filelist_stock_icon_get(const char *path);
-char *ewl_filelist_expand_path(Ewl_Filelist *fl, const char
*dir);
+char *ewl_filelist_expand_path(Ewl_Filelist *fl, const char
*dir);
/*
* Internally used functions, override at your own risk
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs