gedit r6727 - in trunk: . gedit gedit/dialogs gedit/smclient plugin-loaders/python/bindings win32



Author: pborelli
Date: Thu Dec 25 21:02:48 2008
New Revision: 6727
URL: http://svn.gnome.org/viewvc/gedit?rev=6727&view=rev

Log:
merge win32 branch containing the fixes needed to compile and run on windows and the windows installer


Added:
   trunk/gedit/gedit-dirs.c
      - copied unchanged from r6726, /branches/win32/gedit/gedit-dirs.c
   trunk/gedit/gedit-dirs.h
      - copied unchanged from r6726, /branches/win32/gedit/gedit-dirs.h
   trunk/win32/   (props changed)
      - copied from r6726, /branches/win32/win32/
Modified:
   trunk/   (props changed)
   trunk/ChangeLog
   trunk/Makefile.am
   trunk/configure.ac
   trunk/gedit/Makefile.am
   trunk/gedit/dialogs/gedit-encodings-dialog.c
   trunk/gedit/dialogs/gedit-open-location-dialog.c
   trunk/gedit/dialogs/gedit-preferences-dialog.c
   trunk/gedit/dialogs/gedit-search-dialog.c
   trunk/gedit/dialogs/gedit-style-scheme-dialog.c
   trunk/gedit/gedit-app.c
   trunk/gedit/gedit-commands-help.c
   trunk/gedit/gedit-document-loader.c
   trunk/gedit/gedit-document-saver.c
   trunk/gedit/gedit-document.c
   trunk/gedit/gedit-document.h
   trunk/gedit/gedit-language-manager.c
   trunk/gedit/gedit-language-manager.h
   trunk/gedit/gedit-metadata-manager.c
   trunk/gedit/gedit-plugins-engine.c
   trunk/gedit/gedit-plugins-engine.h
   trunk/gedit/gedit-prefs-manager-app.c
   trunk/gedit/gedit-prefs-manager.c
   trunk/gedit/gedit-prefs-manager.h
   trunk/gedit/gedit-print-job.c
   trunk/gedit/gedit-style-scheme-manager.c
   trunk/gedit/gedit-tab.c
   trunk/gedit/gedit-utils.c
   trunk/gedit/gedit-utils.h
   trunk/gedit/gedit-window.c
   trunk/gedit/gedit.c
   trunk/gedit/smclient/eggdesktopfile.c
   trunk/plugin-loaders/python/bindings/gedit.defs

Modified: trunk/Makefile.am
==============================================================================
--- trunk/Makefile.am	(original)
+++ trunk/Makefile.am	Thu Dec 25 21:02:48 2008
@@ -1,7 +1,7 @@
 ## Process this file with automake to produce Makefile.in
 ACLOCAL_AMFLAGS = -I m4
 
-SUBDIRS = plugin-loaders gedit pixmaps po help data plugins docs
+SUBDIRS = plugin-loaders gedit pixmaps po help data plugins docs win32
 
 distuninstallcheck_listfiles = find . -type f -print | grep -v scrollkeeper
 

Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac	(original)
+++ trunk/configure.ac	Thu Dec 25 21:02:48 2008
@@ -205,7 +205,8 @@
 AC_SUBST(GEDIT_LIBS)
 AC_SUBST(GEDIT_CFLAGS)
 
-if test "$platform_osx" = "no"; then
+if test "$platform_osx" = "no" &&
+   test "$platform_win32" = no; then
 	PKG_CHECK_MODULES(EGG_SMCLIENT, [
 		sm >= 1.0.0
 	])
@@ -365,15 +366,15 @@
 # so we create a lib
 if test "$platform_win32" = yes; then
 	GEDIT_IMPLIB="-lgedit-$GEDIT_API_VERSION"
-	PLUGIN_LIBTOOL_FLAGS="-module -avoid-version -no-undefined -Wl,\$(top_builddir)/gedit/libgedit-\$(GEDIT_API_VERSION).a"
+	PLUGIN_LIBTOOL_FLAGS="-module -avoid-version -no-undefined -mwindows -Wl,\$(top_builddir)/gedit/libgedit-\$(GEDIT_API_VERSION).a"
+	LOADER_LIBTOOL_FLAGS="-module -avoid-version -no-undefined -mwindows -Wl,\$(top_builddir)/gedit/libgedit-\$(GEDIT_API_VERSION).a"
 else
 	GEDIT_IMPLIB=""
 	PLUGIN_LIBTOOL_FLAGS="-module -avoid-version"
+	LOADER_LIBTOOL_FLAGS="-module -avoid-version"
 fi
 AC_SUBST(GEDIT_IMPLIB)
 AC_SUBST(PLUGIN_LIBTOOL_FLAGS)
-
-LOADER_LIBTOOL_FLAGS="-module -avoid-version"
 AC_SUBST(LOADER_LIBTOOL_FLAGS)
 
 AC_CONFIG_FILES([
@@ -416,7 +417,9 @@
 plugins/spell/Makefile
 plugins/taglist/Makefile
 plugins/time/Makefile
-po/Makefile.in])
+po/Makefile.in
+win32/gedit.iss
+win32/Makefile])
 
 AC_OUTPUT
 

Modified: trunk/gedit/Makefile.am
==============================================================================
--- trunk/gedit/Makefile.am	(original)
+++ trunk/gedit/Makefile.am	Thu Dec 25 21:02:48 2008
@@ -13,12 +13,7 @@
 	$(WARN_CFLAGS)							\
 	$(DISABLE_DEPRECATED_CFLAGS)					\
 	-DDATADIR=\""$(datadir)"\"					\
-	-DGEDIT_DATADIR=\""$(datadir)/gedit-2"\"			\
-	-DGEDIT_LOCALEDIR=\""$(prefix)/$(DATADIRNAME)/locale"\"		\
-	-DGEDIT_UIDIR=\""$(datadir)/gedit-2/ui/"\"			\
-	-DGEDIT_PLUGINDIR=\""$(libdir)/gedit-2/plugins"\"		\
-	-DGEDIT_LOADERDIR=\""$(libdir)/gedit-2/plugin-loaders"\"	\
-	-DGEDIT_ICONDIR=\""$(datadir)/gedit-2/icons"\"
+	-DLIBDIR=\""$(libdir)"\"					
 
 gedit_SOURCES = \
 	gedit.c
@@ -26,7 +21,7 @@
 gedit_LDADD = libgedit.la $(GEDIT_LIBS) $(EGG_SMCLIENT_LIBS)
  
 if PLATFORM_WIN32
-gedit_LDFLAGS = -Wl,--export-all-symbols -Wl,--out-implib,libgedit-$(GEDIT_API_VERSION).a
+gedit_LDFLAGS = -Wl,--export-all-symbols -mwindows -Wl,--out-implib,libgedit-$(GEDIT_API_VERSION).a
 else
 gedit_LDFLAGS = -export-dynamic -no-undefined -export-symbols-regex "^[[^_]].*"
 endif
@@ -76,7 +71,8 @@
 	gedit-prefs-manager-private.h	\
 	sexy-icon-entry.h		\
 	gedittextregion.h		\
-	gedit-session.h
+	gedit-session.h			\
+	gedit-dirs.h
 
 INST_H_FILES =				\
 	gedit-app.h			\
@@ -107,9 +103,19 @@
 header_DATA = 				\
 	$(INST_H_FILES)	
 
+if !PLATFORM_WIN32
+POSIXIO_FILES = 			\
+	gedit-mmap-document-loader.c	\
+	gedit-local-document-saver.c	
+else
+POSIXIO_FILES =
+endif
+
+
 libgedit_la_SOURCES = 			\
 	$(BUILT_SOURCES)		\
 	$(BACON_FILES)			\
+	$(POSIXIO_FILES)		\
 	gedit-app.c			\
 	gedit-commands-documents.c	\
 	gedit-commands-edit.c		\
@@ -120,12 +126,11 @@
 	gedit-commands-view.c		\
 	gedit-convert.c			\
 	gedit-debug.c			\
+	gedit-dirs.c			\
 	gedit-document.c 		\
 	gedit-document-loader.c		\
-	gedit-mmap-document-loader.c	\
 	gedit-gio-document-loader.c	\
 	gedit-document-saver.c		\
-	gedit-local-document-saver.c	\
 	gedit-gio-document-saver.c	\
 	gedit-documents-panel.c		\
 	gedit-encodings.c		\
@@ -194,15 +199,20 @@
 	cd $(distdir); rm -f $(BUILT_SOURCES)
 
 install-exec-hook:
-	rm -f $(DESTDIR)$(bindir)/gnome-text-editor
-	ln -s gedit $(DESTDIR)$(bindir)/gnome-text-editor
 if PLATFORM_WIN32
 	$(mkinstalldirs) "$(DESTDIR)$(libdir)"
 	$(INSTALL_DATA) libgedit-$(GEDIT_API_VERSION).a "$(DESTDIR)$(libdir)"
+else
+	rm -f $(DESTDIR)$(bindir)/gnome-text-editor
+	ln -s gedit $(DESTDIR)$(bindir)/gnome-text-editor
 endif
 
+if !PLATFORM_WIN32
 BACON_DIR=$(srcdir)/../../libbacon/src/
 BACON_FILES=bacon-message-connection.h bacon-message-connection.c
 
 regenerate-built-sources:
 	BACONFILES="$(BACON_FILES)" BACONDIR="$(BACON_DIR)" $(top_srcdir)/gedit/update-from-bacon.sh
+else
+BACON_DIR=
+endif

Modified: trunk/gedit/dialogs/gedit-encodings-dialog.c
==============================================================================
--- trunk/gedit/dialogs/gedit-encodings-dialog.c	(original)
+++ trunk/gedit/dialogs/gedit-encodings-dialog.c	Thu Dec 25 21:02:48 2008
@@ -44,6 +44,7 @@
 #include "gedit-utils.h"
 #include "gedit-debug.h"
 #include "gedit-help.h"
+#include "gedit-dirs.h"
 
 #define GEDIT_ENCODINGS_DIALOG_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), \
 						   GEDIT_TYPE_ENCODINGS_DIALOG,           \
@@ -300,6 +301,7 @@
 	GtkWidget *error_widget;
 	int i;
 	gboolean ret;
+	gchar *file;
 	gchar *root_objects[] = {
 		"encodings-dialog-contents",
 		NULL
@@ -334,7 +336,8 @@
 			  G_CALLBACK (response_handler),
 			  dlg);
 
-	ret = gedit_utils_get_ui_objects (GEDIT_UIDIR "gedit-encodings-dialog.ui",
+	file = gedit_dirs_get_ui_file ("gedit-encodings-dialog.ui");
+	ret = gedit_utils_get_ui_objects (file,
 					  root_objects,
 					  &error_widget,
 					  "encodings-dialog-contents", &content,
@@ -343,6 +346,7 @@
 					  "available-treeview", &dlg->priv->available_treeview,
 					  "displayed-treeview", &dlg->priv->displayed_treeview,
 					  NULL);
+	g_free (file);
 
 	if (!ret)
 	{

Modified: trunk/gedit/dialogs/gedit-open-location-dialog.c
==============================================================================
--- trunk/gedit/dialogs/gedit-open-location-dialog.c	(original)
+++ trunk/gedit/dialogs/gedit-open-location-dialog.c	Thu Dec 25 21:02:48 2008
@@ -41,6 +41,7 @@
 #include "gedit-encodings-option-menu.h"
 #include "gedit-utils.h"
 #include "gedit-help.h"
+#include "gedit-dirs.h"
 
 #define GEDIT_OPEN_LOCATION_DIALOG_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), \
 							GEDIT_TYPE_OPEN_LOCATION_DIALOG, \
@@ -117,6 +118,7 @@
 	GtkWidget *encoding_hbox;
 	GtkWidget *error_widget;
 	gboolean   ret;
+	gchar *file;
 	gchar     *root_objects[] = {
 		"open_uri_dialog_content",
 		NULL
@@ -154,7 +156,8 @@
 			  G_CALLBACK (response_handler),
 			  NULL);
 
-	ret = gedit_utils_get_ui_objects (GEDIT_UIDIR "gedit-open-location-dialog.ui",
+	file = gedit_dirs_get_ui_file ("gedit-open-location-dialog.ui");
+	ret = gedit_utils_get_ui_objects (file,
 					  root_objects,
 					  &error_widget,
 					  "open_uri_dialog_content", &content,
@@ -163,6 +166,7 @@
 					  "encoding_label", &encoding_label,
 					  "encoding_hbox", &encoding_hbox,
 					   NULL);
+	g_free (file);
 
 	if (!ret)
 	{

Modified: trunk/gedit/dialogs/gedit-preferences-dialog.c
==============================================================================
--- trunk/gedit/dialogs/gedit-preferences-dialog.c	(original)
+++ trunk/gedit/dialogs/gedit-preferences-dialog.c	Thu Dec 25 21:02:48 2008
@@ -48,6 +48,7 @@
 #include "gedit-style-scheme-manager.h"
 #include "gedit-plugin-manager.h"
 #include "gedit-help.h"
+#include "gedit-dirs.h"
 
 /*
  * gedit-preferences dialog is a singleton since we don't
@@ -1062,6 +1063,7 @@
 {
 	GtkWidget *error_widget;
 	gboolean ret;
+	gchar *file;
 	gchar *root_objects[] = {
 		"notebook",
 		"adjustment1",
@@ -1097,7 +1099,8 @@
 			  G_CALLBACK (dialog_response_handler),
 			  NULL);
 	
-	ret = gedit_utils_get_ui_objects (GEDIT_UIDIR "gedit-preferences-dialog.ui",
+	file = gedit_dirs_get_ui_file ("gedit-preferences-dialog.ui");
+	ret = gedit_utils_get_ui_objects (file,
 		root_objects,
 		&error_widget,
 
@@ -1135,6 +1138,7 @@
 		"plugin_manager_place_holder", &dlg->priv->plugin_manager_place_holder,
 
 		NULL);
+	g_free (file);
 
 	if (!ret)
 	{

Modified: trunk/gedit/dialogs/gedit-search-dialog.c
==============================================================================
--- trunk/gedit/dialogs/gedit-search-dialog.c	(original)
+++ trunk/gedit/dialogs/gedit-search-dialog.c	Thu Dec 25 21:02:48 2008
@@ -40,6 +40,7 @@
 #include "gedit-history-entry.h"
 #include "gedit-utils.h"
 #include "gedit-marshal.h"
+#include "gedit-dirs.h"
 
 #define GEDIT_SEARCH_DIALOG_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), \
 						GEDIT_TYPE_SEARCH_DIALOG,              \
@@ -321,6 +322,7 @@
 	GtkWidget *content;
 	GtkWidget *error_widget;
 	gboolean ret;
+	gchar *file;
 	gchar *root_objects[] = {
 		"search_dialog_content",
 		NULL
@@ -342,7 +344,8 @@
 	gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dlg)->action_area), 5);
 	gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dlg)->action_area), 6);
 
-	ret = gedit_utils_get_ui_objects (GEDIT_UIDIR "gedit-search-dialog.ui",
+	file = gedit_dirs_get_ui_file ("gedit-search-dialog.ui");
+	ret = gedit_utils_get_ui_objects (file,
 					  root_objects,
 					  &error_widget,
 					  "search_dialog_content", &content,
@@ -354,6 +357,7 @@
 					  "search_backwards_checkbutton", &dlg->priv->backwards_checkbutton,
 					  "wrap_around_checkbutton", &dlg->priv->wrap_around_checkbutton,
 					  NULL);
+	g_free (file);
 
 	if (!ret)
 	{

Modified: trunk/gedit/dialogs/gedit-style-scheme-dialog.c
==============================================================================
--- trunk/gedit/dialogs/gedit-style-scheme-dialog.c	(original)
+++ trunk/gedit/dialogs/gedit-style-scheme-dialog.c	Thu Dec 25 21:02:48 2008
@@ -39,6 +39,7 @@
 #include "gedit-utils.h"
 #include "gedit-debug.h"
 #include "gedit-help.h"
+#include "gedit-dirs.h"
 
 #define GEDIT_STYLE_SCHEME_DIALOG_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), \
 						      GEDIT_TYPE_STYLE_SCHEME_DIALOG, \
@@ -121,6 +122,7 @@
 	GtkWidget *error_widget;
 	GtkWidget *main_vbox;
 	gboolean ret;
+	gchar *file;
 	gchar *root_objects[] = {
 		"contents",
 		NULL
@@ -147,7 +149,8 @@
 			  G_CALLBACK (dialog_response_handler),
 			  NULL);
 
-	ret = gedit_utils_get_ui_objects (GEDIT_UIDIR "gedit-style-scheme-dialog.ui",
+	file = gedit_dirs_get_ui_file ("gedit-style-scheme-dialog.ui");
+	ret = gedit_utils_get_ui_objects (file,
 		root_objects,
 		&error_widget,
 		
@@ -174,6 +177,7 @@
 		"search_hl_colorbutton", &dlg->priv->search_hl_colorbutton,
 
 		NULL);
+	g_free (file);
 
 	if (!ret)
 	{

Modified: trunk/gedit/gedit-app.c
==============================================================================
--- trunk/gedit/gedit-app.c	(original)
+++ trunk/gedit/gedit-app.c	Thu Dec 25 21:02:48 2008
@@ -44,6 +44,7 @@
 #include "gedit-debug.h"
 #include "gedit-utils.h"
 #include "gedit-enum-types.h"
+#include "gedit-dirs.h"
 
 
 #define GEDIT_PAGE_SETUP_FILE		"gedit-page-setup"
@@ -126,31 +127,12 @@
 	g_type_class_add_private (object_class, sizeof(GeditAppPrivate));
 }
 
-static gchar *
-get_accel_file (void)
-{
-	const gchar *home;
-
-	home = g_get_home_dir();
-
-	if (home != NULL)
-	{
-		return g_build_filename (home,
-					 ".gnome2",
-					 "accels"
-					 "gedit",
-					 NULL);
-	}
-
-	return NULL;
-}
-
 static void
 load_accels (void)
 {
 	gchar *filename;
 
-	filename = get_accel_file ();
+	filename = gedit_dirs_get_user_accels_file ();
 	if (filename != NULL)
 	{
 		gedit_debug_message (DEBUG_APP, "Loading keybindings from %s\n", filename);		
@@ -164,7 +146,7 @@
 {
 	gchar *filename;
 
-	filename = get_accel_file ();
+	filename = gedit_dirs_get_user_accels_file ();
 	if (filename != NULL)
 	{
 		gedit_debug_message (DEBUG_APP, "Saving keybindings in %s\n", filename);		
@@ -176,19 +158,20 @@
 static gchar *
 get_page_setup_file (void)
 {
-	const gchar *home;
+	gchar *config_dir;
+	gchar *setup = NULL;
 
-	home = g_get_home_dir ();
-	if (home != NULL)
+	config_dir = gedit_dirs_get_user_config_dir ();
+	
+	if (config_dir != NULL)
 	{
-		return g_build_filename (home,
-					 ".gnome2",
-					 "gedit",
-					 GEDIT_PAGE_SETUP_FILE,
-					 NULL);
+		setup = g_build_filename (config_dir,
+					  GEDIT_PAGE_SETUP_FILE,
+					  NULL);
+		g_free (config_dir);
 	}
 
-	return NULL;
+	return setup;
 }
 
 static void
@@ -248,19 +231,20 @@
 static gchar *
 get_print_settings_file (void)
 {
-	const gchar *home;
+	gchar *config_dir;
+	gchar *settings = NULL;
 
-	home = g_get_home_dir ();
-	if (home != NULL)
+	config_dir = gedit_dirs_get_user_config_dir ();
+
+	if (config_dir != NULL)
 	{
-		return g_build_filename (home,
-					 ".gnome2",
-					 "gedit",
-					 GEDIT_PRINT_SETTINGS_FILE,
-					 NULL);
+		settings = g_build_filename (config_dir,
+					     GEDIT_PRINT_SETTINGS_FILE,
+					     NULL);
+		g_free (config_dir);
 	}
 
-	return NULL;
+	return settings;
 }
 
 static void
@@ -436,16 +420,14 @@
 static gchar *
 gen_role (void)
 {
-	time_t t;
+	GTimeVal result;
 	static gint serial;
+	
+	g_get_current_time (&result);
 
-	t = time (NULL);
-
-	return g_strdup_printf ("gedit-window-%d-%d-%d-%ld-%d %s",
-				getpid (),
-				getgid (),
-				getppid (),
-				(long) t,
+	return g_strdup_printf ("gedit-window-%ld-%ld-%d-%s",
+				result.tv_sec,
+				result.tv_usec,
 				serial++,
 				g_get_host_name ());
 }

Modified: trunk/gedit/gedit-commands-help.c
==============================================================================
--- trunk/gedit/gedit-commands-help.c	(original)
+++ trunk/gedit/gedit-commands-help.c	Thu Dec 25 21:02:48 2008
@@ -40,6 +40,7 @@
 #include "gedit-commands.h"
 #include "gedit-debug.h"
 #include "gedit-help.h"
+#include "gedit-dirs.h"
 
 void
 _gedit_cmd_help_contents (GtkAction   *action,
@@ -81,11 +82,19 @@
 		   "GNOME Desktop");
 
 	GdkPixbuf *logo;
+	gchar *data_dir;
+	gchar *logo_file;
 
 	gedit_debug (DEBUG_COMMANDS);
 
-	logo = gdk_pixbuf_new_from_file (GEDIT_DATADIR "/logo/gedit-logo.png",
-					 NULL);
+	data_dir = gedit_dirs_get_gedit_data_dir ();
+	logo_file = g_build_filename (data_dir,
+				      "logo",
+				      "gedit-logo.png",
+				      NULL);
+	g_free (data_dir);
+	logo = gdk_pixbuf_new_from_file (logo_file, NULL);
+	g_free (logo_file);
 
 	gtk_show_about_dialog (GTK_WINDOW (window),
 			       "program-name", "gedit",

Modified: trunk/gedit/gedit-document-loader.c
==============================================================================
--- trunk/gedit/gedit-document-loader.c	(original)
+++ trunk/gedit/gedit-document-loader.c	Thu Dec 25 21:02:48 2008
@@ -364,9 +364,11 @@
 
 	g_return_val_if_fail (GEDIT_IS_DOCUMENT (doc), NULL);
 
+#ifndef G_OS_WIN32
 	if (gedit_utils_uri_has_file_scheme (uri))
 		loader_type = GEDIT_TYPE_MMAP_DOCUMENT_LOADER;
 	else
+#endif
 		loader_type = GEDIT_TYPE_GIO_DOCUMENT_LOADER;
 
 	loader = GEDIT_DOCUMENT_LOADER (g_object_new (loader_type,

Modified: trunk/gedit/gedit-document-saver.c
==============================================================================
--- trunk/gedit/gedit-document-saver.c	(original)
+++ trunk/gedit/gedit-document-saver.c	Thu Dec 25 21:02:48 2008
@@ -218,9 +218,11 @@
 
 	g_return_val_if_fail (GEDIT_IS_DOCUMENT (doc), NULL);
 
+#ifndef G_OS_WIN32
 	if (gedit_utils_uri_has_file_scheme (uri))
 		saver_type = GEDIT_TYPE_LOCAL_DOCUMENT_SAVER;
 	else
+#endif
 		saver_type = GEDIT_TYPE_GIO_DOCUMENT_SAVER;
 
 	if (encoding == NULL)

Modified: trunk/gedit/gedit-document.c
==============================================================================
--- trunk/gedit/gedit-document.c	(original)
+++ trunk/gedit/gedit-document.c	Thu Dec 25 21:02:48 2008
@@ -109,7 +109,7 @@
 
 	const GeditEncoding *encoding;
 
-	gchar	    *mime_type;
+	gchar	    *content_type;
 
 	time_t       mtime;
 
@@ -143,6 +143,7 @@
 
 	PROP_URI,
 	PROP_SHORTNAME,
+	PROP_CONTENT_TYPE,
 	PROP_MIME_TYPE,
 	PROP_READ_ONLY,
 	PROP_ENCODING,
@@ -278,7 +279,7 @@
 	}
 
 	g_free (doc->priv->uri);
-	g_free (doc->priv->mime_type);
+	g_free (doc->priv->content_type);
 	g_free (doc->priv->search_text);
 
 	if (doc->priv->to_search_region != NULL)
@@ -306,8 +307,11 @@
 		case PROP_SHORTNAME:
 			g_value_take_string (value, gedit_document_get_short_name_for_display (doc));
 			break;
+		case PROP_CONTENT_TYPE:
+			g_value_take_string (value, gedit_document_get_content_type (doc));
+			break;
 		case PROP_MIME_TYPE:
-			g_value_set_string (value, doc->priv->mime_type);
+			g_value_take_string (value, gedit_document_get_mime_type (doc));
 			break;
 		case PROP_READ_ONLY:
 			g_value_set_boolean (value, doc->priv->readonly);
@@ -416,6 +420,14 @@
 							      G_PARAM_READABLE |
 							      G_PARAM_STATIC_STRINGS));
 
+	g_object_class_install_property (object_class, PROP_CONTENT_TYPE,
+					 g_param_spec_string ("content-type",
+							      "Content Type",
+							      "The document's Content Type",
+							      NULL,
+							      G_PARAM_READABLE |
+							      G_PARAM_STATIC_STRINGS));
+
 	g_object_class_install_property (object_class, PROP_MIME_TYPE,
 					 g_param_spec_string ("mime-type",
 							      "MIME Type",
@@ -689,7 +701,7 @@
 	doc->priv->uri = NULL;
 	doc->priv->untitled_number = get_untitled_number ();
 
-	doc->priv->mime_type = g_strdup ("text/plain");
+	doc->priv->content_type = g_content_type_from_mime_type ("text/plain");
 
 	doc->priv->readonly = FALSE;
 
@@ -739,12 +751,57 @@
 	return GEDIT_DOCUMENT (g_object_new (GEDIT_TYPE_DOCUMENT, NULL));
 }
 
-/* If mime type is null, we guess from the filename */
-/* If uri is null, we only set the mime-type */
+static GtkSourceLanguage *
+guess_language (const gchar *uri,
+		const gchar *content_type)
+
+{
+	gchar *data;
+	GtkSourceLanguage *language = NULL;
+
+	data = gedit_metadata_manager_get (uri, "language");
+
+	if (data != NULL)
+	{
+		gedit_debug_message (DEBUG_DOCUMENT, "Language from metadata: %s", data);
+
+		if (strcmp (data, "_NORMAL_") != 0)
+		{
+			language = gtk_source_language_manager_get_language (
+						gedit_get_language_manager (),
+						data);
+		}
+
+		g_free (data);
+	}
+	else
+	{
+		GFile *file;
+		gchar *basename;
+
+		gedit_debug_message (DEBUG_DOCUMENT, "Sniffing Language");
+
+		file = g_file_new_for_uri (uri);
+		basename = g_file_get_basename (file);
+
+		language = gtk_source_language_manager_guess_language (
+					gedit_get_language_manager (),
+					basename,
+					content_type);
+
+		g_free (basename);
+		g_object_unref (file);
+	}
+
+	return language;
+}
+
+/* If content type is null, we guess from the filename */
+/* If uri is null, we only set the content-type */
 static void
 set_uri (GeditDocument *doc,
 	 const gchar   *uri,
-	 const gchar   *mime_type)
+	 const gchar   *content_type)
 {
 	gedit_debug (DEBUG_DOCUMENT);
 
@@ -765,66 +822,32 @@
 		}
 	}
 
-	g_free (doc->priv->mime_type);
-	if (mime_type != NULL)
+	g_free (doc->priv->content_type);
+
+	if (content_type != NULL)
 	{
-		doc->priv->mime_type = g_strdup (mime_type);
+		doc->priv->content_type = g_strdup (content_type);
 	}
 	else
 	{
 		if (doc->priv->uri != NULL)
 		{
-			gchar *content_type;
-			gchar *detected_mime;
-
-			content_type = g_content_type_guess (doc->priv->uri, NULL, 0, NULL);
-
-			if (content_type == NULL || g_content_type_is_unknown (content_type))
-				detected_mime = g_strdup ("text/plain");
-			else
-				detected_mime = g_content_type_get_mime_type (content_type);
-
-			doc->priv->mime_type = detected_mime != NULL ? detected_mime : g_strdup ("text/plain");
-
-			g_free (content_type);
+			doc->priv->content_type = g_content_type_guess (doc->priv->uri, NULL, 0, NULL);
 		}
 		else
 		{
-			doc->priv->mime_type = g_strdup ("text/plain");
+			doc->priv->content_type = g_content_type_from_mime_type ("text/plain");
 		}
 	}
 
 	if (!doc->priv->language_set_by_user)
 	{
-		gchar *data;
-		GtkSourceLanguage *language = NULL;
-
-		data = gedit_metadata_manager_get (doc->priv->uri, "language");
-
-		if (data != NULL)
-		{
-			gedit_debug_message (DEBUG_DOCUMENT, "Language: %s", data);
-
-			if (strcmp (data, "_NORMAL_") != 0)
-			{
-				language = gtk_source_language_manager_get_language (
-							gedit_get_language_manager (),
-							data);
-			}
+		GtkSourceLanguage *language;
 
-			g_free (data);
-		}
-		else
-		{
-			gedit_debug_message (DEBUG_DOCUMENT, "Language Normal");
+		language = guess_language (doc->priv->uri, doc->priv->content_type);
 
-			if (strcmp (doc->priv->mime_type, "text/plain") != 0)
-			{
-				language = gedit_language_manager_get_language_from_mime_type (
-							gedit_get_language_manager (),
-							doc->priv->mime_type);
-			}
-		}
+		gedit_debug_message (DEBUG_DOCUMENT, "Language: %s",
+				     language != NULL ? gtk_source_language_get_name (language) : "None");
 
 		set_language (doc, language, FALSE);
 	}
@@ -853,12 +876,7 @@
 gedit_document_set_uri (GeditDocument *doc,
 			const gchar   *uri)
 {
-	gchar *mime_type;
-
-	mime_type = g_strdup (doc->priv->mime_type);
-	set_uri (doc, uri, mime_type);
-	
-	g_free (mime_type);
+	set_uri (doc, uri, doc->priv->content_type);
 }
 
 /* Never returns NULL */
@@ -887,14 +905,29 @@
 		return gedit_utils_basename_for_display (doc->priv->uri);
 }
 
+gchar *
+gedit_document_get_content_type (GeditDocument *doc)
+{
+	g_return_val_if_fail (GEDIT_IS_DOCUMENT (doc), NULL);
+
+ 	return g_strdup (doc->priv->content_type);
+}
+
 /* Never returns NULL */
 gchar *
 gedit_document_get_mime_type (GeditDocument *doc)
 {
+	gchar *mime_type = NULL;
+
 	g_return_val_if_fail (GEDIT_IS_DOCUMENT (doc), "text/plain");
-	g_return_val_if_fail (doc->priv->mime_type != NULL, "text/plain");
 
- 	return g_strdup (doc->priv->mime_type);
+	if ((doc->priv->content_type != NULL) &&
+	    (!g_content_type_is_unknown (doc->priv->content_type)))
+	{
+		mime_type = g_content_type_get_mime_type (doc->priv->content_type);
+	}
+
+ 	return mime_type != NULL ? g_strdup (mime_type) : g_strdup ("text/plain");
 }
 
 /* Note: do not emit the notify::read-only signal */
@@ -987,12 +1020,8 @@
 	{
 		GtkTextIter iter;
 		const gchar *content_type;
-		gchar *mime_type = NULL;
 
 		content_type = gedit_document_loader_get_content_type (loader);
-		
-		if (content_type)
-			mime_type = g_content_type_get_mime_type (content_type);
 
 		doc->priv->mtime = gedit_document_loader_get_mtime (loader);
 
@@ -1006,9 +1035,7 @@
 			      (doc->priv->requested_encoding != NULL));
 		      
 		/* We already set the uri */
-		set_uri (doc, NULL, mime_type);
-
-		g_free (mime_type);
+		set_uri (doc, NULL, content_type);
 
 		/* move the cursor at the requested line if any */
 		if (doc->priv->requested_line_pos > 0)
@@ -1184,12 +1211,10 @@
 		{
 			const gchar *uri;
 			const gchar *content_type;
-			gchar *mime_type;
 
 			uri = gedit_document_saver_get_uri (saver);
 
 			content_type = gedit_document_saver_get_content_type (saver);
-			mime_type = g_content_type_get_mime_type (content_type);
 
 			doc->priv->mtime = gedit_document_saver_get_mtime (saver);
 
@@ -1200,9 +1225,7 @@
 			gtk_text_buffer_set_modified (GTK_TEXT_BUFFER (doc),
 						      FALSE);
 
-			set_uri (doc, uri, mime_type);
-
-			g_free (mime_type);
+			set_uri (doc, uri, content_type);
 
 			set_encoding (doc, 
 				      doc->priv->requested_encoding, 
@@ -1226,7 +1249,7 @@
 		size = gedit_document_saver_get_file_size (saver);
 		written = gedit_document_saver_get_bytes_written (saver);
 
-		gedit_debug_message (DEBUG_DOCUMENT, "save progress: %Lu of %Lu", written, size);
+		gedit_debug_message (DEBUG_DOCUMENT, "save progress: %" G_GINT64_FORMAT " of %" G_GINT64_FORMAT, written, size);
 
 		g_signal_emit (doc,
 			       document_signals[SAVING],

Modified: trunk/gedit/gedit-document.h
==============================================================================
--- trunk/gedit/gedit-document.h	(original)
+++ trunk/gedit/gedit-document.h	Thu Dec 25 21:02:48 2008
@@ -162,6 +162,9 @@
 gchar		*gedit_document_get_short_name_for_display
 					 	(GeditDocument       *doc);
 
+gchar		*gedit_document_get_content_type
+					 	(GeditDocument       *doc);
+
 gchar		*gedit_document_get_mime_type 	(GeditDocument       *doc);
 
 gboolean	 gedit_document_get_readonly 	(GeditDocument       *doc);

Modified: trunk/gedit/gedit-language-manager.c
==============================================================================
--- trunk/gedit/gedit-language-manager.c	(original)
+++ trunk/gedit/gedit-language-manager.c	Thu Dec 25 21:02:48 2008
@@ -88,135 +88,3 @@
 	return g_slist_sort (languages, (GCompareFunc)language_compare);
 }
 
-/* Returns a hash table that is used as a cache of already matched mime-types */
-static GHashTable *
-get_languages_cache (GtkSourceLanguageManager *lm)
-{
-	static GQuark id = 0;
-	GHashTable *res;
-
-	if (id == 0)
-		id = g_quark_from_static_string ("gedit_languages_manager_cache");
-
-	res = (GHashTable *)g_object_get_qdata (G_OBJECT (lm), id);
-	if (res == NULL)
-	{
-		res = g_hash_table_new_full (g_str_hash,
-					     g_str_equal,
-					     g_free,
-					     NULL);
-
-		g_object_set_qdata_full (G_OBJECT (lm), 
-					 id,
-					 res,
-					 (GDestroyNotify)g_hash_table_unref);
-	}
-
-	return res;
-}
-
-static GtkSourceLanguage *
-get_language_from_cache (GtkSourceLanguageManager *lm,
-			 const gchar              *mime_type)
-{
-	GHashTable *cache;
-
-	cache = get_languages_cache (lm);
-
-	return g_hash_table_lookup (cache, mime_type);
-}
-
-static void
-add_language_to_cache (GtkSourceLanguageManager *lm,
-		       const gchar              *mime_type,
-		       GtkSourceLanguage        *lang)
-{
-	GHashTable *cache;
-
-	cache = get_languages_cache (lm);
-	g_hash_table_replace (cache, g_strdup (mime_type), lang);
-}
-
-GtkSourceLanguage *
-gedit_language_manager_get_language_from_mime_type (GtkSourceLanguageManager *lm,
-						    const gchar              *mime_type)
-{
-	const gchar* const *languages;
-	GtkSourceLanguage *lang;
-	GtkSourceLanguage *parent = NULL;
-
-	g_return_val_if_fail (mime_type != NULL, NULL);
-
-	lang = get_language_from_cache (lm, mime_type);
-	if (lang != NULL)
-	{
-		gedit_debug_message (DEBUG_DOCUMENT,
-				     "Cache hit for %s", mime_type);
-		return lang;
-	}
-	gedit_debug_message (DEBUG_DOCUMENT,
-			     "Cache miss for %s", mime_type);
-
-	languages = gtk_source_language_manager_get_language_ids (lm);
-	if (languages == NULL)
-		return NULL;
-
-	while (*languages != NULL)
-	{
-		gchar **mime_types;
-		gchar *found = NULL;
-		gint i;
-
-		lang = gtk_source_language_manager_get_language (lm, *languages);
-		g_return_val_if_fail (GTK_IS_SOURCE_LANGUAGE (lang), NULL);
-		++languages;
-
-		mime_types = gtk_source_language_get_mime_types (lang);
-		if (mime_types == NULL)
-			continue;
-
-		for (i = 0; mime_types[i] != NULL; ++i)
-		{
-			if (g_content_type_equals(mime_type, mime_types[i]))
-			{
-				/* If the mime-type of lang is identical to "mime-type" then
-				   return lang */
-				gedit_debug_message (DEBUG_DOCUMENT,
-						     "%s is indentical to %s\n",
-						     mime_types[i], mime_type);
-
-				found = mime_types[i];
-
-				break;
-			}
-			else if (parent == NULL && g_content_type_is_a (mime_type, mime_types[i]))
-			{
-				/* If the mime-type of lang is a parent of "mime-type" then
-				   remember it. We will return it if we don't find
-				   an exact match. The first "parent" wins */
-				parent = lang;
-
-				gedit_debug_message (DEBUG_DOCUMENT,
-						     "%s is a parent of %s\n",
-						     mime_types[i], mime_type);
-			}
-		}
-
-		if (found != NULL)
-		{
-			add_language_to_cache (lm, mime_type, lang);
-
-			g_strfreev (mime_types);
-
-			return lang;
-		}
-
-		g_strfreev (mime_types);
-	}
-
-	if (parent != NULL)
-		add_language_to_cache (lm, mime_type, parent);
-	
-	return parent;
-}
-

Modified: trunk/gedit/gedit-language-manager.h
==============================================================================
--- trunk/gedit/gedit-language-manager.h	(original)
+++ trunk/gedit/gedit-language-manager.h	Thu Dec 25 21:02:48 2008
@@ -42,10 +42,6 @@
 								(GtkSourceLanguageManager	*lm,
 								 gboolean			 include_hidden);
 
-GtkSourceLanguage		*gedit_language_manager_get_language_from_mime_type 
-								(GtkSourceLanguageManager	*lm,
-								 const gchar			*mime_type);
-
 G_END_DECLS
 
 #endif /* __GEDIT_LANGUAGES_MANAGER_H__ */

Modified: trunk/gedit/gedit-metadata-manager.c
==============================================================================
--- trunk/gedit/gedit-metadata-manager.c	(original)
+++ trunk/gedit/gedit-metadata-manager.c	Thu Dec 25 21:02:48 2008
@@ -36,6 +36,7 @@
 #include <libxml/xmlreader.h>
 #include "gedit-metadata-manager.h"
 #include "gedit-debug.h"
+#include "gedit-dirs.h"
 
 /*
 #define GEDIT_METADATA_VERBOSE_DEBUG	1
@@ -220,16 +221,18 @@
 static gchar *
 get_metadata_filename (void)
 {
-	const gchar *home;
+	gchar *cache_dir;
+	gchar *metadata;
 
-	home = g_get_home_dir ();
-	if (home == NULL)
-	{
-		g_warning ("Could not get home directory\n");
-		return NULL;
-	}
+	cache_dir = gedit_dirs_get_user_cache_dir ();
+
+	metadata = g_build_filename (cache_dir,
+				     METADATA_FILE,
+				     NULL);
+
+	g_free (cache_dir);
 
-	return g_build_filename (home, ".gnome2", METADATA_FILE, NULL);
+	return metadata;
 }
 
 static gboolean
@@ -536,7 +539,18 @@
 	file_name = get_metadata_filename ();
 	if (file_name != NULL)
 	{
-		xmlSaveFormatFile (file_name, doc, 1);
+		gchar *cache_dir;
+		int res;
+
+		/* make sure the cache dir exists */
+		cache_dir = gedit_dirs_get_user_cache_dir ();
+		res = g_mkdir_with_parents (cache_dir, 0755);
+		if (res != -1)
+		{
+			xmlSaveFormatFile (file_name, doc, 1);
+		}
+
+		g_free (cache_dir);
 		g_free (file_name);
 	}
 

Modified: trunk/gedit/gedit-plugins-engine.c
==============================================================================
--- trunk/gedit/gedit-plugins-engine.c	(original)
+++ trunk/gedit/gedit-plugins-engine.c	Thu Dec 25 21:02:48 2008
@@ -35,17 +35,16 @@
 #include <string.h>
 
 #include <glib/gi18n.h>
-#include <gconf/gconf-client.h>
 
 #include "gedit-plugins-engine.h"
 #include "gedit-plugin-info-priv.h"
 #include "gedit-plugin.h"
 #include "gedit-debug.h"
 #include "gedit-app.h"
+#include "gedit-prefs-manager.h"
 #include "gedit-plugin-loader.h"
 #include "gedit-object-module.h"
-
-#define USER_GEDIT_LOCATION ".gnome2/gedit/"
+#include "gedit-dirs.h"
 
 #define GEDIT_PLUGINS_ENGINE_BASE_KEY "/apps/gedit-2/plugins"
 #define GEDIT_PLUGINS_ENGINE_KEY GEDIT_PLUGINS_ENGINE_BASE_KEY "/active-plugins"
@@ -76,16 +75,11 @@
 	GList *plugin_list;
 	GHashTable *loaders;
 
-	GConfClient *gconf_client;
-	gboolean activate_from_gconf;
+	gboolean activate_from_prefs;
 };
 
 GeditPluginsEngine *default_engine = NULL;
 
-static void	gedit_plugins_engine_active_plugins_changed (GConfClient *client,
-							     guint cnxn_id, 
-							     GConfEntry *entry, 
-							     gpointer user_data);
 static void	gedit_plugins_engine_activate_plugin_real (GeditPluginsEngine *engine,
 							   GeditPluginInfo    *info);
 static void	gedit_plugins_engine_deactivate_plugin_real (GeditPluginsEngine *engine,
@@ -178,27 +172,23 @@
 	       LoadDirCallback     callback,
 	       gpointer            userdata)
 {
-	const gchar *home;
+	gchar *config_dir;
 	const gchar *pdirs_env = NULL;
 	gchar **pdirs;
 	int i;
 
 	/* load user's plugins */
-	home = g_get_home_dir ();
-
-	if (home == NULL)
-	{
-		g_warning ("Could not get HOME directory\n");
-	}
-	else
+	config_dir = gedit_dirs_get_user_config_dir ();
+	
+	if (config_dir != NULL)
 	{
 		gchar *pdir;
 		gboolean ret = TRUE;
 
-		pdir = g_build_filename (home,
-					 USER_GEDIT_LOCATION,
+		pdir = g_build_filename (config_dir,
 					 dir,
 					 NULL);
+		g_free (config_dir);
 
 		if (g_file_test (pdir, G_FILE_TEST_IS_DIR))
 			ret = load_dir_real (engine, pdir, suffix, callback, userdata);
@@ -230,13 +220,18 @@
 static void
 load_all_plugins (GeditPluginsEngine *engine)
 {
+	gchar *plugin_dir;
+
+	plugin_dir = gedit_dirs_get_gedit_plugins_dir ();
+
 	load_all_real (engine, 
 		       "plugins", 
 		       "GEDIT_PLUGINS_PATH", 
-		       GEDIT_PLUGINDIR,
+		       plugin_dir,
 		       PLUGIN_EXT,
 		       load_plugin_info,
 		       NULL);
+	g_free (plugin_dir);
 }
 
 static guint
@@ -299,24 +294,11 @@
 						    GEDIT_TYPE_PLUGINS_ENGINE,
 						    GeditPluginsEnginePrivate);
 
-	engine->priv->gconf_client = gconf_client_get_default ();
-	g_return_if_fail (engine->priv->gconf_client != NULL);
-
-	gconf_client_add_dir (engine->priv->gconf_client,
-			      GEDIT_PLUGINS_ENGINE_BASE_KEY,
-			      GCONF_CLIENT_PRELOAD_ONELEVEL,
-			      NULL);
-
-	gconf_client_notify_add (engine->priv->gconf_client,
-				 GEDIT_PLUGINS_ENGINE_KEY,
-				 gedit_plugins_engine_active_plugins_changed,
-				 engine, NULL, NULL);
-
 	load_all_plugins (engine);
-	
-	/* make sure that the first reactivation will read active plugins from
-	   gconf */
-	engine->priv->activate_from_gconf = TRUE;
+
+	/* make sure that the first reactivation will read active plugins
+	   from the prefs */
+	engine->priv->activate_from_prefs = TRUE;
 
 	/* mapping from loadername -> loader object */
 	engine->priv->loaders = g_hash_table_new_full (hash_lowercase,
@@ -348,8 +330,6 @@
 	
 	gedit_debug (DEBUG_PLUGINS);
 
-	g_return_if_fail (engine->priv->gconf_client != NULL);
-
 	/* Firs deactivate all plugins */
 	for (item = engine->priv->plugin_list; item; item = item->next)
 	{
@@ -371,7 +351,6 @@
 	}
 
 	g_list_free (engine->priv->plugin_list);
-	g_object_unref (engine->priv->gconf_client);
 }
 
 static void
@@ -486,15 +465,20 @@
 
 	if (loader_info == NULL)
 	{
+		gchar *loader_dir;
+
+		loader_dir = gedit_dirs_get_gedit_plugin_loaders_dir ();
+
 		/* loader could not be found in the hash, try to find it by 
 		   scanning */
 		load_all_real (engine, 
 			       "plugin-loaders", 
 			       NULL, 
-			       GEDIT_LOADERDIR,
+			       loader_dir,
 			       LOADER_EXT,
 			       (LoadDirCallback)load_loader,
 			       NULL);
+		g_free (loader_dir);
 		
 		loader_info = (LoaderInfo *)g_hash_table_lookup (
 				engine->priv->loaders, 
@@ -546,6 +530,7 @@
 	GList *l = g_list_find_custom (engine->priv->plugin_list,
 				       name,
 				       (GCompareFunc) compare_plugin_info_and_name);
+
 	return l == NULL ? NULL : (GeditPluginInfo *) l->data;
 }
 
@@ -554,7 +539,6 @@
 {
 	GSList *active_plugins = NULL;
 	GList *l;
-	gboolean res;
 
 	for (l = engine->priv->plugin_list; l != NULL; l = l->next)
 	{
@@ -567,14 +551,7 @@
 		}
 	}
 
-	res = gconf_client_set_list (engine->priv->gconf_client,
-				     GEDIT_PLUGINS_ENGINE_KEY,
-				     GCONF_VALUE_STRING,
-				     active_plugins,
-				     NULL);
-
-	if (!res)
-		g_warning ("Error saving the list of active plugins.");
+	gedit_prefs_manager_set_active_plugins (active_plugins);
 
 	g_slist_free (active_plugins);
 }
@@ -702,35 +679,32 @@
 gedit_plugins_engine_activate_plugins (GeditPluginsEngine *engine,
 					GeditWindow        *window)
 {
-	GList *pl;
 	GSList *active_plugins = NULL;
+	GList *pl;
 
 	gedit_debug (DEBUG_PLUGINS);
 
 	g_return_if_fail (GEDIT_IS_PLUGINS_ENGINE (engine));
 	g_return_if_fail (GEDIT_IS_WINDOW (window));
-	
+
 	/* the first time, we get the 'active' plugins from gconf */
-	if (engine->priv->activate_from_gconf)
+	if (engine->priv->activate_from_prefs)
 	{
-		active_plugins = gconf_client_get_list (engine->priv->gconf_client,
-							GEDIT_PLUGINS_ENGINE_KEY,
-							GCONF_VALUE_STRING,
-							NULL);
+		active_plugins = gedit_prefs_manager_get_active_plugins ();
 	}
 
 	for (pl = engine->priv->plugin_list; pl; pl = pl->next)
 	{
 		GeditPluginInfo *info = (GeditPluginInfo*)pl->data;
 		
-		if (engine->priv->activate_from_gconf && 
+		if (engine->priv->activate_from_prefs && 
 		    g_slist_find_custom (active_plugins,
 					 gedit_plugin_info_get_module_name (info),
 					 (GCompareFunc)strcmp) == NULL)
 			continue;
 		
 		/* If plugin is not active, don't try to activate/load it */
-		if (!engine->priv->activate_from_gconf && 
+		if (!engine->priv->activate_from_prefs && 
 		    !gedit_plugin_info_is_active (info))
 			continue;
 
@@ -739,11 +713,11 @@
 					       window);
 	}
 	
-	if (engine->priv->activate_from_gconf)
+	if (engine->priv->activate_from_prefs)
 	{
 		g_slist_foreach (active_plugins, (GFunc) g_free, NULL);
 		g_slist_free (active_plugins);
-		engine->priv->activate_from_gconf = FALSE;
+		engine->priv->activate_from_prefs = FALSE;
 	}
 	
 	gedit_debug_message (DEBUG_PLUGINS, "End");
@@ -834,35 +808,16 @@
 	gtk_widget_show (conf_dlg);
 }
 
-static void 
-gedit_plugins_engine_active_plugins_changed (GConfClient *client,
-					     guint cnxn_id,
-					     GConfEntry *entry,
-					     gpointer user_data)
+void 
+gedit_plugins_engine_active_plugins_changed (GeditPluginsEngine *engine)
 {
-	GeditPluginsEngine *engine;
-	GList *pl;
 	gboolean to_activate;
 	GSList *active_plugins;
+	GList *pl;
 
 	gedit_debug (DEBUG_PLUGINS);
 
-	g_return_if_fail (entry->key != NULL);
-	g_return_if_fail (entry->value != NULL);
-
-	engine = GEDIT_PLUGINS_ENGINE (user_data);
-	
-	if (!((entry->value->type == GCONF_VALUE_LIST) && 
-	      (gconf_value_get_list_type (entry->value) == GCONF_VALUE_STRING)))
-	{
-		g_warning ("The gconf key '%s' may be corrupted.", GEDIT_PLUGINS_ENGINE_KEY);
-		return;
-	}
-	
-	active_plugins = gconf_client_get_list (engine->priv->gconf_client,
-						GEDIT_PLUGINS_ENGINE_KEY,
-						GCONF_VALUE_STRING,
-						NULL);
+	active_plugins = gedit_prefs_manager_get_active_plugins ();
 
 	for (pl = engine->priv->plugin_list; pl; pl = pl->next)
 	{
@@ -885,4 +840,3 @@
 	g_slist_free (active_plugins);
 }
 
-

Modified: trunk/gedit/gedit-plugins-engine.h
==============================================================================
--- trunk/gedit/gedit-plugins-engine.h	(original)
+++ trunk/gedit/gedit-plugins-engine.h	Thu Dec 25 21:02:48 2008
@@ -78,7 +78,6 @@
 GeditPluginInfo	*gedit_plugins_engine_get_plugin_info	(GeditPluginsEngine *engine,
 							 const gchar        *name);
 
-
 /* plugin load and unloading (overall, for all windows) */
 gboolean 	 gedit_plugins_engine_activate_plugin 	(GeditPluginsEngine *engine,
 							 GeditPluginInfo    *info);
@@ -97,6 +96,10 @@
 void		 gedit_plugins_engine_update_plugins_ui  (GeditPluginsEngine *engine,
 							  GeditWindow        *window);
 
+/* private for gconf notification */
+void		 gedit_plugins_engine_active_plugins_changed
+							(GeditPluginsEngine *engine);
+
 G_END_DECLS
 
 #endif  /* __GEDIT_PLUGINS_ENGINE_H__ */

Modified: trunk/gedit/gedit-prefs-manager-app.c
==============================================================================
--- trunk/gedit/gedit-prefs-manager-app.c	(original)
+++ trunk/gedit/gedit-prefs-manager-app.c	Thu Dec 25 21:02:48 2008
@@ -43,7 +43,9 @@
 #include "gedit-view.h"
 #include "gedit-window.h"
 #include "gedit-window-private.h"
+#include "gedit-plugins-engine.h"
 #include "gedit-style-scheme-manager.h"
+#include "gedit-dirs.h"
 
 static void gedit_prefs_manager_editor_font_changed	(GConfClient *client,
 							 guint        cnxn_id,
@@ -126,6 +128,11 @@
 							 GConfEntry  *entry,
 							 gpointer     user_data);
 
+static void gedit_prefs_manager_active_plugins_changed	(GConfClient *client,
+							 guint        cnxn_id, 
+							 GConfEntry  *entry, 
+							 gpointer     user_data);
+
 static void gedit_prefs_manager_lockdown_changed	(GConfClient *client,
 							 guint        cnxn_id,
 							 GConfEntry  *entry,
@@ -139,7 +146,7 @@
 #define GEDIT_STATE_DEFAULT_SIDE_PANEL_SIZE	200
 #define GEDIT_STATE_DEFAULT_BOTTOM_PANEL_SIZE	140
 
-#define GEDIT_STATE_FILE_LOCATION ".gnome2/gedit-2"
+#define GEDIT_STATE_FILE_LOCATION "gedit-2"
 
 #define GEDIT_STATE_WINDOW_GROUP "window"
 #define GEDIT_STATE_WINDOW_STATE "state"
@@ -162,6 +169,26 @@
 static gint bottom_panel_active_page = 0;
 static gint active_file_filter = -1;
 
+
+static gchar *
+get_state_filename (void)
+{
+	gchar *config_dir;
+	gchar *filename = NULL;
+
+	config_dir = gedit_dirs_get_user_config_dir ();
+
+	if (config_dir != NULL)
+	{
+		filename = g_build_filename (config_dir,
+					     GEDIT_STATE_FILE_LOCATION,
+					     NULL);
+		g_free (config_dir);
+	}
+
+	return filename;
+}
+
 static GKeyFile *
 get_gedit_state_file ()
 {
@@ -169,25 +196,15 @@
 
 	if (state_file == NULL)
 	{
-		const gchar *home;
-		gchar *path;
+		gchar *filename;
 		GError *err = NULL;
 
 		state_file = g_key_file_new ();
 
-		home = g_get_home_dir ();
-		if (home == NULL)
-		{
-			g_warning ("Could not get HOME directory\n");
-			goto out;
-		}
-
-		path = g_build_filename (home,
-					 GEDIT_STATE_FILE_LOCATION,
-					 NULL);
+		filename = get_state_filename ();
 
 		if (!g_key_file_load_from_file (state_file,
-						path,
+						filename,
 						G_KEY_FILE_NONE,
 						&err))
 		{
@@ -201,11 +218,9 @@
 			g_error_free (err);
 		}
 
-		g_free (path);
+		g_free (filename);
 	}
 
- out:
-	g_return_val_if_fail (state_file != NULL, NULL);
 	return state_file;
 }
 
@@ -266,26 +281,30 @@
 gedit_state_file_sync ()
 {
 	GKeyFile *state_file;
-	const gchar *home;
-	gchar *path;
-	gchar *content;
+	gchar *config_dir;
+	gchar *filename = NULL;
+	gchar *content = NULL;
 	gsize length;
+	gint res;
 	GError *err = NULL;
 	gboolean ret = FALSE;
 
 	state_file = get_gedit_state_file ();
 	g_return_val_if_fail (state_file != NULL, FALSE);
 
-	home = g_get_home_dir ();
-	if (home == NULL)
+	config_dir = gedit_dirs_get_user_config_dir ();
+	if (config_dir == NULL)
 	{
-		g_warning ("Could not get HOME directory\n");
+		g_warning ("Could not get config directory\n");
 		return ret;
 	}
 
-	path = g_build_filename (home,
-				 GEDIT_STATE_FILE_LOCATION,
-				 NULL);
+	res = g_mkdir_with_parents (config_dir, 0755);
+	if (res < 0)
+	{
+		g_warning ("Could not create config directory\n");
+		goto out;
+	}
 
 	content = g_key_file_to_data (state_file,
 				      &length,
@@ -298,15 +317,18 @@
 		goto out;
 	}
 
-	if ((content != NULL) &&
-	    (!g_file_set_contents (path,
-				   content,
-				   length,
-				   &err)))
+	if (content != NULL)
 	{
-		g_warning ("Could not write gedit state file: %s\n",
-			   err->message);
-		goto out;
+		filename = get_state_filename ();
+		if (!g_file_set_contents (filename,
+					  content,
+					  length,
+					  &err))
+		{
+			g_warning ("Could not write gedit state file: %s\n",
+				   err->message);
+			goto out;
+		}
 	}
 
 	ret = TRUE;
@@ -315,10 +337,11 @@
 	if (err != NULL)
 		g_error_free (err);
 
+	g_free (config_dir);
+	g_free (filename);
 	g_free (content);
-	g_free (path);
 
-	return TRUE;
+	return ret;
 }
 
 /* Window state */
@@ -610,6 +633,11 @@
 				GPM_PREFS_DIR,
 				GCONF_CLIENT_PRELOAD_RECURSIVE,
 				NULL);
+
+		gconf_client_add_dir (gedit_prefs_manager->gconf_client,
+				GPM_PLUGINS_DIR,
+				GCONF_CLIENT_PRELOAD_RECURSIVE,
+				NULL);
 		
 		gconf_client_add_dir (gedit_prefs_manager->gconf_client,
 				GPM_LOCKDOWN_DIR,
@@ -695,7 +723,12 @@
 				GPM_SAVE_DIR,
 				gedit_prefs_manager_auto_save_changed,
 				NULL, NULL, NULL);
-		
+
+		gconf_client_notify_add (gedit_prefs_manager->gconf_client,
+				GPM_ACTIVE_PLUGINS,
+				gedit_prefs_manager_active_plugins_changed,
+				NULL, NULL, NULL);
+
 		gconf_client_notify_add (gedit_prefs_manager->gconf_client,
 				GPM_LOCKDOWN_DIR,
 				gedit_prefs_manager_lockdown_changed,
@@ -1521,6 +1554,31 @@
 	}
 }
 
+static void 
+gedit_prefs_manager_active_plugins_changed (GConfClient *client,
+					    guint        cnxn_id,
+					    GConfEntry  *entry,
+					    gpointer     user_data)
+{
+	gedit_debug (DEBUG_PREFS);
+
+	g_return_if_fail (entry->key != NULL);
+	g_return_if_fail (entry->value != NULL);
+
+	if (strcmp (entry->key, GPM_ACTIVE_PLUGINS) == 0)
+	{
+		if ((entry->value->type == GCONF_VALUE_LIST) && 
+		    (gconf_value_get_list_type (entry->value) == GCONF_VALUE_STRING))
+		{
+			GeditPluginsEngine *engine;
+
+			engine = gedit_plugins_engine_get_default ();
+
+			gedit_plugins_engine_active_plugins_changed (engine);
+		}
+	}
+}
+
 static void
 gedit_prefs_manager_lockdown_changed (GConfClient *client,
 				      guint        cnxn_id,

Modified: trunk/gedit/gedit-prefs-manager.c
==============================================================================
--- trunk/gedit/gedit-prefs-manager.c	(original)
+++ trunk/gedit/gedit-prefs-manager.c	Thu Dec 25 21:02:48 2008
@@ -669,6 +669,7 @@
 {
 	GSList *strings;
 	GSList *res = NULL;
+
 	gedit_debug (DEBUG_PREFS);
 
 	g_return_val_if_fail (gedit_prefs_manager != NULL, NULL);
@@ -738,6 +739,7 @@
 {
 	GSList *strings;
 	GSList *res = NULL;
+
 	gedit_debug (DEBUG_PREFS);
 
 	g_return_val_if_fail (gedit_prefs_manager != NULL, NULL);
@@ -813,8 +815,8 @@
 			GPM_SHOWN_IN_MENU_ENCODINGS,
 			GCONF_VALUE_STRING,
 		       	list,
-			NULL);	
-	
+			NULL);
+
 	g_slist_free (list);
 }
 
@@ -982,7 +984,51 @@
 					     GPM_DEFAULT_RESTORE_CURSOR_POSITION);
 }
 
+/* Plugins: we just store/return a list of strings, all the magic has to
+ * happen in the plugin engine */
+
+GSList *
+gedit_prefs_manager_get_active_plugins (void)
+{
+	GSList *plugins;
+
+	gedit_debug (DEBUG_PREFS);
+
+	g_return_val_if_fail (gedit_prefs_manager != NULL, NULL);
+	g_return_val_if_fail (gedit_prefs_manager->gconf_client != NULL, NULL);
+
+	plugins = gconf_client_get_list (gedit_prefs_manager->gconf_client,
+					 GPM_ACTIVE_PLUGINS,
+					 GCONF_VALUE_STRING, 
+					 NULL);
+
+	return plugins;
+}
+
+void
+gedit_prefs_manager_set_active_plugins (const GSList *plugins)
+{	
+	g_return_if_fail (gedit_prefs_manager != NULL);
+	g_return_if_fail (gedit_prefs_manager->gconf_client != NULL);
+	g_return_if_fail (gedit_prefs_manager_active_plugins_can_set ());
+
+	gconf_client_set_list (gedit_prefs_manager->gconf_client,
+			       GPM_ACTIVE_PLUGINS,
+			       GCONF_VALUE_STRING,
+		       	       (GSList *) plugins,
+			       NULL);
+}
+
+gboolean
+gedit_prefs_manager_active_plugins_can_set (void)
+{
+	gedit_debug (DEBUG_PREFS);
+
+	return gedit_prefs_manager_key_is_writable (GPM_ACTIVE_PLUGINS);
+}
+
 /* Global Lockdown */
+
 GeditLockdownMask
 gedit_prefs_manager_get_lockdown (void)
 {

Modified: trunk/gedit/gedit-prefs-manager.h
==============================================================================
--- trunk/gedit/gedit-prefs-manager.h	(original)
+++ trunk/gedit/gedit-prefs-manager.h	Thu Dec 25 21:02:48 2008
@@ -131,6 +131,10 @@
 /* White list of writable gnome-vfs methods */
 #define GPM_WRITABLE_VFS_SCHEMES 	GPM_SAVE_DIR "/writable_vfs_schemes"
 
+/* Plugins */
+#define GPM_PLUGINS_DIR			GEDIT_BASE_KEY "/plugins"
+#define GPM_ACTIVE_PLUGINS		GPM_PLUGINS_DIR "/active-plugins"
+
 /* Global Lockdown keys */
 #define GPM_LOCKDOWN_DIR		"/desktop/gnome/lockdown"
 #define GPM_LOCKDOWN_COMMAND_LINE	GPM_LOCKDOWN_DIR "/disable_command_line"
@@ -269,7 +273,6 @@
 void			 gedit_prefs_manager_set_insert_spaces	 	(gboolean ai);
 gboolean		 gedit_prefs_manager_insert_spaces_can_set 	(void);
 
-
 /* Auto indent */
 gboolean		 gedit_prefs_manager_get_auto_indent	 	(void);
 void			 gedit_prefs_manager_set_auto_indent	 	(gboolean ai);
@@ -401,6 +404,11 @@
 void			 gedit_prefs_manager_set_source_style_scheme	(const gchar *scheme);
 gboolean		 gedit_prefs_manager_source_style_scheme_can_set(void);
 
+/* Plugins */
+GSList			*gedit_prefs_manager_get_active_plugins		(void);
+void			 gedit_prefs_manager_set_active_plugins		(const GSList *plugins);
+gboolean 		 gedit_prefs_manager_active_plugins_can_set	(void);
+
 /* Global lockdown */
 GeditLockdownMask	 gedit_prefs_manager_get_lockdown			(void);
 

Modified: trunk/gedit/gedit-print-job.c
==============================================================================
--- trunk/gedit/gedit-print-job.c	(original)
+++ trunk/gedit/gedit-print-job.c	Thu Dec 25 21:02:48 2008
@@ -42,6 +42,7 @@
 #include "gedit-print-preview.h"
 #include "gedit-marshal.h"
 #include "gedit-utils.h"
+#include "gedit-dirs.h"
 
 
 #define GEDIT_PRINT_JOB_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), \
@@ -311,13 +312,15 @@
 	gint line_numbers;
 	gboolean can_set;
 	GtkWrapMode wrap_mode;
+	gchar *file;
 	gchar *root_objects[] = {
 		"adjustment1",
 		"contents",
 		NULL
 	};
 
-	ret = gedit_utils_get_ui_objects (GEDIT_UIDIR "gedit-print-preferences.ui",
+	file = gedit_dirs_get_ui_file ("gedit-print-preferences.ui");
+	ret = gedit_utils_get_ui_objects (file,
 					  root_objects,
 					  &error_widget,
 					  "contents", &widget,
@@ -337,6 +340,7 @@
 					  "numbers_fontbutton", &job->priv->numbers_fontbutton,
 					  "restore_button", &job->priv->restore_button,
 					  NULL);
+	g_free (file);
 
 	if (!ret)
 	{

Modified: trunk/gedit/gedit-style-scheme-manager.c
==============================================================================
--- trunk/gedit/gedit-style-scheme-manager.c	(original)
+++ trunk/gedit/gedit-style-scheme-manager.c	Thu Dec 25 21:02:48 2008
@@ -36,27 +36,27 @@
 
 #include "gedit-style-scheme-manager.h"
 #include "gedit-prefs-manager.h"
+#include "gedit-dirs.h"
 
 static GtkSourceStyleSchemeManager *style_scheme_manager = NULL;
 
-#define GEDIT_STYLES_DIR ".gnome2/gedit/styles"
-
 static gchar *
 get_gedit_styles_path (void)
 {
-	const gchar *home;
-
-	home = g_get_home_dir ();
-	if (home != NULL)
-	{
-		gchar *dir;
+	gchar *config_dir;
+	gchar *dir = NULL;
 
-		dir = g_build_filename (home, GEDIT_STYLES_DIR, NULL);
+	config_dir = gedit_dirs_get_user_config_dir ();
 
-		return dir;
+	if (config_dir != NULL)
+	{
+		dir = g_build_filename (config_dir,
+					"styles",
+					NULL);
+		g_free (config_dir);
 	}
 	
-	return NULL;
+	return dir;
 }
 
 static void
@@ -131,7 +131,6 @@
 {
 	GtkSourceStyleScheme *scheme;
 	const gchar *filename;
-	const gchar *home;
 	gchar *dir;
 	gboolean res = FALSE;
 
@@ -143,13 +142,7 @@
 	if (filename == NULL)
 		return FALSE;
 
-	home = g_get_home_dir ();
-	if (home == NULL)
-		return FALSE;
-
-	dir = g_strdup_printf ("%s/%s",
-			       home,
-			       GEDIT_STYLES_DIR);
+	dir = get_gedit_styles_path ();
 
 	res = g_str_has_prefix (filename, dir);
 

Modified: trunk/gedit/gedit-tab.c
==============================================================================
--- trunk/gedit/gedit-tab.c	(original)
+++ trunk/gedit/gedit-tab.c	Thu Dec 25 21:02:48 2008
@@ -1717,9 +1717,10 @@
 
 	switch (tab->priv->state)
 	{
+		gchar *content_type;
 		gchar *mime_type;
-		gchar *mime_description;
-		gchar *mime_full_description; 
+		gchar *content_description;
+		gchar *content_full_description; 
 		gchar *encoding;
 		const GeditEncoding *enc;
 
@@ -1738,16 +1739,17 @@
 						ruri_markup);
 			break;			
 		default:
+			content_type = gedit_document_get_content_type (doc);
 			mime_type = gedit_document_get_mime_type (doc);
-			mime_description = g_content_type_get_description (mime_type);
+			content_description = g_content_type_get_description (content_type);
 
-			if (mime_description == NULL)
-				mime_full_description = g_strdup (mime_type);
+			if (content_description == NULL)
+				content_full_description = g_strdup (mime_type);
 			else
-				mime_full_description = g_strdup_printf ("%s (%s)", 
-						mime_description, mime_type);
+				content_full_description = g_strdup_printf ("%s (%s)", 
+						content_description, mime_type);
 
-			g_free (mime_description);
+			g_free (content_description);
 			g_free (mime_type);
 
 			enc = gedit_document_get_encoding (doc);
@@ -1761,15 +1763,15 @@
 						        "<b>%s</b> %s\n"
 						        "<b>%s</b> %s",
 						        _("Name:"), ruri,
-						        _("MIME Type:"), mime_full_description,
+						        _("MIME Type:"), content_full_description,
 						        _("Encoding:"), encoding);
 
 			g_free (encoding);
-			g_free (mime_full_description);
+			g_free (content_full_description);
 
 			break;
 	}
-	
+
 	g_free (ruri);	
 	g_free (ruri_markup);
 	

Modified: trunk/gedit/gedit-utils.c
==============================================================================
--- trunk/gedit/gedit-utils.c	(original)
+++ trunk/gedit/gedit-utils.c	Thu Dec 25 21:02:48 2008
@@ -482,51 +482,6 @@
 	return g_string_free (str, FALSE);
 }
 
-#define GEDIT_STDIN_BUFSIZE 1024
-
-gchar *
-gedit_utils_get_stdin (void)
-{
-	GString * file_contents;
-	gchar *tmp_buf = NULL;
-	guint buffer_length;
-	fd_set rfds;
-	struct timeval tv;
-	
-	FD_ZERO (&rfds);
-	FD_SET (0, &rfds);
-
-	/* wait for 1/4 of a second */
-	tv.tv_sec = 0;
-	tv.tv_usec = STDIN_DELAY_MICROSECONDS;
-
-	if (select (1, &rfds, NULL, NULL, &tv) != 1)
-		return NULL;
-
-	tmp_buf = g_new0 (gchar, GEDIT_STDIN_BUFSIZE + 1);
-	g_return_val_if_fail (tmp_buf != NULL, FALSE);
-
-	file_contents = g_string_new (NULL);
-	
-	while (feof (stdin) == 0)
-	{
-		buffer_length = fread (tmp_buf, 1, GEDIT_STDIN_BUFSIZE, stdin);
-		tmp_buf [buffer_length] = '\0';
-		g_string_append (file_contents, tmp_buf);
-
-		if (ferror (stdin) != 0)
-		{
-			g_free (tmp_buf);
-			g_string_free (file_contents, TRUE);
-			return NULL;
-		}
-	}
-
-	fclose (stdin);
-
-	return g_string_free (file_contents, FALSE);
-}
-
 void 
 gedit_warning (GtkWindow *parent, const gchar *format, ...)
 {

Modified: trunk/gedit/gedit-utils.h
==============================================================================
--- trunk/gedit/gedit-utils.h	(original)
+++ trunk/gedit/gedit-utils.h	Thu Dec 25 21:02:48 2008
@@ -99,8 +99,6 @@
 
 gchar		*gedit_utils_unescape_search_text	(const gchar *text);
 
-gchar		*gedit_utils_get_stdin			(void);
-
 void		 gedit_warning				(GtkWindow  *parent,
 							 const gchar *format,
 							 ...) G_GNUC_PRINTF(2, 3);

Modified: trunk/gedit/gedit-window.c
==============================================================================
--- trunk/gedit/gedit-window.c	(original)
+++ trunk/gedit/gedit-window.c	Thu Dec 25 21:02:48 2008
@@ -54,6 +54,7 @@
 #include "gedit-documents-panel.h"
 #include "gedit-plugins-engine.h"
 #include "gedit-enum-types.h"
+#include "gedit-dirs.h"
 
 #define LANGUAGE_NONE (const gchar *)"LangNone"
 #define GEDIT_UIFILE "gedit-ui.xml"
@@ -1313,6 +1314,7 @@
 	GtkRecentFilter *filter;
 	GError *error = NULL;
 	GeditLockdownMask lockdown;
+	gchar *ui_file;
 
 	gedit_debug (DEBUG_WINDOW);
 
@@ -1378,7 +1380,9 @@
 	window->priv->quit_action_group = action_group;
 
 	/* now load the UI definition */
-	gtk_ui_manager_add_ui_from_file (manager, GEDIT_UIDIR GEDIT_UIFILE, &error);
+	ui_file = gedit_dirs_get_ui_file (GEDIT_UIFILE);
+	gtk_ui_manager_add_ui_from_file (manager, ui_file, &error);
+	g_free (ui_file);
 	if (error != NULL)
 	{
 		g_warning ("Could not merge %s: %s", GEDIT_UIFILE, error->message);

Modified: trunk/gedit/gedit.c
==============================================================================
--- trunk/gedit/gedit.c	(original)
+++ trunk/gedit/gedit.c	Thu Dec 25 21:02:48 2008
@@ -48,6 +48,7 @@
 #include "gedit-app.h"
 #include "gedit-commands.h"
 #include "gedit-debug.h"
+#include "gedit-dirs.h"
 #include "gedit-encodings.h"
 #include "gedit-metadata-manager.h"
 #include "gedit-plugins-engine.h"
@@ -56,12 +57,24 @@
 #include "gedit-utils.h"
 #include "gedit-window.h"
 
-#include "bacon-message-connection.h"
 #include "eggsmclient.h"
 #include "eggdesktopfile.h"
 
+#ifdef G_OS_WIN32
+#define SAVE_DATADIR DATADIR
+#undef DATADIR
+#include <windows.h>
+#define DATADIR SAVE_DATADIR
+#undef SAVE_DATADIR
+#endif
+
 static guint32 startup_timestamp = 0;
+
+#ifndef G_OS_WIN32
+#include "bacon-message-connection.h"
+
 static BaconMessageConnection *connection;
+#endif
 
 static void
 show_version_and_quit (void)
@@ -207,6 +220,7 @@
 }
 
 /* serverside */
+#ifndef G_OS_WIN32
 static void
 on_message_received (const char *message,
 		     gpointer    data)
@@ -456,6 +470,37 @@
 
 	g_string_free (command, TRUE);
 }
+#endif /* G_OS_WIN32 */
+
+#ifdef G_OS_WIN32
+static void
+setup_path (void)
+{
+	/* Set PATH to include the gedit executable's folder */
+	wchar_t exe_filename[MAX_PATH];
+	wchar_t *p;
+	gchar *exe_folder_utf8;
+	gchar *path;
+	
+	GetModuleFileNameW (NULL, exe_filename, G_N_ELEMENTS (exe_filename)); 
+	
+	p = wcsrchr (exe_filename, L'\\');
+	g_assert (p != NULL);
+	
+	*p = L'\0';
+	exe_folder_utf8 = g_utf16_to_utf8 (exe_filename, -1, NULL, NULL, NULL);
+	
+	path = g_build_path (";",
+			     exe_folder_utf8,
+			     g_getenv ("PATH"),
+			     NULL);
+	if (!g_setenv ("PATH", path, TRUE))
+		g_warning ("Could not set PATH for gedit");
+	
+	g_free (exe_folder_utf8);
+	g_free (path);
+}
+#endif
 
 int
 main (int argc, char *argv[])
@@ -466,6 +511,8 @@
 	GeditApp *app;
 	gboolean restored = FALSE;
 	GError *error = NULL;
+	gchar *dir;
+	gchar *icon_dir;
 
 	/* Init glib threads asap */
 	g_thread_init (NULL);
@@ -476,7 +523,9 @@
 	
 	setlocale (LC_ALL, "");
 
-	bindtextdomain (GETTEXT_PACKAGE, GEDIT_LOCALEDIR);
+	dir = gedit_dirs_get_gedit_locale_dir ();
+	bindtextdomain (GETTEXT_PACKAGE, dir);
+	g_free (dir);
 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
 	textdomain (GETTEXT_PACKAGE);
 
@@ -488,6 +537,10 @@
 	g_option_context_add_group (context, gtk_get_option_group (FALSE));
 	g_option_context_add_group (context, egg_sm_client_get_option_group ());
 
+#ifdef G_OS_WIN32
+	setup_path ();
+#endif
+
 	gtk_init (&argc, &argv);
 
 	if (!g_option_context_parse (context, &argc, &argv, &error))
@@ -500,6 +553,7 @@
 
 	g_option_context_free (context);
 
+#ifndef G_OS_WIN32
 	gedit_debug_message (DEBUG_APP, "Create bacon connection");
 
 	connection = bacon_message_connection_new ("gedit");
@@ -536,15 +590,27 @@
 	{
 		g_warning ("Cannot create the 'gedit' connection.");
 	}
+#endif
 
 	gedit_debug_message (DEBUG_APP, "Set icon");
 	
+	dir = gedit_dirs_get_gedit_data_dir ();
+	icon_dir = g_build_filename (dir,
+				     "icons",
+				     NULL);
+	g_free (dir);
+	
 	gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
-					   GEDIT_ICONDIR);
+					   icon_dir);
+	g_free (icon_dir);
 
+#if !defined PLATFORM_OSX && !defined G_OS_WIN32
 	/* Set the associated .desktop file */
-#ifndef PLATFORM_OSX
 	egg_set_desktop_file (DATADIR "/applications/gedit.desktop");
+#else
+	/* manually set name and icon */
+	g_set_application_name("gedit");
+	gtk_window_set_default_icon_name ("accessories-text-editor");
 #endif
 
 	/* Load user preferences */
@@ -607,7 +673,9 @@
 	gedit_debug_message (DEBUG_APP, "Start gtk-main");		
 	gtk_main();
 
+#ifndef G_OS_WIN32
 	bacon_message_connection_free (connection);
+#endif
 
 	/* We kept the original engine reference here. So let's unref it to
 	 * finalize it properly. 

Modified: trunk/gedit/smclient/eggdesktopfile.c
==============================================================================
--- trunk/gedit/smclient/eggdesktopfile.c	(original)
+++ trunk/gedit/smclient/eggdesktopfile.c	Thu Dec 25 21:02:48 2008
@@ -987,7 +987,7 @@
 					     NULL);
 }
 
-#define EGG_DESKTOP_FILE_SN_TIMEOUT_LENGTH (30 /* seconds */ * 1000)
+#define EGG_DESKTOP_FILE_SN_TIMEOUT_LENGTH (30 /* seconds */)
 
 typedef struct {
   GdkDisplay *display;
@@ -1017,8 +1017,8 @@
   sn_data->display = g_object_ref (display);
   sn_data->startup_id = g_strdup (startup_id);
 
-  g_timeout_add (EGG_DESKTOP_FILE_SN_TIMEOUT_LENGTH,
-		 startup_notification_timeout, sn_data);
+  g_timeout_add_seconds (EGG_DESKTOP_FILE_SN_TIMEOUT_LENGTH,
+			 startup_notification_timeout, sn_data);
 }
 #endif /* GTK 2.12 */
 

Modified: trunk/plugin-loaders/python/bindings/gedit.defs
==============================================================================
--- trunk/plugin-loaders/python/bindings/gedit.defs	(original)
+++ trunk/plugin-loaders/python/bindings/gedit.defs	Thu Dec 25 21:02:48 2008
@@ -244,6 +244,12 @@
   (return-type "gchar*")
 )
 
+(define-method get_content_type
+  (of-object "GeditDocument")
+  (c-name "gedit_document_get_content_type")
+  (return-type "gchar*")
+)
+
 (define-method get_mime_type
   (of-object "GeditDocument")
   (c-name "gedit_document_get_mime_type")
@@ -988,15 +994,6 @@
   )
 )
 
-(define-function language_manager_get_language_from_mime_type
-  (c-name "gedit_language_manager_get_language_from_mime_type")
-  (return-type "GtkSourceLanguage*")
-  (parameters
-    '("GtkSourceLanguageManager*" "lm")
-    '("const-gchar*" "mime_type")
-  )
-)
-
 ;; From ../../gedit/gedit-debug.h
 
 (define-function debug



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]