[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.
|