ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/examples.git/commit/?id=def8a4e5783227898713e969e0276f9ef25d86c7

commit def8a4e5783227898713e969e0276f9ef25d86c7
Author: Andy Williams <[email protected]>
Date:   Wed Dec 20 10:35:49 2017 +0000

    texteditor: Update toolbar based on edit state
---
 apps/c/texteditor/src/texteditor_main.c | 32 ++++++++++++++++++++++++++++++--
 1 file changed, 30 insertions(+), 2 deletions(-)

diff --git a/apps/c/texteditor/src/texteditor_main.c 
b/apps/c/texteditor/src/texteditor_main.c
index 0029455..9600322 100644
--- a/apps/c/texteditor/src/texteditor_main.c
+++ b/apps/c/texteditor/src/texteditor_main.c
@@ -6,11 +6,18 @@
 #include <Efl_Ui.h>
 
 Efl_Ui_Text *_editor;
+Efl_Ui_Button *_toolbar_new;
+
+Eina_Bool _edited = EINA_FALSE;
+
+static void _gui_toolbar_refresh(void);
 
 static void
 _gui_new_clicked_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
 {
    efl_text_set(_editor, "");
+   _edited = EINA_TRUE;
+   _gui_toolbar_refresh();
 }
 
 static void
@@ -20,6 +27,13 @@ _gui_quit_cb(void *data EINA_UNUSED, const Efl_Event *event 
EINA_UNUSED)
 }
 
 static void
+_editor_changed_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
+{
+   _edited = EINA_TRUE;
+   _gui_toolbar_refresh();
+}
+
+static Efl_Ui_Button *
 _gui_toolbar_button_add(Efl_Ui_Box *toolbar, const char *name,
                         const char *icon_name, Efl_Event_Cb func)
 {
@@ -34,6 +48,8 @@ _gui_toolbar_button_add(Efl_Ui_Box *toolbar, const char *name,
    efl_add(EFL_UI_IMAGE_CLASS, toolbar,
            efl_ui_image_icon_set(efl_added, icon_name),
            efl_content_set(efl_part(button, "elm.swallow.content"), 
efl_added));
+
+   return button;
 }
 
 static void
@@ -46,15 +62,27 @@ _gui_toolbar_setup(Efl_Ui_Box *parent)
                  efl_gfx_size_hint_weight_set(efl_added, 1, 0),
                  efl_ui_direction_set(efl_added, EFL_UI_DIR_HORIZONTAL));
 
-   _gui_toolbar_button_add(bar, "New", "document-new", _gui_new_clicked_cb);
+   _toolbar_new = _gui_toolbar_button_add(bar, "New", "document-new", 
_gui_new_clicked_cb);
 
    // spacer box
    efl_add(EFL_UI_BOX_CLASS, parent,
            efl_pack(bar, efl_added),
            efl_gfx_size_hint_weight_set(efl_added, 10, 0));
    _gui_toolbar_button_add(bar, "Quit", "application-exit", _gui_quit_cb);
+
+   _gui_toolbar_refresh();
+}
+
+static void
+_gui_toolbar_refresh(void)
+{
+   efl_ui_widget_disabled_set(_toolbar_new, !_edited);
 }
 
+EFL_CALLBACKS_ARRAY_DEFINE(_editor_callbacks,
+                           { EFL_UI_TEXT_EVENT_CHANGED, _editor_changed_cb },
+                           { EFL_UI_TEXT_EVENT_CHANGED_USER, 
_editor_changed_cb });
+
 static void
 _gui_setup()
 {
@@ -75,11 +103,11 @@ _gui_setup()
    _gui_toolbar_setup(box);
 
    _editor = efl_add(EFL_UI_TEXT_CLASS, box,
-                     efl_text_set(efl_added, "Edit me"),
                      efl_text_font_set(efl_added, "Mono", 14),
                      efl_text_multiline_set(efl_added, EINA_TRUE),
                      efl_ui_text_interactive_editable_set(efl_added, 
EINA_TRUE),
                      efl_ui_text_scrollable_set(efl_added, EINA_TRUE),
+                     efl_event_callback_array_add(efl_added, 
_editor_callbacks(), _editor_changed_cb, NULL),
                      efl_pack(box, efl_added));
 }
 

-- 


Reply via email to