diff --git a/src/bin/edi_main.c b/src/bin/edi_main.c index 3ce91be..ac4ca86 100644 --- a/src/bin/edi_main.c +++ b/src/bin/edi_main.c @@ -42,7 +42,7 @@ static Elm_Object_Item *_edi_logpanel_item, *_edi_consolepanel_item, *_edi_testp static Elm_Object_Item *_edi_selected_bottompanel; static Evas_Object *_edi_filepanel, *_edi_filepanel_icon; -static Evas_Object *_edi_main_win, *_edi_main_box, *_edi_new_popup, *_edi_goto_popup,*_edi_message_popup; +static Evas_Object *_edi_main_win, *_edi_main_box, *_edi_new_popup, *_edi_message_popup; int _edi_log_dom = -1; static void @@ -584,62 +584,12 @@ _tb_search_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UN edi_mainview_search(); } -static void -_tb_goto_go_cb(void *data, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - int number; - - number = atoi(elm_entry_entry_get((Evas_Object *) data)); - edi_mainview_goto(number); - - evas_object_del(_edi_goto_popup); -} - -static void -_tb_goto_cancel_cb(void *data EINA_UNUSED, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - evas_object_del(_edi_goto_popup); -} - -static void -_edi_edit_goto() -{ - Evas_Object *popup, *input, *button; - - popup = elm_popup_add(_edi_main_win); - _edi_goto_popup = popup; - elm_object_part_text_set(popup, "title,text", - "Enter line number"); - - input = elm_entry_add(popup); - elm_entry_single_line_set(input, EINA_TRUE); - elm_object_content_set(popup, input); - - button = elm_button_add(popup); - elm_object_text_set(button, "cancel"); - elm_object_part_content_set(popup, "button1", button); - evas_object_smart_callback_add(button, "clicked", - _tb_goto_cancel_cb, NULL); - - button = elm_button_add(popup); - elm_object_text_set(button, "go"); - elm_object_part_content_set(popup, "button2", button); - evas_object_smart_callback_add(button, "clicked", - _tb_goto_go_cb, input); - - evas_object_show(popup); -} - static void _tb_goto_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) { elm_toolbar_item_selected_set(elm_toolbar_selected_item_get(obj), EINA_FALSE); - _edi_edit_goto(); + edi_mainview_goto_popup_show(); } static Eina_Bool @@ -776,7 +726,7 @@ static void _edi_menu_goto_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - _edi_edit_goto(); + edi_mainview_goto_popup_show(); } static void diff --git a/src/bin/editor/edi_editor.c b/src/bin/editor/edi_editor.c index bd1ea23..335b132 100644 --- a/src/bin/editor/edi_editor.c +++ b/src/bin/editor/edi_editor.c @@ -180,6 +180,10 @@ _smart_cb_key_down(void *data EINA_UNUSED, Evas *e EINA_UNUSED, { edi_mainview_search(); } + else if (!strcmp(ev->key, "g")) + { + edi_mainview_goto_popup_show(); + } else if (!strcmp(ev->key, "z")) { _undo_cb(editor, obj, event); diff --git a/src/bin/mainview/edi_mainview.c b/src/bin/mainview/edi_mainview.c index 837e255..187e73d 100644 --- a/src/bin/mainview/edi_mainview.c +++ b/src/bin/mainview/edi_mainview.c @@ -18,7 +18,7 @@ #include "edi_config.h" static Evas_Object *nf, *tb, *_main_win; -static Evas_Object *_edi_mainview_choose_popup; +static Evas_Object *_edi_mainview_choose_popup, *_edi_mainview_goto_popup; static Edi_Path_Options *_edi_mainview_choose_options; static Eina_List *_edi_mainview_items = NULL; @@ -572,6 +572,71 @@ edi_mainview_goto(int line) elm_object_focus_set(editor->entry, EINA_TRUE); } +static void +_edi_mainview_goto_popup_go_cb(void *data, + Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + int number; + + number = atoi(elm_entry_entry_get((Evas_Object *) data)); + edi_mainview_goto(number); + + evas_object_del(_edi_mainview_goto_popup); +} + +static void +_edi_mainview_goto_popup_cancel_cb(void *data EINA_UNUSED, + Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + evas_object_del(_edi_mainview_goto_popup); +} + +static void +_edi_mainview_goto_popup_key_up_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, + Evas_Object *obj, void *event_info) +{ + Evas_Event_Key_Up *ev = (Evas_Event_Key_Up *)event_info; + const char *str; + + str = elm_object_text_get(obj); + + if (strlen(str) && (!strcmp(ev->key, "KP_Enter") || !strcmp(ev->key, "Return"))) + _edi_mainview_goto_popup_go_cb(obj, NULL, NULL); +} + +void +edi_mainview_goto_popup_show() +{ + Evas_Object *popup, *input, *button; + + popup = elm_popup_add(_main_win); + _edi_mainview_goto_popup = popup; + elm_object_part_text_set(popup, "title,text", + "Enter line number"); + + input = elm_entry_add(popup); + elm_entry_single_line_set(input, EINA_TRUE); + evas_object_event_callback_add(input, EVAS_CALLBACK_KEY_UP, _edi_mainview_goto_popup_key_up_cb, NULL); + elm_object_content_set(popup, input); + + button = elm_button_add(popup); + elm_object_text_set(button, "cancel"); + elm_object_part_content_set(popup, "button1", button); + evas_object_smart_callback_add(button, "clicked", + _edi_mainview_goto_popup_cancel_cb, NULL); + + button = elm_button_add(popup); + elm_object_text_set(button, "go"); + elm_object_part_content_set(popup, "button2", button); + evas_object_smart_callback_add(button, "clicked", + _edi_mainview_goto_popup_go_cb, input); + + evas_object_show(popup); + elm_object_focus_set(input, EINA_TRUE); +} + void edi_mainview_add(Evas_Object *parent, Evas_Object *win) { diff --git a/src/bin/mainview/edi_mainview.h b/src/bin/mainview/edi_mainview.h index 7e0c57c..b8c26a1 100644 --- a/src/bin/mainview/edi_mainview.h +++ b/src/bin/mainview/edi_mainview.h @@ -89,7 +89,6 @@ void edi_mainview_open_window_path(const char *path); */ void edi_mainview_open_window(Edi_Path_Options *options); - /** * Save the current file. * @@ -148,6 +147,13 @@ void edi_mainview_search(); */ void edi_mainview_goto(int line); +/** + * Present a popup that will initiate a goto in the current view. + * + * @ingroup Content + */ +void edi_mainview_goto_popup_show(); + /** * @} *