texteditor: Update toolbar based on edit state
This commit is contained in:
parent
d226ee2c98
commit
def8a4e578
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue