SF.net SVN: geany:[5025] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Wed Jun 16 15:22:19 UTC 2010


Revision: 5025
          http://geany.svn.sourceforge.net/geany/?rev=5025&view=rev
Author:   ntrel
Date:     2010-06-16 15:22:19 +0000 (Wed, 16 Jun 2010)

Log Message:
-----------
* Merge unstable branch:
- src/build.c:
Make build config entries light grey until set.
- src/keybindings.c, src/about.c, THANKS:
Fix the wrong file being put on top of the stack when switching tabs
too quickly (patch from Ji?\197?\153?\195?\173 Techet, thanks).
- src/templates.c, data/templates/gpl, data/templates/function,
data/templates/changelog, data/templates/bsd,
data/templates/fileheader, wscript, Makefile.am:
Move general templates from source code into files.
Load general templates from system path instead of creating them in
the user's config dir.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/Makefile.am
    trunk/THANKS
    trunk/src/about.c
    trunk/src/build.c
    trunk/src/keybindings.c
    trunk/src/templates.c
    trunk/wscript

Added Paths:
-----------
    trunk/data/templates/bsd
    trunk/data/templates/changelog
    trunk/data/templates/fileheader
    trunk/data/templates/function
    trunk/data/templates/gpl

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2010-06-16 14:59:40 UTC (rev 5024)
+++ trunk/ChangeLog	2010-06-16 15:22:19 UTC (rev 5025)
@@ -3,6 +3,18 @@
  * src/notebook.c:
    Align notebook tab close buttons centred vertically - thanks to
    Robux.Biz (galyuk).
+ * Merge unstable branch:
+ - src/build.c:
+   Make build config entries light grey until set.
+ - src/keybindings.c, src/about.c, THANKS:
+   Fix the wrong file being put on top of the stack when switching tabs
+   too quickly (patch from Jiří Techet, thanks).
+ - src/templates.c, data/templates/gpl, data/templates/function,
+   data/templates/changelog, data/templates/bsd,
+   data/templates/fileheader, wscript, Makefile.am:
+   Move general templates from source code into files.
+   Load general templates from system path instead of creating them in
+   the user's config dir.
 
 
 2010-06-12  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>

Modified: trunk/Makefile.am
===================================================================
--- trunk/Makefile.am	2010-06-16 14:59:40 UTC (rev 5024)
+++ trunk/Makefile.am	2010-06-16 15:22:19 UTC (rev 5025)
@@ -22,6 +22,7 @@
 	data/filetype_extensions.conf \
 	data/snippets.conf \
 	data/ui_toolbar.xml \
+	$(srcdir)/data/templates/* \
 	$(srcdir)/data/templates/files/*
 
 EXTRA_DIST = \
@@ -63,6 +64,11 @@
 	  fi \
 	done
 	$(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/templates;
+	for file in $(srcdir)/data/templates/*; do \
+	  if test -f $$file; then \
+	    $(INSTALL_DATA) $$file $(DESTDIR)$(pkgdatadir)/templates/; \
+	  fi \
+	done
 	$(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/templates/files;
 	for file in $(srcdir)/data/templates/files/*; do \
 	  if test -f $$file; then \

Modified: trunk/THANKS
===================================================================
--- trunk/THANKS	2010-06-16 14:59:40 UTC (rev 5024)
+++ trunk/THANKS	2010-06-16 15:22:19 UTC (rev 5025)
@@ -7,7 +7,8 @@
 Testers and contributors:
 -------------------------
 These people have contributed to Geany by testing the software,
-reporting problems, sending patches and making useful suggestions.
+reporting problems, sending patches and making useful suggestions:
+
 Frank Lanitz <frank(at)frank(dot)uvena(dot)de> - heavy testing
 Christoph Berg <Christoph(dot)Berg(at)kpm-sport(dot)de> - testing and patch for filetype D
 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com> - many patches
@@ -79,10 +80,12 @@
 Dimitar Zhekov <hamster(at)mbox(dot)contact(dot)bg> - matching brace improvements patch
 Ondrej Donek <ondrejd(at)gmail(dot)com> - Support for creating PHP classes with the classbuilder plugin
 Daniel Marjamaki <danielm77(at)spray(dot)se> - Small improvements
+Jiří Techet <techet(at)gmail(dot)com> - Fix switch to last used tab ordering bug
 
 Translators:
 ------------
-These people have translated Geany to foreign languages.
+These people have translated Geany to foreign languages:
+
 Marcos Costales <marcoscostales(at)gmail(dot)com - ast
 Yura Siamashka <yurand2(at)gmail(dot)com> - be_BY
 Dilyan Rusev <dilyanrusev(at)gmail(dot)com> - bg

Copied: trunk/data/templates/bsd (from rev 5024, branches/unstable/data/templates/bsd)
===================================================================
--- trunk/data/templates/bsd	                        (rev 0)
+++ trunk/data/templates/bsd	2010-06-16 15:22:19 UTC (rev 5025)
@@ -0,0 +1,26 @@
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above
+  copyright notice, this list of conditions and the following disclaimer
+  in the documentation and/or other materials provided with the
+  distribution.
+* Neither the name of the {company} nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+

Copied: trunk/data/templates/changelog (from rev 5024, branches/unstable/data/templates/changelog)
===================================================================
--- trunk/data/templates/changelog	                        (rev 0)
+++ trunk/data/templates/changelog	2010-06-16 15:22:19 UTC (rev 5025)
@@ -0,0 +1,6 @@
+{date}  {developer}  <{mail}>
+
+ * 
+
+
+

Copied: trunk/data/templates/fileheader (from rev 5024, branches/unstable/data/templates/fileheader)
===================================================================
--- trunk/data/templates/fileheader	                        (rev 0)
+++ trunk/data/templates/fileheader	2010-06-16 15:22:19 UTC (rev 5025)
@@ -0,0 +1,5 @@
+{filename}
+
+Copyright {year} {developer} <{mail}>
+
+{gpl}

Copied: trunk/data/templates/function (from rev 5024, branches/unstable/data/templates/function)
===================================================================
--- trunk/data/templates/function	                        (rev 0)
+++ trunk/data/templates/function	2010-06-16 15:22:19 UTC (rev 5025)
@@ -0,0 +1,5 @@
+
+name: {functionname}
+ at param
+ at return
+

Copied: trunk/data/templates/gpl (from rev 5024, branches/unstable/data/templates/gpl)
===================================================================
--- trunk/data/templates/gpl	                        (rev 0)
+++ trunk/data/templates/gpl	2010-06-16 15:22:19 UTC (rev 5025)
@@ -0,0 +1,15 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+MA 02110-1301, USA.
+

Modified: trunk/src/about.c
===================================================================
--- trunk/src/about.c	2010-06-16 14:59:40 UTC (rev 5024)
+++ trunk/src/about.c	2010-06-16 15:22:19 UTC (rev 5025)
@@ -89,7 +89,8 @@
 "Daniel Marjamaki, Dave Moore, "
 "Dimitar Zhekov, Dirk Weber, Elias Pschernig, Eric Forgeot, Eugene Arshinov, Felipe Pena, François Cami, "
 "Giuseppe Torelli, Guillaume de Rorthais, Guillaume Hoffmann, Herbert Voss, Jason Oster, "
-"Jean-François Wauthy, Jeff Pohlmeyer, Jesse Mayes, John Gabriele, Jon Senior, Jon Strait, Josef Whiter, "
+"Jean-François Wauthy, Jeff Pohlmeyer, Jesse Mayes, Jiří Techet, "
+"John Gabriele, Jon Senior, Jon Strait, Josef Whiter, "
 "Jörn Reder, Kelvin Gardiner, Kevin Ellwood, Kristoffer A. Tjernås, Lex Trotman, Marko Peric, Matti Mårds, "
 "Moritz Barsnick, Ondrej Donek, Peter Strand, Philipp Gildein, Pierre Joye, Rob van der Linde, "
 "Robert McGinley, Roland Baudin, Ross McKay, S Jagannathan, Saleem Abdulrasool, "

Modified: trunk/src/build.c
===================================================================
--- trunk/src/build.c	2010-06-16 14:59:40 UTC (rev 5024)
+++ trunk/src/build.c	2010-06-16 15:22:19 UTC (rev 5025)
@@ -1727,9 +1727,19 @@
 	gint grp;
 	gint cmd;
 	gboolean cleared;
+	gboolean used_dst;
 } RowWidgets;
 
 
+static void set_row_color(RowWidgets *r, GdkColor *color )
+{
+	enum GeanyBuildCmdEntries i;
+
+	for (i = 0; i < GEANY_BC_CMDENTRIES_COUNT; i++)
+		gtk_widget_modify_text(r->entries[i], GTK_STATE_NORMAL, color);
+};
+
+
 static void set_build_command_entry_text(GtkWidget *wid, const gchar *text)
 {
 	if (GTK_IS_BUTTON(wid))
@@ -1744,6 +1754,7 @@
 	RowWidgets *r = (RowWidgets*)user_data;
 	gint src;
 	enum GeanyBuildCmdEntries i;
+	GdkColor color;
 	GeanyBuildCommand *bc = get_next_build_cmd(NULL, r->grp, r->cmd, r->dst, &src);
 
 	if (bc != NULL)
@@ -1764,6 +1775,9 @@
 			set_build_command_entry_text(r->entries[i], "");
 		}
 	}
+	r->used_dst = FALSE;
+	gdk_color_parse("light grey", &color);
+	set_row_color(r, &color);
 	r->cleared = TRUE;
 }
 
@@ -1774,16 +1788,28 @@
 }
 
 
-static void on_label_button_clicked(GtkWidget *wid)
+static void on_label_button_clicked(GtkWidget *wid, gpointer user_data)
 {
+	RowWidgets *r = (RowWidgets*)user_data;
 	const gchar *old = gtk_button_get_label(GTK_BUTTON(wid));
 	gchar *str = dialogs_show_input(_("Set menu item label"), NULL, old);
 
 	gtk_button_set_label(GTK_BUTTON(wid), str);
 	g_free(str);
+	r->used_dst = TRUE;
+	set_row_color(r, NULL);
 }
 
 
+static void on_entry_focus(GtkWidget *wid, GdkEventFocus *unused, gpointer user_data)
+{
+	RowWidgets *r = (RowWidgets*)user_data;
+
+	r->used_dst = TRUE;
+	set_row_color(r, NULL);
+}
+
+
 /* Column headings, array NULL-terminated */
 static const gchar *colheads[] =
 {
@@ -1812,6 +1838,7 @@
 	gint src;
 	enum GeanyBuildCmdEntries i;
 	guint column = 0;
+	GdkColor color;
 
 	label = gtk_label_new(g_strdup_printf("%d:", cmd + 1));
 	gtk_table_attach(table, label, column, column + 1, row, row + 1, GTK_FILL,
@@ -1831,10 +1858,13 @@
 			GtkWidget *wid = roww->entries[i] = gtk_button_new();
 			gtk_button_set_use_underline(GTK_BUTTON(wid), TRUE);
 			ui_widget_set_tooltip_text(wid, _("Click to set menu item label"));
-			g_signal_connect(wid, "clicked", G_CALLBACK(on_label_button_clicked), NULL);
+			g_signal_connect(wid, "clicked", G_CALLBACK(on_label_button_clicked), roww);
 		}
 		else
+		{
 			roww->entries[i] = gtk_entry_new();
+			g_signal_connect(roww->entries[i], "focus-in-event", G_CALLBACK(on_entry_focus), roww);
+		}
 		gtk_table_attach(table, roww->entries[i], column, column + 1, row, row + 1, xflags,
 			GTK_FILL | GTK_EXPAND, entry_x_padding, entry_y_padding);
 	}
@@ -1852,10 +1882,19 @@
 	for (i = 0; i < GEANY_BC_CMDENTRIES_COUNT; i++)
 	{
 		const gchar *str = "";
-		if (bc != NULL && (str = bc->entries[i]) == NULL)
-			str = "";
+
+		if (bc != NULL )
+		{
+			if ((str = bc->entries[i]) == NULL)
+				str = "";
+			else if ((gint)dst == src)
+				roww->used_dst = TRUE;
+		}
 		set_build_command_entry_text(roww->entries[i], str);
 	}
+	gdk_color_parse("light grey", &color);
+	if (bc != NULL && ((gint)dst > src))
+		set_row_color(roww, &color);
 	if (bc != NULL && (src > (gint)dst || (grp == GEANY_GBG_FT && (doc == NULL || doc->file_type == NULL))))
 	{
 		for (i = 0; i < GEANY_BC_CMDENTRIES_COUNT; i++)
@@ -2014,6 +2053,7 @@
 
 
 /* string compare where null pointers match null or 0 length strings */
+#if 0
 static gint stcmp(const gchar *a, const gchar *b)
 {
 	if (a == NULL && b == NULL)
@@ -2024,6 +2064,7 @@
 		return strlen(a);
 	return strcmp(a, b);
 }
+#endif
 
 
 static const gchar *get_build_command_entry_text(GtkWidget *wid)
@@ -2059,28 +2100,7 @@
 			changed = TRUE;
 		}
 	}
-	if (
-			(
-				table_data->rows[drow]->cmdsrc == NULL		/* originally there was no content */
-				&&
-				(
-					NZV(entries[GEANY_BC_LABEL])			/* but now one field has some */
-					|| NZV(entries[GEANY_BC_COMMAND])
-					|| NZV(entries[GEANY_BC_WORKING_DIR])
-				)
-			)
-			||
-			(
-				table_data->rows[drow]->cmdsrc != NULL		/* originally there was content */
-				&&
-				(											/* and some of it was changed */
-					stcmp(entries[GEANY_BC_LABEL], table_data->rows[drow]->cmdsrc->entries[GEANY_BC_LABEL]) != 0
-					|| stcmp(entries[GEANY_BC_COMMAND], table_data->rows[drow]->cmdsrc->entries[GEANY_BC_COMMAND]) != 0
-					|| stcmp(entries[GEANY_BC_WORKING_DIR],
-							table_data->rows[drow]->cmdsrc->entries[GEANY_BC_WORKING_DIR]) != 0
-				)
-			)
-		)
+	if (table_data->rows[drow]->used_dst == TRUE)
 	{
 		if (dst->dst[grp] != NULL)
 		{

Modified: trunk/src/keybindings.c
===================================================================
--- trunk/src/keybindings.c	2010-06-16 14:59:40 UTC (rev 5024)
+++ trunk/src/keybindings.c	2010-06-16 15:22:19 UTC (rev 5025)
@@ -71,7 +71,7 @@
 static GQueue *mru_docs = NULL;
 static guint mru_pos = 0;
 
-static gboolean switch_dialog_cancelled = TRUE;
+static gboolean switch_in_progress = FALSE;
 static GtkWidget *switch_dialog = NULL;
 static GtkWidget *switch_dialog_label = NULL;
 
@@ -576,7 +576,7 @@
 
 	/* when closing current doc, old is NULL.
 	 * Don't add to the mru list when switch dialog is visible. */
-	if (old && switch_dialog_cancelled)
+	if (old && !switch_in_progress)
 	{
 		g_queue_remove(mru_docs, old);
 		g_queue_push_head(mru_docs, old);
@@ -879,7 +879,7 @@
 	gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
 
 	text_renderer = gtk_cell_renderer_text_new();
-    column = gtk_tree_view_column_new_with_attributes(NULL, text_renderer, "text", 1, NULL);
+	column = gtk_tree_view_column_new_with_attributes(NULL, text_renderer, "text", 1, NULL);
 	gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
 
 	fill_shortcut_labels_treeview(tree);
@@ -1751,12 +1751,15 @@
 static gboolean on_key_release_event(GtkWidget *widget, GdkEventKey *ev, gpointer user_data)
 {
 	/* user may have rebound keybinding to a different modifier than Ctrl, so check all */
-	if (!switch_dialog_cancelled && is_modifier_key(ev->keyval))
+	if (switch_in_progress && is_modifier_key(ev->keyval))
 	{
-		switch_dialog_cancelled = TRUE;
+		switch_in_progress = FALSE;
 
-		if (switch_dialog && GTK_WIDGET_VISIBLE(switch_dialog))
-			gtk_widget_hide(switch_dialog);
+		if (switch_dialog)
+		{
+			gtk_widget_destroy(switch_dialog);
+			switch_dialog = NULL;
+		}
 
 		mru_pos = 0;
 	}
@@ -1809,23 +1812,27 @@
 }
 
 
+static void update_filename_label()
+{
+	if (!switch_dialog)
+	{
+		switch_dialog = create_switch_dialog();
+		gtk_widget_show_all(switch_dialog);
+	}
+
+	geany_wrap_label_set_text(GTK_LABEL(switch_dialog_label),
+		DOC_FILENAME(document_get_current()));
+}
+
+
 static gboolean on_switch_timeout(G_GNUC_UNUSED gpointer data)
 {
-	if (switch_dialog_cancelled)
+	if (!switch_in_progress || switch_dialog)
 	{
 		return FALSE;
 	}
-	if (! switch_dialog || !GTK_WIDGET_VISIBLE(switch_dialog))
-		mru_pos = 2;	/* skip past the previous document */
-	else
-		mru_pos += 1;
 
-	if (! switch_dialog)
-		switch_dialog = create_switch_dialog();
-
-	geany_wrap_label_set_text(GTK_LABEL(switch_dialog_label),
-		DOC_FILENAME(document_get_current()));
-	gtk_widget_show_all(switch_dialog);
+	update_filename_label();
 	return FALSE;
 }
 
@@ -1848,19 +1855,25 @@
 
 	/* if there's a modifier key, we can switch back in MRU order each time unless
 	 * the key is released */
-	if (! switch_dialog_cancelled)
+	if (!switch_in_progress)
 	{
-		on_switch_timeout(NULL);	/* update filename label */
-	}
-	else
-	if (keybindings_lookup_item(GEANY_KEY_GROUP_NOTEBOOK,
-		GEANY_KEYS_NOTEBOOK_SWITCHTABLASTUSED)->mods)
-	{
-		switch_dialog_cancelled = FALSE;
+		switch_in_progress = TRUE;
 
+		/* because switch_in_progress was not set when we called
+		 * gtk_notebook_set_current_page() above, this function inserted last_doc
+		 * into the queue => on mru_pos = 0 there is last_doc, on mru_pos = 1
+		 * there is the currently displayed doc, so we want to continue from 2
+		 * next time this function is called */
+		mru_pos = 2;
+
 		/* delay showing dialog to give user time to let go of any modifier keys */
 		g_timeout_add(600, on_switch_timeout, NULL);
 	}
+	else
+	{
+		update_filename_label();
+		mru_pos += 1;
+	}
 }
 
 

Modified: trunk/src/templates.c
===================================================================
--- trunk/src/templates.c	2010-06-16 14:59:40 UTC (rev 5024)
+++ trunk/src/templates.c	2010-06-16 15:22:19 UTC (rev 5025)
@@ -102,11 +102,6 @@
 @return\n\
 ";
 
-static const gchar templates_multiline[] = "\
- \n\
- \n\
-";
-
 static const gchar templates_fileheader[] = "\
 {filename}\n\
 \n\
@@ -145,24 +140,30 @@
 	g_file_get_contents(fname, contents_ptr, NULL, NULL);
 
 
-static void create_template_file_if_necessary(const gchar *filename, const gchar *content)
+static void read_template(const gchar *name, gint id)
 {
-	if (! g_file_test(filename, G_FILE_TEST_EXISTS))
+	gchar *fname = TEMPLATES_GET_FILENAME(name);
+
+	/* try system if user template doesn't exist */
+	if (!g_file_test(fname, G_FILE_TEST_EXISTS))
+		setptr(fname, g_strconcat(app->datadir,
+			G_DIR_SEPARATOR_S GEANY_TEMPLATES_SUBDIR G_DIR_SEPARATOR_S, name, NULL));
+
+	TEMPLATES_READ_FILE(fname, &templates[id]);
+
+	/* FIXME: we should replace the line ends on insertion with doc pref, not on loading */
+	if (file_prefs.default_eol_character != SC_EOL_LF)
 	{
-		if (file_prefs.default_eol_character != SC_EOL_LF)
-		{
-			/* Replace the \n characters in the default template text by the proper
-			 * platform-specific line ending characters. */
-			GString *tmp = g_string_new(content);
-			const gchar *eol_str = (file_prefs.default_eol_character == SC_EOL_CR) ? "\r" : "\r\n";
+		/* Replace the \n characters in the default template text by the proper
+		 * platform-specific line ending characters. */
+		GString *tmp = g_string_new(templates[id]);
+		const gchar *eol_str = (file_prefs.default_eol_character == SC_EOL_CR) ? "\r" : "\r\n";
 
-			utils_string_replace_all(tmp, "\n", eol_str);
-			utils_write_file(filename, tmp->str);
-			g_string_free(tmp, TRUE);
-		}
-		else
-			utils_write_file(filename, content);
+		utils_string_replace_all(tmp, "\n", eol_str);
+		setptr(templates[id], tmp->str);
+		g_string_free(tmp, FALSE);
 	}
+	g_free(fname);
 }
 
 
@@ -189,41 +190,18 @@
 
 static void init_general_templates(const gchar *year, const gchar *date, const gchar *datetime)
 {
-	gchar *template_filename_fileheader = TEMPLATES_GET_FILENAME("fileheader");
-	gchar *template_filename_gpl = TEMPLATES_GET_FILENAME("gpl");
-	gchar *template_filename_bsd = TEMPLATES_GET_FILENAME("bsd");
-	gchar *template_filename_function = TEMPLATES_GET_FILENAME("function");
-	gchar *template_filename_changelog = TEMPLATES_GET_FILENAME("changelog");
+	guint id;
 
-	/* create the template files in the configuration directory, if they don't exist */
-	create_template_file_if_necessary(template_filename_fileheader, templates_fileheader);
-	create_template_file_if_necessary(template_filename_gpl, templates_gpl_notice);
-	create_template_file_if_necessary(template_filename_bsd, templates_bsd_notice);
-	create_template_file_if_necessary(template_filename_function, templates_function_description);
-	create_template_file_if_necessary(template_filename_changelog, templates_changelog);
-
 	/* read the contents */
-	TEMPLATES_READ_FILE(template_filename_fileheader, &templates[GEANY_TEMPLATE_FILEHEADER]);
-	templates[GEANY_TEMPLATE_FILEHEADER] = replace_all(templates[GEANY_TEMPLATE_FILEHEADER], year, date, datetime);
+	read_template("fileheader", GEANY_TEMPLATE_FILEHEADER);
+	read_template("gpl", GEANY_TEMPLATE_GPL);
+	read_template("bsd", GEANY_TEMPLATE_BSD);
+	read_template("function", GEANY_TEMPLATE_FUNCTION);
+	read_template("changelog", GEANY_TEMPLATE_CHANGELOG);
 
-	TEMPLATES_READ_FILE(template_filename_gpl, &templates[GEANY_TEMPLATE_GPL]);
-	templates[GEANY_TEMPLATE_GPL] = replace_all(templates[GEANY_TEMPLATE_GPL], year, date, datetime);
-
-	TEMPLATES_READ_FILE(template_filename_bsd, &templates[GEANY_TEMPLATE_BSD]);
-	templates[GEANY_TEMPLATE_BSD] = replace_all(templates[GEANY_TEMPLATE_BSD], year, date, datetime);
-
-	TEMPLATES_READ_FILE(template_filename_function, &templates[GEANY_TEMPLATE_FUNCTION]);
-	templates[GEANY_TEMPLATE_FUNCTION] = replace_all(templates[GEANY_TEMPLATE_FUNCTION], year, date, datetime);
-
-	TEMPLATES_READ_FILE(template_filename_changelog, &templates[GEANY_TEMPLATE_CHANGELOG]);
-	templates[GEANY_TEMPLATE_CHANGELOG] = replace_all(templates[GEANY_TEMPLATE_CHANGELOG], year, date, datetime);
-
-	/* free the whole stuff */
-	g_free(template_filename_fileheader);
-	g_free(template_filename_gpl);
-	g_free(template_filename_bsd);
-	g_free(template_filename_function);
-	g_free(template_filename_changelog);
+	/* FIXME: we should replace the dates on insertion, not on loading */
+	for (id = 0; id < GEANY_MAX_TEMPLATES; id++)
+		templates[id] = replace_all(templates[id], year, date, datetime);
 }
 
 

Modified: trunk/wscript
===================================================================
--- trunk/wscript	2010-06-16 14:59:40 UTC (rev 5024)
+++ trunk/wscript	2010-06-16 15:22:19 UTC (rev 5025)
@@ -518,6 +518,7 @@
 	bld.install_files('${DATADIR}/%s' % dir, 'data/*.tags')
 	bld.install_files('${DATADIR}/%s' % dir, 'data/snippets.conf')
 	bld.install_files('${DATADIR}/%s' % dir, 'data/ui_toolbar.xml')
+	bld.install_files('${DATADIR}/%s/templates' % dir, 'data/templates/*')
 	bld.install_files('${DATADIR}/%s/templates/files' % dir, 'data/templates/files/*.*')
 	bld.install_as('${DATADIR}/%s/GPL-2' % dir, 'COPYING')
 	# Icons


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list