0.9:

2007-02-18  Daniel Elstner  <daniel.kitta@gmail.com>

	* NEWS: Final update for the release.  Yay!

2007-02-18  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/controller.h: Minor code reformatting: Change instances
	of <foo,bar> in template argument lists to <foo, bar>.
	* src/filebuffer.{cc,h}: ditto,
	* src/fileshared.{cc,h}: ditto,
	* src/filetree.h: ditto,
	* src/filetreeprivate.{cc,h}: ditto,
	* src/pcreshell.{cc,h}: ditto.
	* src/mainwindow.cc (program_license): Add terminating newline
	to last paragraph.

2007-02-18  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/stringutils.{cc,h} (Util::wstring_to_utf8): New function to
	convert an std::wstring to UTF-8.  This is a temporary measure
	to deal with the same locale issues as discussed in the comments
	to bug #399216.
	(Util::int_to_string): Use a wide character stream and convert
	the result to UTF-8 with Util::wstring_to_utf8().
	* src/statusline.cc (CounterBox::stringstream_): Change to
	std::wostringstream, as above.
	(CounterBox::number_to_string): Use Util::wstring_to_utf8().

2007-02-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* configure.ac (ACLOCAL_FLAGS): Declare variable as precious
	using AC_ARG_VAR(), which also makes it a substituted variable.
	This should prevent inconsistent behavior if the variable changes
	in the environment after configure has run.
	(ACLOCAL_AMFLAGS): Remove substitution.
	* Makefile.am (ACLOCAL_AMFLAGS): Define variable.

2007-01-20  Daniel Elstner  <daniel.kitta@gmail.com>

	* INSTALL: Remove generic installation instructions from the
	repository, as this file is supplied by automake.

2007-01-17  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/stringutils.{cc,h} (Util::filename_short_display_name):
	Rename from Util::shorten_pathname().  Return the display name
	of the shortened filename encoded in UTF-8.
	(Util::expand_pathname): Remove as this function is no longer
	being used anywhere.
	* src/mainwindow.cc (MainWindow::set_title_filename): Use
	Util::filename_short_display_name().

2007-01-17  Daniel Elstner  <daniel.kitta@gmail.com>

	* Makefile.am (rxlocaledir): New variable that defines the locale
	directory the same way intltool does.
	(global_defs): Use $(rxlocaledir) instead of $(localedir).  In
	addition to being different from intltool's definition, standard
	$(localedir) also requires at least Autoconf 2.59c.

2007-01-16  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/statusline.cc (CounterBox::CounterBox): Change the shadow
	type to Gtk::SHADOW_ETCHED_IN.  Still looks somewhat ugly though;
	I need to think of something better.  Also enable the single line
	mode property of the numeric labels, in order to avoid resizing if
	the digits in the font have different height.
	(StatusLine::StatusLine): Increase HBox spacing to 3 pixels.

2007-01-16  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/filetree.cc (regexxer_create_file_tree): Prefix function
	signature with G_MODULE_EXPORT, as this will probably be required
	on Windows to enable dynamic loading.
	* src/statusline.cc (regexxer_create_status_line): Ditto.

2007-01-16  Daniel Elstner  <daniel.kitta@gmail.com>

	* m4/dk-warn.m4 (DK_ARG_ENABLE_WARNINGS): Accept a fourth argument
	which can be used to generate -DMODULE_DISABLE_DEPRECATED defines
	by specifying a list of module prefixes.  These flags are produced
	only in --enable-warnings=fatal mode, in order to avoid breaking
	the default build if new deprecations appear in some module.

	* configure.ac (REGEXXER_WARNING_FLAGS): List the module prefixes
	GLIBMM and GTKMM in the fourth argument to DK_ARG_ENABLE_WARNINGS.
	* Makefile.am (global_defs): Remove -D*_DISABLE_DEPRECATED flags,
	since they are now included in $(REGEXXER_WARNING_FLAGS).

2007-01-16  Daniel Elstner  <daniel.kitta@gmail.com>

	* Makefile.am (ui/stockimages.h): Accept backslash '\' as directory
	separator in filenames, in addition to the forward slash '/'.  You
	can never know.

2007-01-15  Daniel Elstner  <daniel.kitta@gmail.com>

	* MAINTAINERS: Add my real name.

2007-01-14  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/translation.{cc,h} (Util::compose_argv): New function with
	the functionality of compose_impl() but using a format string of
	type const char*.  This implementation operates on bytes instead of
	Unicode code points, and copies the chunks between placeholders in
	one go instead of each character separately.
	(Util::compose): Call compose_argv() instead of compose_impl()
	and change the type of the format argument to const char* because
	the format string really should be a string literal.  Also, inline
	all of these overloads since they just forward their arguments to
	compose_argv() anyway, so that inlining actually reduces code size.

2007-01-14  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/fileshared.h: Replace occurrences of "lhs" and "rhs" with
	"a" and "b", respectively.
	(BoundState): Remove BOUND_MASK value from enumeration as it is
	nowhere being used.

2007-01-14  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/filetree.{cc,h}: Clean up the code a bit.  In particular,
	change occurrences of Gtk::TreePath to Gtk::TreeModel::Path.
	* src/filetreeprivate.{cc,h}: Likewise.

	* src/sharedptr.h (Util::SharedPtr::SharedPtr): Inline.
	(Util::SharedPtr::~SharedPtr): Remove assertion and inline.
	* src/sharedptr.cc: Remove now empty file.

	* Makefile.am (src_regexxer_SOURCES): Remove src/sharedptr.cc.

2007-01-14  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/filetree.cc (regexxer_create_file_tree): Move function to
	the global namespace.  Putting it inside an anonymous namespace
	just obfuscated the code, as this function is exported for the
	world to see.
	* src/statusline.cc (regexxer_create_status_line): Likewise.

2007-01-13  Daniel Elstner  <daniel.kitta@gmail.com>

	* MAINTAINERS: Add file for the benefit of sysadmin tools.

2007-01-13  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/globalstrings.h (conf_dir_application): New string constant
	defining the directory of regexxer in the GConf database.  This
	string literal replaces the REGEXXER_GCONF_DIRECTORY macro which
	used to be defined in the Makefile.  This global macro definition
	was inherently pointless as it was not configurable anyway.
	* src/main.cc (initialize_configuration): Use conf_dir_application
	instead of REGEXXER_GCONF_DIRECTORY.
	* src/prefdialog.cc (PrefDialog::initialize_configuration): ditto.

	* configure.ac (REGEXXER_GCONF_DIRECTORY): Remove substitution.
	(PKG_CHECK_MODULES): Add gmodule-export-2.0 to the module list to
	get the -Wl,--export-dynamic flag automatically.
	(DK_LINK_EXPORT_DYNAMIC): Remove macro invocation as it no longer
	necessary.  Also, add comments elaborating about the whole linker
	stuff.
	* Makefile.am (global_defs): Remove -DREGEXXER_GCONF_DIRECTORY.
	(src_regexxer_LDFLAGS): Get rid of $(REGEXXER_EXPORT_DYNAMIC).

	* m4/dk-export.m4 (DK_LINK_EXPORT_DYNAMIC): Remove macro.

2007-01-13  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/filetree.cc (FileTree::find_recursively): Replace uses of
	Glib::filename_display_name() by Glib::filename_display_basename()
	to enable translation of well-known locations in future.  Store
	the full path in the directory stack.
	(FileTree::find_fill_dirstack): Convert the full path from the
	stack to a displayable name with Glib::filename_display_basename().
	(FileTree::save_file_at_iter): Determine the basename for
	use in the error message with Glib::filename_display_basename().

	* src/mainwindow.cc (MainWindow::set_title_filename): Call
	Glib::filename_display_basename() to get the filename to be
	displayed in the window title.

	* src/filetreeprivate.{cc,h}: Some early spring cleaning.

2007-01-12  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/fileio.cc: Prefix function and data definitions within
	anonymous namespaces with the "static" keyword.  Although this
	usage of "static" is deprecated in C++, GCC still exports symbols
	defined in anonymous namespaces.  For more information, see:
	http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18267
	* src/fileshared.cc: ditto,
	* src/main.cc: ditto,
	* src/mainwindow.cc: ditto,
	* src/pcreshell.cc: ditto,
	* src/prefdialog.cc: ditto,
	* src/stringutils.cc: ditto,
	* src/translation.cc: ditto.

2007-01-11  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/mainwindow.cc (MainWindow::initialize): Really minor tweaks.

2007-01-11  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/main.cc (RegexxerOptions): Make init_state_ a value member
	of the class instead creating it dynamically.  This simplification
	is now possible since the RegexxerOptions object will be allocated
	dynamically anyway.
	(RegexxerOptions::init_state): Rename from take_init_state(), and
	make it return a const reference.
	(main): Use new init_state() method when initializing the window.

	* src/mainwindow.{cc,h} (MainWindow::initialize): Change init
	parameter type to a const reference.

2007-01-11  Daniel Elstner  <daniel.kitta@gmail.com>

	* Makefile.am (global_defs): Define REGEXXER_LOCALEDIR to the
	"$(locale)" directory path.  Remove define for REGEXXER_DATADIR
	since it was used only as part of the locale directory.
	* src/main.cc (main): Use REGEXXER_LOCALEDIR.
	(locale_directory): Remove string literal.

2007-01-11  Daniel Elstner  <daniel.kitta@gmail.com>

	* ui/prefdialog.glade (label_toolbar_style): Assign mnemonic widget
	combo_toolbar_style as GTK+ messes up the automatic assignment.

2007-01-11  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/filebuffer.cc (FileBuffer::create_with_error_message): Use
	UTF-8 encoded typographically correct apostrophe in the title
	string.
	* src/filetree.cc (FileTree::find_recursively): Replace call to
	Util::filename_to_utf8_fallback() by Glib::filename_display_name().
	(FileTree::find_fill_dirstack): Likewise.
	(FileTree::save_file_at_iter): Use UTF-8 encoded typographically
	correct quote characters in the error message string.
	(FileTree::load_file_with_fallback): Likewise.

	* src/pcreshell.cc (throw_regex_error): New function to throw a
	Pcre::Error exception with a properly formatted error message.
	(Pcre::Pattern::Pattern): Use throw_regex_error().

	* src/prefdialog.cc (PrefDialog::on_entry_fallback_activate):
	Use proper Unicode quotes in error message string.

	* src/mainwindow.cc (MainWindow::initialize): Run the search
	automatically only if also a filename pattern has been specified
	on the command line.
	(MainWindow::confirm_quit_request): Use proper Unicode apostrophe
	in the error message.
	(MainWindow::on_find_files): Likewise.  Also remove the code to
	format an error message for regex exceptions, as Pcre::Error now
	already carries a user-friendly message.
	(MainWindow::set_title_filename): Replace calls to
	Util::filename_to_utf8_fallback() by Glib::filename_display_name().

	* src/stringutils.{cc,h} (Util::shell_pattern_to_regex): Minor
	optimization twiddling.
	(Util::substitute_references): Likewise.
	(Util::filename_to_utf8_fallback): Remove function, as we can
	now simply use Glib::filename_display_name() instead.
	(Util::convert_to_ascii): Remove; no longer used anywhere.
	(Util::shorten_pathname): Use G_IS_DIR_SEPARATOR() instead of
	comparing against G_DIR_SEPARATOR directly.  Necessary because
	on win32 both '/' and '\' are accepted as directory separators.

	* ui/regexxer.schemas.in: Reformat and use proper Unicode quotes
	and apostrophes.
	* ui/prefdialog.glade: Likewise.  Also remove some property
	specifications which assigned default values anyway.
	* ui/mainwindow.glade: As above, strip pointless property settings.

2007-01-11  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/fileio.cc (save_iochannel): Add comment about assertions and
	reorganize the code a bit.
	(Regexxer::save_file): Elaborate on why IOChannel::close() is
	used explicitely.

	* src/filetreeprivate.cc (FileTreePrivate::collatekey_sort_func):
	Fix oversight:  Subtracting two unsigned values and converting the
	result to a signed type relies on implementation-defined behavior.
	Explicitely cast the operands to a signed type before substraction.

	* src/main.cc (main): Use g_get_prgname() instead of the string
	literal PACKAGE_TARNAME in the error message for Glib::OptionError
	exceptions.

2007-01-10  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/filebuffer.cc (FileBuffer::create_with_error_message): Get
	rid of the inappropriate plea to translators to replace space with
	no-break space in the message title.  Apart from the fact that it
	was a bad idea in the first place to make translators put up with
	this internal issue, the no-break spaces have no point being there
	at all.  A single untranslated no-break space between the error
	icon and the title text is all that is warranted.

2007-01-09  Daniel Elstner  <daniel.kitta@gmail.com>

	* autogen.sh: Simplify redirection of aclocal and automake output
	when testing for versioned executables.

2007-01-09  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/mainwindow.cc (program_license): New string literal with the
	same license information as at the top of the file.
	(MainWindow::on_about): Show the license information in the about
	dialog.

2007-01-09  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/mainwindow.cc: Remove leftover includes <gtk/gtktooltips.h>
	and <gtkmm/comboboxentry.h>, which had only been required for the
	tooltip hack removed earlier.  Also, collapse multiple empty lines
	into one.

2007-01-08  Daniel Elstner  <daniel.kitta@gmail.com>

	* configure.ac (ACLOCAL_AMFLAGS): Substitute $ACLOCAL_FLAGS from
	the environment at configure time instead of when make runs.
	Formerly, the flags could change without reconfiguring, which is
	probably a bad idea and contrary to Makefile conventions.

2007-01-08  Daniel Elstner  <daniel.kitta@gmail.com>

	* configure.ac (AC_INIT): Replace my email address for bug reports
	with the URI <http://regexxer.sourceforge.net/bugs>.  This address
	is redirected to <http://sourceforge.net/tracker/?group_id=64876>,
	so that the bug tracker now has a canonical URI that hides the
	numeric group ID.

2007-01-07  Daniel Elstner  <daniel.kitta@gmail.com>

	* ui/mainwindow.glade: Again remove the tearoff menus and the
	menubar and toolbar handle boxes.  This was just superfluous UI
	clutter not actually used by anyone.
	(button_folder): Get rid of the custom button that used to fire
	up the file chooser dialog, plus the accompanying text entry for
	display and editing of the folder name.  Replace this old cruft
	with a fresh and crisp GtkFileChooserButton plus a label.  Yay!
	(combo_pattern_entry): Reactivate commented-out markup that sets
	a tooltip on the internal GtkEntry child of combo_pattern.  As
	this finally supported by libglade it is no longer necessary to
	hack around the limitation in code.

	* src/mainwindow.{cc,h} (MainWindow): Adapt the implementation
	to work with the changed UI layout.  Change the folder selection
	handling as necessary.
	(MainWindow::load_xml): Remove the tooltip hack for the pattern
	entry, since libglade now allows for this in the glade file.
	(MainWindow::get_folder_fullname): Remove now unused method.
	(MainWindow::on_select_folder): Likewise.

2007-01-07  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/main.cc: #include <memory> for std::auto_ptr<> rather than
	relying on indirect inclusion by some other header file.

2007-01-07  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/main.cc: Remove <cstdlib> and <cstdio> includes left over
	from the old libpopt code.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/pcreshell.h ({Compile,Match}Options): Eeek, as it turns out
	the flag ANCHORED (and probably others too) are valid flags at both
	compile time and match time.  Move ANCHORED from CompileOptions to
	MatchOptions as I need it there for the following /g matching fix.
	These enumerations should of course be properly namespaced instead;
	this is just a quick hack for now.
	* src/pcreshell.cc: Rename a couple of variables to improve code
	clarity.

	* src/filebuffer.cc (FileBuffer::find_matches): Set the ANCHORED
	flag in addition to the NOT_EMPTY flag if the previous match was
	empty in /g mode.  This matches the algorithm outlined in recent
	versions of the PCRE documentation to mimic the behavior of Perl.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/main.cc (RegexxerOptions): New class that implements the
	command-line option interface using the option parsing facilities
	of glibmm instead of libpopt.
	(parse_command_line): Remove old function that used libpopt to
	parse command line options.
	(main): Use the new option parsing code.  Also, merge the gettext
	initialization into a single call again.  The special trickery that
	used to bind the codeset separately after option processing is no
	longer necessary with the new parser.

	* src/mainwindow.{cc,h} (Regexxer::InitState): Reorganize the data
	structure so that default-constructed objects equal the default
	values of the command-line options.  This is a work-around for
	glibmm bug #393571.
	(MainWindow::initialize): Adapt to Regexxer::InitState changes.

	* src/translation.{cc,h} (Util::enable_utf8_gettext): Merge back
	into Util::initialize_gettext(), as the separation is no longer
	necessary.
	(compose_impl): Optimize a bit by reserving the memory for the
	result string in advance.  Also, replace a couple of `...' quotes
	with "..." in a warning message.

	* Makefile.am (src_regexxer_LDADD): Remove $(POPTLIBS).
	* configure.ac (DK_LIB_POPT): Remove check for libpopt.
	* m4/dk-popt.m4: Remove now obsolete file.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* configure.ac (AC_CONFIG_SRCDIR): Name a file that will be
	truly unique to regexxer.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* m4/dk-{export,feature,pkgprog,popt,warn}.m4: Prefix M4 macro
	filenames with "dk-", to avoid clashes with other applications
	installing their M4 files here.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* NEWS: Update.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/exported-symbols: Add comment about the purpose of this file.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/filebuffer.cc (FileBuffer::on_erase): Copy tagtable->match
	into a local variable and use it.  This fixes a compilation error
	with the Intel C++ compiler caused by the creation of a temporary
	inside the statement expression of g_return_if_fail().

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/globalstrings.h (glade_aboutdialog_filename): Remove
	leftover string constant.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* COPYING: Update to latest version shipped with Automake.
	* INSTALL: Likewise.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/mainwindow.{cc,h} (MainWindow::on_about): Replace custom
	about dialog with stock GTK+ one.
	(on_about_dialog_response): Rename from on_about_dialog_hide().
	Add unused function parameter for the response ID.
	* src/aboutdialog.{cc,h}: Remove now superfluous files.
	* ui/aboutdialog.glade: Likewise.

	* Makefile.am (src_regexxer_SOURCES): Remove src/aboutdialog.{cc,h}
	from the list of source files.
	(dist_pkgdata_DATA): Remove ui/aboutdialog.glade from list.
	* configure.ac (REGEXXER_MODULES): Require gtkmm 2.6, in which the
	stock about dialog first appeared.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* NEWS: Update.
	* README: Minor reformatting.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/miscutils.cc: Remove file, as it was essentially empty
	except for including miscutils.h.
	* Makefile.am (src_regexxer_SOURCES): Remove src/miscutils.cc.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/*.{cc,h}: Update copyright notice:  The postal address of
	the Free Software Foundation changed, and my email address too.
	Also, remove the statement I had inserted which explicitely
	disallowed using a later version of the license.  I think I do
	not have to ask for permission from contributors, since the
	copyright notice only mentions me as the copyright holder, so
	technically everyone automatically transferred her copyright
	to me.  Anyway, the change is utterly minor and the notice now
	matches what everyone else is using.
	Also use the opportunity to get rid of the version control
	substitutions and the trailing empty line in every file.
	* ui/aboutdialog.glade: Update my email address.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* Makefile.am (src_regexxer_LDADD): Replace $(LIBINTL) substitution
	with $(INTLLIBS).  Apparently AM_GLIB_GNU_GETTEXT(), unlike plain
	AM_GNU_GETTEXT(), assigns INTLLIBS instead of LIBINTL for whatever
	reason.  This difference is nowhere documented.  Funny noone has
	noticed this yet, since as far as I can tell it is empty only with
	GNU libc.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* autogen.sh: Reduce the list of cruft to delete; it was a bit over
	the top and too long to maintain anyway.  Also, remove colons from
	substitutions again, as the script no longer assigns the empty
	string anywhere to the variables in question.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* autogen.sh: Comment "set -ex" and remove pointless ":;".

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* autogen.sh: Further simplify the script by making use of set -e
	and colons in substitutions, like ${foo:-bar}.  Although some truly
	ancient shells do not provide these features, this does not matter
	much for scripts intended for maintainer use.

2007-01-06  Daniel Elstner  <daniel.kitta@gmail.com>

	* autogen.sh: Reduce number of rm -f invocations by means of line
	continuation.

2007-01-05  Daniel Elstner  <daniel.kitta@gmail.com>

	* regexxer.{desktop,schemas}.in: Move to ui/ directory to reduce
	clutter in the toplevel directory.
	* Makefile.am ({desktop,schemas}_in_files): Update accordingly.
	({desktop,schemas}_DATA): Likewise.
	(ui/stockimages.h): Do not rely on $(mkdir_p) because it is already
	obsolete but AC_PROG_MKDIR_P() is too recent to require.  Just use
	plain mkdir and test for the existence of the directory on failure.
	Also, add a comment explaining the implicit directory creation.

2007-01-05  Daniel Elstner  <daniel.kitta@gmail.com>

	* configure.ac (AC_PREREQ): Require Autoconf 2.58.
	(AC_CONFIG_MACRO_DIR): Specify m4 macro directory.
	(IT_PROG_INTLTOOL): Replace obsolete AC_PROG_INTLTOOL().  Require
	at least intltool 0.35 for full po/LINGUAS and po/Makevars support.
	(ALL_LINGUAS): No longer set this environment variable, but rely
	on po/LINGUAS support.  Get rid of the CONFIG_STATUS_DEPENDENCIES
	substitution hack.
	(GETTEXT_PACKAGE): Move the variable assignment to AC_SUBST().

	* po/Makevars: Reintroduce this file, as it is finally properly
	supported by intltool.  Set XGETTEXT_OPTIONS to the list of
	keywords xgettext should recognize.

	* autogen.sh: Get rid of the hack that appends XGETTEXT_KEYWORDS
	to po/Makefile.in.in.  Also change the invocation order of the
	various setup tools according to the recommendation found in the
	gettext manual.  Delete some more cruft from the m4/ directory.

	* ABOUT-NLS: Get rid of this both large and largely useless file.
	Probably a left-over from the time before glib-gettextize.

2007-01-05  Daniel Elstner  <daniel.kitta@gmail.com>

	* m4/export.m4: New file.  Defines generalized replacements in the
	DK_ namespace for the cxx.m4 macros REGEXXER_LINK_EXPORT_DYNAMIC()
	and REGEXXER_LINK_VERSION_SCRIPT().
	* m4/feature.m4: New file.  Defines a couple of generic helper
	macros for feature testing.
	* m4/pkgproc.m4: New file.  Defines the macro DK_PKG_PATH_PROG()
	which replaces REGEXXER_PKG_PATH_PROG() from misc.m4.
	* m4/popt.m4: New file.  Defines DK_LIB_POPT(), a generalized
	replacement for REGEXXER_LIB_POPT() from misc.m4.
	* m4/warn.m4: New file.  Defines the macro DK_ARG_ENABLE_WARNINGS()
	which is a generalized and also somewhat improved replacement for
	REGEXXER_ARG_ENABLE_WARNINGS() from cxx.m4.  Note that the argument
	values of --enable-warnings= have changed; see ./configure --help.
	* m4/{cxx,misc}.m4: Remove files.

	* configure.ac: Use the new macros in the DK_ namespace.
	(DK_ARG_ENABLE_WARNINGS): Pass "-Wno-non-virtual-dtor" to the
	compiler if accepted.  Nasty, but due to the gconfmm bug the only
	way to recover the functionality of --enable-warnings=fatal.
	Assign the warning flags to the variable REGEXXER_WARNING_FLAGS.
	* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): Again raise the value
	passed to --enable-warnings= from "maximum" to "fatal", now that
	we work around the gconfmm bug.
	(AM_CPPFLAGS): Add $(REGEXXER_WARNING_FLAGS).
	(src_regexxer_LDADD): Reorder the library substitutions so that
	the ones more likely to depend on others in the list come first.

2007-01-05  Daniel Elstner  <daniel.kitta@gmail.com>

	* pixmaps/*.png: Move images to ui/ directory.  This makes for
	a more streamlined directory structure, and besides "pixmaps" was
	a horrible name anyway.
	* pixmaps: Remove directory.
	* Makefile.am: Accomodate for the change from "pixmaps" to "ui".
	As a side effect, the .dirstamp hack for ui/ is also no longer
	necessary, as the ui/stockimages.h rule already covers this.
	* src/main.cc: Change stockimages.h #include accordingly.

2007-01-05  Daniel Elstner  <daniel.kitta@gmail.com>

	* macros: Rename directory to m4.  I love Subversion.
	* autogen.sh: Change "-I macros" to "-I m4" in aclocal invocation.
	* configure.ac (ACLOCAL_AMFLAGS): Likewise for this substitution.

2007-01-05  Daniel Elstner  <daniel.kitta@gmail.com>

	* Makefile.am (AM_CPPFLAGS): Remove leftover $(PCRE_CFLAGS).
	(src_regexxer_LDADD): Likewise for $(PCRE_LIBS).

2007-01-05  Daniel Elstner  <daniel.kitta@gmail.com>

	* configure.ac (PCRE_CHECK_VERSION): Remove invocation of hand-
	crafted macro and just add "libpcre >= 5.0" to PKG_CHECK_MODULES()
	instead.  PCRE supports pkg-config since version 5.0, released
	September 2004.  I think it is safe to make that a requirement.
	(PCRE_CHECK_UTF8): Ditch the UTF-8 check, which was problematic
	anyway since it involved executing a runtime test.  Just rely on
	regexxer to report an error at runtime if libpcre is found not to
	support UTF-8.  This is acceptable since updating to a libpcre
	with UTF-8 support does not require rebuilding regexxer.
	* macros/pcre.m4: Get rid of it.

2007-01-04  Daniel Elstner  <daniel.kitta@gmail.com>

	* Makefile.am: Switch to a non-recursing build system.  The entire
	source tree except for the po/ subdirectory is now built from the
	toplevel Makefile.  For the rationale of this change, see Peter
	Miller's excellent paper "Recursive Make Considered Harmful":
	http://members.pcug.org.au/~millerp/rmch/recu-make-cons-harm.html

	The new system makes use of Automake's subdir-objects feature to
	put compilation results into the src/ subdirectory.  The Automake
	variables and rules from the subdirectories have been merged into
	the toplevel Makefile.am and adapted as necessary.

	(DISTCHECK_CONFIGURE_FLAGS): Lower --enable-warnings argument from
	"hardcore" to "maximum", in order to get distcheck to work despite
	the non-virtual base class warning triggered by gconfmm.

	* {pixmaps,src,ui}/Makefile.am: Remove from repository.

	* configure.ac (AC_INIT): Bump version number to 0.9.  Also change
	my mail address.
	(AC_PREREQ): Raise version requirement to autoconf 2.55.
	(AM_INIT_AUTOMAKE): Require Automake 1.8 and add -Wall option.
	(PKG_CHECK_MODULES): Replace output variable prefix REGEXXER with
	REGEXXER_MODULES for clarity.  Remove the AC_SUBST() invocations
	as the macro seems to do that on its own now.
	(AC_CONFIG_FILES): Remove {pixmaps,src,ui}/Makefile from the list.

	* NEWS: Add entry on regexxer 0.9.  Not complete yet.

	* autogen.sh: Rip out the overzealous version checking fancyness.
	This stuff was just a wee bit over the top.  Overall, reduce the
	the script to a sensible minimum.  Honor $NOCONFIGURE instead of
	$AUTOGEN_SUBDIR_MODE to match autogen.sh from gnome-common.

	* mkinstalldirs: Remove, as glib-gettextize now properly adds
	this file to the source tree if it is missing.
	* config.rpath: Remove, as it does not seem to be actually used
	anywhere.

2006-12-22  Daniel Elstner  <daniel.kitta@gmail.com>

	* configure.ac: Use REGEXXER_PKG_PATH_PROG() to locate the
	gtk-update-icon-cache command.
	* pixmaps/Makefile.am (update-icon-cache): Add new target, which
	is invoked as prerequisite of install-data-hook in order to update
	the GTK+ icon theme cache after installation.

2006-12-10  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/main.cc (main): Use gtk_window_set_default_icon_name() to
	have the default window icon looked up in the icon theme, rather
	than explicitely specifying an image filename.  For some reason
	this method has not been wrapped yet.
	(set_default_window_icon): Remove now unused function.
	* src/aboutdialog.cc (AboutDialog::create): For the same reason as
	above, use Gtk::Image::set_from_icon_name() instead of an explicit
	filename to load the application icon.
	* src/globalstrings.h (application_icon_filename): Remove now
	unused string.

2006-12-09  Daniel Elstner  <daniel.kitta@gmail.com>

	* regexxer.desktop.in: Remove a couple of keys and change some
	values to match the latest freedesktop.org desktop-entry-spec.

	* pixmaps/Makefile.am: Install the regexxer application icon
	to $(datadir)/icons/hicolor/48x48/apps as the freedesktop.org
	icon-theme-spec says.

2006-11-21  Daniel Elstner  <daniel.kitta@gmail.com>

	* ui/mainwindow.glade (menuitem_about): Replace the stock item
	reference "regexxer-about" with "gtk-about", now that the latter
	has been added to GTK+.
	* src/main.cc (stock_icon_about): Remove.
	(regexxer_stock_items): Remove "regexxer-about" stock item.
	* pixmaps/Makefile.am (stockimages): Remove stock_menu_about.png
	from list.
	* pixmaps/stock_menu_about.png: Remove file.

2006-11-21  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/filetree.cc (FileTree::on_style_changed): Use the proper
	stock images "file" and "directory" instead of abusing "new" and
	"open", respectively.  These new items have been available since
	GTK+ 2.6.

2006-11-13  Daniel Elstner  <daniel.kitta@gmail.com>

	* src/stringutils.cc (parse_control_char, Util::convert_to_ascii):
	Avoid bitwise operations with possibly signed char values.  Make
	use of explicit casts and unsigned integer literals instead.

2006-11-13  Daniel Elstner  <daniel.kitta@gmail.com>

	* AUTHORS: Change my mail address.

2006-11-13  Daniel Elstner  <daniel.kitta@gmail.com>

	* macros/cxx.m4 (REGEXXER_LINK_EXPORT_DYNAMIC): New macro to
	check for support of the --export-dynamic linker flag.
	* configure.ac: Use the new REGEXXER_LINK_EXPORT_DYNAMIC macro
	to fill in the substituted variable REGEXXER_EXPORT_DYNAMIC.
	* src/Makefile.am (regexxer_LDFLAGS): Substitute the value of
	$(REGEXXER_EXPORT_DYNAMIC) since libglade no longer passes the
	linker flag -Wl,--export-dynamic by default.

2006-10-05  Sven Herzberg  <herzi@gnome-de.org>

	* autogen.sh: use --copy on intltoolize, so modifying
	po/Makefile.in.in doesn't fail for the missing permissions

2005-12-13  Murray Cumming  <murrayc@murrayc.com>

	* autogen.sh: Use --force on intltoolize, because it was 
	complaining about an old Makefile.in.in.
	* configure.ac:
	* src/Makefile.am: Change PKG_CFLAGS/LIBS to REGEXXER_CFLAGS/LIBS 
	because the latest autoconf (or something) complains that PKG_CFLAGS 
	may be undefined. Not sure why, but this fixes it.

2004-07-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/cxx.m4 (REGEXXER_LINK_VERSION_SCRIPT): Rename from
	REGEXXER_CXXLINK_VERSION_SCRIPT() and make the macro language-
	acnostic.  Also, take the name of the output variable to set as
	first parameter instead of hardcoding it.
	(REGEXXER_ARG_ENABLE_WARNINGS): Don't change the current language
	but use AC_LANG_ASSERT() instead to make sure it's C++.  The user
	is required to select the approriate language by himself then, as
	recommended in the autoconf manual.

	* macros/misc.m4 (REGEXXER_LIB_POPT): Make language-acnostic.
	* macros/pcre.m4 (PCRE_CHECK_UTF8): ditto.

	* configure.ac: Reorder a couple of macro invocations and insert
	a call to AC_LANG([C++]).

2004-07-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/main.cc (parse_command_line): Fix the help string of the
	--ignore-case option to match the tool tip of the corresponding
	checkbutton.

2004-07-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/main.cc (parse_command_line): Replace `...' with \"...\" in
	message strings, for consistency with the rest of the application.

2004-07-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.{cc,h} (FileBuffer::find_matches): Add a feedback
	slot parameter and invoke it for every matching line.  The current
	line number and the subject string are passed as arguments to the
	feedback slot.

	* src/filetree.{cc,h} (FileTree::signal_feedback): New signal.
	(FileTree::find_matches_at_path_iter): Pass a feedback slot to
	FileBuffer::find_matches() that forwards to signal_feedback()
	with the fileinfo object bound as third argument.

	* src/mainwindow.{cc,h} (print_location): New handler for the
	feedback signal which prints the location of the match to standard
	output, in the same format as used by 'grep -n'.
	(InitState::feedback): New bool member.
	(MainWindow::initialize): Connect the filetree's signal_feedback
	to print_location if the init state's feedback flag is true.

	* src/main.cc (parse_command_line): Add the --line-number command
	line argument, intended to work just like the grep equivalent.

2004-07-13  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h} (MainWindow::autorun_idle): New method
	which first invokes the file search and the regex search after
	that, unless the user hit the Stop button in between.
	(MainWindow::initialize): Connect Glib::signal_idle() to the new
	autorun_idle() method instead of controller_.find_files.slot().
	(MainWindow::busy_action_leave): Don't reset busy_action_cancel_
	so that autorun_idle() can test this flag to determine whether
	the busy action was cancelled by the user.

2004-07-13  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/pcre.m4 (PCRE_CHECK_UTF8): Make sure the preprocessor
	directives in the test program start in the first column, just
	in case we do hit on some ancient compiler that requires it.

	* macros/misc.m4 (REGEXXER_LIB_POPT): New macro that checks
	whether libpopt and popt.h are available and usable.

	* configure.ac: Use REGEXXER_LIB_POPT().
	* src/Makefile.am (regexxer_LDADD): Add $(POPT_LIBS).

	* src/mainwindow.{cc,h} (InitState): New struct that defines
	the initial state of main window's entry boxes and check buttons.
	(MainWindow::initialize): New method to initialize the UI elements
	with the values defined by a InitState object.

	* src/translation.{cc,h} (initialize_gettext): Remove the call to
	bind_textdomain_codeset().
	(enable_utf8_gettext): New function that calls
	bind_textdomain_codeset() if available.  The separation became
	necessary in order to allow for the command line help message to
	be printed to the console in locale encoding.

	* src/main.cc (parse_command_line): New function which parses the
	command line arguments and returns an InitState object.
	(main): Invoke parse_command_line(), enable_utf8_gettext() and
	MainWindow::initialize() as appropriate.

2004-07-12  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.cc (shell_pattern_to_regex): Handle ']' and '!'
	inside character classes more correctly.

2004-07-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (REGEXXER_CXX_HAS_STD_LOCALE): Remove.  libsigc++ 2
	depends on a proper compiler like g++ 3 anyway, so it make sense
	to require support of std::locale from now on.

	* macros/cxx.m4 (REGEXXER_CXX_HAS_STD_LOCALE): Delete the macro.

	* src/statusline.cc: Get rid of the preprocessor conditionals
	around code that makes use of std::locale.
	* src/stringutils.cc: ditto.

2004-07-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Swap invocations of REGEXXER_ARG_ENABLE_WARNINGS()
	and REGEXXER_CXXLINK_VERSION_SCRIPT(), just in case the additional
	warning flags break the test program used by the latter macro.

0.8:

2004-07-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* NEWS: Update.

2004-07-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade (hbox_file): Increase "spacing" to 9.

2004-07-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/exported-symbols: New file; an ld version script which lists
	the symbols that should be exported explicitely.  Using that makes
	the stripped regexxer binary more than 100k smaller!

	* macros/cxx.m4 (REGEXXER_CXXLINK_VERSION_SCRIPT): New macro to
	test if the linker supports the -Wl,--version-script argument.

	* configure.ac: Call REGEXXER_CXXLINK_VERSION_SCRIPT().

	* src/Makefile.am (dist_noinst_DATA): Distribute exported-symbols.
	(regexxer_DEPENDENCIES): Depend on exported-symbols.
	(regexxer_LDFLAGS): Pass $(REGEXXER_VERSION_SCRIPT) to the linker.

2004-07-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.cc (apply_label_what_markup): Rename from
	apply_label_markup for clarity.

2004-07-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (FileTree::find_matches_at_path_iter): Use
	reference arguments instead of pointers.  Make use of sigc::ref()
	to bind a reference argument to a signal handler.
	(FileTree::replace_matches_at_path_iter): ditto
	(FileTree::save_file_at_iter): Likewise.  Also get rid of the
	on-demand creation of error_list, because it's unnecessary and
	not exception-safe.  The caller is responsible for instantiating
	the MessageList now.

2004-06-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.cc (validate_encoding): Be slightly more picky
	and demand the first and last characters of the encoding string to
	be alpha-numeric.

2004-06-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.cc (validate_encoding): Better don't try to call
	Glib::convert() with identical input and output encodings.  I heard
	the iconv on Solaris doesn't like that idea at all.

2004-06-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.cc (PrefDialog::on_response): Suggest a sync
	to the GConf client when the dialog is closed.

2004-06-29  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade: Remove empty string properties and all
	GtkEntry "invisible_char" properties.  The latter had no purpose
	other than to annoy the translators.

	* ui/prefdialog.glade: ditto.

2004-06-29  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (selection_clipboard): New string constant
	defining the name of the selection to use for the clipboard.
	(MainWindow::on_cut): Use the selection_clipboard constant.
	(MainWindow::on_copy): ditto
	(MainWindow::on_paste): ditto.

2004-06-29  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/controller.{cc,h} (Controller::edit_actions): Rename from
	clip_actions.
	(Controller::erase): Add action.
	(Controller::load_xml): Fetch cut, copy, paste and delete menu
	items from the glade file.

	* src/mainwindow.{cc,h} (MainWindow::on_{cut,copy,paste,erase}):
	Add and implement new signal handlers.
	(MainWindow::connect_signals): Connect the cut, copy, paste and
	erase actions to the new signal handlers.
	(MainWindow::on_filetree_switch_buffer): Enable or disable the
	edit actions based on the editability of the file buffer.

2004-06-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/controller.{cc,h} (Controller): Add an Edit menu, as well
	as a Cut, Copy and Paste menu items.

	* ui/mainwindow.glade: As above, and move Undo and Preferences
	into the Edit menu.

2004-06-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* po/Makevars (XGETTEXT_OPTIONS): Recent intltool now parses the
	Makevars file, thus set this variable to the options we want.

2004-06-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/Makefile.am (global_defines): Get rid of the redundant
	-DREGEXXER_LOCALEDIR=\""$(datadir)/locale"\" definition.

	* src/main.cc (locale_directory): New string constant.
	(main): Replace REGEXXER_LOCALEDIR with locale_directory.

2004-06-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/Makefile.am (global_defines): Add -DGTKMM_DISABLE_DEPRECATED.

	* src/filetree.cc (FileTree::FileTree): Replace the deprecated
	set_sort_column_id() by set_sort_column().
	* src/filetreeprivate.cc
	(FileTree::ScopedBlockSorting::ScopedBlockSorting): ditto
	(FileTree::ScopedBlockSorting::~ScopedBlockSorting): ditto.

	* src/mainwindow.cc (MainWindow::on_go_next): Use scroll_to()
	in place of the deprecated scroll_to_mark().

2004-06-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* pixmaps/Makefile.am (stockimages.h): Strip the directory prefix
	from filenames if present, because of the possibility of automatic
	rule rewriting as done e.g. by SunOS make.

2004-06-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (dist_noinst_DATA): Add po/LINGUAS.

2004-06-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.cc (apply_label_markup): Make use of the <small>
	convenience tag to simplify the markup slightly.

2004-06-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.cc: Include <libglademm/xml.h> instead of the
	whole <libglademm.h> to save a tiny bit of compile time.
	* src/controller.cc: ditto.

	* src/filebuffer.cc: Same here, and also replace <gconfmm.h> by
	<gconfmm/client.h>.
	* src/filetree.cc: ditto
	* src/mainwindow.cc: ditto
	* src/prefdialog.cc: ditto.

2004-06-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.cc (initialize_gettext): Only call
	bind_textdomain_codeset() if it is available.  I do hope there
	aren't any gettext implementations around that perform encoding
	conversion but don't have bind_textdomain_codeset()...

2004-06-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/sharedptr.h (SharedPtr): Add dummy template specializations
	for SharedObject and const SharedObject.  This makes it impossible
	to instantiate a generic SharedPtr<SharedObject>, which would be
	fatal because SharedObject doesn't have a virtual destructor.

2004-06-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/sharedptr.h (SharedObject::refcount_): Change type to long,
	so that a full word will be used on 64 bit machines.
	(SharedPtr): Add a paragraph about operator const void*() to the
	class description.

2004-06-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: Append an XGETTEXT_KEYWORDS = ... line to the
	generated po/Makefile.in.in file.  These flags are picked up
	by intltool-update and passed to xgettext.  Use this feature
	to make xgettext recognize Util::compose() format strings.

2004-06-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (GETTEXT_PACKAGE): Use a plain shell assignment
	plus a separate AC_SUBST([GETTEXT_PACKAGE]) in order to please
	the fucked up intltool-update script.

2004-06-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.h (translate): Add G_GNUC_FORMAT(1) attribute.

2004-06-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::find_add_file): Create the FileInfo
	object in advance before inserting the new row in order to improve
	exception safety.
	(FileTree::find_fill_dirstack): Same here for the DirInfo object.

2004-06-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetreeprivate.{cc,h} (FileTreePrivate::next_match_file):
	Move code from FileTree::next_match_file() here.
	(FileTreePrivate::prev_match_file):
	Move code from FileTree::prev_match_file() here.

	* src/filetree.{cc,h} (FileTree::next_match_file): Remove.
	(FileTree::prev_match_file): Remove.

2004-06-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (FileTree::next_match_file): Replace the
	collapse_stack parameter by a single Gtk::TreeModel::Path pointer,
	because we really don't have to collapse each expanded child row
	explicitely.  Simplify the implementation accordingly.
	(FileTree::prev_match_file): ditto.
	(FileTree::select_next_file): Get rid of the collapse_stack
	container and use a simple Gtk::TreeModel::Path variable instead.

2004-06-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.cc (save_iochannel): Use Gtk::TextBuffer::get_slice()
	rather than get_text().

2004-06-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.cc (substitute_references): Reduce usage of
	Glib::ustring::raw() in favor of native ustring accessor methods.

2004-06-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.{cc,h} (substitute_references): Change return
	type and parameter types to Glib::ustring.  I have no idea as to
	why the interface used std::string in the first place...

	* src/filebuffer.cc (FileBuffer::get_line_preview): Adapt to the
	changed parameter types of Util::substitute_references().
	(FileBuffer::replace_match): ditto.

2004-06-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc (FileBuffer::find_matches): Remove bogus
	comment.

2004-06-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc (FileBuffer::undo_remove_match): Avoid
	decrementing current_match_ since it might point to the start
	of the range.  Also remove the call to remove_tag_current()
	because it does nothing if match_removed_ is set anyway.

2004-06-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade (menuitem_undo): Add accelerator key CTRL-z.

2004-06-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/pcreshell.h: Eliminate the include dependency on the pcre.h
	header.  This requires defining the numeric values of the bit flag
	enums directly, but fortunately these cannot be changed without
	breaking ABI anyway.

	* src/pcreshell.cc: Include pcre.h, and use static_cast<> where
	necessary to allow for Pattern::pcre_ to be declared as void*.

2004-06-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (MainWindow::set_title_filename): Concatenate
	with the string literal PACKAGE_NAME at compile time.

2004-06-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (FileTree::find_add_file): New method.
	Move the actual file-adding parts from find_check_file() here.
	(FileTree::find_recursively): Move the file testing previously
	done in find_check_file() into this method in order to make the
	recursion more obvious.  Also handle Glib::Dir exceptions right
	here, so that the caller doesn't have to handle them.
	(FileTree::find_files): Remove the try/catch block enclosing the
	call to find_recursively().  We no longer need to do it twice.
	(FileTree::find_check_file): Remove.

2004-06-03  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::calculate_file_index): Simplify.

2004-06-02  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc (FileBuffer::create_with_error_message):
	Minor code rearrangement.

2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::find_files): Slightly clarify
	the call to Gtk::TreePath's constructor.

2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (ACLOCAL_AMFLAGS): Remove because automake-1.7
	complains about the undefined variable ${ACLOCAL_FLAGS} even
	though it's a shell substitution.

	* configure.ac: Use AC_SUBST() to set up ACLOCAL_AMFLAGS here
	instead, so automake-1.7 won't notice.

2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::expand_and_select): Replace the
	calls to TreeSelection::select() and TreeView::scroll_to_row()
	by a single TreeView::set_cursor() call.
	(FileTree::find_files): After the tree has been filled in, the
	first call to expand_and_select() doesn't always scroll to the
	selected row (no matter if set_cursor() or scroll_to_row() is
	used there).  Explicitely scroll to the first row after filling
	the tree to work around this problem.

2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* regexxer.desktop.in (Categories): Prepend GNOME to the list.

2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.cc (compose_impl): Remove superfluous namespace
	prefix.

2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.cc (compose): Optimize and reduce executable
	size by replacing std::vector<Glib::ustring> by a POD array of
	pointers to the Glib::ustring arguments.

2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::load_file_with_fallback): Get the
	UTF-8 encoded basename from the filename column of the tree model
	instead of stripping and converting fileinfo->fullname all over
	again.

2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.cc (load_file): Move the assignment of 'false' to
	fileinfo->load_failed to the very end of the function, because
	there is a tiny chance that one of the other assignments throws
	an exception.

2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::find_increment_file_count): There
	is no need for the reverse_iterator abstraction here -- just use
	plain iterators and decrement them.

2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::prev_match_file): As it turns out
	keeping track of the parent iterator does have some merit.  While
	there was nothing wrong with the previous change, I discovered
	that the parent's children can be indexed in order to obtain an
	iterator pointing to the previous row.  At least for deep trees
	this is likely to be faster than resolving the whole path via
	Gtk::TreeModel::get_iter().

2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::prev_match_file): There is no need to
	keep track of the parent iterator; just use Gtk::TreePath::size()
	and TreePath::up().  Also use TreePath::push_back() instead of the
	deprecated TreePath::append_index().

2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (FileTree::find_matches_at_path_iter):
	Rename from find_matches_at_iter(): add a path parameter and
	use it instead of obtaining the path from the iter argument.
	(FileTree::replace_matches_at_path_iter): Rename from
	replace_matches_at_iter(): add a path parameter and use it.
	(FileTree::find_matches): Use TreeModel::foreach() rather than
	foreach_iter() in order to gain a minor performance improvement
	by taking advantage of the supplied Gtk::TreePath.
	(FileTree::replace_all_matches): ditto.

2004-06-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (FileTree::on_treestore_rows_reordered):
	New signal handler which updates the match boundaries defined by
	the [path_match_first_, path_match_last_] range.  Previously this
	has been handled in on_treestore_sort_column_changed(), which is
	unfortunately called before the actual sorting takes place.
	(FileTree::on_treestore_sort_column_changed): Remove.
	(FileTree::FileTree): Connect to signal_rows_reordered() instead
	of signal_sort_column_changed().

2004-05-31  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetreeprivate.{cc,h} (FileTreeColumns::instance): New
	static method which replaces the filetree_columns() function,
	for consistency with RegexxerTags::instance().
	(filetree_columns): Remove.

	* src/filetree.cc: Replace all instances of filetree_columns()
	with FileTreeColumns::instance().

2004-05-31  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/aboutdialog.glade (label_url): Get rid of the prefixed U+202D
	LEFT-TO-RIGHT OVERRIDE since Pango gets that right on its own now.
	(label_author_who): ditto

	* ui/mainwindow.glade (button_multiple): ditto
	(button_caseless): ditto.

2004-05-31  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade (button_multiple): Set to active by default.

2004-05-31  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/statusline.cc (StatusLine::set_file_encoding): Work around
	the GTK+ bug with right-aligned labels by calling check_resize(),
	just as already done in CounterBox::set_index().  Note that the
	status bar is right-aligned only in RTL locales.

2004-05-31  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.cc (AboutDialog::create): If no translation is
	available for the current locale, replace "translator-credits" by
	some more user-friendly text.

2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::color_modified_): Use "Accent Red"
	from the basic GNOME 32-color palette instead of rgb.txt "red".

	(FileTree::text_cell_data_func): Set the text style to "oblique"
	in addition to painting in red color if the file was modified.

2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/pcreshell.cc (Pattern::get_substring_bounds): Sanity-check
	for index >= 0 too.

2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (MainWindow::on_conf_value_changed): Remove
	"using namespace Gtk" directive which became pointless after the
	last change.

2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* regexxer.schemas.in (override_direction): Remove configuration
	option because it doesn't seem to be necessary anymore.  That is,
	the current GTK+ release gets the direction of Latin text in RTL
	locales right now.

	* src/globalstrings.h (conf_key_override_direction): Remove.
	* src/mainwindow.cc (MainWindow::on_conf_value_changed): Remove
	the code that handles the "override_direction" config option.
	* src/prefdialog.{cc,h} (PrefDialog): ditto.
	* ui/prefdialog.glade (button_override_direction): Remove.

2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc (FileBuffer::find_matches): Get rid of an
	unused main_context variable plus initialization code.  Whoa,
	this ancient piece of code must have been lurking here for at
	least a year without being used.  Unfortunately g++ didn't warn
	about it since the ctor/dtor might have had side effects...

2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: In the regex used to extract version numbers, avoid
	any use of quantifiers other than * for maximum portability.

	* macros/pcre.m4 (PCRE_CHECK_VERSION): Same here, and also be more
	forgiving about extra characters possibly following the version
	number.

2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/misc.m4 (REGEXXER_PKG_PATH_PROG): Replace AC_MSG_ERROR()
	by AC_MSG_FAILURE(), and add an autoconf-time check to make sure
	all necessary arguments are specified.

	* macros/pcre.m4: Replace AC_MSG_ERROR() by AC_MSG_FAILURE(), and
	add a few redirections of stderr to the config.log file descriptor
	where appropriate.

2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetreeprivate.h (FileTreePrivate::filetree_columns):
	Remove the G_GNUC_CONST attribute since in this function's case
	it doesn't gain us anything anyway.

	* src/translation.h (translate): Use G_GNUC_PURE rather than
	G_GNUC_CONST because the function depends on global memory.

2004-05-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/pcreshell.cc (Pattern::match): Use the symbolic constant
	PCRE_ERROR_NOMATCH instead of comparing with -1 directly.

2004-05-29  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade (button_preferences): Remove tool button.
	I'm not yet convinced that the "Quit" button should be removed
	too, because I like it large and easy to hit on :)

	* src/controller.cc (Controller::load_xml): No longer load
	"button_preferences" from the glade file.

2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/misc.m4 (REGEXXER_PKG_PATH_PROG): There is no need to
	pass the [not found] argument to AC_PATH_PROG, since the default
	action is just right.
	* macros/pcre.m4 (PCRE_CHECK_VERSION): ditto.

2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (ACLOCAL_AMFLAGS): Add ${ACLOCAL_FLAGS} as
	recommended by James Henstridge.

2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (install-schemas): Don't use $^ since it probably
	isn't portable.
	(uninstall-schemas): ditto.

2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (PCRE_CHECK_VERSION): Bump version requirement to
	libpcre 4.0.  Apparently the code required this version for quite
	some time now, but without configure checking for it.

2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/pcreshell.cc (Pattern::Pattern): Let's be paranoid and
	use g_new0() rather than plain g_new() to allocate ovector_.
	(Pattern::get_substring_bounds): More paranoia: assert that
	the index argument is within the allowed range.
	(Pattern::get_substring): Call get_substring_bounds() to get the
	boundary offsets in order to take advantage of the error checking.

2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.cc (convert_to_ascii): Replace non-ASCII
	characters by octal escapes rather than just a question mark.

2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc (RegexxerTags::instance): Remove G_GNUC_CONST
	because it causes problems on PPC, and doesn't have any effect in
	this particular case anyway.

2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h} (MainWindow::get_folder_fullname): New
	method that expands the entered folder name and converts it to
	filename encoding.  An error message is displayed to the user
	if the conversion fails.
	(MainWindow::on_select_folder): Use get_folder_fullname().
	(MainWindow::on_find_files): ditto.

2004-05-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.{cc,h} (expand_pathname): Operate directly in
	filename encoding since all callers need to convert one way or
	the other anyway.  Change type of parameter and return value to
	std::string accordingly.
	(shorten_pathname): ditto.

	* src/mainwindow.cc (MainWindow::MainWindow): Reverse order of
	the calls to filename_to_utf8_fallback() and shorten_pathname().
	(MainWindow::on_select_folder): ditto
	(MainWindow::on_find_files): ditto.

	* src/mainwindow.{cc,h} (MainWindow::set_title_filename): Change
	parameter type to std::string and call filename_to_utf8_fallback().
	Also remove the default argument from the declaration, and get rid
	of the logic that handles the empty string.
	(MainWindow::MainWindow): Call window_->set_title() directly in
	order to set the default title, instead of passing an empty string
	to set_title_filename().
	(MainWindow::on_filetree_switch_buffer): ditto.

2004-05-27  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.cc (filename_to_utf8_fallback): On failure,
	don't fall back to the locale encoding anymore but straight to
	plain ASCII.  Thus from now on, this function will never throw
	for errors of type ConvertError::ILLEGAL_SEQUENCE.  Also cover
	the new G_FILENAME_ENCODING variable in the warning message.

	* src/filetree.cc (FileTree::find_files): Remove the explicit
	handling of Glib::ConvertError.

2004-05-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* regexxer.schemas.in: Use colors from the basic GNOME 32-color
	palette for the match_color and current_match_color default values.

2004-05-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.cc (apply_modifiers): Validate the UCS-4 code
	point returned by Unicode::tolower() or Unicode::totitle() before
	appending it to the string.  This is necessary because for example
	converting U+00DF to title case is an invalid operation.

2004-05-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.cc (compose_impl): Print a warning message to
	the console if the format string contains an invalid substitution,
	rather than just silently ignoring the error.  This is mainly of
	importance to translators, as it provides them some feedback if
	they get it wrong.

2004-05-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (regexxer_create_file_tree): Move to anonymous
	namespace.  Not that it matters much, but I like it this way.
	* src/statusline.cc (regexxer_create_status_line): ditto.

2004-05-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::FileTree): Remove superfluous
	namespace qualification.

2004-05-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: Avoid using postfix operators on subexpressions
	in the regex used to extract version numbers.  This makes the
	expression both simpler and more portable.
	* macros/pcre.m4 (PCRE_CHECK_VERSION): ditto.

2004-05-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/pcre.m4 (PCRE_CHECK_VERSION): Strip "-L/usr/lib" from
	PCRE_LIBS if necessary.  Strip "-I/usr/include" from PCRE_CFLAGS
	too -- although not required on Debian, it's better not to rely
	on this.

	* autogen.sh: Standard POSIX regexps suck: according to the sed
	documentation, both "\?" and "\+" are GNU extensions.  Replace by
	"\{0,1\}" and "\{1,\}", respectively.
	* macros/pcre.m4 (PCRE_CHECK_VERSION): ditto.

2004-05-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (MainWindow::on_find_files): Minor coding style
	modifications.

2004-05-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (MainWindow::on_select_folder): Simplify the
	code: with the new FileChooser we no longer have to handle the case
	of selecting a file instead of a directory.

2004-05-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.h (ErrorBinaryFile): New exception class.

	* src/fileio.cc (load_iochannel): Throw ErrorBinaryFile if the
	input stream contains '\0' bytes, rather than just returning a
	null pointer.
	(load_file): Throw ErrorBinaryFile if the file could not be
	loaded in either of the specified encodings.

	* src/filetree.cc (FileTree::load_file_with_fallback): Handle
	the ErrorBinaryFile exception.

2004-05-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::replace_all_matches): Substitute
	Gtk::TreeIter with Gtk::TreeModel::iterator for consistency.

2004-05-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/undostack.cc (UndoStack::do_undo): Don't create a temporary
	copy of the pulse slot since libsigc++2 allows calling const slots.

2004-05-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc: Replace a couple of explicit TreePath(iter)
	conversions by simple assignments.
	(FileTree::replace_all_matches): Make sure path_match_first_
	points to the first file that still has matches after a replace
	operation was interrupted.
	(FileTree::replace_matches_at_iter): Remove the assertion that
	FileBuffer::get_match_count() must return 0 after returning from
	FileBuffer::replace_all_matches(), because the operation might
	have been interrupted.

2004-05-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade (entry_preview): Set "can_focus" to False.

2004-05-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc: Break apart a couple of uber-long lines.

2004-05-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.cc (package_title): New string constant which
	defines the package title string plus surrounding markup.
	(AboutDialog::create): Use the separated package_title constant.

	* src/aboutdialog.{cc,h} (AboutDialog::create): Change the return
	type to std::auto_ptr<Gtk::Dialog> because copying-destroys-source
	is just what we want.   Calling release() to achieve exactly that
	was a silly idea to begin with.

2004-05-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/aboutdialog.glade (label_debian_*): Remove.  The Debian
	package of regexxer is not the only one out there, and I cannot
	list all of them in the about dialog.  Sorry Ross :/
	(label_translator_{what,who}): Give credit to the translator(s)
	for the user's locale as listed in the translation of the string
	"translator-credits".
	(label_url): Get rid of the custom SelectableLabel widget class.
	The only feature provided by the custom widget was tab-navigation
	to labels -- I figured one can simply use C-Tab to do just that.
	(label_author_who): ditto
	(label_translator_who): ditto.

	* src/aboutdialog.cc (SelectableLabel): Remove custom widget.
	(AboutDialog::create): Acommodate to glade file modifications.

2004-05-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (ACLOCAL_AMFLAGS): No need to explicitely specify
	$(top_srcdir)/ in the directory name because the aclocal rule
	changes to that directory anyway.  This also avoids confusing
	recent releases of gettextize.

2004-05-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (CONFIG_STATUS_DEPENDENCIES): AC_SUBST() this
	variable with '$(top_srcdir)/po/LINGUAS' for utmost perfection ;-)

2004-05-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade (toolbar): Make glade-2 replace its old-style
	magic "class names" with proper GtkToolItem and derivated elements.
	Note that you'll need to apply the patch for #142761 in order to
	make changing the toolbar style at runtime work.
	(combo_pattern): Replace deprecated GtkCombo with GtkComboBoxEntry.

	* src/controller.cc (ControlItem::add_widgets): Allow for both
	Gtk::ToolButton and Gtk::Button widgets, and detect at runtime
	which type to use.

	* src/mainwindow.cc (MainWindow::load_xml): Due to #142755, we
	currently have to use get_child() on combo_pattern to gain access
	to the entry widget.  Also, a hack was necessary to attach the
	tooltip to the entry without instantiating another Gtk::Tooltips
	object.

	* src/mainwindow.h: Remove a couple of unused forward declarations.

2004-05-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.cc (PrefDialog::on_response): Invoke
	Gtk::Widget::activate() instead of directly calling the handler
	on_entry_fallback_activate().  Dunno why I didn't see this before.

2004-05-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.cc (get_toolbar_style_index): Return -1 rather
	than 0 on failure.

2004-05-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/prefdialog.glade (button_textview_font): Replace custom font
	selection button with the new GtkFontButton.
	(button_match_color): Replace custom color selection button with
	the new GtkColorButton.
	(button_current_color): ditto.
	(combo_toolbar_style): Rename from option_toolbar_style.  Use the
	new GtkComboBox widget instead of GtkOptionMenu.

	* src/prefdialog.{cc,h} (FontSelectionButton): Remove.
	(ColorSelectionButton): Remove.
	(PrefDialog): Accomodate to changes in the glade file.
	(on_textview_font_set): Rename from on_textview_font_selected().
	(on_match_color_set): Rename from on_match_color_selected().
	(on_current_color_set): Rename from on_current_color_selected().

2004-05-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (MainWindow::load_xml): Make the folder button
	grab focus because otherwise the Preferences tool button will be
	focused after startup.  I blame libglade -- its whole tool button
	handling seems to be somewhat shaky.

2004-05-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (ALL_LINGUAS): Use `cat "$srcdir/po/LINGUAS"` to
	assign this variable, so that there is only one file to edit when
	adding a new language.

2004-05-17  Duarte Loreto <happyguy_pt@hotmail.com>

	* configure.ac: Added Portuguese (pt) to ALL_LINGUAS.

2004-05-17  Christian Rose  <menthos@menthos.com>

	* configure.ac: Added "sv" to ALL_LINGUAS.

2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (dist_noinst_SCRIPTS): Remove config.rpath because
	automake distributes this file automatically.  List intltool-*.in
	files in the separate variable dist_intltool.
	(dist_noinst_DATA): List all *.m4 files in the separate variable
	dist_macros.  Move $(dist_intltool) from dist_noinst_SCRIPTS here
	because the .in files aren't scripts.

2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* regexxer.desktop (Name): Use _Name to make it translatable, and
	change the string to "regexxer Search Tool".  Idea from Dag Wieers.

2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc: Mark all const_cast<> work-arounds for the
	Gtk::TextIter API bug with // XXX comments.
	(FileBuffer::get_match_index): Get rid of libstdc++-v2 work-around.

	* src/filebuffer.h (FileBuffer): Get rid of the friend declarations
	that were added to work around a GCC 2.95 deficiency.
	* src/filetree.h (FileTree): ditto
	* src/mainwindow.h (MainWindow): ditto.

2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (install-schemas): Simplify.  Since regexxer.schemas
	is now a generated file it is always placed in the build directory.
	(uninstall-schemas): Likewise.  Also add $(schemas_DATA) to the
	prerequisites so that the rule will work with a clean tree.  Having
	make uninstall generate files is a little awkward, but I cannot see
	a way around that :/

2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (CLEANFILES): List build-time generated files
	$(desktop_DATA) and $(schemas_DATA).
	(DISTCLEANFILES): List configure-time generated files
	intltool-extract, intltool-merge and intltool-update.

2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: Execute glib-gettextize and intltoolize.

	* configure.ac: Call AC_PROG_INTLTOOL().  Assign ALL_LINGUAS and
	GETTEXT_PACKAGE, and do an AC_SUBST() of the latter.
	(AM_GNU_GETTEXT): Use AM_GLIB_GNU_GETTEXT() instead.

	* Makefile.am (dist_desktop_DATA): Remove the dist_ prefix,
	introduce desktop_in_files, and add the @INTLTOOL_DESKTOP_RULE@
	substitution in order to make regexxer intltool-aware.
	(dist_schema_DATA): Likewise for the GConf schemas file.
	(dist_noinst_SCRIPTS): Add intltool-extract.in, intltool-merge.in
	and intltool-update.in.

	* regexxer.desktop: Rename to regexxer.desktop.in, use _Comment
	instead of Comment, and remove the manually inserted de and dk
	translations.

	* regexxer.schemas: Rename to regexxer.schemas.in.

2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetreeprivate.cc (collatekey_sort_func): Use libstdc++-v3
	method std::string::compare() instead of memcmp() for sub-string
	comparison, since libsigc++2 depends on gcc >= 3 anyway.

2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (FileTree::FileTree): Make the file column
	take up available space with set_expand(true).

2004-05-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AC_INIT): Bump version to 0.8.
	(PKG_CHECK_MODULES): Require gconfmm-2.6 >= 2.6.1.
	(REGEXXER_GCONFMM_VALUE_HACK): Remove.

	* src/miscutils.{cc,h}
	(check_for_broken_gconfmm_value_changed): Remove.
	(has_broken_gconfmm_value_changed): Remove.

	* src/main.cc (main): Remove call to gconfmm bug runtime test.

	* src/filebuffer.cc (on_conf_value_changed): Remove hack.
	* src/filetree.cc (on_conf_value_changed): ditto
	* src/mainwindow.cc (on_conf_value_changed): ditto.
	* src/prefdialog.{cc,h} (on_conf_value_changed_hack): Remove.

2004-05-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (on_select_folder): Use Gtk::FileChooserDialog
	instead of the old Gtk::FileSelection.

2004-05-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/prefdialog.glade: Removes the <requires lib="gnome"/> line
	that was inserted by buggy glade-2.

2004-05-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc: Replace instances of `...' in message strings
	with "...".  Since the translator is supposed to use double-quotes
	it would be confusing to use single quotes in the original string.
	* src/mainwindow.cc: ditto
	* src/prefdialog.cc: ditto.

2004-05-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade (button_find_files): Use a custom image and
	label instead of a stock item as button content, so that it can be
	more clearly distinguished from button_find_matches.

2004-05-13  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade: Reintroduce tearoff menu items by manually
	inserting the necessary XML elements.

2004-05-12  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.cc: Remove the libgnome-vfsmm code already enclosed
	by #if 0 ... #endif.  It's all in the CVS history anyway.
	* src/filetree.cc: ditto.

2004-05-12  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/imagebutton.{cc,h}: Remove files as they're no longer used.
	* src/Makefile.am (regexxer_SOURCES): Remove imagebutton.{cc,h}.

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/globalstrings.h (glade_mainwindow_filename): New string.

	* src/mainwindow.{cc,h}: Use libglademm to load the UI at runtime,
	and make the actual Gtk::Window a member of class MainWindow.
	Remove the old UI creation code.

	* src/controller.{cc,h} (Controller::load_xml): The menu bar,
	toolbar and action area is now contained in mainwindow.glade,
	and thus this new method wholly replaces the old code which
	generated those widgets.
	(ControlItem::add_widgets): New helper method intented to help
	reducing the code size.

	* src/filetree.cc (regexxer_create_file_tree): New function.
	* src/statusline.cc (regexxer_create_status_line): New function.

	* src/main.cc (main): Access the Gtk::Window by using the new
	accessor method Regexxer::MainWindow::get_window().

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/mainwindow.glade: New file defining the main window's UI.
	* ui/Makefile.am (dist_glade_DATA): Add mainwindow.glade.

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/globalstrings.h (glade_aboutdialog_filename): New string.

	* src/aboutdialog.{cc,h}: Use libglademm to load the dialog UI
	at runtime, and replace class AboutDialog by a single create()
	function in namespace Regexxer::AboutDialog.  Remove the old
	UI creation code.

	* src/mainwindow.{cc,h} (MainWindow::about_dialog_): Change type
	to std::auto_ptr<Gtk::Dialog> since AboutDialog no longer exists.
	Replace all references to AboutDialog in the implementation too.
	(MainWindow::on_about): Make use of the new AboutDialog::create().

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui/aboutdialog.glade: New file defining the UI of the about
	dialog.
	* ui/Makefile.am (dist_glade_DATA): Add aboutdialog.glade.

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.cc (PrefDialog::load_xml): Remove superfluous
	sub-block.

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.cc (regexxer_create_font_selection_button):
	Add missing parameters to the function signature.
	(regexxer_create_color_selection_button): ditto.

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/Makefile.am (global_defines): Define REGEXXER_PKGDATADIR.

	* src/globalstrings.h (glade_prefdialog_filename): New string.

	* src/prefdialog.{cc,h}: Use libglademm to load the dialog UI
	at runtime, and make the actual dialog widget a data member of
	class PrefDialog.  Remove the old UI creation code.

	* src/mainwindow.cc (MainWindow::on_preferences): Use the new
	PrefDialog::get_dialog() accessor to get the actual widget.

2004-05-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* ui: New directory for glade XML files.
	* ui/.cvsignore: New file.
	* ui/Makefile.am: New file.
	* ui/prefdialog.glade: New file defining the UI of the preferences
	dialog.

	* configure.ac (PKG_CHECK_MODULES): Check for libglademm-2.0.
	(AC_CONFIG_FILES): Add ui/Makefile.

	* Makefile.am (SUBDIRS): Add ui.

0.7:

2004-05-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* AUTHORS: Add Murray Cumming.
	* NEWS: Update.

2004-05-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.{cc,h} (sgettext): Ditch the sgettext() approach,
	because it's not likely to be supported by libglade when regexxer
	starts using that at some point.  Until now there are no ambiguous
	messages in regexxer, and we can switch back when the need arises.

	* src/controller.cc: Remove the disambiguing "...|" prefix from all
	translatable messages.
	* src/filebuffer.cc: ditto
	* src/filetree.cc: ditto
	* src/mainwindow.cc: ditto
	* src/prefdialog.cc: ditto
	* src/statusline.cc: ditto.

2004-05-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/main.cc (stock_icon_info): Rename to 'stock_icon_about',
	as it should have been called in the first place.  Apparently
	I misinterpreted a change in the German GNOME translation as
	project-wide switch to a new name for "About".  Now I realize
	why Murray changed that string a while ago...

	* src/controller.{cc,h} (Controller::info): Rename to 'about'.
	* src/mainwindow.{cc,h} (MainWindow::on_info): Rename to 'on_about'.

2004-05-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.cc (compose_impl): Simplify the loop in order to
	avoid the need for look-ahead via Util::next().

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.cc (compose_impl): Apparently there's no need
	to use Glib::Unicode::isdigit() since digit_value() is defined to
	return -1 for non-digits anyway.

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.{cc,h} (compose): Add a set of overloaded utility
	functions to be used to compose a text message from a format string
	and up to three string arguments.  This allows the translator to
	arrange the arguments as required by the language.

	* src/filetree.cc (FileTree::save_file_at_iter): Make use of
	Util::compose() instead of separately piecing strings together.
	Also, translate the format string via gettext().
	(load_file_with_fallback): ditto
	* src/mainwindow.cc (MainWindow::on_exec_search): ditto
	* src/prefdialog.cc (PrefDialog::on_entry_fallback_activate):
	ditto.

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/miscutils.cc: Compile the runtime check for that gconfmm
	bug only if REGEXXER_ENABLE_GCONFMM_VALUE_HACK is defined, as it
	currently always is.

	* src/main.cc (main): Test for REGEXXER_ENABLE_GCONFMM_VALUE_HACK
	around the call to Util::check_for_broken_gconfmm_value_changed().

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/translation.{cc,h} (initialize_gettext): New utility
	function to take care of setting up the text domain.

	* src/main.cc (main): Use initialize_gettext().

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* ABOUT-NLS: Add missing file to fix the build.

	* src/aboutdialog.cc: Translate all user-visible strings except
	for those instances where positional parameter substitution is
	required for proper results.  I'll deal with those ones later.
	* src/controller.cc: ditto
	* src/filebuffer.cc: ditto
	* src/filetree.cc: ditto
	* src/main.cc: ditto
	* src/mainwindow.cc: ditto
	* src/pcreshell.cc: ditto
	* src/prefdialog.cc: ditto
	* src/statusline.cc: ditto.

	* src/translation.h (N_): #define to gettext_noop(s) rather than
	simply (s).  This doesn't actually make a difference but I think
	the intent is clearer that way.

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	Add support for message translation via gettext.

	* po: New directory, containing all the gettext stuff.
	* config.rpath: New file added by gettextize.
	* mkinstalldirs: ditto.

	* Makefile.am (dist_noinst_SCRIPTS): Add config.rpath.

	* autogen.sh: Don't remove mkinstalldirs because it's not
	installed by automake --add-missing, and gettext uses it.
	(WARNINGS): Comment-out in order to reduce the flood of warnings
	triggered by all the old m4 code in system macros.

	* configure.ac: Invoke AM_GNU_GETTEXT().
	(AC_CONFIG_FILES): Add po/Makefile.in.

	* NEWS: Update.

	* src/translation.{cc,h}: New files implementing gettext() support.
	* src/statusline.cc: Translate the label of the "Stop" button.
	* src/main.cc (main): Add code to initialize the text domain.

	* src/Makefile.am (regexxer_SOURCES): Add translation.{cc,h}.

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/miscutils.{cc,h} (check_for_broken_gconfmm_value_changed):
	Implement a truly evil run-time check for that gconfmm bug.
	Although this one is already fixed in CVS, there's no release out
	yet and for now I wouldn't like regexxer to depend on it anyway.
	(has_broken_gconfmm_value_changed): Provide an accessor function
	to the global flag indicating whether gconfmm is broken.

	* src/main.cc (main): Call check_for_broken_gconfmm_value_changed().

	* configure.ac (REGEXXER_GCONFMM_VALUE_HACK): Make this macro
	call has_broken_gconfmm_value_changed() to determine whether the
	work-around has to be applied.

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc (FileBuffer::replace_match): Invoke on_insert()
	directly in case of empty-by-empty replace in order to avoid this
	nasty special-case where a FileBufferActionRemoveMatch object in
	the stack is not followed by either an insert or an erase action.
	This finally fixes the last one of undo system bugs known to me.

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AC_INIT): Bump version number to 0.7.

2004-05-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/*.{cc,h}: Apply a minor change of my coding style.  From
	now on, I put a space between a keyword and the following opening
	parenthesis.  That is, after for, while, if, switch and catch, with
	sizeof being the only (I think rather intuitive) exception.

	* src/globalstrings.h: New file containing (you guess it) global
	string definitions.  Currently these are mostly fully qualified
	GConf key names.

	* src/configdata.{cc,h}: Delete, as we're now using GConf.

	* src/Makefile.am (regexxer_SOURCES): Modify accordingly.

	* src/aboutdialog.cc: Prefix URL and mail strings with U+202D
	LEFT-TO-RIGHT OVERRIDE in order to avoid the current mess in
	RTL environments.
	(ContributorBox::ContributorBox): Escape the 'what' string by
	passing it to Glib::Markup::escape_text(), just in case.

	* src/controller.cc (add_widget_button): Reverse parameters
	for consistency with the other helper functions.
	(Controller::create_action_area): Make the implementation reflect
	this change.

	* src/filebuffer.{cc,h} (RegexxerTags::on_conf_value_changed):
	New signal handler listening to GConf value changes.
	(RegexxerTags::instance): Return the RefPtr<> by value rather
	than by reference, because as it turns out the extra indirection
	largely offsets the advantage gained by avoiding one additional
	ref/unref cycle.
	(FileBuffer::set_match_color): Remove; this setter is no longer
	necessary since we're now listing to GConf changes and apply them
	immediately.
	(set_current_color): ditto
	(get_match_color): ditto
	(get_current_color): ditto.
	(FileBuffer::weak_undo_stack_): Introduce a new data member used to
	record all UndoAction objects that reference MatchData instances.
	This is unfortunately necessary in order to be able to remove
	UndoActions without actually doing the undo operation, for instance
	when running find_matches() again.
	(notify_weak_undos): New function dealing with the weak references.
	(undo_add_weak): ditto
	(undo_remove_weak): ditto.
	(signal_match_count_changed): Remove the count argument as this
	information can easily be obtained by using the appropriate getter.
	(create_with_error_message): Invoke Unicode::ispunct() instead of
	testing for '.' explicitely.
	(is_freeable): Return true only if there are no UndoAction objects
	around referencing this FileBuffer.
	(find_matches): Call notify_weak_undos() to get rid of any
	references by UndoAction objects to this FileBuffer.
	(get_line_preview): Make this method strongly exception-safe.
	(on_apply_tag): New virtual method implementation, needed in order
	to filter tag apply operations caused by inserting from clipboard.
	This avoids confusion caused by highlighting text as match which
	is not recorded as such internally.

	* src/undostack.{cc,h}: Provide a way to interrupt a running undo
	operation (i.e. by clicking the 'Stop' button in the GUI).
	(do_undo): Add a slot parameter for this purpose.
	(undo): ditto.

	* src/filebufferundo.{cc,h} (do_undo): Make use of the new slot
	parameter in order to allow for interuption of the undo process.
	(FileBufferActionRemoveMatch): Make use of the weak notification
	mechanism now provided by FileBuffer.

	* src/fileshared.h (MatchData::get_match_length): Remove this
	pointless accessor function.

	* src/fileshared.cc (MatchData::~MatchData): Be extra careful
	and remove the quark pointing to the MatchData instance from the
	mark object.

	* src/filetree.{cc,h} (FileTree::on_conf_value_changed): New
	signal handler listening to GConf value changes.
	(set_fallback_encoding): Remove this now pointless accessor.
	(get_fallback_encoding): ditto.
	(expand_and_select): Get rid of compatibility code for GTK+ < 2.2.
	(on_buffer_match_count_changed): Adapt to the changes made to
	FileBuffer::signal_match_count_changed.

	* src/filetreeprivate.cc (collatekey_sort_func): Use std::memcmp()
	instead of std::strcmp() as the former allows for inlining of the
	string operation by gcc.
	(FileTree::BufferActionShell::do_undo): Make use of the new slot
	parameter in order to allow for interuption of the undo process.

	* src/main.cc (set_default_window_icon): New name, formerly
	regexxer_set_window_icon().  Replace the pixbuf list stuff with
	a simple call to Gtk::Window::set_default_icon_from_file().
	(trap_gconf_exceptions): New global exception handler callback,
	invoked whenever an exception escapes from a C++ handler of
	a GObject signal.  Our particular handler is used to filter any
	Gnome::Conf::Error exceptions, thus in essence ignoring them.
	This way we don't need to deal with exceptions in each handler
	of the GConf "value_changed" signal.
	(initialize_configuration): New function to be invoked by main()
	in order to load the initial configuration values.  By emitting
	an artificial "value_changed" signal for each entry in regexxer's
	GConf directory, the need for separate initialization code for
	each key is neatly avoided.
	(main): Accomodate the changes listed above.

	* src/mainwindow.{cc,h} (MainWindow::on_conf_value_changed):
	New signal handler listening to GConf value changes.
	(on_preferences): Remove all the code dealing with individual
	configuration values, since we're now using a decentralized change
	notification approach instead.
	(load_configuration): Ditch this.
	(save_configuration): ditto.
	(confirm_quit_request): Honor the fact that the new GTK+ file
	selector doesn't append '/' to directories anymore.  This bug
	is quite annoying and should have been fixed months ago :/
	Also widen the dialog's default size to 400 pixels.
	(on_buffer_match_count_changed): Remove, there's no need to
	listen for this on the FileBuffer because the FileTree is
	reflecting these changes anyway.
	(on_buffer_bound_state_changed): ditto.
	(on_bound_state_changed): Because there's only one now, rename
	from on_filetree_bound_state_changed().
	(on_filetree_match_count_changed): Take care of the FileBuffer
	match count as well.
	(on_go_next): Replace the 0.2 delta passed to scroll_to_mark()
	with 0.125, as the latter looks nicer to my eyes and also happens
	to be a 'round' number in base 2.
	(on_undo): Accomodate the changes made to the UndoAction classes
	in order to allow for interruption of the running undo process.
	Also instantiate a BusyAction object for this purpose.
	(undo_stack_clear): New method.
	(set_title_filename): Replace the plain '-' by U+2013 EN DASH.

	* src/miscutils.{cc,h} (gtk_version_at_least): Remove since it's
	no longer used.

	* src/pcreshell.{cc,h}: To my astonisment I found out that the
	source of my constant trouble with libpcre and UTF-8 text was
	caused by pcre_study() alone!  The great thing is of course that
	simply not using that silly function is all that's needed to get
	rid of this constant source of mayhem.
	(escape_non_ascii): Remove, since no longer needed.
	(translate_to_char_offset): Get rid of this one too.
	(byte_to_char_offset): New little helper function.
	(check_for_single_byte_escape): The "\C" escape sequence seems
	to be only thing we still have to take care of manually.  This
	particular sequence matches a single byte even of a multi-byte
	character, and thus is likely to cause hell to break loose.
	(Pattern::pcre_extra_): Remove.
	(Pattern::Pattern): Get rid of the pcre_study() call, and
	make use of the new check_for_single_byte_escape() function.
	(Pattern::~Pattern): No need to free pcre_extra_ anymore.
	(Pattern::match): Throw an exception if the regular expression
	exceeds the recursion and backtracking limit of libpcre.
	(CompileOptions): Implement the remaining bit manipulation
	operators for completeness.
	(MatchOptions): ditto.

	* src/prefdialog.{cc,h} (get_toolbar_style_index): New helper
	function.
	(FontSelectionButton::set_selected_font): Take the font name
	rather than a Pango::FontDescription object as parameter.
	(get_selected_font): Likewise for the return type.
	(PrefDialog::button_direction_): New Gtk::CheckButton member,
	allowing users of RTL environments to override the direction
	of regexxer's file editor alone.
	(on_conf_value_changed): New signal handler listening to
	GConf value changes.
	(initialize_configuration): New function to load the initial
	settings immediately after creation of the preference dialog.
	Works just like the identically named function in main.cc,
	except that it invokes on_conf_value_changed() directly instead
	of triggering the global "value_changed" signal.
	(on_textview_font_selected): Set the appropriate GConf key
	instead of using the old internal signal feedback mechanism.
	(on_match_color_selected): ditto
	(on_current_color_selected): ditto
	(on_option_toolbar_style_changed): ditto
	(on_entry_fallback_activate): ditto.
	(on_button_direction_toggled): New method.
	(signal_pref_textview_font_changed): Remove.
	(signal_pref_match_color_changed): Remove.
	(signal_pref_current_color_changed): Remove.
	(signal_pref_toolbar_style_changed): Remove.
	(signal_pref_fallback_encoding_changed): Remove.
	(on_entry_fallback_changed): Record that entry content was changed
	by setting the boolean entry_fallback_changed_ flag.  This is just
	to avoid superfluous commits to the GConf database every time the
	preference dialog is closed.
	(on_response): Evaluate entry_fallback_changed_ (see above),
	and make sure no Gnome::Conf::Error exceptions escape from
	on_entry_fallback_activate().
	(create_page_look): Move the signal handler setup to the ctor.
	(create_page_file): ditto.

	* src/statusline.cc (CounterBox::CounterBox): Catch possible
	exceptions when applying the locale to the stream object, in
	order to avoid crashing if the user's locale is invalid.

	* src/stringutils.cc (apply_modifiers): Modify the code a bit
	to reduce the number of string copies made.
	(parse_control_char): Add a 'dest' output parameter to avoid
	returning a string by value.
	(parse_hex_unichar): ditto
	(parse_oct_unichar): ditto.
	(parse_capture_index): New helper function to deal with both
	"$1" and "${1}"-style references in the substitution string.
	(validate_encoding): Simplify.  Also, don't accept any error
	codes but NO_CONVERSION.
	(encodings_equal): No longer use std::find_if() since it really
	doesn't make the code any simpler in this particular case.
	(trim_whitespace): Remove; no longer used.
	(shell_pattern_to_regex): Various performance improvements.
	Also take care of a possible trailing backslash to avoid escaping
	the "\z" appended by regexxer itself.
	(substitute_references): Restructure the loop a bit, and accomodate
	the changes made to the parse_*_char() functions mentioned above.
	Also, avoid the need for ascii_isodigit() in the default branch by
	simply adding all 8 octal digits as case labels.
	(int_to_string): Catch any exceptions that might occur when
	applying the locale to the stream.  This could happen if the
	user's default locale is invalid.
	(transform_pathname): Replace this silly 2-in-1 function by
	separate shorten_pathname() and expand_pathname() implementations.
	There really is no need to cache the home directory in a static
	variable.
	(shorten_pathname): Implement separately rather than forwarding
	to transform_pathname().
	(expand_pathname): ditto.
	(enum_from_nick): New utility function to convert the 'nick'
	of a particular enumeration value to the actual integer value.
	This of course requires the the enumeration type to be registered
	via the GObject type system.
	(enum_to_nick): Likewise, but the other way around.
	(enum_from_nick_impl): Non-template implementation part.
	(enum_to_nick_impl): ditto.

2004-05-04  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/cxx.m4: Make use of the new AS_IF() macro, and also
	improve the portability of the shell code a bit.

	* macros/pcre.m4: Ditto.

	* macros/misc.m4: New file, introducing a REGEXXER_PKG_PATH_PROG
	macro which can be used to look for executables that might live
	in subdirectories indicated by pkg-config output.

	* autogen.sh: Some minor shell coding-style improvements.

	* configure.ac: Invoke the new REGEXXER_PKG_PATH_PROG macro in
	order to look for gdk-pixbuf-csource.  Use the new macro to look
	for gconftool-2 as well.
	(AC_CHECK_HEADERS): Remove the tests for sys/types.h, sys/stat.h,
	umask() and mode_t since they're no longer necessary.
	(PKG_CHECK_MODULES): Substitute the GTKMM prefix by PKG (I don't
	like MM_DEPS as introduced by Murray in HEAD.)  Also, get rid of
	the libgnomevfsmm dependency.
	(REGEXXER_ENABLE_GCONFMM_VALUE_HACK): New preprocessor macro to
	be inserted into config.h.  This isn't actually used yet, I'll
	get to that later.

	* regexxer.schemas: New file.

	* Makefile.am: Add rules taking care of the installation of the
	GConf schema file.
	(dist_schema_DATA): Add regexxer.schemas to the distribution.
	(dist_noinst_DATA): Ditto for macros/misc.m4.
	(DISTCHECK_CONFIGURE_FLAGS): Include --disable-schemas-install.

	* src/Makefile.am: Reflect the substitution of GTKMM by PKG made
	in configure.ac.
	(AM_CPPFLAGS): Use this variable in place of regexxer_CPPFLAGS,
	because executable-specific CFLAGS is not something regexxer ever
	intended to use.

	* src/main.cc: Get rid of the libgnomevfsmm dependency.  For one
	thing, the code using it didn't actually work with remote URIs.
	For another, as of now there's no stable release of this library
	in sight, no to mention a widely distributed release.

	* src/fileio.cc (load_try_encoding): Comment-out the gnomevfs code
	and replace it with the original Glib::IOChannel code instead.
	(save_file): ditto.

	* src/filetree.cc (find_recursively): Comment-out and replace with
	the previous non-gnomevfs code.

2004-04-10  Murray Cumming  <murrayc@murrayc.com>

	* regexxer/Makefile.am: Put the mm libs and cflags before the pcre 
	ones, because the mm ones are more likely to be in more than one
	prefix, to avoid undefined symbols when a -L command means we link
	to an older GTK+. This is a bit hacky, but I don't know a better 
	solution - at least it will work on distros where everything is in the 
	same prefix.
	* scripts/cxx.m4: Replace deprecated AC_HELP_STRING with 
	AS_HELP_STRING.

2004-04-04  Murray Cumming  <murrayc@murrayc.com>

	* Ported to gtkmm 2.4 - mostly just use of libsigc++ 2 syntax, and
	not using the old Toolbar STL-style API.

0.6.0:

2003-12-07  Murray Cumming  <murrayc@usa.net>

	* src/configdata.cc: set_fallback_encoding_from_string(): Ignore
	empty value from GConf, so that the default fallback encoding is
	used. That is ISO-8859-15, also known as Latin 9, which seems to
	be commonly-used on Windows.
	* src/fileio.[h|cc]: Use gnome-vfsmm instead of Glib::IOChannel
	to read and write file contents, so we can use any URI.
	* src/filetree.[h|cc]: Likewise, use gnome-vfsmm instead of 
	Glib::Dir to list the files.
	* configure.ac: Added pkg-config check for gnome-vfsmm.
	
2003-11-29  Murray Cumming  <murrayc@usa.net>

	* configure.ac: regexxer now depends on gconfmm. Removed the check
	for 2.2-specific features.
	* Removed all gtkmm 2.2-specific #ifdefs because 2.2 is everywhere
	now..
	* src/configdata.[h|cc]: Changed the implemention to use GConfmm
	instead of the text file.

0.5.0:

2003-10-31  Murray Cumming  <murrayc@usa.net>

	* src/mainwindow.cc: Used larger HIG-like borders and spacings to
	make it look just a little more GNOME HIG compliant.

2003-10-29  Murray Cumming  <murrayc@usa.net>

	* I'm taking over maintainership until Daniel reappears. I hope
	that he does.
	* src/Makefile.am: Removed *DEPRECATED* defines so that it builds 
	with GTK+ 2.3/2.4. These should only be active during maintainer
	mode if they are added back.

2003-02-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* regexxer.desktop: Add Danish translation contributed by
	Morten Brix Petersen <mbp@wtf.dk>.  Thanks!

2003-01-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Check for gtkmm >= 2.2.0 rather than 2.1.1.  Note
	that gtkmm 2.2 is still optional, but this is likely to change after
	the regexxer 0.5 release.

2003-01-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (propagate_modified_change): Simplify.

2003-01-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/signalutils.{cc,h} (AutoConnection): New utility class that
	breaks the previous connection on assignment, and also remembers the
	blocked state of the connection permanently.

	(ScopedBlock): Use Util::AutoConnection instead of SigC::Connection.

	* src/filetree.{cc,h}: Use AutoConnection to manage the connection
	handles of the currently selected buffer.

	(on_selection_changed): Thanks to AutoConnection, we can now
	extinguish a fair bit of error-prone code.

2003-01-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: Require automake >= 1.7.
	* configure.ac: ditto.

2003-01-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/sharedptr.h (SharedPtr<>::swap): Implement.

2003-01-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (on_hide): For safety, transfer ownership of
	the preferences and about dialogs into local variables, rather than
	invoking hide() to delete them.  That way delete won't be called
	before hide() actually returned.

	(on_about_dialog_hide): Don't use std::auto_ptr<>::reset() but
	transfer ownership into local variables.  I had a look at the
	libstdc++-v3 headers and it gave me the creeps -- reset() deletes
	_before_ assigning the new pointer.

	(on_pref_dialog_hide): ditto.

2003-01-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (error_pixbuf_): Get rid of this silly cache,
	since it became useless a while ago.

2003-01-01  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.cc (SelectableLabel): Add accessibility hints.
	(ContributorBox): Likewise, and also improve the widget arrangement
	if the dialog gets resized.

2002-12-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h}: Get rid of the menubar_handle_ and
	toolbar_handle_ data members.  We don't need to keep them around
	anymore since the config option to hide one or the other is gone.

2002-12-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.cc (SelectableLabel): New fancy experiment to
	make labels both selectable _and_ focusable, so that they end up
	in the Tab chain.

	* src/aboutdialog.cc src/imagebutton.cc src/prefdialog.cc: Don't
	show all children of custom "composite" widgets in the constructor.
	It doesn't make much sense since we call show_all() later on anyway.
	And making these "composite" widgets really independent components
	would require overriding both show_all_vfunc() and hide_all_vfunc(),
	which is currently not worth the effort.

2002-12-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* pixmaps/regexxer.png: Replace with a much nicer icon stolen from
	http://jimmac.musichall.cz/ikony.php3 -- looks sweet!

2002-12-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (PCRE_CHECK_VERSION): Require libpcre >= 3.9.  It
	finally arrived in Debian unstable a while ago and there's at least
	one UTF-8 related bug in prior releases that could cause crashes.

2002-12-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/pcreshell.cc (translate_to_char_offset): New function
	that translates the error offset returned by pcre_compile() to
	a character offset into the original regex.  This became necessary
	since due to the recent introduction of escape_non_ascii(), and
	is more robust anyway.

	* src/mainwindow.cc (on_exec_search): Deal with character offsets
	instead of byte offsets.  Also, set the regex entry's selection on
	the character where the error occurred.

2002-12-27  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/statusline.{cc,h}: Use Gtk::RC::parse_string() and the
	appropriate RC style settings to reduce the height of the Stop
	button, instead of the insane set_size_request() hack.  This way
	the label text gets properly aligned now.

2002-12-27  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.cc (scale_to_8bit): Don't try to round to the
	nearest value.  This fixes a fun bug that caused the orange color
	of the current match to become slightly brighter on each config
	load/save cycle.

2002-12-27  Daniel Elstner  <daniel.elstner@gmx.net>

	* pixmaps/Makefile.am (stockimages.h): Beautify by printing the
	actual command line that is executed, rather than the shell code
	to build it.  This is also what autoconf does in its rules.

2002-12-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* regexxer.desktop: Add Comment[de] translation, and remove GNOME
	from Categories.  Recent GNOME applications don't seem to specify
	this category anymore.

2002-12-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/pcreshell.cc (escape_non_ascii): New function to work around
	a crash in libpcre when using literal UTF-8 in character classes.
	This still won't make it work, but prevents the crash and forces
	an error message if characters in classes are outside the Latin1
	range.

2002-12-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Check for gtkmm >= 2.1.1 instead of the compile
	test based on Glib::set_application_name().  (Don't worry, gtkmm
	2.1.x is not yet a requirement.)

2002-12-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.cc: Don't #include GTK+ headers if gtkmm 2.2
	API is available.

	(ColorLabel::on_expose_event): When building with gtkmm 2.2, use
	Gtk::Widget::get_style_property() instead of the ugly varargs
	function gtk_widget_style_get().

2002-12-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.cc (ColorSelectionButton::on_clicked): Convert
	the dialog window title to title case.

2002-12-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.cc (ColorLabel::ColorLabel): Modify the whole
	Gtk::RcStyle in one go rather than setting the bg pixmap thrice.

2002-12-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/configdata.{cc,h}: Remove config option "menutool_mode"
	because it's crack now that we have undo et al.  Add config options
	"textview_font", "match_color" and "current_match_color".

	* src/filebuffer.{cc,h} (pango_context_changed): Assign default
	font to the error_message tag.
	([gs]et_match_color): New accessors to tag colors.
	([gs]et_current_color): ditto.

	* src/mainwindow.{cc,h} ([gs]et_menutool_mode): Get rid of these.
	(on_filetree_switch_buffer): No longer modify the TextView font
	globally since we set the tag now.
	(on_preferences): Handle the added config settings.
	(load_configuration): ditto
	(save_configuration): ditto.

	* src/prefdialog.{cc,h} (FontSelectionButton): New utility widget.
	(ColorSelectionButton): Another new utility widget.
	(PrefDialog): Revamp the preferences dialog.  That is, add GUI for
	the new config settings and remove the old one.  Also replace the
	radio buttons for selecting the toolbar style with an option menu.

2002-12-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.{cc,h} (contains_null): Remove.
	(color_to_string): Implement.
	(shell_pattern_to_regex): Handle alternative syntax '^' for
	negation of character classes properly.

2002-12-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/miscutils.h (ScopedArray<>): New little utility template
	to manage a dynamically allocated array.

	* src/fileio.cc (load_iochannel): Ditch Glib::ScopedPtr<> (glibmm
	internal :) in favor of Util::ScopedArray<>.

2002-12-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.cc (load_iochannel): Use std::memchr() rather than
	the silly Util::contains_null() utility function.

2002-12-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Put -I flags into CPPFLAGS instead of CXXFLAGS.
	* macros/pcre.m4 (PCRE_CHECK_UTF8): Likewise for CFLAGS.

2002-12-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/pcre.m4 (PCRE_CHECK_VERSION): Use the sed magic from
	autogen.sh to implement a proper version check.

2002-12-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: Implement some fancy sed magic to compare automake
	version numbers, in order to choose the one that suits us best.

2002-12-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (create_left_pane): Set the accessible name
	of the folder entry.
	(create_right_pane): Set the accessible name of the preview entry,
	but replace the accessible description with a tool tip.

2002-12-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (expand_and_select): Make use of
	Gtk::TreeView::expand_to_path() if available.

2002-12-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/miscutils.{cc,h}: New files.  Move Util::prior() and next()
	hitherto, and add Util::gtk_version_at_least() to do a runtime
	version check.
	* src/Makefile.am: Add miscutils.{cc,h}.

	* src/stringutils.h: Move prior() and next() into miscutils.h.
	* src/filebuffer.cc: #include "miscutils.h".
	* src/filetree.cc (expand_and_select): Use the lazy scrolling
	feature if GTK+ >= 2.1.4 is available at runtime.

2002-12-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (expand_and_select): Don't pass row_align to
	Gtk::TreeView::scroll_to_row() if compiling for gtkmm 2.2 since
	lazy scrolling has now been implemented.

2002-12-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: Enable Bourne shell posix mode if possible, and
	export WARNINGS=all in order to get auto* diagnostic messages.

	* src/Makefile.am: Replace deprecated variables INCLUDES and LIBS
	with regexxer_CPPFLAGS and regexxer_LDADD.

2002-12-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/cxx.m4: Get rid of all deprecated autoconf constructs.
	* macros/pcre.m4: ditto.

2002-12-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Replace the check for gtkmm >= 2.1.0 with a test
	for Glib::set_application_name().  This should be much safer.

2002-12-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/main.cc (main): Use Glib::set_application_name() if building
	for gtkmm 2.1.

2002-12-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): On make distcheck,
	pass --enable-warnings=hardcore to ./configure.

2002-12-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AM_INIT_AUTOMAKE): Require automake >= 1.6 and
	make use of the "check-news" option.

	* Makefile.am (EXTRA_DIST): Get rid of EXTRA_DIST and properly
	put the files into dist_noinst_SCRIPTS and dist_noinst_DATA.

2002-12-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: Delete all scripts and symbolic links that will
	be recreated by automake --add-missing.

2002-12-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* regexxer.desktop: Set StartupNotify=true in order to take
	advantage of the startup notification feature in GNOME 2.1.

2002-12-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* autogen.sh: Incorporate bits of the standard GNOME autogen.sh,
	and make use of aclocal-1.7 and automake-1.7 if available.

	* configure.ac: AC_PREREQ([2.53]) to make sure the Debian magic
	chooses the right autoconf version.
	(AM_CONFIG_HEADER): Replace with AC_CONFIG_HEADERS().  This
	could create a dependency on automake-1.7, don't know for sure.

2002-12-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/imagebutton.{cc,h} (ImageButton): Add a 'name' argument to
	the ctor which is used to set the accessibility object's name.

	* src/controller.cc (create_action_area): Set accessibility
	names for all image-only buttons.

2002-12-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Check for gtkmm >= 2.1.0 and #define
	REGEXXER_HAVE_GTKMM_22 if available.

	* src/controller.cc:
	* src/mainwindow.cc:
	* src/statusline.cc: If building for gtkmm >= 2.1.0, make use of
	atkmm to set names and descriptions of several GUI elements.

2002-12-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* pixmaps/Makefile.am (stockimages.h): Perfectionize so that it
	handles a case that actually never happens, but who knows who's
	going to copy'n'paste this stuff :P

2002-12-02  Daniel Elstner  <daniel.elstner@gmx.net>

	* pixmaps/Makefile.am: Use shell magic to generate the build list
	for gdk-pixbuf-csource.  It's way cooler than doing it manually :)

2002-12-02  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (create_left_pane): Use 'd' instead of 'F'
	as mnemonic key for the folder button, because 'F' is already
	occupied by the file menu.

2002-12-01  Murray Cumming  <murrayc@usa.net>

	[ SF patch 646526, slightly modified ]

	* src/mainwindow.cc: Change the file pattern entry to a combo,
	with some commonly-used file extensions.

2002-12-02  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/controller.cc (create_action_area):
	* src/mainwindow.cc (create_left_pane): Add preliminary support
	for accessibility using ATK.  Unfortunately atkmm is badly broken
	in a way that prevents it from being used at all.  And due to a
	missing reference in Gtk::Widget::get_accessible_vfunc() I can't
	even resort to the C interface for custom derived classes.  Thus
	most of the code is enclosed in #if 0 / #endif at the moment.

2002-11-29  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (on_selection_changed): Ooops, forgot to
	disconnect() conn_undo_stack_push_.  That means the mysterious
	one of the assertions is now fixed -- the remaining ones are
	expected :)

2002-11-29  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AC_INIT): Version 0.5.

2002-11-29  Daniel Elstner  <daniel.elstner@gmx.net>

	OK folks, this is the new undo system.  It works, but don't rely
	too much on undo yet since there are still some issues to work out.
	Try stress testing the system a bit and you'll be able to trigger
	assertions, misbehaviour and all other kind of evil stuff.

	However, the framework is basically working and the remaining
	problems are going to be sorted out very soon.  Happy testing!

	* src/undostack.{cc,h}: New files, implementing the core of the
	new undo system.  Basically it's a simple undo stack using virtual
	methods for the implementation of undo actions.  But the undo stack
	is itself an undo action, which allows for nested stacks.  This
	functionality is necessary since the undo works globally on all
	files.

	* src/filebufferundo.{cc,h}: New files, defining the implementation
	of the FileBuffer undo actions.

	* src/fileshared.{cc,h}: Move parts of filebuffer.{cc,h} into these
	new files, in order to avoid circular dependencies and to reduce the
	length of single source files.

	* src/filetreeprivate.{cc,h}: Move the anonymous namespace parts
	and the nested classes of the FileTree implementation into separate
	files.  filetreeprivate.h is included by filetree.cc only.

	* src/Makefile.am (regexxer_SOURCES): Add new source files.

	* src/filebuffer.{cc,h}: Heavily modify and enhance the code in
	order to support the new undo framework.

	* src/filetree.{cc,h}: ditto.

	* src/controller.{cc,h}: Add undo ControlItem and show menu/toolbar
	items for it.

	* src/mainwindow.{cc,h}: Add code to maintain the undo stack and
	connect the GUI bits.

2002-11-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/signalutils.h (ScopedBlock): Move from filetree.cc hitherto.
	(ScopedConnection): ditto.

	* src/filetree.cc: Use the new signal stuff from namespace Util.

2002-11-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.{cc,h} (signal_preview_line_changed): Use the
	new Util::QueuedSignal rather than queuing manually.

2002-11-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/signalutils.{cc,h}: New files containing various sigc++
	related utilities.  For now, there's only Util::QueuedSignal,
	which implements a SigC::Signal0<void> that is emitted when the
	main loop is idle.

	* src/Makefile.am (regexxer_SOURCES): Add signalutils.{cc,h}.

2002-11-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.{cc,h} (trigger_preview_line_changed): Rename to
	queue_preview_line_changed() because that's what it does.

2002-11-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc (pango_context_changed): Ooops, I accidentally
	reversed the arguments to Gtk::IconSize::lookup().  Fixed.

2002-11-23  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (FileTree::ScopedBlockSorting): Introduce new
	utility class used to temporarily disable the column headers and to
	switch to the default sort column if the current one is the match
	count column.  This is necessary because Gtk::TreeModel::foreach()
	doesn't like it at all if model rows are reordered underneath its
	feet.  regexxer didn't handle that correctly until now, and the only
	reason this bug hasn't been observed before is #96647 :)

2002-11-23  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (FileTree::ErrorList): Rename to MessageList
	since it's not specifically intended for errors.  Use MI to combine
	Util::SharedObject and std::list<> instead of making the std::list
	a data member.  IS-A really makes sense here and this kind of class
	enhancement is what MI exists for, after all.

2002-11-22  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/Makefile.am (DEFS): Don't use backslash quoting inside the
	double-quoted string.  Rather, quote the outer pair of double-
	quotes with backslashes.  I reckon it's more portable not to use
	backslash quoting inside double-quoted strings since most other
	packages seem to avoid it too.

2002-11-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AC_TYPE_MODE_T): Eeek, this macro makes use of a
	deprecated autoconf macro.  Replace with AC_CHECK_TYPES([mode_t]).

	* src/configdata.cc: Do "typedef int mode_t" if necessary.

2002-11-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Check for mode_t too since we need it for umask().
	You can never know.

2002-11-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AM_INIT_AUTOMAKE): Remove 'dist-bzip2' option
	since we don't distribute bzipped tarballs right now.

2002-11-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Get rid of AC_CANONICAL_{BUILD,HOST,TARGET}.
	These don't seem to be necessary anymore.

2002-11-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/cxx.m4: Use quadrigraphs to output characters like [ ].
	* macros/pcre.m4: Add error checking at the autoconf level.

2002-11-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.cc: Set the default response.
	* src/prefdialog.cc: ditto.

2002-11-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/main.cc (stock_icon_info): It's Gtk::ICON_SIZE_MENU, not
	Gtk::ICON_SIZE_SMALL_TOOLBAR.  This glitch fortunately didn't have
	any real consequences since the icon size was wildcarded anyway.

regexxer 0.4:

2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* NEWS: Update.

2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/configdata.{cc,h}: Generalize the enumeration handling in
	two new functions, enum_to_string() and enum_from_string().

2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.cc: Refine the design a bit, and mention Ross
	Burton (Debian packager) as major contributor.

2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/controller.cc (create_menubar): Don't use "<control>f" as
	accelerator for "Move forward" because it's already occupied by
	the tree view search facility.

2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h}: Move the GUI stuff from the ctor into an
	auxilary method create_main_vbox().  Manually call accelerate() on
	the menu bar because otherwise the menu accelerators wouldn't be
	enabled if the menu bar is never shown due to user preference.

2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AC_INIT): Bump version to 0.4.

2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h}: Implement necessary bits to allow hiding
	menu bar or toolbar, and honor the menutool_mode config setting.
	Popup the new stand-alone about dialog on menubar/Help/Info.

2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.{cc,h}: Remove "regexxer info" page.  Split up
	configuration into "Look'n'feel" and "File access" pages.  Add
	UI and class interface for the new menutool_mode config option.

2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/aboutdialog.{cc,h}: New files, implementing stand-alone
	about dialog for regexxer.

	* src/Makefile.am: Add new files.

2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/configdata.{cc,h}: Add support for menutool_mode config
	option, specifying whether to show menu bar, toolbar or both.

2002-11-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/main.cc (regexxer_register_stock_items): Always set the
	intended icon size, but disable wildcarding for all but the last
	pixbuf in an icon set.

2002-11-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* pixmaps/stock_save_all_16.png: New menu icon.
	* pixmaps/Makefile.am: Add new icon.
	* src/main.cc: Register new icon.

2002-11-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/controller.cc (ControlItem::add_widget): Honor group_enabled_.

2002-11-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc: Change default size of the window to 600x450
	because the new menu bar takes up quite some space.

2002-11-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/controller.cc (ControlItem::activate): Don't ignore the
	group_enabled_ flag.

2002-11-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/controller.{cc,h} (create_menubar): Implement.
	* src/mainwindow.cc: Show the menu bar, and make both toolbar and
	menu bar detachable.

2002-11-17  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/controller.{cc,h}: New files, implementing class Controller
	and class ControlItem.  ControlItem maintains an arbitrary number
	of activation sources, and controls the sensitivity state of an
	arbitrary number of widgets too.  Controller centralizes all of
	the ControlItems and provides create() functions for all pure
	control widgets in regexxer.  Also, there's ControlGroup which can
	be used to set the sensitivity of several widgets at once.

	All this stuff became necessary due to the proposed addition of
	menus.  Getting the sensitivity of all widgets right was already
	quite complex.  After the integration of menus the old code would
	have reached a critical mass.

	* src/imagebutton.{cc,h}: New files, containing ImageButton and
	ImageLabelButton that were previously in mainwindow.cc.  We need
	them in controller.cc now too.

	* src/Makefile.am (regexxer_SOURCES): Add new files.

	* src/mainwindow.{cc,h}: Integrate the new Controller concept and
	get rid of the obsolete cruft.  We're now below 1000 lines again.

2002-11-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc: Show tool tips for both find buttons too.

2002-11-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc: Use sentence case for all tool tips, as
	suggested by Ross Burton.

2002-11-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/sharedptr.cc: Remove already unused debug code.  The
	reference counting is rock solid thanks to SharedPtr<>.

2002-11-15  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/sharedptr.h (SharedObject): Remove the namespace prefix from
	the friend declaration.  This will hopefully fix a compilation
	problem with GCC 2.95.x -- once again.

2002-11-14  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (on_busy_action_pulse): Simplify by reducing
	the amount of if-branches.

2002-11-13  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/sharedptr.h: Reimplement the static member templates
	cast_static<>(), cast_dynamic<>() and cast_dynamic_throw<>() as
	free functions, and use the boost naming convention.

	* src/filetree.cc: Use the new boost-like cast functions.

2002-11-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* regexxer.desktop: New desktop file, provided by Ross Burton.
	Thanks Ross!
	* Makefile.am: Distribute and install regexxer.desktop.

2002-11-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (find_files): Use std::string instead
	of Glib::ustring for 'dirname' and get rid of the call to
	Glib::filename_from_utf8().  This doesn't really belong here.

	* src/mainwindow.cc (on_find_files): Convert the directory name
	to filename encoding, and use the current directory as fallback
	if it's empty.

2002-11-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h} (button_find_matches_): Set this button
	insensitive unless there is at least one file to search in.
	Suggested by Murray Cumming <murrayc@usa.net>.
	(button_find_files_): Likewise set this button insensitive if
	entry_pattern_ is empty.

2002-11-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (on_buffer_modified_changed): Work around a nasty
	gtkmm bug:  Glib::SignalProxy seems to ignore the 'blocked' flag of
	the SigC::Connection object.  I'll fix this later in gtkmm itself.

2002-11-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/pcre.m4 (PCRE_CHECK_UTF8): Mention libpcre's --enable-utf8
	option in the error message.

2002-11-11  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (on_treestore_sort_column_changed): New signal
	handler, used to recalculate path_match_first_ and path_match_last_.
	This fixes a serious bug -- the code relies on the validity of this
	cached range.

regexxer 0.3:

2002-11-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (AC_INIT): Bump version to 0.3.

2002-11-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.cc (transform_pathname): Use byte-wise comparison
	because filenames should match exactly.  The Glib::ustring collation
	methods depend on the user's locale and might even ignore case.

2002-11-10  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (on_preferences): Make this strongly exception
	safe, just to demonstrate how to use std::auto_ptr<> properly :)

2002-11-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (on_preferences): If the preferences dialog
	is already open, call present() instead of raise().  The former
	does a much better job of putting the window where the user can
	see it.

2002-11-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (find_recursively): Call increment_file_count()
	from here instead of letting the caller do it.
	(find_check_file): Simplify by using Gtk::TreeModel::Row directly.

2002-11-09  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (collatekey_sort_func): Use std::strcmp() instead
	of std::string::compare(), because libstdc++-v2 (which comes with
	GCC 2.95.x) is badly broken and doesn't support this particular
	overload of compare().  Darn.

regexxer 0.2:

2002-11-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* AUTHORS: Add myself ;)
	* NEWS: List major changes in 0.2.
	* README: Fix typos.

2002-11-08  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (load_file_with_fallback): Emit row_changed()
	whenever the value of fileinfo->load_failed changed, rather than
	only if the file seems to be binary.

2002-11-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h}: If there are any unsaved files on quit
	or when reloading the file tree, pop up a dialog asking for
	confirmation.

2002-11-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h}: Get rid of the code that expanded/collapsed
	directory nodes on row clicks and the activated signal.  The GTK+
	people persuaded me that the inconsistency is worse than the little
	annoyance of having to hit the expander arrow.

2002-11-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (on_row_activated): Override, in order to
	expand/collapse a directory node when the spacebar was pressed.

2002-11-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (on_button_release_event): Override, in
	order to expand a directory node when the user clicked anywhere
	inside the row.  This might improve usability a bit.

2002-11-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc: Make the column headers trigger sorting when
	clicked.  Again use a default sort function in order to get three
	modes of sorting.  That is, the default is ascending sort with
	directories first, but when clicking a column header no difference
	is made between files and directories.

2002-11-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (load_file_with_fallback): Ooops, I forgot
	that buffers are now freed whenever possible, thus we shouldn't
	just return even if fileinfo->load_failed has already been set.

2002-11-07  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (text_cell_data_func): Simplify.
	(load_file_with_fallback): Improve robustness of the code, and
	trigger row_changed() if load_failed has been set.  For some
	reason it worked without this explicit emission, but it's better
	not to rely on that.

2002-11-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h}: Show an icon indicating whether the item
	is a file or directory in front of the filename.  Check it out,
	this eye candy looks really nice.

2002-11-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.cc (save_file): Get rid of the #96373 work-around.

2002-11-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (PKG_CHECK_MODULES): Require gtk+-2.0 >= 2.0.6 in
	order to match the web page.
	(AC_INIT): Bump version to 0.2.  Yay!

2002-11-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac (PKG_CHECK_MODULES): Require glib-2.0 >= 2.0.7.
	This is necessary due to GLib bug #91222 -- I don't want people
	thinking regexxer segfaulted randomly all the time because it
	were badly coded.

2002-11-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h} (collatekey_sort_func): Make this the sort
	function for mixed directory/file view.
	(collatekey_sort_func_dirs_first): Move the content of the former
	collatekey_sort_func() into here.
	(collatekey_sort_func_dirs_first_descending): Extra sort function
	which correctly reverses the meaning of the first byte in the key.
	This is for use with Gtk::SORT_DESCENDING.

2002-11-06  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h}: Speed up and simplify sorting by merging
	the directory/file information into the collate key (directories
	get a leading '0', files get a leading '1').  This is amazingly
	easy and not hackish in any way -- after all, this kind of pre-
	processing the strings is exactly what collate keys are for.

2002-11-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.{cc,h} (is_freeable): New method that checks
	whether it's safe to unreference the buffer.  This can be used
	to reduce the memory footprint.

	* src/filetree.{cc,h}: Unreference the text buffer whenever
	possible.  For instance, we really don't need to keep a buffer
	in memory that has match_count == 0 and wasn't modified.  Also
	fix propagation of signal_match_count_changed().

2002-11-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.cc (select_next_file): Re-add a missing
	"return true;" that got lost in a previous change.

2002-11-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.{cc,h} (FileInfo): Split this data structure into
	DirInfo and FileInfo, with a common base class FileInfoBase.
	This should be cleaner than having data members that can be
	invalid.

	* src/filetree.{cc,h}: Use the new DirInfo and FileInfo structs.
	Propagate changes of a buffer's modified change to all parent
	nodes, and color them red too.  Fix potential race conditions
	due to reassigment of blocked connections.

2002-11-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/sharedptr.h (SharedPtr<T>::cast_static): implement
	(cast_dynamic): implement
	(cast_dynamic_throw): implement.

2002-11-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filetree.{cc,h}: New files replacing filelist.{cc,h}.  The
	files are now displayed in a directory tree which is much cooler.
	As a side effect, it's now way faster when searching thousands of
	files.

	* src/Makefile.am: s/filelist/filetree/
	* configure.ac: Use src/pcreshell.cc as unique source file.

	* src/fileio.{cc,h} (FileInfo): Introduce a file_count member
	variable that became necessary to support subdirectories.

	* src/mainwindow.{cc,h}: Use the new FileTree widget.

2002-11-05  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc: In on_find_files() and on_exec_search(), make
	sure the corresponding button is sensitive before starting the busy
	action.  This is necessary since these callbacks are invoked from
	the entries' signal_activate() too.

2002-11-04  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/pcreshell.{cc,h}: Minor code cleanup.  Add a few assertions
	and a couple of comments.

regexxer 0.1:

2002-11-03  Daniel Elstner  <daniel.elstner@gmx.net>

	* pixmaps/Makefile.am: s/noinst_DATA/dist_noinst_DATA/ so that
	the pixmap files are included in the distribution.

2002-11-03  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.cc: Close and reopen the I/O channel when switching
	the encoding.  Changing encodings on the fly doesn't seem to work
	with older GLib releases.

2002-11-03  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc src/stringutils.cc: Be more tolerant about
	fucked up filenames.  Still show a (hopefully) annoying warning
	message, though.

2002-11-03  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc: Invoke file search respectively regex search
	on the entry widgets' signal_activate().

2002-11-03  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.cc (apply_modifiers): Handle modifier sequences
	like "\u\L$2" correctly.  Since it's not an recursive function the
	code got pretty messy.  Needs to be refactored at some point.

2002-11-03  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/configdata.cc: Use g_warning() instead of g_message().  These
	errors don't occur on a normal setup and should really go to stderr.

2002-11-03  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/configdata.cc: Generalize the enum nick/value mapping code,
	and improve the error message strings.

2002-11-03  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (on_hide): hide() the preferences dialog
	instead of deleting it, so that on_pref_dialog_hide() is executed
	to save the configuration data.

2002-11-03  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/configdata.{cc,h}: New files, implementing load/save of
	configuration data to a file.

	* src/Makefile.am: Add new files.
	* configure.ac: Check for umask() and its header files.

	* src/mainwindow.{cc,h}: Make use of the new code to load and
	save the configuration data.

	* src/stringutils.{cc,h} (trim_whitespace): New utility function.
	* src/prefdialog.cc (validate_encoding): Move to stringutils.{cc,h}.

2002-11-02  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/prefdialog.{cc,h}: Prevent double emission of
	signal_pref_toolbar_style_changed().

2002-10-31  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filelist.{cc,h} (find_files): Replace the pattern string
	argument with Pcre::Pattern& for consistency with find_matches().

	* src/mainwindow.cc (on_find_files): Construct the Pcre::Pattern
	for use with find_files().

2002-10-30  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filelist.{cc,h} (FileList::FindError): Store a list of
	strings instead of Glib::Error objects.  We don't need the extra
	information from Glib::Error, and plain strings gives us more
	flexibility with regards to message strings.

	* src/filelist.cc (save_current_file): Report errors to the caller
	using FileList::FileError exceptions.
	* src/filelist.cc (save_all_files): ditto.

	* src/mainwindow.{cc,h}: Generalize FindErrorDialog into
	FileErrorDialog and use it to report file saving errors too.

2002-10-29  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filelist.{cc,h} (FileList::FindError): Explicitly implement
	copy ctor and assignment operator.

	* src/filelist.cc (on_buffer_match_count_changed): Clutter the
	code with assertions, just to be sure.

2002-10-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/statusline.cc (CounterBox): Improve size calculation of the
	counter labels -- it no longer depends on '9' being the widest digit.

	* src/statusline.{cc,h} src/mainwindow.cc: Show the encoding of the
	currently displayed file in the statusbar.

2002-10-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filelist.{cc,h}: Collect file access errors during execution
	of find_files() and, when finished, return the list of errors via
	an exception to the caller.

	* src/mainwindow.cc (on_find_files): Show an error message dialog
	if the search pattern is invalid or if errors occurred during file
	search.

2002-10-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (on_exec_search): I changed my mind, there is
	absolutely no need to show off Util::next() here :)

2002-10-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.h: Introduce next() and prev() templates,
	shamelessly stolen from boost.

	* src/mainwindow.cc (on_exec_search): Use Util::next().

2002-10-28  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (on_exec_search): If there was an error in
	the regex, move the Gtk::Entry cursor to the character reported
	by Pcre::Error::offset().

2002-10-27  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.{cc,h} (int_to_string): New function.

	* src/mainwindow.cc (on_exec_search): Show an error dialog if
	there is an error in the regex.

2002-10-27  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (on_select_folder): Hide the file selection
	pane in the Gtk::FileSelection dialog, since we only need the
	directory part.

2002-10-27  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.{cc,h} src/prefdialog.cc: Get rid of
	ascii_toupper() and AsciiToupper because I just added the
	formerly missing Glib::Ascii::toupper() to glibmm :-P

2002-10-27  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.h (AsciiToupper): New unary predicate that
	forwards to ascii_toupper().

	* src/prefdialog.cc (on_entry_fallback_activate): Use the
	AsciiToupper predicate so that the call can be inlined.

2002-10-27  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.{cc,h} (ascii_toupper): Make this utility function
	publically available.

	* src/prefdialog.cc (on_entry_fallback_activate): Convert the
	encoding name to upper case.

2002-10-27  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h}: Explicitely delete the preferences dialog
	on exit.  Although this isn't really necessary, it does look neater
	if we have a lot of cleanup to do on exit.

2002-10-27  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc (find_matches): Correctly forward one character
	rather than one byte after matching the empty string twice.  Also,
	improve cancellation response by moving the signal_pulse() emission
	into the inner loop (shouldn't harm performance since we emit only
	once for 128 iterations anyway).

2002-10-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.{cc,h} src/filelist.{cc,h}: Make the fallback
	encoding configureable, so that it can be changed from the
	preferences dialog.

	* src/prefdialog.{cc,h} src/mainwindow.cc: Honor the preference
	setting of the fallback encoding.

2002-10-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* pixmaps/stock_menu_about.png: New image stolen from Gnome2.
	* pixmaps/Makefile.am src/main.cc: Register the new stock image.

	* src/prefdialog.{cc,h}: New files, implemening the preferences
	dialog.  The about box is integrated as second notebook page,
	because I couldn't think of a better place to put it.

	* src/mainwindow.{cc,h}: Make the preferences tool button work.

2002-10-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/main.cc: Set a global window icon list.

	* src/mainwindow.cc: Consider both the movement buttons and the
	replace buttons as part of the "action area".  This fixes wrong
	sensitivity of the movement buttons during busy actions.

2002-10-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/statusline.{cc,h}: Install an accelerator key (Escape) for
	the cancel button.

2002-10-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filelist.{cc,h} src/mainwindow.{cc,h}: Major cleanup of the
	busy action cancelation code.  The new code is now centralized in
	class MainWindow, and has been merged with the progressbar pulse
	notification and busy GUI updating.

	* src/filebuffer.{cc,h}: Implement support for cancelation of busy
	actions such as find_matches(), using the new scheme described
	above.

	* src/statusline.{cc,h}: Add cancel button to the GUI.

2002-10-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc (create_with_error_message): Improve message
	title: s/Load failed/Can't read file/

2002-10-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filelist.cc src/mainwindow.cc: Make use of the progress bar
	pulse feature while globally replacing matches, too.

2002-10-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.cc (create_with_error_message): Don't forget
	set_modified(false) after filling the buffer.

2002-10-26  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/statusline.cc: Correctly handle signal_style_changed()
	from the labels rather than the container.

	* src/filebuffer.{cc,h} src/fileio.{cc,h} src/filelist.{cc,h}:
	Instead of printing error messages to the console, write the
	message to a text buffer.  Use a dialog error stock image so
	that it looks good.

	* src/filebuffer.{cc,h} src/filelist.{cc,h} src/mainwindow.{cc,h}:
	In the match counter, display the number of matches per file rather
	than the overall match count.  Also, remember this original match
	count and don't decrease it when removing matches.  Make the match
	index counter work.

2002-10-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/statusline.{cc,h} (CounterBox): New class encapsulating a
	single "index/count"-style counter, for use by class StatusLine.
	Further improve calculation of the label lengths.

	* src/filelist.{cc,h} src/mainwindow.{cc,h}: Add a file_index
	parameter to FileList::signal_switch_buffer() and display it in
	the status line.

2002-10-25  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.{cc,h}: Implement support for matching empty
	strings, while emulating the behaviour of Perl's /g modifier.

2002-10-24  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/statusline.{cc,h}: New files, implementing the status box
	at the bottom of the main window.

	* src/mainwindow.{cc,h} src/filelist.{cc,h}: Implement file and
	match counter using the new StatusLine object.

	* src/filelist.{cc,h}: Speed up sorting by defining a custom sort
	function that makes use of collate keys.

2002-10-24  Daniel Elstner  <daniel.elstner@gmx.net>

	* macros/cxx.m4: New file, implementing custom autoconf macros
	related to checking the C++ compiler/environment.
	(REGEXXER_CXX_HAS_STD_LOCALE): New m4 macro.
	(REGEXXER_ARG_ENABLE_WARNINGS): New m4 macro.

	* configure.ac: Make use of the new autoconf macros.
	* Makefile.am (EXTRA_DIST): Add macros/cxx.m4.

2002-10-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Require gtkmm-2.0 >= 2.0.0.

2002-10-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.cc: Dump std::[io]fstream in favor of Glib::IOChannel.
	It's less code now and the error reporting should be better too.

2002-10-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/fileio.{cc,h}: New files.
	* src/filelist.{cc,h}: Separate the load/save functionality into
	fileio.{cc,h} to improve modularity of the code.

2002-10-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filelist.{cc,h} (FileList::find_recursively): Move the
	file_test() code into a separate method find_check_file(), and
	improve the error handling.

2002-10-21  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filelist.{cc,h}: Cache the Gdk::Color object used for
	files which failed to load.

	* src/mainwindow.cc: Replace some unnecessary run-time checked
	casts with static ones.

2002-10-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc (MainWindow::on_filelist_bound_state_changed):
	Don't forget to update the prev/next match buttons' sensitivity.

2002-10-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filelist.cc (FileList::find_files): Catch exceptions from
	Glib::Dir and Glib::file_test().

2002-10-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.{cc,h} (Util::convert_to_ascii): New function
	which replaces all non-ASCII characters with '?'.  This should be
	used for error messages when everything else failed.

	* src/filelist.cc: Use filename_to_utf8_fallback() in a few more
	places.  Also, if the filename conversion fails ultimately show a
	warning and skip the file.

2002-10-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/stringutils.{cc,h} (Util::filename_to_utf8_fallback): New
	wrapper function for Glib::filename_to_utf8() that works even if
	the user hasn't set G_BROKEN_FILENAMES correctly.  In that case
	it shows a hopefully annoying g_warning().

	* src/filelist.cc: Use Util::filename_to_utf8_fallback() where
	appropriate.
	* src/mainwindow.cc: ditto.

2002-10-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filelist.cc: Speed up find_files() by updating the GUI
	every 16 iterations rather than all the time.

2002-10-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h} src/filelist.{cc,h}: Implement "Save" and
	"Save all" functionality.  Also, separate the file list boundary
	notification from signal_switch_buffer() -- should be a lot more
	robust now.

2002-10-20  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.{cc,h} src/filelist.{cc,h}: Add "Save all" tool
	button and implement sensitivity setting for "Save" and "Save all".

2002-10-19  Daniel Elstner  <daniel.elstner@gmx.net>

	* pixmaps/stock_save_all_24.png: New file.
	* pixmaps/Makefile.am: Use gdk-pixbuf-csource to generate inline
	stock pixbufs.
	* configure.ac: Check for gdk-pixbuf-csource.
	* src/main.cc: Register new stock items for regexxer.

2002-10-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filelist.{cc,h}: Paint rows of modified files in red.

2002-10-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/mainwindow.cc: Make the TextView non-editable if no file
	is loaded.

2002-10-18  Daniel Elstner  <daniel.elstner@gmx.net>

	* configure.ac: Require sigc++ >= 1.2.1 and gtkmm >= 1.3.27.

2002-10-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.{cc,h} src/filelist.{cc,h} src/mainwindow.{cc,h}:
	Implement match substitution for the current file and all files,
	and get notification on match count changes working correctly.

2002-10-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/Makefile.am (DEFS): Define all the *_DISABLE_DEPRECATED
	macros just to prove regexxer is legacy-free ;)

2002-10-16  Daniel Elstner  <daniel.elstner@gmx.net>

	* src/filebuffer.h (BoundState): Define operator|=() and friends.
	* src/filebuffer.cc: Use the new operator.

2002-10-16  Daniel Elstner  <daniel.elstner@gmx.net>

	Woohoo, first ChangeLog entry for regexxer!

	* virtually all files: Insert copyright notice and CVS Id tags.
