Enlightenment CVS committal
Author : lordchaos
Project : e17
Module : proto
Dir : e17/proto/entropy/src/dialogs
Modified Files:
etk_file_cache_debug_dialog.c
Log Message:
* Hook up the file cache dialog. Also supports sorting by # of listeners.
More details to come
* Fix logic flaw in event cycle for file listing and file-decaching (success #1
for file cache debug dialog)
===================================================================
RCS file:
/cvsroot/enlightenment/e17/proto/entropy/src/dialogs/etk_file_cache_debug_dialog.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- etk_file_cache_debug_dialog.c 6 Mar 2006 08:26:13 -0000 1.2
+++ etk_file_cache_debug_dialog.c 6 Mar 2006 10:41:40 -0000 1.3
@@ -1,18 +1,89 @@
#include "entropy.h"
#include <Etk.h>
+static int _etk_file_cache_dialog_running = 0;
+void etk_file_cache_dialog_refresh(Etk_Widget* tree);
+
+static int _entropy_etk_file_cache_dialog_listener_compare_cb
+(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col,
void *data)
+{
+ int val1, val2;
+
+ etk_tree_row_fields_get(row1, col, &val1, NULL);
+ etk_tree_row_fields_get(row2, col, &val2, NULL);
+
+ if (val1 < val2)
+ return 1;
+ else if (val1 > val2)
+ return -1;
+ else
+ return 0;
+
+}
+
+static Etk_Bool
+_etk_file_cache_debug_dialog_delete_cb (Etk_Object * object, void *data)
+{
+ _etk_file_cache_dialog_running = 0;
+ etk_object_destroy(object);
+
+ return ETK_TRUE;
+}
+
+void _etk_file_cache_dialog_refresh_cb(Etk_Object* object, void* data)
+{
+ etk_file_cache_dialog_refresh(ETK_WIDGET(data));
+}
+
+void etk_file_cache_dialog_refresh(Etk_Widget* tree)
+{
+ Etk_Tree_Col* col1;
+ Etk_Tree_Col* col2;
+
+ char* key;
+ char buffer[PATH_MAX];
+ Ecore_List* keys;
+
+ etk_tree_clear(ETK_TREE(tree));
+
+ /*Populate the tree*/
+ col1 = etk_tree_nth_col_get(ETK_TREE(tree), 0);
+ col2 = etk_tree_nth_col_get(ETK_TREE(tree), 1);
+
+ etk_tree_freeze(ETK_TREE(tree));
+
+ keys = entropy_core_file_cache_keys_retrieve();
+ while ( (key = ecore_list_remove_first(keys))) {
+ entropy_file_listener* listen =
entropy_core_file_cache_retrieve(key);
+
+ if (listen) {
+ snprintf(buffer, PATH_MAX, "%s/%s",
listen->file->path, listen->file->filename);
+
+ etk_tree_append(ETK_TREE(tree),
+ col1, listen->count,
+ col2, buffer,
+ NULL);
+ }
+
+ }
+ ecore_list_destroy(keys);
+
+ etk_tree_thaw(ETK_TREE(tree));
+}
+
void etk_file_cache_dialog_create()
{
Etk_Widget* window = NULL;
Etk_Widget* tree = NULL;
Etk_Tree_Col* tree_col;
+ Etk_Widget* button;
+ Etk_Widget* vbox;
- Etk_Tree_Col* col1;
- Etk_Tree_Col* col2;
- char* key;
- entropy_mime_action* action;
- Ecore_List* keys;
+ if (_etk_file_cache_dialog_running)
+ return;
+
+ _etk_file_cache_dialog_running = 1;
window = etk_window_new();
@@ -21,23 +92,37 @@
etk_widget_size_request_set(ETK_WIDGET(window), 450, 500);
+ vbox = etk_vbox_new(ETK_FALSE,0);
+ etk_container_add(ETK_CONTAINER(window), vbox);
+
tree = etk_tree_new();
+ etk_box_pack_start(ETK_BOX(vbox), tree, ETK_TRUE, ETK_TRUE, 0);
+
etk_tree_mode_set(ETK_TREE(tree), ETK_TREE_MODE_LIST);
- tree_col = etk_tree_col_new(ETK_TREE(tree), _("File Type"),
- etk_tree_model_text_new(ETK_TREE(tree)), 125);
+ tree_col = etk_tree_col_new(ETK_TREE(tree), _("Listeners"),
+ etk_tree_model_int_new(ETK_TREE(tree)), 125);
+
+ etk_tree_col_sort_func_set(tree_col,
_entropy_etk_file_cache_dialog_listener_compare_cb, ETK_TRUE, NULL);
- tree_col = etk_tree_col_new(ETK_TREE(tree), _("Executable"),
+ tree_col = etk_tree_col_new(ETK_TREE(tree), _("Filename"),
etk_tree_model_text_new(ETK_TREE(tree)), 150);
etk_tree_col_expand_set(tree_col, ETK_TRUE);
etk_tree_build(ETK_TREE(tree));
- etk_container_add(ETK_CONTAINER(window), tree);
+
+ etk_file_cache_dialog_refresh(tree);
- /*Populate the tree*/
- col1 = etk_tree_nth_col_get(ETK_TREE(tree), 0);
- col2 = etk_tree_nth_col_get(ETK_TREE(tree), 1);
+ button = etk_button_new_with_label("Refresh");
+ etk_signal_connect("pressed", ETK_OBJECT(button),
ETK_CALLBACK(_etk_file_cache_dialog_refresh_cb), tree);
+
+
+ etk_box_pack_end(ETK_BOX(vbox), button, ETK_FALSE, ETK_FALSE, 0);
+
+
+ etk_signal_connect ("delete_event", ETK_OBJECT (window),
+ ETK_CALLBACK (_etk_file_cache_debug_dialog_delete_cb),
window);
etk_widget_show_all(window);
}
-------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs