[Extractor-gtk-cvslog] SF.net SVN: extractor-gtk:[102] trunk/extractor/gtkstuff.c
Extract files from unusual archive formats
Brought to you by:
someone-guy
From: <som...@us...> - 2008-08-22 16:10:21
|
Revision: 102 http://extractor-gtk.svn.sourceforge.net/extractor-gtk/?rev=102&view=rev Author: someone-guy Date: 2008-08-22 16:10:18 +0000 (Fri, 22 Aug 2008) Log Message: ----------- Add a text preview Modified Paths: -------------- trunk/extractor/gtkstuff.c Modified: trunk/extractor/gtkstuff.c =================================================================== --- trunk/extractor/gtkstuff.c 2008-08-22 16:10:00 UTC (rev 101) +++ trunk/extractor/gtkstuff.c 2008-08-22 16:10:18 UTC (rev 102) @@ -150,6 +150,7 @@ } #define MAX_IMG_SZ (100*1024*1024) +#define MAX_TXT_SZ (100*1024) /** * Called when user double-clicks on a archive content @@ -176,11 +177,25 @@ if (size > MAX_IMG_SZ || size < 0) size = MAX_IMG_SZ; pbl = gdk_pixbuf_loader_new(); gdk_pixbuf_loader_write(pbl, tmpdata, size, NULL); - free(tmpdata); gdk_pixbuf_loader_close(pbl, NULL); pb = gdk_pixbuf_loader_get_pixbuf(pbl); - img = gtk_image_new_from_pixbuf(pb); + if (pb) + img = gtk_image_new_from_pixbuf(pb); + else { + const gchar *bad; + gchar *txt = (gchar *)tmpdata; + GtkTextBuffer *tb = gtk_text_buffer_new(NULL); + if (size > MAX_TXT_SZ) size = MAX_TXT_SZ; + while (!g_utf8_validate(txt, size, &bad)) + txt[bad - txt] = '?'; + gtk_text_buffer_set_text(tb, txt, size); + img = gtk_text_view_new_with_buffer(tb); + gtk_text_view_set_editable(GTK_TEXT_VIEW(img), FALSE); + gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(img), TRUE); + gtk_widget_set_size_request(img, 600, 400); + } g_object_unref(pbl); + free(tmpdata); gtk_container_add(GTK_CONTAINER(preview_win), img); gtk_widget_show(img); gtk_window_present(GTK_WINDOW(preview_win)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |