Exemple #1
0
EAPI Elm_Code_File *elm_code_file_open(Elm_Code *code, const char *path)
{
   Elm_Code_File *ret;
   Eina_File *file;
   Eina_File_Line *line;
   Eina_Iterator *it;
   unsigned int lastindex;

   ret = elm_code_file_new(code);
   file = eina_file_open(path, EINA_FALSE);
   ret->file = file;
   ret->mime = efreet_mime_type_get(path);
   lastindex = 1;

   ret->map = eina_file_map_all(file, EINA_FILE_POPULATE);
   it = eina_file_map_lines(file);
   EINA_ITERATOR_FOREACH(it, line)
     {
        Elm_Code_Line *ecl;

        if (lastindex == 1)
          ret->line_ending = _elm_code_line_ending_get(line->start + line->length);

        /* Working around the issue that eina_file_map_lines does not trigger an item for empty lines */
        /* This was fixed in 1.13.99 so once we depend on 1.14 minimum this can go */
        while (lastindex < line->index - 1)
          {
             ecl = _elm_code_file_line_blank_create(ret, ++lastindex, NULL);
             if (!ecl) continue;

             ret->lines = eina_list_append(ret->lines, ecl);
          }

        _elm_code_file_line_insert_data(ret, line->start, line->length, lastindex = line->index, EINA_TRUE, NULL);
     }
Exemple #2
0
END_TEST

START_TEST (elm_code_test_widget_undo_delete_multiple)
{
   Elm_Code *code;
   Elm_Code_File *file;
   Elm_Code_Line *line;
   Elm_Code_Widget *widget;
   Evas_Object *win;
   unsigned int length;
   const char *content;

   elm_init(1, NULL);
   code = elm_code_create();
   file = elm_code_file_new(code);
   elm_code_file_line_append(file, "test", 4, NULL);

   win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
   widget = elm_code_widget_add(win, code);

   elm_code_widget_cursor_position_set(widget, 1, 4);
   _elm_code_widget_backspace(widget);
   _elm_code_widget_backspace(widget);

   line = elm_code_file_line_get(file, 1);
   content = elm_code_line_text_get(line, &length);
   ck_assert_strn_eq("tt", content, length);

   elm_code_widget_undo(widget);
   content = elm_code_line_text_get(line, &length);
   ck_assert_strn_eq("tet", content, length);

   elm_code_widget_undo(widget);
   content = elm_code_line_text_get(line, &length);
   ck_assert_strn_eq("test", content, length);

   elm_code_free(code);
   elm_shutdown();
}