diff options
Diffstat (limited to 'dicons.c')
-rw-r--r-- | dicons.c | 35 |
1 files changed, 33 insertions, 2 deletions
@@ -11,12 +11,37 @@ enum NUM_COLS }; +GtkListStore *store; + +// Callback function for file created signal +static void file_changed_cb(GFileMonitor *monitor, GFile *file, GFile *other_file, GFileMonitorEvent evtype, gpointer user_data) +{ + char *fpath = g_file_get_path(file); + char *opath = NULL; + if (other_file) { + opath = g_file_get_path(other_file); + } + + switch(evtype) { + case G_FILE_MONITOR_EVENT_DELETED: + g_print("%s deleted\n", fpath); + break; + case G_FILE_MONITOR_EVENT_CREATED: + g_print("%s created\n", fpath); + break; + } + if (opath) { + g_free(opath); + } + g_free(fpath); +} + static GtkListStore *create_desktop_list(void) { - GtkListStore *store; GtkTreeIter iter; GDir *dir; - GFile *file; + GFile *file, *dir_file; + GFileMonitor *monitor; GFileInfo *file_info; const gchar *file_name, *display_name; GtkIconTheme *theme; @@ -35,6 +60,10 @@ static GtkListStore *create_desktop_list(void) dir = g_dir_open(desktop_path, 0, 0); + dir_file = g_file_new_for_path(desktop_path); + // monitor = g_file_monitor_directory(dir_file, G_FILE_MONITOR_WATCH_MOVES, NULL, NULL); + monitor = g_file_monitor_directory(dir_file, G_FILE_MONITOR_NONE, NULL, NULL); + while ( (file_name = g_dir_read_name(dir)) ) { printf("g %s\n", file_name); @@ -57,6 +86,8 @@ static GtkListStore *create_desktop_list(void) ); } + g_signal_connect(monitor, "changed", G_CALLBACK(file_changed_cb), NULL); + return GTK_LIST_STORE(store); } |