# Checks for GIO2
PKG_CHECK_MODULES(GIO, gio-2.0 >= 2.16, have_gio=true, have_gio=false)
-if test "x${have_gio}" = "xfalse" ; then
- AC_MSG_ERROR([No GIO2 package information found])
-fi
AC_SUBST(GIO_CFLAGS)
AC_SUBST(GIO_LIBS)
AC_SUBST(GTK_CFLAGS)
AC_SUBST(GTK_LIBS)
-# Checks for WebKit
-PKG_CHECK_MODULES(WEBKIT, webkit-1.0, have_webkit=true, have_webkit=false)
-if test "x${have_webkit}" = "xfalse" ; then
- AC_MSG_ERROR([No WebKit package information found])
-fi
-AC_SUBST(WEBKIT_CFLAGS)
-AC_SUBST(WEBKIT_LIBS)
-
# Checks for libsexy
PKG_CHECK_MODULES(LIBSEXY, libsexy, have_libsexy=true, have_libsexy=false)
if test "x${have_libsexy}" = "xfalse" ; then
AC_SUBST(LIBSEXY_CFLAGS)
AC_SUBST(LIBSEXY_LIBS)
+# Checks for gtksourceview
+PKG_CHECK_MODULES(GTKSOURCEVIEW, gtksourceview, have_gtksourceview=true, have_gtksourceview=false)
+AC_SUBST(GTKSOURCEVIEW_CFLAGS)
+AC_SUBST(GTKSOURCEVIEW_LIBS)
+
+# Checks for WebKit
+PKG_CHECK_MODULES(WEBKIT, webkit-1.0, have_webkit=true, have_webkit=false)
+if test "x${have_webkit}" = "xfalse" ; then
+ AC_MSG_ERROR([No WebKit package information found])
+fi
+AC_SUBST(WEBKIT_CFLAGS)
+AC_SUBST(WEBKIT_LIBS)
+
# Checks for LibXML2
PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.6, have_libxml=true, have_libxml=false)
if test "x${have_libxml}" = "xfalse" ; then
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include <libsexy/sexy.h>
+#if HAVE_GTKSOURCEVIEW
+#include <gtksourceview/gtksourceview.h>
+#include <gtksourceview/gtksourcelanguagemanager.h>
+#endif
#include <string.h>
struct _MidoriBrowser
#if GLIB_CHECK_VERSION (2, 16, 0)
GFile* file;
gchar* tag;
+ #ifdef HAVE_GTKSOURCEVIEW
+ GFileInfo* info;
+ const gchar* content_type;
+ #endif
#endif
gchar* contents;
gchar* contents_utf8;
+ #ifdef HAVE_GTKSOURCEVIEW
+ GtkSourceBuffer* buffer;
+ #if GLIB_CHECK_VERSION (2, 16, 0)
+ GtkSourceLanguageManager* language_manager;
+ GtkSourceLanguage* language;
+ #endif
+ #else
GtkTextBuffer* buffer;
+ #endif
GtkWidget* text_view;
gint n;
file = g_file_new_for_uri (uri);
contents = NULL;
g_file_load_contents (file, NULL, &contents, NULL, &tag, NULL);
+ #ifdef HAVE_GTKSOURCEVIEW
+ info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+ G_FILE_QUERY_INFO_NONE, NULL, NULL);
+ content_type = info ? g_file_info_get_content_type (info) : NULL;
+ #endif
g_object_unref (file);
if (contents && !g_utf8_validate (contents, -1, NULL))
{
#endif
contents_utf8 = contents;
+ #ifdef HAVE_GTKSOURCEVIEW
+ buffer = gtk_source_buffer_new (NULL);
+ gtk_source_buffer_set_highlight_syntax (buffer, TRUE);
+ if (content_type)
+ {
+ language_manager = gtk_source_language_manager_get_default ();
+ if (!strcmp (content_type, "text/html"))
+ {
+ language = gtk_source_language_manager_get_language (
+ language_manager, "html");
+ gtk_source_buffer_set_language (buffer, language);
+ }
+ else if (!strcmp (content_type, "text/css"))
+ {
+ language = gtk_source_language_manager_get_language (
+ language_manager, "css");
+ gtk_source_buffer_set_language (buffer, language);
+ }
+ else if (!strcmp (content_type, "text/javascript"))
+ {
+ language = gtk_source_language_manager_get_language (
+ language_manager, "js");
+ gtk_source_buffer_set_language (buffer, language);
+ }
+ }
+ #else
buffer = gtk_text_buffer_new (NULL);
+ #endif
if (contents_utf8)
- gtk_text_buffer_set_text (buffer, contents_utf8, -1);
+ gtk_text_buffer_set_text (GTK_TEXT_BUFFER (buffer), contents_utf8, -1);
+ #ifdef HAVE_GTKSOURCEVIEW
+ text_view = gtk_source_view_new_with_buffer (buffer);
+ gtk_source_view_set_show_line_numbers (GTK_SOURCE_VIEW (text_view), TRUE);
+ #else
text_view = gtk_text_view_new_with_buffer (buffer);
+ #endif
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
g_object_set_data (G_OBJECT (text_view), "browser-tab-uri",
g_strconcat ("view-source:", uri, NULL));
conf.check_pkg ('gio-2.0', destvar='GIO', vnum='2.16.0', mandatory=False)
conf.check_pkg ('gtk+-2.0', destvar='GTK', vnum='2.6.0', mandatory=True)
+ conf.check_pkg ('libsexy', destvar='LIBSEXY', vnum='0.1', mandatory=True)
+ conf.check_pkg ('gtksourceview-2.0', destvar='GTKSOURCEVIEW', vnum='2.0', mandatory=False)
conf.check_pkg ('webkit-1.0', destvar='WEBKIT', vnum='0.1', mandatory=True)
conf.check_pkg ('libxml-2.0', destvar='LIBXML', vnum='2.6', mandatory=True)
- conf.check_pkg ('libsexy', destvar='LIBSEXY', vnum='0.1', mandatory=True)
conf.check_header ('unistd.h', 'HAVE_UNISTD_H')