Enlightenment CVS committal
Author : rbdpngn
Project : e17
Module : libs/ewl
Dir : e17/libs/ewl/src
Modified Files:
ewl_filedialog.c ewl_filedialog.h
Log Message:
API change on the file dialog. Attach a VALUE_CHANGED callback to the
filedialog to receive notification for the Open/Save and Cancel buttons. The
currently selected file is passed as the event data to the callback.
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_filedialog.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -3 -r1.28 -r1.29
--- ewl_filedialog.c 2 Feb 2004 05:48:31 -0000 1.28
+++ ewl_filedialog.c 11 Feb 2004 18:17:32 -0000 1.29
@@ -8,9 +8,7 @@
* @return Returns a new filedialog in success, NULL on failure.
* @brief Create a new filedialog
*/
-Ewl_Widget *ewl_filedialog_new(Ewl_Filedialog_Type type,
- Ewl_Callback_Function ok_cb,
- Ewl_Callback_Function cancel_cb)
+Ewl_Widget *ewl_filedialog_new(Ewl_Filedialog_Type type)
{
Ewl_Filedialog *fd;
@@ -20,7 +18,7 @@
if (!fd)
DRETURN_PTR(NULL, DLEVEL_STABLE);
- ewl_filedialog_init(fd, type, ok_cb, cancel_cb);
+ ewl_filedialog_init(fd, type);
DRETURN_PTR(EWL_WIDGET(fd), DLEVEL_STABLE);
}
@@ -35,8 +33,7 @@
* @brief Initialize a new filedialog
*/
void
-ewl_filedialog_init(Ewl_Filedialog * fd, Ewl_Filedialog_Type type,
- Ewl_Callback_Function ok_cb, Ewl_Callback_Function cancel_cb)
+ewl_filedialog_init(Ewl_Filedialog * fd, Ewl_Filedialog_Type type)
{
Ewl_Widget *w;
Ewl_Widget *hbox;
@@ -90,14 +87,15 @@
ewl_container_append_child(EWL_CONTAINER(hbox), fd->decor_box);
ewl_widget_show(fd->decor_box);
- fd->selector = ewl_fileselector_new(ok_cb);
+ fd->selector = ewl_fileselector_new(ewl_filedialog_fs_ok_cb);
ewl_widget_set_internal(fd->selector, TRUE);
ewl_container_append_child(EWL_CONTAINER(hbox), fd->selector);
ewl_callback_append (EWL_WIDGET (fd->selector),
EWL_CALLBACK_VALUE_CHANGED,
- ewl_filedialog_change_labels, fd);
+ ewl_filedialog_change_labels_cb, fd);
ewl_callback_append (EWL_WIDGET (fd->selector),
- EWL_CALLBACK_CLICKED, ewl_filedialog_change_entry, fd);
+ EWL_CALLBACK_CLICKED, ewl_filedialog_change_entry_cb,
+ fd);
ewl_widget_show(fd->selector);
fd->button_box = ewl_hbox_new();
@@ -117,7 +115,7 @@
ewl_widget_set_internal(fd->entry, TRUE);
ewl_container_append_child(EWL_CONTAINER(fd->button_box), fd->entry);
ewl_callback_append (fd->entry, EWL_CALLBACK_VALUE_CHANGED,
- ewl_filedialog_change_path, fd);
+ ewl_filedialog_change_path_cb, fd);
ewl_widget_show (fd->entry);
@@ -125,15 +123,10 @@
fd->ok = ewl_button_new("Open");
else
fd->ok = ewl_button_new("Save");
-
ewl_widget_set_internal(fd->ok, TRUE);
ewl_object_set_fill_policy(EWL_OBJECT(fd->ok), EWL_FLAG_FILL_NONE);
- ewl_callback_append(fd->ok, EWL_CALLBACK_CLICKED,
- ewl_filedialog_hide_cb, fd);
- if (ok_cb) {
- ewl_callback_append(fd->ok, EWL_CALLBACK_CLICKED, ok_cb,
- fd->selector);
- }
+ ewl_callback_append(fd->ok, EWL_CALLBACK_CLICKED, ewl_filedialog_ok_cb,
+ fd);
ewl_container_append_child(EWL_CONTAINER(fd->button_box), fd->ok);
ewl_widget_show(fd->ok);
@@ -141,11 +134,7 @@
ewl_widget_set_internal(fd->cancel, TRUE);
ewl_object_set_fill_policy(EWL_OBJECT(fd->cancel), EWL_FLAG_FILL_NONE);
ewl_callback_append(fd->cancel, EWL_CALLBACK_CLICKED,
- ewl_filedialog_hide_cb, fd);
- if (cancel_cb) {
- ewl_callback_append(fd->cancel, EWL_CALLBACK_CLICKED,
- cancel_cb, fd->selector);
- }
+ ewl_filedialog_cancel_cb, fd);
ewl_container_append_child(EWL_CONTAINER(fd->button_box), fd->cancel);
ewl_widget_show(fd->cancel);
@@ -155,7 +144,7 @@
DLEAVE_FUNCTION(DLEVEL_STABLE);
}
-void ewl_filedialog_change_labels (Ewl_Widget * w, void *ev_data,
+void ewl_filedialog_change_labels_cb (Ewl_Widget * w, void *ev_data,
void *user_data)
{
char *ptr;
@@ -173,8 +162,8 @@
DLEAVE_FUNCTION(DLEVEL_STABLE);
}
-void ewl_filedialog_change_entry (Ewl_Widget * w, void *ev_data,
- void *user_data)
+void
+ewl_filedialog_change_entry_cb(Ewl_Widget * w, void *ev_data, void *user_data)
{
Ewl_Filedialog *fd = user_data;
Ewl_Fileselector *fs = EWL_FILESELECTOR (fd->selector);
@@ -187,7 +176,8 @@
}
-void ewl_filedialog_change_path(Ewl_Widget * w, void *ev_data, void *user_data)
+void
+ewl_filedialog_change_path_cb(Ewl_Widget * w, void *ev_data, void *user_data)
{
struct stat statbuf;
Ewl_Filedialog *fd = user_data;
@@ -204,8 +194,37 @@
}
}
-void ewl_filedialog_hide_cb(Ewl_Widget * w, void *ev_data, void *user_data)
+void
+ewl_filedialog_ok_cb(Ewl_Widget * w, void *ev_data, void *user_data)
{
- Ewl_Widget *fd = user_data;
- ewl_widget_hide(fd);
+ char *path1, *path2;
+ char tmp[PATH_MAX];
+ Ewl_Filedialog *fd = user_data;
+
+ path1 = ewl_fileselector_get_path(EWL_FILESELECTOR(fd->selector));
+ path2 = ewl_entry_get_text(EWL_ENTRY(fd->entry));
+ snprintf(tmp, PATH_MAX, "%s/%s", path1, path2);
+
+ free(path1);
+ free(path2);
+ path1 = strdup(tmp);
+ ewl_callback_call_with_event_data(fd, EWL_CALLBACK_VALUE_CHANGED,
+ path1);
+ free(path1);
+}
+
+void
+ewl_filedialog_cancel_cb(Ewl_Widget *w, void *ev_data, void *user_data)
+{
+ Ewl_Widget *fd = user_data;
+ ewl_callback_call(fd, EWL_CALLBACK_VALUE_CHANGED);
+}
+
+void
+ewl_filedialog_fs_ok_cb(Ewl_Widget * w, void *ev_data, void *user_data)
+{
+ Ewl_Widget *fs = user_data;
+ Ewl_Widget *fd = fs->parent->parent;
+
+ ewl_filedialog_ok_cb(w, ev_data, fd);
}
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_filedialog.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- ewl_filedialog.h 2 Feb 2004 05:43:02 -0000 1.12
+++ ewl_filedialog.h 11 Feb 2004 18:17:32 -0000 1.13
@@ -43,10 +43,8 @@
};
-Ewl_Widget *ewl_filedialog_new (Ewl_Filedialog_Type type,
- Ewl_Callback_Function ok_cb, Ewl_Callback_Function cancel_cb);
-void ewl_filedialog_init (Ewl_Filedialog * fd, Ewl_Filedialog_Type type,
- Ewl_Callback_Function cb, Ewl_Callback_Function cancel_cb);
+Ewl_Widget *ewl_filedialog_new (Ewl_Filedialog_Type type);
+void ewl_filedialog_init (Ewl_Filedialog * fd, Ewl_Filedialog_Type type);
void ewl_filedialog_open_init (Ewl_Filedialog * fd, Ewl_Callback_Function cb,
Ewl_Callback_Function cancel_cb);
void ewl_filedialog_save_init (Ewl_Filedialog * fd, Ewl_Callback_Function cb,
@@ -56,10 +54,12 @@
/*
* Internally used callback, override at your own risk.
*/
-void ewl_filedialog_change_labels (Ewl_Widget * w, void *ev_data, void *user_data);
-void ewl_filedialog_change_entry (Ewl_Widget * w, void *ev_data, void *user_data);
-void ewl_filedialog_change_path (Ewl_Widget * w, void *ev_data, void *user_data);
-void ewl_filedialog_hide_cb (Ewl_Widget * w, void *ev_data, void *user_data);
+void ewl_filedialog_change_labels_cb (Ewl_Widget * w, void *ev_data, void *user_data);
+void ewl_filedialog_change_entry_cb (Ewl_Widget * w, void *ev_data, void *user_data);
+void ewl_filedialog_change_path_cb (Ewl_Widget * w, void *ev_data, void *user_data);
+void ewl_filedialog_ok_cb(Ewl_Widget * w, void *ev_data, void *user_data);
+void ewl_filedialog_cancel_cb(Ewl_Widget * w, void *ev_data, void *user_data);
+void ewl_filedialog_fs_ok_cb(Ewl_Widget * w, void *ev_data, void *user_data);
/**
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs