forked from enlightenment/edi
tabs: Ensure that all content types load with good dimensions.
This ensures code, text and images are loaded properly with proper dimensions. This means there is no jumping about when switching tabs with multiple panels, multiple tabs and any type of content. Moved the image_add to centralise the generation of statusbar.
This commit is contained in:
parent
5cbb9466e9
commit
81165c426f
|
@ -17,24 +17,6 @@
|
|||
// TODO move out to edi_content.c or similar just like the editor type
|
||||
// (and the Evas include)
|
||||
|
||||
static Evas_Object *
|
||||
_edi_content_provider_image_add(Evas_Object *parent, Edi_Mainview_Item *item)
|
||||
{
|
||||
Evas_Object *img, *scroll;
|
||||
|
||||
scroll = elm_scroller_add(parent);
|
||||
evas_object_size_hint_weight_set(scroll, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(scroll, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
evas_object_show(scroll);
|
||||
img = elm_image_add(scroll);
|
||||
elm_image_file_set(img, item->path, NULL);
|
||||
elm_image_no_scale_set(img, EINA_TRUE);
|
||||
elm_object_content_set(scroll, img);
|
||||
evas_object_show(img);
|
||||
|
||||
return scroll;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_edi_content_provider_diff_config_changed(void *data, int type EINA_UNUSED, void *event EINA_UNUSED)
|
||||
{
|
||||
|
@ -65,7 +47,7 @@ static Edi_Content_Provider _edi_content_provider_registry[] =
|
|||
{
|
||||
{"text", "text-x-generic", EINA_TRUE, EINA_TRUE, edi_editor_add},
|
||||
{"code", "text-x-csrc", EINA_TRUE, EINA_TRUE, edi_editor_add},
|
||||
{"image", "image-x-generic", EINA_FALSE, EINA_FALSE, _edi_content_provider_image_add},
|
||||
{"image", "image-x-generic", EINA_FALSE, EINA_FALSE, edi_editor_image_add},
|
||||
{"diff", "text-x-source", EINA_TRUE, EINA_FALSE, _edi_content_provider_diff_add},
|
||||
|
||||
{NULL, NULL, EINA_FALSE, EINA_FALSE, NULL}
|
||||
|
|
|
@ -865,9 +865,17 @@ _edit_cursor_moved(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
|
|||
unsigned int col;
|
||||
|
||||
widget = (Elm_Code_Widget *)obj;
|
||||
if (widget)
|
||||
{
|
||||
elm_code_widget_cursor_position_get(widget, &line, &col);
|
||||
}
|
||||
else
|
||||
{
|
||||
line = 0; col = 0;
|
||||
}
|
||||
|
||||
snprintf(buf, sizeof(buf), _("Line:%6d, Column:%4d"), line, col);
|
||||
|
||||
elm_object_text_set((Evas_Object *)data, buf);
|
||||
}
|
||||
|
||||
|
@ -923,10 +931,17 @@ _edi_editor_statusbar_add(Evas_Object *panel, Edi_Editor *editor, Edi_Mainview_I
|
|||
elm_box_pack_end(panel, table);
|
||||
|
||||
code = elm_code_widget_code_get(editor->entry);
|
||||
if (code)
|
||||
{
|
||||
if (elm_code_file_line_ending_get(code->file) == ELM_CODE_FILE_LINE_ENDING_WINDOWS)
|
||||
format = "WIN";
|
||||
else
|
||||
format = "UNIX";
|
||||
}
|
||||
else
|
||||
{
|
||||
format = "";
|
||||
}
|
||||
|
||||
mime = elm_entry_add(panel);
|
||||
elm_entry_editable_set(mime, EINA_FALSE);
|
||||
|
@ -1383,6 +1398,54 @@ edi_editor_reload(Edi_Editor *editor)
|
|||
ecore_thread_main_loop_end();
|
||||
}
|
||||
|
||||
Evas_Object *
|
||||
edi_editor_image_add(Evas_Object *parent, Edi_Mainview_Item *item)
|
||||
{
|
||||
Evas_Object *vbox, *box, *searchbar, *statusbar, *scroll, *img;
|
||||
Edi_Editor *editor;
|
||||
|
||||
vbox = elm_box_add(parent);
|
||||
evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(vbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
evas_object_show(vbox);
|
||||
|
||||
searchbar = elm_box_add(vbox);
|
||||
evas_object_size_hint_weight_set(searchbar, EVAS_HINT_EXPAND, 0.0);
|
||||
evas_object_size_hint_align_set(searchbar, EVAS_HINT_FILL, 0.0);
|
||||
elm_box_pack_end(vbox, searchbar);
|
||||
|
||||
box = elm_box_add(vbox);
|
||||
elm_box_horizontal_set(box, EINA_TRUE);
|
||||
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_box_pack_end(vbox, box);
|
||||
evas_object_show(box);
|
||||
|
||||
statusbar = elm_box_add(vbox);
|
||||
evas_object_size_hint_weight_set(statusbar, EVAS_HINT_EXPAND, 0.0);
|
||||
evas_object_size_hint_align_set(statusbar, EVAS_HINT_FILL, 0.0);
|
||||
elm_box_pack_end(vbox, statusbar);
|
||||
evas_object_show(statusbar);
|
||||
|
||||
scroll = elm_scroller_add(parent);
|
||||
evas_object_size_hint_weight_set(scroll, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(scroll, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
evas_object_show(scroll);
|
||||
img = elm_image_add(vbox);
|
||||
elm_image_file_set(img, item->path, NULL);
|
||||
elm_image_no_scale_set(img, EINA_TRUE);
|
||||
elm_object_content_set(scroll, img);
|
||||
evas_object_show(img);
|
||||
|
||||
elm_box_pack_end(box, scroll);
|
||||
editor = calloc(1, sizeof(*editor));
|
||||
editor->mimetype = item->mimetype;
|
||||
|
||||
_edi_editor_statusbar_add(statusbar, editor, item);
|
||||
|
||||
return vbox;
|
||||
}
|
||||
|
||||
Evas_Object *
|
||||
edi_editor_add(Evas_Object *parent, Edi_Mainview_Item *item)
|
||||
{
|
||||
|
|
|
@ -89,6 +89,17 @@ struct _Edi_Editor
|
|||
*/
|
||||
Evas_Object *edi_editor_add(Evas_Object *parent, Edi_Mainview_Item *item);
|
||||
|
||||
/**
|
||||
* Initialise a new image canvas and add it to the parent panel.
|
||||
*
|
||||
* @param parent The panel into which the image panel will be loaded.
|
||||
* @param item The item describing the image file to be loaded in the canvas.
|
||||
* @return the created evas object that contains the image.
|
||||
*
|
||||
* @ingroup Editor
|
||||
*/
|
||||
Evas_Object *edi_editor_image_add(Evas_Object *parent, Edi_Mainview_Item *item);
|
||||
|
||||
/**
|
||||
* Reload existing editor's content from disk.
|
||||
*
|
||||
|
|
|
@ -14,6 +14,12 @@ edi_editor_add(Evas_Object *parent EINA_UNUSED, Edi_Mainview_Item *item EINA_UNU
|
|||
return NULL;
|
||||
}
|
||||
|
||||
EAPI Evas_Object *
|
||||
edi_editor_image_add(Evas_Object *parent EINA_UNUSED, Edi_Mainview_Item *item EINA_UNUSED)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Edi_Config *_edi_config = NULL;
|
||||
Edi_Project_Config *_edi_project_config = NULL;
|
||||
int EDI_EVENT_CONFIG_CHANGED;
|
||||
|
|
Loading…
Reference in New Issue