/*
Ниже представлена функция, при запуске которой открывается окно,
в котором отображается текстовый файл, имя которого должно быть
задано в качестве параметра функции.
Все работает, но есть небольшая неприятность - при попытке открыть
текст с кириллицей (в utf8), в консоль выбрасываются сообщения типа
(myprogram:3513): Gtk-CRITICAL **: file gtktextbuffer.c: line 543 (gtk_text_buffer_emit_insert): assertion `g_utf8_validate (text, len, NULL)' failed
Быть может кто-нибудь знает, как это лечится?
ps локаль - utf8
*/
void FViewer(char *file_path){
GtkWidget *wnd, *scrolled_window;
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
wnd = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (wnd), 800, 600);
gtk_window_set_position(GTK_WINDOW (wnd), GTK_WIN_POS_CENTER);
gtk_window_set_title (GTK_WINDOW (wnd), "File viewer");
int workfile = -1;
GtkTextBuffer *buffer;
GtkWidget *text_view = gtk_text_view_new ();
gtk_text_view_set_editable(GTK_TEXT_VIEW(text_view), FALSE); //нельзя редактировать
gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(text_view), FALSE); //нет курсора
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view)); //вытаскием буфер
int rval;
void *cbuffer = calloc(512,sizeof(char));
GtkTextIter iter; // Итератор текстового буфера
/* Открываем файл. */
workfile = open (file_path, O_RDONLY);
if(workfile == -1){
g_print ("Error open %s\n", file_path);
}else{
gtk_text_buffer_get_start_iter (buffer, &iter); //Устанавливаем итератор на начало текста
while ((rval = read(workfile, cbuffer, 512)) != 0){ // Читаем из файла пишем в буфер
gtk_text_buffer_insert (buffer, &iter, cbuffer, -1);
}
free (cbuffer);
gtk_container_add (GTK_CONTAINER (scrolled_window), text_view);
gtk_container_add (GTK_CONTAINER (wnd), scrolled_window);
gtk_widget_show_all (wnd);
}
}
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум вопрос по программированию gtk+ (2003)
- Форум Показ текста при нажатии на кнопку GTK+, c (2017)
- Форум GTK+ / как изменить атрибуты текстовых элементов GtkListStore? (2004)
- Форум Как сделать меню 3-его уровня используя библиотеку Gtk+ (2014)
- Форум Вывод значение в многоколлоный список (GTK) (2008)
- Форум Проблема при использовании GTK+ под Windows (2018)
- Форум GTK приложение падает из-за вызова gtk_widget_destroy (2008)
- Форум GTK потоки и вообще (2012)
- Форум размер окон в gtk3 (2018)
- Форум C/C++, помогите разобраться с утечками (2016)